release-request-31f776a2-f093-4abe-9235-1702f8bafc9d-for-git_oc-dr1-release-4054002 snap-temp-L42500000069020014

Change-Id: I7763e909a3cd18892cf980dca0cc75bdfd7a0f2b
diff --git a/Android.mk b/Android.mk
index a372697..c348c1a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -39,8 +39,8 @@
 
 include $(CLEAR_VARS)
 
-strace_version := $(shell grep strace $(LOCAL_PATH)/debian/changelog | \
-                          head -1 | cut -d " " -f 2)
+strace_version := "4.17"
+strace_year := "2017"
 
 LOCAL_SRC_FILES := \
     access.c \
@@ -120,6 +120,7 @@
     mtd.c \
     net.c \
     netlink.c \
+    nsfs.c \
     numa.c \
     oldstat.c \
     open.c \
@@ -133,6 +134,7 @@
     print_mq_attr.c \
     print_msgbuf.c \
     print_sigevent.c \
+    print_sg_req_info.c \
     print_statfs.c \
     print_struct_stat.c \
     print_time.c \
@@ -153,6 +155,8 @@
     renameat.c \
     resource.c \
     rtc.c \
+    rt_sigframe.c \
+    rt_sigreturn.c \
     sched.c \
     scsi.c \
     seccomp.c \
@@ -172,6 +176,7 @@
     stat64.c \
     statfs.c \
     statfs64.c \
+    statx.c \
     strace.c \
     swapon.c \
     sync_file_range.c \
@@ -247,6 +252,7 @@
     -DHAVE_POLL_H=1 \
     -DHAVE_PRCTL=1 \
     -DHAVE_PWRITEV=1 \
+    -DHAVE_SCSI_SG_H=1 \
     -DHAVE_SENDMSG=1 \
     -DHAVE_SIGACTION=1 \
     -DHAVE_SIG_ATOMIC_T=1 \
@@ -291,7 +297,8 @@
     -DMAJOR_IN_SYSMACROS \
     -DPACKAGE_NAME='"strace"' \
     -DPACKAGE_URL='"https://strace.io"' \
-    -DPACKAGE_VERSION='"$(strace_version)"' \
+    -DPACKAGE_VERSION='$(strace_version)' \
+    -DCOPYRIGHT_YEAR='$(strace_year)' \
     -DSIZEOF_KERNEL_LONG_T=SIZEOF_LONG \
     -DSIZEOF_OFF_T=SIZEOF_LONG \
     -DSIZEOF_LONG_LONG=8 \
diff --git a/CREDITS b/CREDITS
index 3bd4be9..d4fade1 100644
--- a/CREDITS
+++ b/CREDITS
@@ -13,6 +13,7 @@
 strace-devel@lists.sourceforge.net mailing list.
 
 	Aaron Ucko <ucko@vax1.rockhurst.edu>
+	Abhishek Tiwari <erabhishektiwarics@gmail.com>
 	Adrien Kunysz <adrien@kunysz.be>
 	Alexey Neyman <stilor@att.net>
 	Ali Polatel <alip@exherbo.org>
@@ -36,6 +37,7 @@
 	Chris Zankel <chris@zankel.net>
 	Christian Svensson <blue@cmd.nu>
 	D.J. Barrow <djbarrow@de.ibm.com>
+	Damien Profeta <damien.profeta@amadeus.com>
 	Damir Shayhutdinov <damir@altlinux.ru>
 	Daniel P. Berrange <berrange@redhat.com>
 	David Daney <ddaney@caviumnetworks.com>
@@ -48,6 +50,7 @@
 	Douglas Mencken <dougmencken@gmail.com>
 	Dr. David Alan Gilbert <dgilbert@redhat.com>
 	Edgar E. Iglesias <edgar.iglesias@gmail.com>
+	Edgar Kaziahmedov <edos@linux.com>
 	Elliott Hughes <enh@google.com>
 	Elvira Khabirova <lineprinter0@gmail.com>
 	Erik Johansson <erik@ejohansson.se>
@@ -126,6 +129,7 @@
 	Nate Eldredge <nate@cartsys.com>
 	Nate Sammons <nate@users.sourceforge.net>
 	Neil Campbell <lists@thebatcave.org.uk>
+	Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
 	Paolo Bonzini <pbonzini@redhat.com>
 	Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
 	Paul Mundt <lethal@linux-sh.org>
@@ -143,9 +147,11 @@
 	Richard Henderson <richard@twiddle.tamu.edu>
 	Richard Hirst <rhirst@linuxcare.com>
 	Richard W.M. Jones <rjones@redhat.com>
+	Rishi Bhatt <bhatt.rishi062@gmail.com>
 	Roland Borde <bo@uebemc.siemens.de>
 	Roland McGrath <roland@redhat.com>
 	Sami Farin <safari@u.safari.iki.fi>
+	Sandhya Bankar <bankarsandhya512@gmail.com>
 	Scott Tsai <scottt958@yahoo.com.tw>
 	Sean Stangl <sstangl@mozilla.com>
 	Sebastian Pipping <sebastian@pipping.org>
@@ -170,6 +176,7 @@
 	Topi Miettinen <Topi.Miettinen@nic.fi>
 	Ulrich Drepper <drepper@redhat.com>
 	Vicente Olivert Riera <vincent@gentoo.org>
+	Victor Krapivensky <krapivenskiy.va@phystech.edu>
 	Vineet Gupta <Vineet.Gupta1@synopsys.com>
 	Wang Chao <wang.chao@cn.fujitsu.com>
 	Wichert Akkerman <wichert@deephackmode.org>
diff --git a/ChangeLog b/ChangeLog
index d0bf7d5..01f6563 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,2972 @@
+2017-05-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Prepare for 4.17 release.
+	* NEWS: Update for 4.17 release.
+
+	powerpc64, sparc, sparc64: wire up statx syscall.
+	* linux/powerpc64/syscallent.h [383]: Add statx entry.
+	* linux/sparc/syscallent.h [360]: Likewise.
+	* linux/sparc64/syscallent.h [360]: Likewise.
+
+2017-05-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix compat personality support for sgetmask syscall.
+	* signal.c (SYS_FUNC(sgetmask)): Replace sprintsigmask_val
+	with sprint_old_sigmask_val.
+	* tests/sxetmask.c (main): Check decoding of signal mask containing
+	RT signals.
+
+2017-05-22  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix decoding of sgetmask and ssetmask syscalls.
+	Old ssetmask syscall takes an argument and returns a value of type int.
+	Old sgetmask syscall may return an error.
+
+	* signal.c (SYS_FUNC(ssetmask)): Explicitly convert the argument
+	and return value to unsigned int, print it using sprint_old_sigmask_val.
+	(SYS_FUNC(sgetmask)): Do not print the mask in case of syserror.
+	* tests/sxetmask.c: New file.
+	* tests/gen_tests.in (sxetmask): New entry.
+	* tests/pure_executables.list: Add sxetmask.
+	* tests/.gitignore: Likewise.
+	* NEWS: Mention this fix.
+
+2017-05-22  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add copyright headers.
+
+2017-05-22  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Elvira Khabirova  <lineprinter0@gmail.com>
+
+	Add scripts for automating copyright notices update.
+	* maint/update_copyright_years.awk: New file.
+	* maint/update_copyright_years.sh: Likewise.
+
+2017-05-22  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Fix typos in copyright notices.
+
+	unwind.c: remove non-ASCII character from comment.
+
+2017-05-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Rename sys_sig[gs]etmask to sys_s[gs]etmask to match syscall names.
+	* signal.c (SYS_FUNC(sigsetmask)): Rename to SYS_FUNC(ssetmask).
+	(SYS_FUNC(siggetmask)): Rename to SYS_FUNC(sgetmask).
+	* linux/arm/syscallent.h (sgetmask, ssetmask): Update sys_func.
+	* linux/bfin/syscallent.h: Likewise.
+	* linux/crisv10/syscallent.h: Likewise.
+	* linux/hppa/syscallent.h: Likewise.
+	* linux/i386/syscallent.h: Likewise.
+	* linux/m68k/syscallent.h: Likewise.
+	* linux/microblaze/syscallent.h: Likewise.
+	* linux/mips/syscallent-o32.h: Likewise.
+	* linux/powerpc/syscallent.h: Likewise.
+	* linux/powerpc64/syscallent.h: Likewise.
+	* linux/sh/syscallent.h: Likewise.
+	* linux/sh64/syscallent.h: Likewise.
+	* linux/sparc/syscallent.h: Likewise.
+	* linux/sparc64/syscallent.h: Likewise.
+
+	tests: enhance sigsuspend.test.
+	* tests/sigsuspend.c (sigtxt): New variable.
+	(main): Change signal masks to contain all signals except USR1 and USR2.
+
+2017-05-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix compat personality support for old sigsuspend syscall.
+	* signal.c (sprint_old_sigmask_val): New function.
+	(tprint_old_sigmask_val): New macro.
+	(SYS_FUNC(sigsuspend)): Use it.
+
+2017-05-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Move errnoent.sh, signalent.sh, and syscallent.sh to maint subdirectory.
+	Also do not include them into release tarballs.  These files are
+	intended for developers who are expected to use a git repository.
+
+	* errnoent.sh: Move to maint subdirectory.
+	* signalent.sh: Likewise.
+	* syscallent.sh: Likewise.
+	* HACKING-scripts: Update.
+	* Makefile.am (EXTRA_DIST): Remove errnoent.sh, signalent.sh,
+	and syscallent.sh.
+
+2017-05-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Do not include maint subdirectory into release tarballs.
+	These files are intended for developers who are expected to use
+	a git repository.
+
+	* Makefile.am (EXTRA_DIST): Remove maint/ioctls_gen.sh,
+	maint/ioctls_hex.sh, maint/ioctls_sym.sh, and maint/print_ioctlent.c.
+
+2017-05-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/ia64/syscallent.h: remove tabulation, add spaces in file comment.
+
+	linux/mtd-abi.h: remove non-ASCII character from file comment.
+
+2017-05-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	alpha, cris, mips, ppc, sh, sparc: fix decoding of sigsuspend syscall.
+	On some architectures old sigsuspend syscall takes the signal mask from
+	the 3rd argument, on some from the 1st.  And, if it wasn't peculiar
+	enough, the signal mask is passed by value on all architectures except
+	mips where it's passed by reference.
+
+	* signal.c (SYS_FUNC(sigsuspend)): Take the signal mask from the last
+	argument.
+	* linux/alpha/syscallent.h (sigsuspend): Set nargs to 1.
+	* linux/crisv10/syscallent.h: Likewise.
+	* linux/mips/syscallent-o32.h: Likewise.
+	* linux/powerpc/syscallent.h: Likewise.
+	* linux/powerpc64/syscallent.h: Likewise.
+	* linux/sh/syscallent.h: Likewise.
+	* linux/sh64/syscallent.h: Likewise.
+	* linux/sparc/syscallent.h: Likewise.
+	* linux/sparc64/syscallent.h: Likewise.
+	* tests/sigsuspend.c: New file.
+	* tests/gen_tests.in (sigsuspend): New entry.
+	* tests/pure_executables.list: Add sigsuspend.
+	* tests/.gitignore: Likewise.
+	* NEWS: Mention this fix.
+
+2017-05-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: raise default timeout for individual tests.
+	Recently added tests based on pure_executables.list are quite slow
+	by their nature, the one minute default timeout is no longer enough
+	for some of not so fast architectures.
+
+	* tests/init.sh (TIMEOUT_DURATION): Raise from 60 to 120.
+
+2017-05-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update NEWS.
+
+2017-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Update TCP_* constants.
+	* xlat/socktcpoptions.in: Add TCP_FASTOPEN_CONNECT introduced
+	by linux kernel commit v4.11-rc1~124^2~321^2.
+
+2017-04-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Update AF_* constants.
+	* xlat/addrfams.in: Add AF_SMC introduced by linux kernel
+	commit v4.11-rc1~94^2~43^2~13.
+
+2017-04-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: enhance madvise decoder check.
+	* tests/mmap.c (main): Remove madvise check.
+	* tests/madvise.c: New file.
+	* tests/gen_tests.in (madvise): New entry.
+	* tests/.gitignore: Add madvise.
+	* tests/pure_executables.list: Likewise.
+
+2017-04-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add -etrace=?... test.
+	Check for some architecture-specific syscalls which are not present
+	on most architectures.
+
+	* gen_tests.in: Add trace_question test.
+	* tests/trace_question.in: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+
+2017-04-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add more information to generated header comments.
+	* tests/gen_tests.sh: Update header comment with the source string
+	used for test generation.
+
+	tests: move generated common header comment into a variable.
+	* tests/gen_tests.sh: Move generated file header comment
+	into a variable, use it in all cases.
+
+2017-04-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use TAIL_ALLOC_OBJECT_CONST_PTR in v4l2 test.
+	* tests/ioctl_v4l2.c (main): Use TAIL_ALLOC_OBJECT_CONST_PTR.
+
+2017-04-25  Edgar Kaziahmedov  <edos@linux.com>
+
+	tests: Check decoding of VIDIOC_G/S_TUNER's arg.
+	* tests/ioctl_v4l2.c (main): Add checks for VIDIOC_G/S_TUNER's arg.
+
+	v4l2: Add decoding for VIDIOC_G/S_TUNER's arg.
+	* v4l2.c: Include "xlat/v4l2_tuner_types.h", "xlat/v4l2_tuner_capabilities.h",
+	"xlat/v4l2_tuner_rxsubchanses.h", and "xlat/v4l2_tuner_audmodes.h".
+	(print_v4l2_tuner): New function. Add decoding for VIDIOC_G/S_TUNER's arg.
+	(v4l2_ioctl): Add new cases for decoding VIDIOC_G/S_TUNER's arg.
+	* xlat/v4l2_tuner_types.in: Add V4L2_TUNER_RADIO and
+	V4L2_TUNER_ANALOG_TV introduced by linux kernel commit
+	2.5.46~39^2~23^2~4.
+	Add V4L2_TUNER_DIGITAL_TV introduced by linux kernel
+	commit v2.6.11-rc4~55^2~20.
+	Add V4L2_TUNER_ADC and V4L2_TUNER_RF introduced by linux kernel commit
+	v3.15-rc1~85^2~215.
+	Add V4L2_TUNER_SDR introduced by linux kernel commit v4.4-rc1~118^2~17
+	(as the replacement of V4L2_TUNER_ADC).
+	* xlat/v4l2_tuner_capabilities.in: Add V4L2_TUNER_CAP_LOW,
+	V4L2_TUNER_CAP_NORM, V4L2_TUNER_CAP_STEREO, V4L2_TUNER_CAP_LANG2,
+	V4L2_TUNER_CAP_SAP, and V4L2_TUNER_CAP_LANG1 introduced by linux kernel
+	commit 2.5.46~39^2~23^2~4.
+	Add V4L2_TUNER_CAP_HWSEEK_BOUNDED and V4L2_TUNER_CAP_HWSEEK_WRAP
+	introduced by linux kernel commit v3.6-rc1~28^2~306.
+	Add V4L2_TUNER_CAP_RDS introduced by linux commit v2.6.32-rc1~679^2~189.
+	Add V4L2_TUNER_CAP_RDS_BLOCK_IO and V4L2_TUNER_CAP_RDS_CONTROLS
+	introduced by linux kernel commit v2.6.37-rc1~64^2~110.
+	Add V4L2_TUNER_CAP_FREQ_BANDS introduced by linux kernel commit
+	v3.6-rc1~28^2~46.
+	Add V4L2_TUNER_CAP_HWSEEK_PROG_LIM introduced by linux kernel commit
+	v3.6-rc1~28^2~40.
+	Add V4L2_TUNER_CAP_1HZ introduced by linux kernel commit
+	v3.15-rc1~85^2~214.
+	* xlat/v4l2_tuner_audmodes.in: Add V4L2_TUNER_MODE_MONO,
+	V4L2_TUNER_MODE_STEREO, V4L2_TUNER_MODE_LANG2, V4L2_TUNER_MODE_SAP, and
+	V4L2_TUNER_MODE_LANG1 introduced by linux kernel commit
+	2.5.46~39^2~23^2~4.
+	Add V4L2_TUNER_MODE_LANG1_LANG2 introduced by linux kernel commit
+	v2.6.17-rc1~739^2~9.
+	* xlat/v4l2_tuner_rxsubchanses.in: Add V4L2_TUNER_SUB_MONO,
+	V4L2_TUNER_SUB_STEREO, V4L2_TUNER_SUB_LANG2, V4L2_TUNER_SUB_SAP, and
+	V4L2_TUNER_SUB_LANG1 introduced by linux kernel commit
+	2.5.46~39^2~23^2~4.
+	Add V4L2_TUNER_SUB_RDS introduced by linux kernel commit
+	v2.6.32-rc1~679^2~189.
+
+2017-04-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check decoding of invalid tv_sec and tv_usec values.
+	* tests/futimesat.c (main): Check decoding of invalid tv_sec and tv_usec
+	values.
+	* tests/xetitimer.c (main): Likewise.
+	* tests/xettimeofday.c (main): Likewise.
+	* tests/xselect.c (main): Likewise.
+	* tests/xutimes.c (main): Likewise.
+
+	tests: check decoding of invalid tv_sec and tv_nsec values.
+	* tests/aio.c (main): Check decoding of invalid tv_sec and tv_nsec
+	values.
+	* tests/clock_nanosleep.c (main): Likewise.
+	* tests/clock_xettime.c (main): Likewise.
+	* tests/futex.c (main): Likewise.
+	* tests/nanosleep.c (main): Likewise.
+	* tests/ppoll.c (main): Likewise.
+	* tests/pselect6.c (main): Likewise.
+	* tests/recvmmsg-timeout.c (main): Likewise.
+	* tests/rt_sigtimedwait.c (main): Likewise.
+	* tests/semop.c (main): Likewise.
+	* tests/timer_xettime.c (main): Likewise.
+	* tests/timerfd_xettime.c (main): Likewise.
+	* tests/utimensat.c (main): Likewise.
+
+2017-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Print time in ISO 8601 format in time syscall decoder.
+	* print_time.c (SYS_FUNC(time)): Print timestamp stringification
+	(via sprinttime) for the value stored in the argument and return value
+	(return RVAL_STR in the latter case).
+	* tests/time.c (main): Update expected output.
+
+2017-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Dmitry V. Levin  <ldv@altlinux.org>
+
+	Print string representation of timestamps in parsers of *utime* syscalls
+	* print_timespec.c (print_timespec_t_utime): Use sprinttime_nsec
+	to format a string representation of time, use tprints_comment
+	to print it as a comment.
+	* print_timeval.c (print_timeval_t_utime): New function.
+	(print_timeval_utimes): Use it instead of print_timeval_t.
+	[ALPHA] (print_timeval32_t_utime): New function.
+	[ALPHA] (print_timeval32_utimes): Use it instead of print_timeval32_t.
+	* tests/futimesat.c (print_tv): Update expected output.
+	* tests/utimensat.c (print_ts): Likewise.
+	* tests/xutimes.c (print_tv): Likewise.
+
+2017-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add support for printing timestamp with microsecond precision.
+	It will be needed later.
+
+	* tests/tests.h (print_time_t_usec): New prototype.
+	* tests/print_time.c (print_time_t_usec): New function, a thin wrapper
+	around print_time_t_ex.
+
+2017-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Dmitry V. Levin  <ldv@altlinux.org>
+
+	Print microseconds/nanoseconds as non-negative.
+	Negative micro/nanoseconds values are treated as invalid by kernel
+	anyway, and in one case (timespec_valid in include/linux/time.h)
+	it is even checked by conversion to unsigned long.
+
+	* print_timespec.c (timespec_fmt): Change tv_sec format to %lld and
+	tv_nsec format to %llu.
+	(print_timespec_t): Cast tv_sec to long long and process tv_nsec with
+	zero_extend_signed_to_ull.
+	(sprint_timespec): Likewise.
+	* print_timeval.c (timeval_fmt): Change tv_sec format to %lld and
+	tv_usec format to %llu.
+	(print_timeval_t): Cast tv_sec to long long and process tv_nsec with
+	zero_extend_signed_to_ull.
+	(sprint_timeval, print_timeval32_t, sprint_timeval32): Likewise.
+	* defs.h (TIMESPEC_TEXT_BUFSIZE): Update.
+	* tests/adjtimex.c (main): Change tv_sec printing format to %lld, cast
+	it to long long; change tv_usec printing format to %llu, process it with
+	zero_extend_signed_to_ull.
+	* tests/clock_nanosleep.c (main): Change tv_sec printing format to %lld,
+	cast it to long long; change tv_nsec printing format to %llu, process it
+	with zero_extend_signed_to_ull.
+	* tests/clock_xettime.c (main): Likewise.
+	* tests/futex.c (main): Likewise.
+	* tests/futimesat.c (print_tv): Likewise.
+	* tests/getrusage.c (invoke_print): Likewise.
+	* tests/mq_sendrecv.c (do_send, do_recv, main): Likewise.
+	* tests/nanosleep.c (main): Likewise.
+	* tests/pselect6.c (main): Likewise.
+	* tests/restart_syscall.c (main): Likewise.
+	* tests/rt_sigtimedwait.c (iterate, main): Likewise.
+	* tests/sched_rr_get_interval.c (main): Likewise.
+	* tests/semop.c (main): Likewise.
+	* tests/timer_xettime.c (main): Likewise.
+	* tests/timerfd_xettime.c (main): Likewise.
+	* tests/waitid.c (main): Likewise.
+	* tests/xetitimer.c (main): Likewise.
+	* tests/xettimeofday.c (main): Likewise.
+	* tests/xselect.c (main): Likewise.
+	* tests/xutimes.c (print_tv): Likewise.
+	* tests/wait4.c (sprint_rusage): Likewise.
+	* tests/waitid.c (sprint_rusage): Likewise.
+	* tests/utimensat.c (print_ts): Likewise.
+	(main): Add check for higher bits of tv_sec/tv_nsec.
+
+2017-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Dmitry V. Levin  <ldv@altlinux.org>
+
+	Always print raw values of time data fields.
+	Refactor sprinttime: implement sprinttime_nsec and sprinttime_usec
+	that handle nanoseconds and microseconds, respectively.
+	Always print raw values of time data fields, format string
+	representations of time as comments.
+
+	* defs.h (sprinttime): Change argument type from time_t to long long.
+	(sprinttime_nsec, sprinttime_usec): New prototypes.
+	* util.c (sprinttime_ex, sprinttime_nsec, sprinttime_usec): New
+	functions.
+	(sprinttime): Turn into a thin wrapper around sprinttime_ex.
+	* stat.h (struct strace_stat): Add has_nsec field.
+	* fetch_struct_stat.c (HAVE_NSEC): New macro.
+	(fetch_struct_stat): Initialize has_nsec field with HAVE_NSEC.
+	* fetch_struct_stat64.c (HAVE_NSEC): New macro.
+	(fetch_struct_stat64): Initialize has_nsec field with HAVE_NSEC.
+	* print_struct_stat.c (print_struct_stat) <PRINT_ST_TIME>:
+	Print raw values of time fields, use sprinttime_nsec to format a string
+	representation of time, use tprints_comment to print it as a comment.
+	* statx.c (SYS_FUNC(statx)) <PRINT_FIELD_TIME>: Likewise.
+	* utime.c (SYS_FUNC(utime)): Print raw values of struct utimbuf.actime
+	and struct utimbuf.modtime fields, use sprinttime to format a string
+	representation of time, use tprints_comment to print it as a comment.
+	* tests/tests.h (print_time_t_nsec): Add int argument.
+	* tests/print_time.c (print_time_t_ex): New function.
+	(print_time_t_nsec): Add int argument, turn into a thin wrapper around
+	print_time_t_ex.
+	* tests/utime.c (main): Update expected output.
+	* tests/xstatx.c [!IS_STATX] (HAVE_NSEC): New macro.
+	[!IS_STATX] (PRINT_ST_TIME), [IS_STATX] (PRINT_FIELD_TIME): Update
+	expected output.
+	* NEWS: Mention this timestamps representation improvement.
+
+2017-04-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Introduce tprintf_comment and tprints_comment functions.
+	* defs.h (tprintf_comment, tprints_comment): New prototypes.
+	* strace.c (tvprintf): New function.
+	(tprintf): Use it.
+	(tprintf_comment, tprints_comment): New functions.
+	* aio.c (tprint_lio_opcode): Use tprints_comment.
+	* dm.c (dm_decode_dm_target_spec, dm_decode_dm_target_deps,
+	dm_decode_dm_name_list, dm_decode_dm_target_versions,
+	dm_decode_dm_target_msg, dm_decode_string, dm_known_ioctl): Likewise.
+	* futex.c (SYS_FUNC(futex)): Likewise.
+	* perf.c (print_perf_event_attr): Likewise.
+	* seccomp.c (decode_bpf_code): Likewise.
+	* util.c (printxvals, printxval_searchn, printflags64): Likewise.
+	* btrfs.c (print_u64, btrfs_print_key_type, btrfs_print_objectid,
+	print_key_value_internal): Likewise.
+	(btrfs_ioctl): Use tprints_comment and tprintf_comment.
+	* dirent.c (SYS_FUNC(getdents)): Likewise.
+	* dirent64.c (SYS_FUNC(getdents64)): Likewise.
+	* execve.c (printargc): Use tprintf_comment.
+	* tests/btrfs.c (btrfs_test_get_dev_stats_ioctl,
+	btrfs_test_features_ioctls): Update expected output.
+
+	Make output of execve/execveat syscall parsers more structured.
+	* execve.c (printargc): Always print the address, format the number
+	of variables as a comment.
+	* tests/execve.c: Update expected output.
+	* tests/execveat.c: Likewise.
+	* tests/qual_syscall.test: Likewise.
+	* tests/strace-r.expected: Likewise.
+	* tests/strace-t.test: Likewise.
+	* tests/strace-tt.test: Likewise.
+	* tests/strace-ttt.test: Likewise.
+	* tests/threads-execve.c: Likewise.
+	* tests/threads-execve.test: Likewise.
+
+	dm: fix diagnostics about misplaced parts of struct dm_ioctl.
+	* dm.c (dm_decode_dm_target_spec, dm_decode_dm_target_deps,
+	dm_decode_dm_name_list, dm_decode_dm_target_versions,
+	dm_decode_dm_target_msg, dm_decode_string, dm_known_ioctl): Fix
+	diagnostics about various misplaced parts of struct dm_ioctl.
+	* tests/ioctl_dm.c: Update expected output.
+
+	print_mq_attr: fix typo.
+	* print_mq_attr.c (printmqattr): Fix the last argument of printflags64.
+
+2017-04-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add faulty pointer check to time test.
+	* tests/time.c (main): Add check for an inaccessible pointer.
+
+2017-04-22  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fix print_time_t_nsec usage in xstatx.c.
+	* tests/xstatx.c (print_stat): Pass tv_nsec field through
+	zero_extend_signed_to_ull before feeding it to print_time_t_nsec.
+
+2017-04-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fix netlink_protocol on sparc.
+	* tests/netlink_protocol.c (test_nlmsgerr): Do not access fields of an
+	unaligned structure, this makes architectures like sparc very unhappy.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	util: return pointer to string literal directly in sprinttime.
+	There is no sense to copy it to static buffer first.
+
+	* util.c (sprinttime): Just return "0", do not copy it to internal
+	buffer first.
+
+2017-04-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: remove stat.sample creation from gen_tests.in.
+	stat.sample is created by appropriate executables and never removed.
+
+	* tests/gen_tests.in (trace_fstat, trace_lstat, trace_stat,
+	trace_stat_like): Remove stat.sample creation.
+
+2017-04-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: tabulate fstat.test.
+	* tests/gen_tests.in (fstat): New entry.
+	(fstat64, oldfstat): Update.
+	* tests/fstat.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove fstat.test.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement -e trace=%stat option.
+	linux/*/syscallent*.h part is updated automatically by:
+
+	    sed -i '/statx/! s/TF|TSTA,/TF|TST|TSTA,/' linux/*/syscallent*.h
+
+	* sysent.h (TRACE_STAT): New macro.
+	* syscall.c: Alias LST to TRACE_STAT around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add TRACE_STAT for "%stat".
+	* strace.1 (.SS Filtering): Add information about %stat syscall class.
+	* NEWS: Mention this change.
+	* linux/aarch64/syscallent.h (stat): Add TST flag.
+	* linux/ia64/syscallent.h: Likewise.
+	* linux/mips/syscallent-n32.h: Likewise.
+	* linux/mips/syscallent-n64.h: Likewise.
+	* linux/s390x/syscallent.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/arm/syscallent.h (oldstat, stat, stat64): Likewise.
+	* linux/bfin/syscallent.h: Likewise.
+	* linux/crisv10/syscallent.h: Likewise.
+	* linux/i386/syscallent.h: Likewise.
+	* linux/m68k/syscallent.h: Likewise.
+	* linux/microblaze/syscallent.h: Likewise.
+	* linux/mips/syscallent-o32.h: Likewise.
+	* linux/powerpc/syscallent.h: Likewise.
+	* linux/sh64/syscallent.h: Likewise.
+	* linux/sh/syscallent.h: Likewise.
+	* linux/avr32/syscallent.h (stat, stat64): Likewise.
+	* linux/hppa/syscallent.h: Likewise.
+	* linux/s390/syscallent.h: Likewise.
+	* linux/sparc64/syscallent.h: Likewise.
+	* linux/sparc/syscallent.h: Likewise.
+	* linux/xtensa/syscallent.h: Likewise.
+	* linux/powerpc64/syscallent.h (oldstat, stat): Likewise.
+	* linux/alpha/syscallent.h (osf_old_stat, osf_stat, stat, stat64): Likewise.
+	* linux/mips/syscallent-compat.h (bsd43_oldstat, bsd43_stat, posix_stat,
+	svr4_stat, svr4_xstat, sysv_stat, sysv_xstat): Likewise.
+	* tests/gen_tests.in (trace_stat): New entry.
+	* tests/trace_stat.in: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/ksysent.c (TST): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement -e trace=%lstat option.
+	linux/*/syscallent*.h part is updated automatically by:
+
+	    sed -i '/TSTA,.*lx\?stat/ s/TSTA,/TLST|&/' linux/*/syscallent*.h
+
+	* sysent.h (TRACE_LSTAT): New macro.
+	* syscall.c: Alias TLST to TRACE_LSTAT around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add TRACE_LSTAT for "%lstat".
+	* strace.1 (.SS Filtering): Add information about %lstat syscall class.
+	* NEWS: Mention this change.
+	* linux/aarch64/syscallent.h (lstat): Likewise.
+	* linux/ia64/syscallent.h: Likewise.
+	* linux/mips/syscallent-n32.h: Likewise.
+	* linux/mips/syscallent-n64.h: Likewise.
+	* linux/s390x/syscallent.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/arm/syscallent.h (lstat, lstat64, oldlstat): Likewise.
+	* linux/bfin/syscallent.h: Likewise.
+	* linux/crisv10/syscallent.h: Likewise.
+	* linux/i386/syscallent.h: Likewise.
+	* linux/m68k/syscallent.h: Likewise.
+	* linux/microblaze/syscallent.h: Likewise.
+	* linux/mips/syscallent-o32.h: Likewise.
+	* linux/powerpc/syscallent.h: Likewise.
+	* linux/sh64/syscallent.h: Likewise.
+	* linux/sh/syscallent.h: Likewise.
+	* linux/sparc64/syscallent.h: Likewise.
+	* linux/sparc/syscallent.h: Likewise.
+	* linux/avr32/syscallent.h (lstat, lstat64): Likewise.
+	* linux/hppa/syscallent.h: Likewise.
+	* linux/powerpc64/syscallent.h: Likewise.
+	* linux/s390/syscallent.h: Likewise.
+	* linux/xtensa/syscallent.h: Likewise.
+	* linux/alpha/syscallent.h (lstat, lstat64, osf_lstat, osf_old_lstat): Likewise.
+	* linux/mips/syscallent-compat.h (bsd43_lstat, posix_lstat, svr4_lstat,
+	sysv_lstat): Likewise.
+	* tests/gen_tests.in (trace_lstat): New entry.
+	* tests/trace_lstat.in: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/ksysent.c (TLST): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement -e trace=%fstat option.
+	linux/*/syscallent*.h part is updated automatically by:
+
+	    sed -i -e '/TSTA.*fx\?stat/ s/TSTA,/TFST|&/' \
+	           -e 's/\(TD|TF|TFST|TSTA,\)[[:space:]]/\1/' linux/*/syscallent*.h
+
+	* sysent.h (TRACE_FSTAT): New macro.
+	* syscall.c: Alias TFST to TRACE_FSTAT around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add TRACE_FSTAT for "%fstat".
+	* strace.1 (.SS Filtering): Add information about %fstat syscall class.
+	* NEWS: Mention this change.
+	* linux/32/syscallent.h (fstat64, fstatat64): Add TFST flag.
+	* linux/64/syscallent.h (fstat, newfstatat): Likewise.
+	* linux/aarch64/syscallent.h: Likewise.
+	* linux/ia64/syscallent.h: Likewise.
+	* linux/mips/syscallent-n32.h: Likewise.
+	* linux/mips/syscallent-n64.h: Likewise.
+	* linux/s390x/syscallent.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/arm/syscallent.h (fstat, fstat64, fstatat64, oldfstat): Likewise.
+	* linux/bfin/syscallent.h: Likewise.
+	* linux/crisv10/syscallent.h: Likewise.
+	* linux/i386/syscallent.h: Likewise.
+	* linux/m68k/syscallent.h: Likewise.
+	* linux/microblaze/syscallent.h: Likewise.
+	* linux/mips/syscallent-o32.h: Likewise.
+	* linux/powerpc/syscallent.h: Likewise.
+	* linux/sh64/syscallent.h: Likewise.
+	* linux/sh/syscallent.h: Likewise.
+	* linux/avr32/syscallent.h (fstat, fstat64, fstatat64): Likewise.
+	* linux/hppa/syscallent.h: Likewise.
+	* linux/s390/syscallent.h: Likewise.
+	* linux/sparc64/syscallent.h: Likewise.
+	* linux/sparc/syscallent.h: Likewise.
+	* linux/xtensa/syscallent.h: Likewise.
+	* linux/alpha/syscallent.h (fstat, fstat64, fstatat64, osf_fstat,
+	osf_old_fstat): Likewise.
+	* linux/powerpc64/syscallent.h (fstat, newfstatat, oldfstat): Likewise.
+	* linux/mips/syscallent-compat.h (bsd43_fstat, bsd43_oldfstat, posix_fstat,
+	svr4_fstat, sysv_fstat): Likewise.
+	* tests/gen_tests.in (trace_fstat): New entry.
+	* tests/trace_fstat.in: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/ksysent.c (TFST): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement -e trace=%%stat option.
+	linux/*/syscallent*.h part is updated automatically by:
+
+	    sed -i '/TSFA\|stat[iu]s/! s/,[[:space:]]\?\([[:space:]]*SEN(.*stat\)/|TSTA,\1/' \
+	        linux/*/syscallent*.h
+
+	* sysent.h (TRACE_STAT_LIKE): New macro.
+	* syscall.c: Alias TSTA to TRACE_STAT_LIKE around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add TRACE_STAT_LIKE for "%%stat".
+	* strace.1 (.SS Filtering): Add information about %%stat syscall class.
+	* NEWS: Mention this change.
+	* linux/32/syscallent.h (fstat64, fstatat64, statx): Add TSTA flag.
+	* linux/64/syscallent.h (fstat, newfstatat, statx): Likewise.
+	* linux/aarch64/syscallent.h (fstat, lstat, newfstatat, stat): Likewise.
+	* linux/alpha/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	osf_fstat, osf_lstat, osf_old_fstat, osf_old_lstat, osf_old_stat, osf_stat,
+	stat, stat64): Likewise.
+	* linux/arm/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
+	oldlstat, oldstat, stat, stat64, statx): Likewise.
+	* linux/avr32/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
+	stat64): Likewise.
+	* linux/bfin/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	oldfstat, oldlstat, oldstat, stat, stat64): Likewise.
+	* linux/crisv10/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	oldfstat, oldlstat, oldstat, stat, stat64): Likewise.
+	* linux/hppa/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
+	stat64): Likewise.
+	* linux/i386/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
+	oldlstat, oldstat, stat, stat64, statx): Likewise.
+	* linux/ia64/syscallent.h (fstat, lstat, newfstatat, stat): Likewise.
+	* linux/m68k/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
+	oldlstat, oldstat, stat, stat64, statx): Likewise.
+	* linux/microblaze/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	oldfstat, oldlstat, oldstat, stat, stat64): Likewise.
+	* linux/mips/syscallent-compat.h (bsd43_fstat, bsd43_lstat, bsd43_oldfstat,
+	bsd43_oldstat, bsd43_stat, posix_fstat, posix_lstat, posix_stat, svr4_fstat,
+	svr4_fxstat, svr4_lstat, svr4_lxstat, svr4_stat, svr4_xstat, sysv_fstat,
+	sysv_fxstat, sysv_lstat, sysv_lxstat, sysv_stat, sysv_xstat): Likewise.
+	* linux/mips/syscallent-n32.h (fstat, lstat, newfstatat, stat, statx): Likewise.
+	* linux/mips/syscallent-n64.h (fstat, lstat, newfstatat, stat, statx): Likewise.
+	* linux/mips/syscallent-o32.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	oldfstat, oldlstat, oldstat, stat, stat64, statx): Likewise.
+	* linux/powerpc64/syscallent.h (fstat, lstat, newfstatat, oldfstat, oldlstat,
+	oldstat, stat): Likewise.
+	* linux/powerpc/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	oldfstat, oldlstat, oldstat, stat, stat64, statx): Likewise.
+	* linux/s390/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
+	stat64, statx): Likewise.
+	* linux/s390x/syscallent.h (fstat, lstat, newfstatat, stat, statx): Likewise.
+	* linux/sh64/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
+	oldlstat, oldstat, stat, stat64): Likewise.
+	* linux/sh/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, oldfstat,
+	oldlstat, oldstat, stat, stat64): Likewise.
+	* linux/sparc64/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	oldlstat, stat, stat64): Likewise.
+	* linux/sparc/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64,
+	oldlstat, stat, stat64): Likewise.
+	* linux/x32/syscallent.h (fstat, lstat, newfstatat, stat, statx): Likewise.
+	* linux/x86_64/syscallent.h (fstat, lstat, newfstatat, stat, statx): Likewise.
+	* linux/xtensa/syscallent.h (fstat, fstat64, fstatat64, lstat, lstat64, stat,
+	stat64, statx): Likewise.
+	* tests/gen_tests.in (trace_stat_like): New entry.
+	* tests/trace_stat_like.in: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/ksysent.c (TSTA): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	qualify: add syntax for optional non-matching syscall qualification.
+	It may be useful in case syscall is not present on the target
+	architecture.
+
+	* qualify.c (qualify_syscall): Add ignore_fail flag, set it to true
+	in case syscall qualification is led by a question mark(s).
+	* strace.1 (.SS Filtering): Document ability to use question marks
+	in syscall qualification.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/alpha/syscallent.h: add TSFA flag to osf_getfsstat.
+	In accordance with [1].
+
+	[1] https://www.freebsd.org/cgi/man.cgi?query=getfsstat&sektion=2
+
+	* linux/alpha/syscallent.h (osf_getfsstat): Add TSFA flag.
+	* strace.1 (.SS Filtering) <%%statfs>: Update equivalent regexp.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/mips/syscallent-compat.h: add some TD/TF flags for *stat* variants
+	*xstat syscalls are, according to [1], like their *stat counterparts,
+	but with additional argument with fixed value.
+
+	[1] http://math-atlas.sourceforge.net/devel/assembly/mipsabi32.pdf
+
+	* linux/mips/syscallent-compat.h (*_xstat, *_lxstat, bsd43_oldstat):
+	Add TF flag.
+	(*_fxstat, bsd43_oldfstat): Add TD flag.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement -e trace=%%statfs option.
+	linux/*/syscallent*.h part is updated automatically by:
+
+	    sed -i 's/\(TSF\),[[:space:]]\?/\1|TSFA,/' linux/*/syscallent*.h
+	    sed -i 's/\(TFSF\),/\1|TSFA,/' linux/*/syscallent*.h
+	    sed -i 's/0\(,.*ustat\)/TSFA\1/' linux/*/syscallent*.h
+
+	* sysent.h (TRACE_STATFS_LIKE): New macro.
+	* syscall.c: Alias TSFA to TRACE_STATFS_LIKE around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add SCHED_STATFS_LIKE for "%%statfs".
+	* strace.1 (.SS Filtering): Add information about %%statfs syscall class.
+	* NEWS: Mention this change.
+	* linux/32/syscallent.h (statfs64, fstatfs64): Add TSFA flag.
+	* linux/64/syscallent.h (statfs, fstatfs): Likewise.
+	* linux/aarch64/syscallent.h (statfs, fstatfs, ustat): Likewise.
+	* linux/mips/syscallent-n64.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/arm/syscallent.h (statfs, statfs64, fstatfs, fstatfs64, ustat):
+	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-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/xtensa/syscallent.h: Likewise.
+	* linux/alpha/syscallent.h (osf_statfs, osf_statfs64, statfs,
+	ofs_fstatfs, osf_fstatfs64, ustat): Likewise.
+	* linux/mips/syscallent-compat.h (*_statfs, *_statvfs, *_fstatfs): Likewise.
+	* tests/gen_tests.in (trace_statfs_like): New entry.
+	* tests/trace_statfs_like.in: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/ksysent.c (TSFA): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement -e trace=%fstatfs option.
+	linux/*/syscallent*.h part is updated automatically by:
+
+	    sed -i 's/TD,[[:space:]]\([[:space:]]*SEN.*[_"]fstatv\?fs\)/TD|TFSF,\1/' \
+	           linux/*/syscallent*.h
+
+	* sysent.h (TRACE_FSTATFS): New macro.
+	* syscall.c: Alias TFSF to TRACE_FSTATFS around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add SCHED_FSTATFS for "%fstatfs".
+	* strace.1 (.SS Filtering): Add information about %fstatfs syscall class.
+	* NEWS: Mention this change.
+	* linux/32/syscallent.h (fstatfs64): Add TFSF flag.
+	* linux/64/syscallent.h (fstatfs): Likewise.
+	* linux/aarch64/syscallent.h: Likewise.
+	* linux/mips/syscallent-n64.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/arm/syscallent.h (fstatfs, fstatfs64):
+	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-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/xtensa/syscallent.h: Likewise.
+	* linux/alpha/syscallent.h (ofs_fstatfs, osf_fstatfs64): Likewise.
+	* linux/mips/syscallent-compat.h (*_fstatfs, *_fstatvfs): Likewise.
+	* tests/gen_tests.in (trace_fstatfs): New entry.
+	* tests/trace_fstatfs.in: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/ksysent.c (TFSF): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sysent.h: format syscall flag macros.
+	Add some tabulation and leading zeroes to the values.
+
+2017-04-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: tabulate sched.test.
+	Rewrite sched.test using test_trace_expr().
+
+	* tests/gen_tests.in (sched): New entry.
+	* tests/sched.in: New file, derived from a set of tests in sched.test.
+	* tests/sched.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove sched.test.
+	(EXTRA_DIST): Add sched.in.
+
+2017-04-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: tabulate regex.test.
+	Rewrite regex.test using test_trace_expr().
+
+	* tests/gen_tests.in (regex): New entry.
+	* tests/regex.in: New file, derived from a set of tests in regex.test.
+	* tests/regex.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove regex.test.
+	(EXTRA_DIST): Add regex.in.
+
+2017-04-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: tabulate clock.test.
+	Rewrite clock.test using test_trace_expr().
+
+	* tests/gen_tests.in (clock): New entry.
+	* tests/clock.in: New file, derived from a set of tests in clock.test.
+	* tests/clock.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove clock.test.
+	(EXTRA_DIST): Add clock.in.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: tabulate trace_statfs.test.
+	Rewrite trace_statfs.test using test_trace_expr().
+
+	* tests/gen_tests.in (trace_statfs): New entry.
+	* tests/trace_statfs.in: New file, derived from a set of tests
+	in trace_statfs.test.
+	* tests/trace_statfs.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove trace_statfs.test.
+	(EXTRA_DIST): Add trace_statfs.in.
+
+2017-04-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/init.sh: add helpers for running set of programs.
+	This introduces three new helpers:
+	prog_set_subtract subtracts one program set from another,
+	test_pure_prog_set runs strace check on a set of programs,
+	test_trace_expr tests trace expressions.
+
+	* tests/init.sh (prog_set_subtract, test_pure_prog_set,
+	test_trace_expr): New functions.
+
+2017-04-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: extend gen_tests.sh further.
+	* tests/gen_tests.sh: Extend support of arbitrary rules.
+
+2017-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/xstat.c: do not remove sample file after test.
+	As tests are executed in separate directories now, there is no need to
+	remove sample file.
+
+	* tests/xstat.c (main): Remove unlink calls.
+
+2017-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: use fixed name for stat tests sample file.
+	As tests are now run in separate directories.
+
+	* tests/xstatx.c: Use fixed "stat.sample" name for sample file.
+	* tests/fstat.test: Use it as an argument for -P option.
+	* tests/gen_tests.in (fstat64, lstat, lstat64, newfstatat, oldlstat,
+	oldstat, stat, stat64, statx): Likewise.
+
+2017-04-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Derive copyright year from the git commit date.
+	This solves problems like the need to update test suite on every
+	New Year's Eve.
+
+	* Makefile.am (dist-hook): Generate .year.
+	* copyright-year-gen: New file.
+	* configure.ac (copyright_year): New m4 variable, defined as the output
+	of copyright-year-gen script.
+	(AC_COPYRIGHT): Use it.
+	(COPYRIGHT_YEAR): New output variable and preprocessor macro.
+	* strace.c (print_version): Use COPYRIGHT_YEAR.
+	* strace.spec.in (%prep): Save the value of COPYRIGHT_YEAR autoconf
+	variable to .year file.
+	* tests/strace-V.test (config_year): New variable, derived from config.h.
+	Add sanity checks for $config_year and use it in expected output.
+
+	Reported-by: Andreas Schwab <schwab@suse.de>
+
+2017-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: move /proc/ checks from scripts to executables.
+	Move most of /proc/self/task/ and /proc/self/fd/ checks from scripts
+	to xecutables.
+
+	* tests/attach-f-p.test: Move /proc/self/task/ check ...
+	* tests/attach-f-p-cmd.c (main): ... here.
+	* tests/fstat.test: Move /proc/self/fd/ check ...
+	* tests/xstatx.c (main): ... here.
+	* tests/net-y-unix.test: Move /proc/self/fd/ check ...
+	* tests/net-y-unix.c (main): ... here.
+	* tests/net-yy-inet.test: Move /proc/self/fd/ check ...
+	* tests/net-yy-inet.c (main): ... here.
+	* tests/net-yy-netlink.test: Move /proc/self/fd/ check ...
+	* tests/net-yy-netlink.c (main): ... here.
+	* tests/net-yy-unix.test: Move /proc/self/fd/ check ...
+	* tests/net-yy-unix.c (main): ... here.
+
+2017-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: tabulate pread64-pwrite64.test.
+	* tests/gen_tests.in (pread64-pwrite64): New entry.
+	* tests/pread64-pwrite64.c: (main): Skip the test if /proc/self/fd/
+	is not available.
+	* tests/pread64-pwrite64.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove pread64-pwrite64.test.
+
+	tests: tabulate read-write.test.
+	* tests/gen_tests.in (read-write): New entry.
+	* tests/read-write.c: (main): Skip the test if /proc/self/fd/
+	is not available.
+	* tests/read-write.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove read-write.test.
+
+	tests: add skip_if_unavailable function to libtests.
+	* tests/skip_unavailable.c: New file.
+	* tests/tests.h (skip_if_unavailable): New prototype.
+	* tests/Makefile.am (libtests_a_SOURCES): Add skip_unavailable.c.
+
+	tests: tabulate netlink_protocol.test.
+	* tests/gen_tests.in (netlink_protocol): New entry.
+	* tests/netlink_protocol.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove netlink_protocol.test.
+
+	tests: tabulate statfs.test.
+	* tests/gen_tests.in (statfs): New entry.
+	(fstatfs, fstatfs64, statfs64): Update.
+	* tests/statfs.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove statfs.test.
+
+2017-04-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: skip statfs related tests if their sample files are not available
+	* tests/xstatfsx.c (print_statfs): Skip the test if open failed.
+
+	tests: extend gen_tests.sh to support arbitrary test_* rules.
+	* tests/gen_tests.sh: Add support of arbitrary test_* rules.
+
+	tests: change gen_tests.sh to read its input as raw input.
+	* tests/gen_tests.sh: Specify -r option to read.
+	* tests/gen_tests.in (shmxt): Update.
+
+2017-04-18  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1: s/regex expression/regular expression/
+
+2017-04-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	strace.1: enhance %statfs description.
+	* strace.1 (.SS Filtering) <%statfs>: Fix the list of syscalls,
+	add an equivalent regex expression.
+
+	netlink: decode NLMSG_ERROR messages.
+	* netlink.c (decode_nlmsgerr, decode_payload): New functions.
+	(decode_nlmsghdr_with_payload): Use decode_payload.
+	* tests/netlink_protocol.c (send_query): Check decoding
+	of NLMSG_ERROR messages.
+	* NEWS: Mention this change.
+
+	netlink: avoid using unaligned sizeof(struct nlmsghdr) unnecessarily.
+	* netlink.c (NLMSG_HDRLEN): Redefine.
+	(decode_nlmsghdr_with_payload, decode_netlink): Use it instead
+	of sizeof(struct nlmsghdr).
+
+	Fix the length argument passed from print_iovec to decode_netlink.
+	* io.c (print_iovec): Pass the actual length to decode_netlink
+	instead of the original length.
+	* NEWS: Mention this fix.
+
+	numa: fix printing of error values in move_pages status array.
+	* numa.c (print_status): Do not lose a minus sign when printing
+	a symbolic error code.
+	* tests/move_pages.c (print_status_array): Update expected output.
+
+	tests: generate pure_executables part of check_PROGRAMS automatically.
+	* tests/gen_pure_executables.sh: New file.
+	* bootstrap: Invoke it.
+	* tests/Makefile.am: Include pure_executables.am.
+	(check_PROGRAMS): Add $(PURE_EXECUTABLES).  Remove everything listed
+	in pure_executables.list.
+	(EXTRA_DIST): Add gen_pure_executables.sh.
+	* tests/.gitignore: Add pure_executables.am.
+
+	tests: make EXTRA_DIST sorted.
+	* tests/Makefile.am (EXTRA_DIST): Sort.
+
+	tests: check decoding of alpha specific osf_utimes syscall.
+	* tests/osf_utimes.c: New file.
+	* tests/gen_tests.in (osf_utimes): New entry.
+	* tests/Makefile.am (check_PROGRAMS): Add osf_utimes.
+	* tests/pure_executables.list: Likewise.
+	* tests/.gitignore: Likewise.
+
+	tests: parametrize utimes.c.
+	* tests/xutimes.c: New file, based on utimes.c.
+	* tests/utimes.c [__NR_utimes] (TEST_SYSCALL_NR, TEST_SYSCALL_STR,
+	TEST_STRUCT): New macros.
+	[__NR_utimes]: Replace all the rest with include "xutimes.c".
+	* tests/Makefile.am (EXTRA_DIST): Add xutimes.c.
+
+2017-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	alpha: fix tracing flags of osf_select and osf_utimes syscalls.
+	* linux/alpha/syscallent.h (osf_select): Add TD flag.
+	(osf_utimes): Add TF flag.
+	* NEWS: Mention alpha specific fixes.
+
+2017-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	alpha: rename print_timeval32_pair to print_timeval32_utimes.
+	This follows the rename of print_timeval_item to print_timeval_utimes.
+
+	* defs.h [ALPHA] (print_timeval32_pair): Rename
+	to print_timeval32_utimes.
+	* print_timeval.c [ALPHA] (print_timeval32_pair): Likewise.
+	* utimes.c [ALPHA] (SYS_FUNC(osf_utimes)): Replace print_timeval32_pair
+	with print_timeval32_utimes.
+
+2017-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: do more rigorous testing of utimes syscall parser.
+	* tests/utimes.c (errstr): New variable.
+	(print_ts, k_utimes): New functions.
+	(main): Use them to do more rigorous testing of utimes syscall parser.
+	* tests/gen_tests.in (utimes): Update -a option.
+
+	tests: do more rigorous testing of futimesat syscall parser.
+	* tests/futimesat.c (errstr): New variable.
+	(print_ts, k_futimesat): New functions.
+	(main): Use them to do more rigorous testing of futimesat syscall parser.
+
+2017-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix printing of inaccessible times argument of utimes and futimesat syscalls
+	When the whole pair of struct timeval structures cannot be fetched from
+	tracee's memory, print the address.  This behavior follows the kernel's
+	that uses copy_from_user for the whole pair, too.
+
+	* print_timeval.c (print_timeval_item): Remove.
+	(print_timeval_pair): Rename to print_timeval_utimes, all callers
+	updated.  Fetch the whole timeval_t array with a single
+	umove_or_printaddr call.
+	* tests/futimesat.c (main): Update expected output.
+	* tests/utimes.c (main): Likewise.
+
+2017-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: rewrite utimensat.test without relying on libc utimensat wrapper.
+	The new test also does more rigorous testing.
+
+	* tests/utimensat.c: Stop including <assert.h> and <errno.h>, include
+	<unistd.h> and <asm/unistd.h>, check __NR_utimensat instead
+	of HAVE_UTIMENSAT.
+	(errstr): New variable.
+	(k_utimensat): New function, a thin wrapper around
+	syscall(__NR_utimensat).
+	(main): Use them instead of utimensat.
+	* tests/gen_tests.in (utimensat): New entry.
+	* tests/utimensat.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove it.
+
+2017-04-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use fixed timestamps in utime related tests.
+	* tests/clock.test: Remove futimesat, utime, utimensat, and utimes tests
+	from the list of exceptions.
+	* tests/utime.c (main): Do not use time(), use fixed timestamp instead.
+	* tests/futimesat.c (main): Do not use gettimeofday(), use fixed
+	timestamps instead.
+	* tests/utimensat.c (main): Likewise.
+	* tests/utimes.c (main): Likewise.
+
+2017-04-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xtensa: wire up new syscalls.
+	* linux/xtensa/syscallent.h [348..350]: New pkey_* entries.
+
+	Reported-by: Victor Krapivensky <krapivenskiy.va@phystech.edu>
+
+2017-04-15  Victor Krapivensky  <krapivenskiy.va@phystech.edu>
+
+	Update statx parser and syscall entries lists to the upstream.
+	* linux/32/syscallent.h [291]: Add statx entry.
+	* linux/64/syscallent.h [291]: Likewise.
+	* linux/arm/syscallent.h [397]: Likewise.
+	* linux/m68k/syscallent.h [379]: Likewise.
+	* linux/mips/syscallent-n32.h [6330]: Likewise.
+	* linux/mips/syscallent-n64.h [5326]: Likewise.
+	* linux/mips/syscallent-o32.h [4366]: Likewise.
+	* linux/powerpc/syscallent.h [383]: Likewise.
+	* linux/s390/syscallent.h [379]: Likewise.
+	* linux/s390x/syscallent.h [379]: Likewise.
+	* linux/xtensa/syscallent.h [351]: Likewise.
+	* statx.h (struct_statx): Update.
+	* statx.c (SYS_FUNC(statx)): Print struct_statx.stx_attributes_mask.
+	* tests/xstatx.c (print_stat, main): Update to test decoding
+	of struct_statx.stx_attributes_mask.
+
+2017-04-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: add more regex match checks.
+	* tests/qual_syscall.test: Add regex match checks.
+
+	tests: make mq_sendrecv* test executables reenterable.
+	* tests/mq_sendrecv.c (MQ_NAME): Remove.
+	(mq_name): New static variable.
+	(cleanup): Use it instead of MQ_NAME.
+	(main): Initialize it dynamically using the pid of process.  Use it
+	instead of MQ_NAME.
+
+	tests: make mq test executable reenterable.
+	* tests/mq.c (NAME): Remove.
+	(main): Replace the fixed message queue name with a dynamically
+	made name containing the pid of process.
+	* tests/gen_tests.in (mq): Update -a option.
+
+	tests: make net-yy-netlink test executable reenterable.
+	* tests/net-yy-netlink.c (main): Use getpid() instead of a fixed
+	magic number.
+
+	tests: tabulate shmxt.test.
+	* tests/gen_tests.in (shmxt): New entry.
+	* tests/shmxt.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove shmxt.test.
+
+2017-04-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Revert "Implement -e trace=%sched option"
+	-e trace=%sched became redundant as -e trace=/sched does the same.
+
+	This reverts commit 811638e9c1805438a63c14f9704b8b00ac922623.
+
+	* syscall.c (TSC): Remove.
+	* sysent.h (TRACE_SCHED): Remove.
+	* qualify.c (lookup_class): Remove %sched.
+	* strace.1 (.SS Filtering): Likewise.
+	* NEWS: Likewise.
+	* linux/32/syscallent.h: Remove TSC flag from sched* syscalls.
+	* 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.
+	* tests/sched.test: Replace trace=%sched with trace=/sched.
+	* tests/ksysent.c (TSC): Remove.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Revert "Implement -e trace=%clock option"
+	-e trace=%clock became redundant as -e trace=/clock does the same.
+
+	This reverts commit 0a13d2391c413e3847b71ec0c1d38f56e353b1b5.
+
+	* syscall.c (TCL): Remove.
+	* sysent.h (TRACE_CLOCK): Remove.
+	* qualify.c (lookup_class): Remove %clock.
+	* strace.1 (.SS Filtering): Likewise.
+	* NEWS: Likewise.
+	* linux/32/syscallent.h: Remove TCL flag from clock_* syscalls.
+	* 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.
+	* tests/clock.test: Replace trace=%clock with trace=/clock.
+	* tests/ksysent.c (TCL): Remove.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: robustify regex.test.
+	* tests/regex.test: Use trace_statfs.test as a template instead
+	of clock.test and sched.test, not because of more interesting
+	regular expressions but to fix build on platforms where
+	clock.test and sched.test are not reenterable.
+
+2017-04-14  JingPiao Chen  <chenjingpiao@gmail.com>
+
+	Implement -e trace=/regex option.
+	* qualify.c: Include <regex.h>.
+	(qualify_syscall_regex): New function.
+	(qualify_syscall): Use it.
+	* strace.1: Document -e trace=/regex option.
+	* NEWS: Mention -e trace=/regex option.
+	* tests/regex.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add it.
+	* tests/options-syntax.test: Add checks for invaild regexp
+	and for regexp that doesn't match a syscall.
+
+2017-04-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fix ioctl_nsfs.test on hppa.
+	* tests/ioctl_nsfs.c (test_user_namespace): Specify an address
+	in the middle of a mapped page as child_stack address argument
+	of the clone call.
+	[IA64] (clone): Update.
+
+2017-04-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fix ioctl_nsfs.test on ia64.
+	glibc on ia64 provides no clone() function, but there is a __clone2
+	function instead.  It is documented but no prototype is provided by
+	glibc.
+
+	* tests/ioctl_nsfs.c [IA64] (__clone2): New prototype.
+	[IA64] (clone): New macro wrapper around __clone2.
+
+2017-04-13  Edgar Kaziahmedov  <edos@linux.com>
+
+	tests: check decoding of the remaining V4L2_BUF_TYPE_* types.
+	* tests/ioctl_v4l2.c (init_v4l2_format, print_ioctl_v4l2): New functions
+	to avoid code duplication in VIDIOC_S_FMT and VIDIOC_TRY_FMT tests.
+	(main) <VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT>: Use them.  Add
+	checks for remaining V4L2_BUF_TYPE_* types.
+
+	v4l2: Implement decoding of the remaining V4L2_BUF_TYPE_* types.
+	* v4l2.c: Include "xlat/v4l2_vbi_flags.h" and "xlat/v4l2_sliced_flags.h".
+	(struct_v4l2_clip): New typedef.  Mpersify it.
+	(print_v4l2_clip): New function.
+	(print_v4l2_format_fmt): Use it.  Add struct tcb argument.  Implement
+	decoding of the remaining V4L2_BUF_TYPE_* types.
+	* xlat/v4l2_vbi_flags.in: Add V4L2_VBI_UNSYNC and V4L2_VBI_INTERLACED
+	introduced by linux kernel commit v2.5.46~39^2~23^2~4.
+	Add V4L2_VBI_ITU_525_F1_START, V4L2_VBI_ITU_525_F2_START,
+	V4L2_VBI_ITU_625_F1_START, and V4L2_VBI_ITU_625_F2_START introduced by
+	linux kernel commit v3.17-rc1~112^2~217.
+	* xlat/v4l2_sliced_flags.in: Add V4L2_SLICED_TELETEXT_B, V4L2_SLICED_VPS,
+	V4L2_SLICED_CAPTION_525, V4L2_SLICED_WSS_625, V4L2_SLICED_VBI_525, and
+	V4L2_SLICED_VBI_625 introduced by linux kernel commit v2.6.14-rc2~64.
+	* configure.ac (AC_CHECK_DECLS): Add V4L2_BUF_TYPE_SDR_CAPTURE and
+	V4L2_BUF_TYPE_SDR_OUTPUT.
+	(AC_CHECK_MEMBERS): Add struct v4l2_window.global_alpha and
+	struct v4l2_sdr_format.buffersize.
+	* NEWS: Mention this change.
+
+2017-04-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	travis: use mainline kernel uapi headers for coverage.
+	* .travis.yml (matrix) <CHECK=coverage>: Add KHEADERS=torvalds/linux.
+	* travis-build.sh: Handle $KHEADERS.
+	* travis-install.sh: Likewise.
+
+	travis: switch from clang-3.6 to clang-3.8.
+	* .travis.yml (matrix): Change clang-3.6 to clang-3.8.
+
+2017-04-13  Nikolay Marchuk  <marchuk.nikolay.a@gmail.com>
+
+	Implement decoding of NS_* ioctl commands.
+	* configure.ac (AC_CHECK_HEADERS): Add linux/nsfs.h.
+	* defs.h (DECL_IOCTL(nsfs)): New prototype.
+	(setns_types): Make global.
+	* ioctl.c (ioctl_decode): Call nsfs_ioctl for 0xb7 code.
+	* nsfs.c: New file.
+	* nsfs.h: Likewise.
+	* Makefile.am (strace_SOURCES): Add them.
+	* tests/ioctl_nsfs.c: New file.
+	* tests/ioctl_nsfs.test: Likewise.
+	* tests/.gitignore: Add ioctl_nsfs.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	(DECODER_TESTS): Add ioctl_nsfs.test.
+	* NEWS: Mention this change.
+
+2017-04-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	travis: copy coverage test suite log to the travis log.
+	* travis-build.sh (coverage): Print tests*/test-suite.log
+	and tests*/ksysent.log.
+
+2017-04-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+	travis: add gcc-6.
+	* .travis.yml (matrix): Add gcc-6 entries.
+	* travis-build.sh: Handle gcc*.
+	* travis-install.sh: Handle gcc-*.
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: robustify gen_tests.sh against in-tree builds.
+	* tests/gen_tests.sh: Use abs_srcdir instead of srcdir to construct
+	a path to gen_tests.sh in implicit make rules.
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	trace_syscall_exiting: do not call get_regs for filtered syscalls.
+	This saves up to 25% of ptrace syscalls in case of trace filtering.
+
+	* syscall.c (trace_syscall_exiting): Do not call gettimeofday
+	and get_regs for filtered syscalls.
+	* NEWS: Mention this change.
+	* tests/get_regs.test: New test.
+	* tests/Makefile.am (MISC_TESTS): Add it.
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Delay get_regs invocation.
+	strace used to call get_regs on every stop of a tracee, including cases
+	when the result is going to be discarded.  Prepare to change this lavish
+	practice by delaying get_regs invocation until its result is actually
+	needed.
+
+	* defs.h (get_regs): Remove.
+	* strace.c (trace): Do not call get_regs.
+	* syscall.c (get_regs): Add static qualifier.
+	(trace_syscall_exiting, print_pc, get_scno): Call get_regs.
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	startup_tcb: move get_scno invocation to a more convenient place.
+	* strace.c (trace): Move get_scno invocation ...
+	(startup_tcb): ... here.  This is a no-op change that slightly improves
+	readability.
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	get_regs: guard against subsequent invocations.
+	At this moment there is only one call to get_regs,
+	but there is going to be more of them, so a guard is needed.
+
+	This change also adds a clear_regs call before get_regs,
+	which essentially reverts commit v4.9-288-ge9bfff6.
+
+	* strace.c (trace): Call clear_regs before get_regs.
+	* syscall.c (get_regs): Skip if get_regs_error != -1.
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	syscall: move definitions of automatic variables closer to their use.
+	* syscall.c (trace_syscall_entering, trace_syscall_exiting): Move
+	definitions of automatic variables closer to their first use.  This
+	change slightly improves readability.
+
+	tests: check decoding of gettid syscall.
+	* tests/gettid.c: New file.
+	* tests/.gitignore: Add gettid.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	* tests/gen_tests.in (gettid): New entry.
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fix build on alpha.
+	* tests/getpid.c: Skip if __NR_getpid is not defined.
+	* tests/getppid.c: Skip if __NR_getppid is not defined.
+
+	Fixes: fd1041f6 ("tests: add tests for getpid and getppid syscalls")
+
+2017-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix build with old linux/netlink.h.
+	* socketutils.c: Provide a fallback definition of NETLINK_SOCK_DIAG.
+
+	Fixes: 5c256356 ("Do not include xlat/netlink_protocols.h twice")
+
+2017-04-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Do not include xlat/netlink_protocols.h twice.
+	Make netlink_protocols a global xlat array defined in net.c file.
+
+	* defs.h (netlink_protocols): New prototype.
+	* socketutils.c: Stop including "xlat/netlink_protocols.h".
+
+2017-04-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Do not include xlat/clocknames.h twice.
+	Make clocknames a global xlat array defined in time.c file.
+
+	* defs.h (clocknames): New prototype.
+	* perf.c: Stop including "xlat/clocknames.h".
+
+2017-04-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Remove unused xlat/openmodessol.in.
+	* xlat/openmodessol.in: Remove file unused since commit
+	v4.10-45-gdf4dd8b.
+
+	Remove unused xlat/aclipc.in.
+	* xlat/aclipc.in: Remove file unused since commit v4.9-46-g681452b.
+
+2017-04-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: remove statfs.expected.
+	statfs.expected is unused since commit v4.11-515-g67c2f67.
+
+	* tests/statfs.expected: Remove.
+	* tests/Makefile.am (EXTRA_DIST): Remove it.
+
+2017-04-07  Sandhya Bankar  <bankarsandhya512@gmail.com>
+
+	tests: add tests for getpid and getppid syscalls.
+
+	[ldv: rewritten everything]
+
+	* tests/getpid.c: New file.
+	* tests/getppid.c: Likewise.
+	* tests/.gitignore: Add getpid and getppid.
+	* tests/pure_executables.list: Likewise.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	* tests/gen_tests.in (getpid, getppid): New entries.
+
+2017-04-07  Edgar Kaziahmedov  <edos@linux.com>
+
+	Update V4L2_* constants.
+	* xlat/v4l2_buf_flags.in: Add V4L2_BUF_FLAG_PREPARED,
+	V4L2_BUF_FLAG_NO_CACHE_INVALIDATE, and V4L2_BUF_FLAG_NO_CACHE_CLEAN
+	introduced by linux kernel commit v3.2-rc1~63^2~55.
+	Add V4L2_BUF_FLAG_TIMESTAMP_MASK, V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN,
+	and V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC introduced by linux kernel commit
+	v3.9-rc1~93^2~536.
+	Add V4L2_BUF_FLAG_TIMESTAMP_COPY introduced by linux kernel commit
+	v3.10-rc1~136^2~560.
+	Add V4L2_BUF_FLAG_TSTAMP_SRC_MASK, V4L2_BUF_FLAG_TSTAMP_SRC_EOF,
+	and V4L2_BUF_FLAG_TSTAMP_SRC_SOE introduced by linux kernel commit
+	v3.15-rc1~85^2~186.
+	Add V4L2_BUF_FLAG_LAST introduced by linux kernel commit
+	v4.2-rc1~107^2~389.
+	* xlat/v4l2_buf_types.in: Add V4L2_BUF_TYPE_SDR_CAPTURE
+	and V4L2_BUF_TYPE_SDR_OUTPUT introduced by linux kernel commits
+	v3.15-rc1~85^2~213 and v4.4-rc1~118^2~14, respectively.
+	* xlat/xlat/v4l2_colorspaces.in: Add V4L2_COLORSPACE_ADOBERGB
+	and V4L2_COLORSPACE_BT2020 introduced by linux kernel commit
+	v3.19-rc1~29^2~72.
+	Add V4L2_COLORSPACE_RAW and V4L2_COLORSPACE_DCI_P3 introduced by linux
+	kernel commits v4.2-rc1~107^2~182 and v4.4-rc1~118^2~120, respectively.
+	* xlat/v4l2_device_capabilities_flags.in: Add V4L2_CAP_SDR_CAPTURE,
+	V4L2_CAP_EXT_PIX_FORMAT, and V4L2_CAP_SDR_OUTPUT introduced by linux
+	kernel commits v3.15-rc1~85^2~210, v3.17-rc1~112^2~327,
+	and v4.4-rc1~118^2~14, respectively.
+	* xlat/v4l2_memories.in: Add V4L2_MEMORY_OVERLAY introduced
+	in linux 2.5.46.  Add V4L2_MEMORY_DMABUF introduced by linux kernel
+	commit v3.8-rc1~115^2^2~52.
+
+2017-04-07  Abhishek Tiwari  <erabhishektiwarics@gmail.com>
+
+	Implement -e trace=%statfs option.
+	linux/*/syscallent*.h part is modified automatically by:
+
+		sed -i 's/TF\(,[[:space:]]*SEN.*[_"]statv\?fs\)/TF|TSF\1/' \
+			linux/*/syscallent*.h
+
+	[ldv: rewritten trace_statfs.test using sched.test as a template]
+
+	* sysent.h (TRACE_STATFS): New macro.
+	* syscall.c: Alias TSF to TRACE_STATFS around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add SCHED_STATFS for "%statfs".
+	* strace.1 (.SS Filtering): Add information about %statfs syscall class.
+	* NEWS: Mention this change.
+	* linux/64/syscallent.h (statfs): Add TSF flag.
+	* linux/aarch64/syscallent.h: Likewise.
+	* linux/x32/syscallent.h: Likewise.
+	* linux/x86_64/syscallent.h: Likewise.
+	* linux/mips/syscallent-n64.h: Likewise.
+	* linux/32/syscallent.h (statfs64): Likewise.
+	* linux/arm/syscallent.h (statfs, statfs64): 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-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/xtensa/syscallent.h: Likewise.
+	* linux/alpha/syscallent.h (osf_statfs, osf_statfs64, statfs): Likewise.
+	* linux/mips/syscallent-compat.h (*_statfs, *_statvfs): Likewise.
+	* tests/trace_statfs.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add it.
+	* tests/ksysent.c (TSF): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-06  Rishi Bhatt  <bhatt.rishi062@gmail.com>
+
+	Implement -e trace=%clock option.
+	linux/*/syscallent.h part is modified automatically by
+	sed -i 's/0\(,[[:space:]]*SEN(clock_\)/TCL\1/' linux/*/syscallent*.h
+
+	[ldv: rewritten clock.test using sched.test as a template]
+
+	* sysent.h (TRACE_CLOCK): New macro.
+	* syscall.c: Alias TCL to TRACE_CLOCK around syscallent.h inclusion.
+	* qualify.c (lookup_class): Add TRACE_CLOCK for "%clock".
+	* strace.1 (.SS Filtering): Add information about %clock syscall class.
+	* NEWS: Mention this change.
+	* linux/32/syscallent.h: Add TCL flag for clock_* syscalls.
+	* 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.
+	* tests/clock.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add it.
+	* tests/ksysent.c (TCL): New macro, defined to 0.
+	* tests/nsyscalls.c: Likewise.
+
+2017-04-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: tabulate xattr.test.
+	* tests/gen_tests.in (xattr): New entry.
+	* tests/xattr.test: Remove.
+	* tests/Makefile.am (DECODER_TESTS): Remove xattr.test.
+
+2017-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: generalize scripts that check non-abbreviated decoding of ioctls.
+	* tests/ioctl-v.sh: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	(DECODER_TESTS): Remove ioctl_evdev-v.test, ioctl_loop-v.test,
+	and ioctl_rtc-v.test.
+	* tests/gen_tests.in (ioctl_evdev-v, ioctl_loop-v, ioctl_rtc-v):
+	New entries.
+	* tests/ioctl_evdev-v.test: Remove.
+	* tests/ioctl_loop-v.test: Ditto.
+	* tests/ioctl_rtc-v.test: Ditto.
+
+2017-04-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: tabulate stereotypical test scripts.
+	Convert test scripts that follow simple testing patterns to a table.
+	Generate all these scripts from gen_tests.in file using gen_tests.sh
+	script at bootstrap time.
+
+	The largest set of test scripts has been converted using
+	the following command:
+
+	grep -l ^run_strace_match_diff *.test |while read f; do
+		n="${f%.test}"
+		grep '^[^#]' "$f" |
+		grep -Evq '^(\. "\${srcdir=\.}/init\.sh"|run_strace_match_diff)' ||
+		sed -n 's/^run_strace_match_diff\(.*\)/'$n'\1/p' "$f"
+	done
+
+	The second largest set of test scripts has been converted using
+	the following command:
+
+	grep -l srcdir= *.test |while read f; do
+		n="${f%.test}"
+		grep '^[^#]' "$f" |
+		grep -Fvq srcdir= ||
+		sed -n 's/^. "\${srcdir=.}\/\([^"]\+\)".*/'$n'\t+\1/p' "$f"
+	done
+
+	* tests/gen_tests.in: New file.
+	* tests/gen_tests.sh: New file.
+	* bootstrap: Invoke it.
+	* tests/.gitignore: Add *.gen.test and gen_tests.am.
+	* tests/_newselect.test: Remove.
+	* tests/accept.test: Ditto.
+	* tests/accept4.test: Ditto.
+	* tests/access.test: Ditto.
+	* tests/acct.test: Ditto.
+	* tests/add_key.test: Ditto.
+	* tests/adjtimex.test: Ditto.
+	* tests/aio.test: Ditto.
+	* tests/alarm.test: Ditto.
+	* tests/bpf.test: Ditto.
+	* tests/btrfs.test: Ditto.
+	* tests/chmod.test: Ditto.
+	* tests/chown.test: Ditto.
+	* tests/chown32.test: Ditto.
+	* tests/chroot.test: Ditto.
+	* tests/clock_adjtime.test: Ditto.
+	* tests/clock_nanosleep.test: Ditto.
+	* tests/clock_xettime.test: Ditto.
+	* tests/copy_file_range.test: Ditto.
+	* tests/creat.test: Ditto.
+	* tests/delete_module.test: Ditto.
+	* tests/dup.test: Ditto.
+	* tests/dup2.test: Ditto.
+	* tests/dup3.test: Ditto.
+	* tests/epoll_create.test: Ditto.
+	* tests/epoll_create1.test: Ditto.
+	* tests/epoll_ctl.test: Ditto.
+	* tests/epoll_pwait.test: Ditto.
+	* tests/epoll_wait.test: Ditto.
+	* tests/erestartsys.test: Ditto.
+	* tests/execveat-v.test: Ditto.
+	* tests/execveat.test: Ditto.
+	* tests/faccessat.test: Ditto.
+	* tests/fadvise64_64.test: Ditto.
+	* tests/fallocate.test: Ditto.
+	* tests/fanotify_init.test: Ditto.
+	* tests/fanotify_mark.test: Ditto.
+	* tests/fchdir.test: Ditto.
+	* tests/fchmod.test: Ditto.
+	* tests/fchmodat.test: Ditto.
+	* tests/fchown.test: Ditto.
+	* tests/fchown32.test: Ditto.
+	* tests/fchownat.test: Ditto.
+	* tests/fcntl.test: Ditto.
+	* tests/fcntl64.test: Ditto.
+	* tests/fdatasync.test: Ditto.
+	* tests/file_handle.test: Ditto.
+	* tests/file_ioctl.test: Ditto.
+	* tests/finit_module.test: Ditto.
+	* tests/flock.test: Ditto.
+	* tests/fork-f.test: Ditto.
+	* tests/fstat64.test: Ditto.
+	* tests/fstatat64.test: Ditto.
+	* tests/fstatfs.test: Ditto.
+	* tests/fstatfs64.test: Ditto.
+	* tests/fsync.test: Ditto.
+	* tests/ftruncate.test: Ditto.
+	* tests/ftruncate64.test: Ditto.
+	* tests/futimesat.test: Ditto.
+	* tests/get_mempolicy.test: Ditto.
+	* tests/getcpu.test: Ditto.
+	* tests/getcwd.test: Ditto.
+	* tests/getdents.test: Ditto.
+	* tests/getdents64.test: Ditto.
+	* tests/getegid.test: Ditto.
+	* tests/getegid32.test: Ditto.
+	* tests/geteuid.test: Ditto.
+	* tests/geteuid32.test: Ditto.
+	* tests/getgid.test: Ditto.
+	* tests/getgid32.test: Ditto.
+	* tests/getgroups.test: Ditto.
+	* tests/getgroups32.test: Ditto.
+	* tests/getpeername.test: Ditto.
+	* tests/getpgrp.test: Ditto.
+	* tests/getrandom.test: Ditto.
+	* tests/getresgid.test: Ditto.
+	* tests/getresgid32.test: Ditto.
+	* tests/getresuid.test: Ditto.
+	* tests/getresuid32.test: Ditto.
+	* tests/getrlimit.test: Ditto.
+	* tests/getrusage.test: Ditto.
+	* tests/getsid.test: Ditto.
+	* tests/getsockname.test: Ditto.
+	* tests/getuid32.test: Ditto.
+	* tests/getxxid.test: Ditto.
+	* tests/inet-cmsg.test: Ditto.
+	* tests/init_module.test: Ditto.
+	* tests/inotify.test: Ditto.
+	* tests/inotify_init1.test: Ditto.
+	* tests/int_0x80.test: Ditto.
+	* tests/ioctl_block.test: Ditto.
+	* tests/ioctl_evdev.test: Ditto.
+	* tests/ioctl_loop.test: Ditto.
+	* tests/ioctl_mtd.test: Ditto.
+	* tests/ioctl_rtc.test: Ditto.
+	* tests/ioctl_scsi.test: Ditto.
+	* tests/ioctl_sg_io_v3.test: Ditto.
+	* tests/ioctl_sg_io_v4.test: Ditto.
+	* tests/ioctl_uffdio.test: Ditto.
+	* tests/ioctl_v4l2.test: Ditto.
+	* tests/ioperm.test: Ditto.
+	* tests/iopl.test: Ditto.
+	* tests/ioprio.test: Ditto.
+	* tests/ip_mreq.test: Ditto.
+	* tests/ipc.test: Ditto.
+	* tests/ipc_msg.test: Ditto.
+	* tests/ipc_sem.test: Ditto.
+	* tests/ipc_shm.test: Ditto.
+	* tests/kcmp.test: Ditto.
+	* tests/kexec_file_load.test: Ditto.
+	* tests/kexec_load.test: Ditto.
+	* tests/keyctl.test: Ditto.
+	* tests/kill.test: Ditto.
+	* tests/lchown.test: Ditto.
+	* tests/lchown32.test: Ditto.
+	* tests/link.test: Ditto.
+	* tests/linkat.test: Ditto.
+	* tests/lookup_dcookie.test: Ditto.
+	* tests/lstat.test: Ditto.
+	* tests/lstat64.test: Ditto.
+	* tests/mbind.test: Ditto.
+	* tests/membarrier.test: Ditto.
+	* tests/memfd_create.test: Ditto.
+	* tests/migrate_pages.test: Ditto.
+	* tests/mincore.test: Ditto.
+	* tests/mkdir.test: Ditto.
+	* tests/mkdirat.test: Ditto.
+	* tests/mknod.test: Ditto.
+	* tests/mknodat.test: Ditto.
+	* tests/mlock.test: Ditto.
+	* tests/mlock2.test: Ditto.
+	* tests/mlockall.test: Ditto.
+	* tests/mmap64.test: Ditto.
+	* tests/mmsg-silent.test: Ditto.
+	* tests/mmsg.test: Ditto.
+	* tests/mmsg_name-v.test: Ditto.
+	* tests/mmsg_name.test: Ditto.
+	* tests/mount.test: Ditto.
+	* tests/move_pages.test: Ditto.
+	* tests/mq.test: Ditto.
+	* tests/mq_sendrecv-read.test: Ditto.
+	* tests/mq_sendrecv-write.test: Ditto.
+	* tests/mq_sendrecv.test: Ditto.
+	* tests/msg_control-v.test: Ditto.
+	* tests/msg_control.test: Ditto.
+	* tests/msg_name.test: Ditto.
+	* tests/munlockall.test: Ditto.
+	* tests/nanosleep.test: Ditto.
+	* tests/net-icmp_filter.test: Ditto.
+	* tests/net-sockaddr.test: Ditto.
+	* tests/newfstatat.test: Ditto.
+	* tests/old_mmap.test: Ditto.
+	* tests/oldfstat.test: Ditto.
+	* tests/oldlstat.test: Ditto.
+	* tests/oldstat.test: Ditto.
+	* tests/open.test: Ditto.
+	* tests/openat.test: Ditto.
+	* tests/pause.test: Ditto.
+	* tests/perf_event_open.test: Ditto.
+	* tests/perf_event_open_nonverbose.test: Ditto.
+	* tests/perf_event_open_unabbrev.test: Ditto.
+	* tests/pipe2.test: Ditto.
+	* tests/pkey_alloc.test: Ditto.
+	* tests/pkey_free.test: Ditto.
+	* tests/pkey_mprotect.test: Ditto.
+	* tests/ppoll-v.test: Ditto.
+	* tests/ppoll.test: Ditto.
+	* tests/preadv-pwritev.test: Ditto.
+	* tests/preadv.test: Ditto.
+	* tests/preadv2-pwritev2.test: Ditto.
+	* tests/printstr.test: Ditto.
+	* tests/prlimit64.test: Ditto.
+	* tests/process_vm_readv.test: Ditto.
+	* tests/process_vm_writev.test: Ditto.
+	* tests/pselect6.test: Ditto.
+	* tests/ptrace.test: Ditto.
+	* tests/pwritev.test: Ditto.
+	* tests/quotactl-v.test: Ditto.
+	* tests/quotactl-xfs-v.test: Ditto.
+	* tests/quotactl-xfs.test: Ditto.
+	* tests/quotactl.test: Ditto.
+	* tests/readahead.test: Ditto.
+	* tests/readdir.test: Ditto.
+	* tests/readlink.test: Ditto.
+	* tests/readlinkat.test: Ditto.
+	* tests/reboot.test: Ditto.
+	* tests/recvfrom.test: Ditto.
+	* tests/recvmmsg-timeout.test: Ditto.
+	* tests/recvmsg.test: Ditto.
+	* tests/remap_file_pages.test: Ditto.
+	* tests/rename.test: Ditto.
+	* tests/renameat.test: Ditto.
+	* tests/renameat2.test: Ditto.
+	* tests/request_key.test: Ditto.
+	* tests/rmdir.test: Ditto.
+	* tests/rt_sigpending.test: Ditto.
+	* tests/rt_sigprocmask.test: Ditto.
+	* tests/rt_sigqueueinfo.test: Ditto.
+	* tests/rt_sigreturn.test: Ditto.
+	* tests/rt_sigsuspend.test: Ditto.
+	* tests/rt_sigtimedwait.test: Ditto.
+	* tests/rt_tgsigqueueinfo.test: Ditto.
+	* tests/sched_get_priority_mxx.test: Ditto.
+	* tests/sched_rr_get_interval.test: Ditto.
+	* tests/sched_xetaffinity.test: Ditto.
+	* tests/sched_xetattr.test: Ditto.
+	* tests/sched_xetparam.test: Ditto.
+	* tests/sched_xetscheduler.test: Ditto.
+	* tests/sched_yield.test: Ditto.
+	* tests/seccomp-filter-v.test: Ditto.
+	* tests/seccomp-filter.test: Ditto.
+	* tests/select.test: Ditto.
+	* tests/semop.test: Ditto.
+	* tests/sendfile.test: Ditto.
+	* tests/sendfile64.test: Ditto.
+	* tests/set_mempolicy.test: Ditto.
+	* tests/setdomainname.test: Ditto.
+	* tests/setfsgid.test: Ditto.
+	* tests/setfsgid32.test: Ditto.
+	* tests/setfsuid.test: Ditto.
+	* tests/setfsuid32.test: Ditto.
+	* tests/setgid.test: Ditto.
+	* tests/setgid32.test: Ditto.
+	* tests/setgroups.test: Ditto.
+	* tests/setgroups32.test: Ditto.
+	* tests/sethostname.test: Ditto.
+	* tests/setns.test: Ditto.
+	* tests/setregid.test: Ditto.
+	* tests/setregid32.test: Ditto.
+	* tests/setresgid.test: Ditto.
+	* tests/setresgid32.test: Ditto.
+	* tests/setresuid.test: Ditto.
+	* tests/setresuid32.test: Ditto.
+	* tests/setreuid.test: Ditto.
+	* tests/setreuid32.test: Ditto.
+	* tests/setrlimit.test: Ditto.
+	* tests/setuid.test: Ditto.
+	* tests/setuid32.test: Ditto.
+	* tests/shutdown.test: Ditto.
+	* tests/siginfo.test: Ditto.
+	* tests/signal_receive.test: Ditto.
+	* tests/signalfd4.test: Ditto.
+	* tests/sigreturn.test: Ditto.
+	* tests/socketcall.test: Ditto.
+	* tests/splice.test: Ditto.
+	* tests/stat.test: Ditto.
+	* tests/stat64.test: Ditto.
+	* tests/statfs64.test: Ditto.
+	* tests/statx.sh: Ditto.
+	* tests/statx.test: Ditto.
+	* tests/swap.test: Ditto.
+	* tests/symlink.test: Ditto.
+	* tests/symlinkat.test: Ditto.
+	* tests/sync.test: Ditto.
+	* tests/sync_file_range.test: Ditto.
+	* tests/sync_file_range2.test: Ditto.
+	* tests/sysinfo.test: Ditto.
+	* tests/syslog.test: Ditto.
+	* tests/tee.test: Ditto.
+	* tests/time.test: Ditto.
+	* tests/timer_create.test: Ditto.
+	* tests/timer_xettime.test: Ditto.
+	* tests/timerfd_xettime.test: Ditto.
+	* tests/times-fail.test: Ditto.
+	* tests/times.test: Ditto.
+	* tests/truncate.test: Ditto.
+	* tests/truncate64.test: Ditto.
+	* tests/ugetrlimit.test: Ditto.
+	* tests/umask.test: Ditto.
+	* tests/umoven-illptr.test: Ditto.
+	* tests/umovestr-illptr.test: Ditto.
+	* tests/umovestr3.test: Ditto.
+	* tests/unlink.test: Ditto.
+	* tests/unlinkat.test: Ditto.
+	* tests/unshare.test: Ditto.
+	* tests/userfaultfd.test: Ditto.
+	* tests/ustat.test: Ditto.
+	* tests/utime.test: Ditto.
+	* tests/utimes.test: Ditto.
+	* tests/vfork-f.test: Ditto.
+	* tests/vhangup.test: Ditto.
+	* tests/vmsplice.test: Ditto.
+	* tests/wait4-v.test: Ditto.
+	* tests/wait4.test: Ditto.
+	* tests/waitid-v.test: Ditto.
+	* tests/waitid.test: Ditto.
+	* tests/waitpid.test: Ditto.
+	* tests/xattr-strings.test: Ditto.
+	* tests/xet_robust_list.test: Ditto.
+	* tests/xetitimer.test: Ditto.
+	* tests/xetpgid.test: Ditto.
+	* tests/xetpriority.test: Ditto.
+	* tests/xettimeofday.test: Ditto.
+	* tests/Makefile.am (DECODER_TESTS, MISC_TESTS): Remove them.
+	Include gen_tests.am.
+	(TESTS): Add $(GEN_TESTS).
+	(XFAIL_TESTS_x86_64, XFAIL_TESTS_x32): Rename int_0x80.test
+	to int_0x80.gen.test.
+	(EXTRA_DIST): Add gen_tests.in and gen_tests.sh, remove statx.sh.
+	(clean-local-check): Remove $(GEN_TESTS:.gen.test=.dir).
+
+2017-04-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: handle test scripts with .gen.test suffix.
+	* tests/init.sh: If script name ends with .gen.test,
+	set NAME variable with .gen.test suffix stripped.
+
+2017-04-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mpers.awk: add support for multidimensional arrays.
+	* mpers.awk (update_upper_bound): New function, which maintains new "count"
+	property for storing total element count and updates "upper_bound"
+	property which now contains string with array dimensions.
+	(/^DW_AT_upper_bound/, /^DW_AT_count/): Use it.
+	(what_is) <case "array_type">: Use "count" property in order to calculate
+	returned_size, do not embody returned string in square brackets.
+	* mpers_test.sh: Add checks for multidimensional arrays.
+
+2017-04-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mpers.awk: prepare for adding support of multidimensional arrays.
+	* mpers.awk (what_is) <case "structure_type", case "union_type">:
+	Move formatting of array upper_bound ...
+	<case "array_type">: ... here.
+
+2017-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: cleanup temporary files removals.
+	As every test now runs in its own subdirectory, there is no need
+	to remove leftover files manually by each test.
+
+	* tests/init.sh (run_strace_match_diff): Do not remove $EXP.
+	* tests/brk.test: Likewise.
+	* tests/options-syntax.test: Likewise.
+	* tests/qual_inject-retval.test (check_injection): Likewise.
+	* tests/qual_signal.test (test_one_sig): Likewise.
+	* tests/sched.test: Likewise.
+	* tests/seccomp-strict.test: Likewise.
+	* tests/strace-V.test: Likewise.
+	* tests/strace-tt.test: Likewise.
+	* tests/strace-ttt.test: Likewise.
+	* tests/threads-execve.test: Likewise.
+	* tests/attach-f-p.test: Use $EXP instead of $OUT, do not remove it.
+	* tests/personality.test: Likewise.
+	* tests/poll.test: Likewise.
+	* tests/fstat.test: Likewise.
+	* tests/ipc.sh: Likewise.
+	* tests/restart_syscall.test: Likewise.
+	* tests/utimensat.test: Likewise.
+	* tests/attach-p-cmd.test: Likewise.  Do not remove
+	attach-p-cmd.test-lock.
+	* tests/detach-running.test: Do not remove $LOG.
+	* tests/detach-sleeping.test: Likewise.
+	* tests/detach-stopped.test: Likewise.
+	* tests/redirect.test: Do not remove $OUT.
+	* tests/strace-S.test: Likewise.
+	* tests/getdents.test: Do not remove $LOG.dir.
+	* tests/getdents64.test: Likewise.
+	* tests/readdir.test: Likewise.
+	* tests/btrfs-v.test: Do not remove $EXP and $OUT.
+	* tests/btrfs-vw.test: Likewise.
+	* tests/btrfs-w.test: Likewise.
+	* tests/execve-v.test: Likewise.
+	* tests/execve.test: Likewise.
+	* tests/fadvise64.test: Likewise.
+	* tests/getuid.test: Likewise.
+	* tests/ioctl.test: Likewise.
+	* tests/ioctl_dm-v.test: Likewise.
+	* tests/ioctl_dm.test: Likewise.
+	* tests/ioctl_evdev-v.test: Likewise.
+	* tests/ioctl_loop-nv.test: Likewise.
+	* tests/ioctl_loop-v.test: Likewise.
+	* tests/ioctl_loop.test: Likewise.
+	* tests/ioctl_rtc-v.test: Likewise.
+	* tests/ioctl_sock_gifconf.test: Likewise.
+	* tests/llseek.test: Likewise.
+	* tests/lseek.test: Likewise.
+	* tests/mmap.test: Likewise.
+	* tests/net-y-unix.test: Likewise.
+	* tests/net-yy-inet.test: Likewise.
+	* tests/net-yy-netlink.test: Likewise.
+	* tests/net-yy-unix.test: Likewise.
+	* tests/opipe.test: Likewise.
+	* tests/prctl-arg2-intptr.test: Likewise.
+	* tests/prctl-dumpable.test: Likewise.
+	* tests/prctl-name.test: Likewise.
+	* tests/prctl-no-args.test: Likewise.
+	* tests/prctl-pdeathsig.test: Likewise.
+	* tests/prctl-seccomp-filter-v.test: Likewise.
+	* tests/prctl-seccomp-strict.test: Likewise.
+	* tests/prctl-securebits.test: Likewise.
+	* tests/prctl-tid_address.test: Likewise.
+	* tests/prctl-tsc.test: Likewise.
+	* tests/umovestr2.test: Likewise.
+	* tests/uname.test: Likewise.
+	* tests/pread64-pwrite64.test: Do nore remove pread64-pwrite64-tmpfile.
+	* tests/read-write.test: Do nore remove read-write-tmpfile.
+	* tests/qual_fault.test (check_fault_injection): Do not remove $EXP,
+	$outexp, and $outgot.
+	* tests/redirect-fds.test (check_fd): Reorder removal of work files.
+	* tests/pc.test: Use $EXP instead of $EXPECTED, do not remove it.
+	* tests/strace-t.test: Likewise.
+	* tests/scm_rights-fd.test: Likewise.  Use dir instead of $LOG.dir,
+	do not remove it.
+	* tests/strace-ff.test: Do not remove $OUT and $LOG.* files.
+
+2017-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: enhance sched.test negative check.
+	* tests/sched.test: Test that trace=%sched doesn't match
+	anything besides sched_* syscalls by checking it against all test
+	executables without side effects listed in pure_executables.list
+	except sched_* and times.
+
+2017-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: add a list of executables without side effects.
+	These are executables that could be used by several different tests
+	simultaneously.
+
+	* tests/pure_executables.list: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+
+2017-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use fixed socket address in net-yy-unix.test.
+	This allows net-yy-unix invocation without arguments.
+
+	* tests/net-yy-unix.c (TEST_SOCKET): New macro.
+	(void): Use it instead of av[1].
+	* tests/net-yy-unix.test: Do not specify arguments for the test
+	executable.
+
+2017-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use fixed socket address in net-y-unix.test.
+	This allows net-y-unix invocation without arguments.
+
+	* tests/net-y-unix.c (TEST_SOCKET): New macro.
+	(void): Use it instead of av[1].
+	* tests/net-y-unix.test: Do not specify arguments for the test
+	executable.
+
+2017-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: run every test except ksysent.test in its own subdirectory.
+	Many test executables create temporary files in the current work
+	directory for the duration of their execution.
+	This level of test isolation allows more test executables to be invoked
+	several times simultaneously.
+
+	* tests/.gitignore: Add *.dir, remove *.log.*, *.tmp, *.tmp-*,
+	and *.tmp.* patterns.
+	* tests/Makefile.am (clean-local, clean-local-check): New rules.
+	(.PHONY): Add clean-local-check.
+	(CLEANFILES): Remove all but ksysent.h.
+	* tests/init.sh: Strip test-specific prefix from LOG, OUT, and EXP
+	variables.  When invoked from a test, create a new test-specific
+	directory, chdir into it, and add more ../ prefix to STRACE variable.
+	(run_prog): Replace "./" with "../".
+	* tests/attach-f-p.test: Replace "./" with "../".
+	* tests/attach-p-cmd.test: Likewise.
+	* tests/bexecve.test: Likewise.
+	* tests/btrfs-v.test: Likewise.
+	* tests/btrfs-vw.test: Likewise.
+	* tests/btrfs-w.test: Likewise.
+	* tests/count.test: Likewise.
+	* tests/detach-running.test: Likewise.
+	* tests/detach-sleeping.test: Likewise.
+	* tests/detach-stopped.test: Likewise.
+	* tests/mmap.test: Likewise.
+	* tests/net-y-unix.test: Likewise.
+	* tests/net-yy-inet.test: Likewise.
+	* tests/net-yy-netlink.test: Likewise.
+	* tests/net-yy-unix.test: Likewise.
+	* tests/net.test: Likewise.
+	* tests/opipe.test: Likewise.
+	* tests/poll.test: Likewise.
+	* tests/prctl-seccomp-strict.test: Likewise.
+	* tests/qual_fault-exit_group.test: Likewise.
+	* tests/qual_fault.test: Likewise.
+	* tests/qual_inject-error-signal.test: Likewise.
+	* tests/qual_inject-retval.test: Likewise.
+	* tests/qual_inject-signal.test: Likewise.
+	* tests/qual_signal.test: Likewise.
+	* tests/qual_syscall.test: Likewise.
+	* tests/readv.test: Likewise.
+	* tests/redirect-fds.test: Likewise.
+	* tests/sched.test: Likewise.
+	* tests/scm_rights-fd.test: Likewise.
+	* tests/seccomp-strict.test: Likewise.
+	* tests/strace-C.test: Likewise.
+	* tests/strace-E.expected: Likewise.
+	* tests/strace-E.test: Likewise.
+	* tests/strace-S.test: Likewise.
+	* tests/strace-T.test: Likewise.
+	* tests/strace-V.test: Likewise.
+	* tests/strace-ff.test: Likewise.
+	* tests/strace-k.test: Likewise.
+	* tests/strace-r.expected: Likewise.
+	* tests/strace-r.test: Likewise.
+	* tests/strace-t.test: Likewise.
+	* tests/strace-tt.test: Likewise.
+	* tests/strace-ttt.test: Likewise.
+	* tests/sun_path.test: Likewise.
+	* tests/uname.test: Likewise.
+	* tests/unix-pair-send-recv.test: Likewise.
+	* tests/unix-pair-sendto-recvfrom.test: Likewise.
+
+2017-04-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: make test executables invocable outside current work directory.
+	Most of test executables were ready for the upcoming change,
+	this change prepares all the rest.
+
+	* tests/getdents.c (main): Use fixed name for the sample directory.
+	* tests/getdents64.c (main): Likewise.
+	* tests/readdir.c (main): Likewise.
+	* tests/mknod.c (sample): Change to a pointer.
+	(main): Use av[0] as a sample.
+	* tests/symlink.c (main): Use av[0] as a linkpath.
+	* tests/umode_t.c (sample): Change to a pointer.
+	(test_syscall): Fix expected output.
+	(main): Use av[0] as a sample.
+
+2017-03-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: cleanup access.test.
+	* tests/access.test: Use run_strace_match_diff.
+	* tests/access.c (main): Update expected output.
+
+2017-03-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: cleanup oldfstat.test.
+	* tests/oldfstat.test: Use fstat.test.
+
+2017-03-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	aarch64: workaround gcc+kernel bug.
+	Due to a subtle gcc bug that leads to miscompiled aarch64 kernels,
+	the 3rd argument of sched_getattr syscall is not quite 32-bit
+	on aarch64 as on other architectures.  For more details see
+	https://sourceforge.net/p/strace/mailman/message/35721703/
+
+	* defs.h (print_abnormal_hi): New prototype.
+	* util.c (print_abnormal_hi): New function.
+	* sched.c (SYS_FUNC(sched_getattr)) [AARCH64]: Use it.
+	* tests/sched_xetattr.c (main) [__arm64__ || __aarch64__]: Test it.
+
+2017-03-29  Abhishek Tiwari  <erabhishektiwarics@gmail.com>
+
+	alpha, mips: fix missing flags in stat related compatibility syscalls.
+	Following commands do the fix:
+
+	Add TF flag, fixed by:
+		git grep -Fl '_stat' linux/*/syscallent* | xargs sed -i \
+	  		's/0\(,[[:space:]]*SEN(.*_l\?stat[^i]\)/TF\1/'
+
+	Add TD flag, fixed by:
+		git grep -Fl '_stat' linux/*/syscallent* | xargs sed -i \
+		  's/0\(,[[:space:]]*SEN(.*_fstat\)/TD\1/'
+
+	* linux/alpha/syscallent.h: Add TF and TD flags to stat related
+	compat syscall entries.
+	* linux/mips/syscallent-compat.h: Likewise.
+
+2017-03-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	alpha: fix the number of arguments in alpha specific syscalls.
+	* linux/alpha/syscallent.h (getxgid, osf_stat, osf_lstat, osf_fstat,
+	osf_sysinfo, sethae): Set nargs according to arch/alpha/kernel/osf_sys.c
+	from linux v4.10.
+
+	alpha: update comments about not implemented syscalls.
+	* linux/alpha/syscallent.h: Sync "not implemented" comments
+	with arch/alpha/kernel/systbls.S from linux v4.10.
+
+2017-03-23  Quentin Monnet  <quentin.monnet@6wind.com>
+
+	Update BPF_MAP_TYPE_* constants.
+	* xlat/bpf_map_types.in: Add BPF_MAP_TYPE_ARRAY_OF_MAPS
+	and BPF_MAP_TYPE_HASH_OF_MAPS constants.
+
+2017-03-23  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+	Update ioctl entries from linux v4.11-rc3.
+	* linux/32/ioctls_inc_align16.h: Update from linux v4.11-rc3 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.
+	* linux/arm/ioctls_arch0.h: Likewise.
+	* linux/i386/ioctls_arch0.h: Likewise.
+	* linux/powerpc/ioctls_arch0.h: Likewise.
+	* linux/s390/ioctls_arch0.h: Likewise.
+	* linux/s390x/ioctls_arch0.h: Likewise.
+	* linux/x86_64/ioctls_arch0.h: Likewise.
+	* NEWS: Mention this.
+
+	maint: update for linux 4.11.
+	* maint/ioctls_sym.sh (ppc_list): Add KVM_PPC_GET_RMMU_INFO
+	and KVM_PPC_CONFIGURE_V3_MMU.
+
+2017-03-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	test: rename README to README.md.
+	* test/README: Rename to README.md, turn ../tests reference into an URL.
+
+	test: update README.
+	* test/README: Tell the reader what this directory is actually for.
+
+	test: rewrite skodic.c demo.
+	* test/skodic.c: Rewrite this demo to simplify its use.
+
+2017-03-18  Victor Krapivensky  <krapivenskiy.va@phystech.edu>
+
+	Implement decoding of statx syscall.
+	* linux/i386/syscallent.h [383]: Add statx entry.
+	* linux/x32/syscallent.h [332]: Likewise.
+	* linux/x86_64/syscallent.h [332]: Likewise.
+	* pathtrace.c (pathtrace_match): Handle SEN_statx.
+	* statx.c: New file.
+	* statx.h: Likewise.
+	* Makefile.am (strace_SOURCES): Add them.
+	* tests/.gitignore: Add statx.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	(DECODER_TESTS): Add statx.test.
+	* tests/statx.c: New file.
+	* tests/statx.test: Likewise.
+	* tests/xstatx.c: Modify to support statx.
+	* xlat/at_statx_sync_types.in: New file.
+	* xlat/statx_attrs.in: Likewise.
+	* xlat/statx_masks.in: Likewise.
+	* NEWS: Mention this change.
+
+2017-03-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check for out of bounds fetch in parsers of stat family syscalls.
+	* tests/xstatx.c (main): Create STRUCT_STAT object using
+	TAIL_ALLOC_OBJECT_CONST_PTR.
+
+	tests: check unexpected syscall errors returned by stat family syscalls.
+	* tests/xstatx.c (main) [!OLD_STAT]: Do not skip the test
+	in case of EOVERFLOW.
+	Treat errors other than ENOSYS and EOVERFLOW as fatal.
+
+2017-03-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: move try_run_prog to init.sh.
+	Looks like try_run_prog may be of general use by other syscall class
+	tests.
+
+	* tests/sched.test (try_run_prog): Move it...
+	* tests/init: ... here.
+
+2017-03-17  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/sched.test: rc should be a local variable in try_run_prog.
+	* tests/sched.test (try_run_prog): Add local rc.
+
+2017-03-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check decoding of int 0x80 on x86_64, x32, and x86.
+	* tests/int_0x80.c: New file.
+	* tests/int_0x80.test: New test.
+	* tests/.gitignore: Add int_0x80.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	(MISC_TESTS, XFAIL_TESTS_x86_64, XFAIL_TESTS_x32): Add int_0x80.test.
+	(XFAIL_TESTS): Add $(XFAIL_TESTS_$(ARCH)).
+	(CLEANFILES): Add $(TESTS:=.tmp.out) and $(TESTS:=.tmp.exp).
+
+2017-03-16  Damien Profeta  <damien.profeta@amadeus.com>
+
+	strace-graph: handle pid looping.
+	* strace-graph: On long running process or heavily forking one (like
+	compilation), it can happen that a parent get 2 different children with
+	the same pid.  By tracking the currently runnig pid and adding the start
+	timestamp to the pid, the graph can now handle that case.
+
+	Closes: https://github.com/strace/strace/pull/7
+
+2017-03-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use TAIL_ALLOC_OBJECT_CONST_PTR.
+	Automatically convert tests to use TAIL_ALLOC_OBJECT_CONST_PTR macro
+	with the following sed expression:
+
+	sed -ri \
+	's/^([[:space:]]*)(([^*]+[[:alnum:]_])( \*)?) *\*( *const )?([^ =]+) = tail_alloc\(sizeof\((\2|\*\6)\)\);/\1TAIL_ALLOC_OBJECT_CONST_PTR(\2, \6);/' \
+	tests/*.c
+
+2017-03-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use TAIL_ALLOC_OBJECT_VAR_PTR.
+	Automatically convert tests to use TAIL_ALLOC_OBJECT_VAR_PTR macro
+	with the following sed expression:
+
+	sed -ri \
+	's/^([[:space:]]*)(([^*]+[[:alnum:]_])( \*)?) *\*([^ =]+) = tail_alloc\(sizeof\((\2|\*\5)\)\);/\1TAIL_ALLOC_OBJECT_VAR_PTR(\2, \5);/' \
+	tests/{move_pages,net-sockaddr,sendfile}.c
+
+2017-03-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: add TAIL_ALLOC_OBJECT_{CONST,VAR}_PTR to tests.h.
+	Introduce a new macros for the most widespread use of tail_alloc.
+
+	* tests/tests.h (TAIL_ALLOC_OBJECT_CONST_PTR,
+	TAIL_ALLOC_OBJECT_VAR_PTR): New macros.
+
+2017-03-16  Victor Krapivensky  <krapivenskiy.va@phystech.edu>
+
+	Decode RUSAGE_THREAD.
+	* xlat/usagewho.in: Add values for existing entities, add
+	RUSAGE_THREAD.
+	* tests/getrusage.c: Test decoding of RUSAGE_THREAD.
+
+2017-03-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/sched.test: use heredoc in order to avoid spawning of subprocess.
+	Pipelined commands executed in subprocesses (some shells have special
+	provision for last command in the pipeline, but it is not guaranteed
+	and not POSIX), so exit codes of these subprocesses can be lost.
+	In order to avoid creating subprocesses, input for read commands
+	is better to supply via heredoc and not pipe.
+
+	* tests/sched.test: Move test cases to heredoc.
+
+2017-03-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: do not skip sched.test if one of its subtests skips.
+	* tests/sched.test (try_run_prog): New function.
+	Use it instead of run_prog.
+
+2017-03-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: do not check decoding of setitimer syscall outside xetitimer.test
+	xetitimer.test already implements a comprehensive test of setitimer
+	syscall parser, no need to duplicate its parts in other tests.
+
+	* tests/clock_nanosleep.c (main): Remove setitimer expected output.
+	* tests/nanosleep.c (main): Likewise.
+	* tests/clock_nanosleep.test: Remove setitimer from the trace set.
+	* tests/nanosleep.test: Likewise.
+
+2017-03-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check decoding of getitimer and setitimer corner cases.
+	* tests/sched_xetattr.c: Include <unistd.h> and <asm/unistd.h>.
+	(main): Check that pointer and integer arguments of getitimer
+	and setitimer syscalls are decoded properly.
+	* tests/xetitimer.test: Add -a option.
+
+2017-03-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: rewrite sigreturn syscall decoding check from match_grep to match_diff
+	Unlike the former test that was based on match_grep,
+	the new one uses match_diff and does more rigorous testing.
+
+	* tests/sigreturn.c: Rewrite.
+	* tests/sigreturn.test: Likewise.
+
+2017-03-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	ia64, mips, x86_64: remove no longer used parsers of sigreturn syscalls.
+	As there is no sigreturn syscall on ia64, mips n32, mips n64, x32,
+	and x86_64, no longer used parsers could be safely removed.
+
+	* linux/ia64/arch_sigreturn.c: Remove.
+	* Makefile.am (EXTRA_DIST): Remove it.
+	* linux/mips/arch_sigreturn.c (arch_sigreturn): Remove [!LINUX_MIPSO32].
+	* linux/x86_64/arch_sigreturn.c (arch_sigreturn): Remove.
+
+2017-03-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Move sigreturn parser to libstrace.
+	All architectures have rt_sigreturn, but only old ones also have
+	sigreturn.  Since not all architectures need a parser of sigreturn
+	syscall, remove the warning and move the parser to libstrace.
+
+	* Makefile.am (strace_SOURCES): Move sigreturn.c ...
+	(libstrace_a_SOURCES): ... here.
+	* linux/arch_sigreturn.c: Remove warning.
+
+2017-03-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check decoding of rt_sigreturn syscall.
+	* tests/rt_sigreturn.c: New file.
+	* tests/rt_sigreturn.test: New test.
+	* tests/.gitignore: Add rt_sigreturn.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	(DECODER_TESTS): Add rt_sigreturn.test.
+
+	Implement proper decoding of rt_sigreturn syscall.
+	* rt_sigreturn.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* linux/dummy.h (sys_rt_sigreturn): Remove.
+	* linux/64/syscallent.h (rt_sigreturn): Change sys_func to rt_sigreturn.
+	* linux/hppa/syscallent.h (rt_sigreturn): Likewise.
+	* linux/ia64/syscallent.h (rt_sigreturn): Likewise.
+	* linux/s390/syscallent.h (rt_sigreturn): Likewise.
+	* linux/s390x/syscallent.h (rt_sigreturn): Likewise.
+	* linux/x86_64/syscallent.h (rt_sigreturn): Likewise.
+	* linux/x32/syscallent.h (rt_sigreturn, 64:rt_sigreturn): Likewise.
+	* NEWS: Mention this change.
+
+2017-03-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Introduce get_rt_sigframe_addr function.
+	Add get_rt_sigframe_addr function for all supported architectures.
+	It is going to be used in a parser of rt_sigreturn syscall.
+
+	* defs.h (get_rt_sigframe_addr): New function prototype.
+	* rt_sigframe.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* linux/aarch64/arch_rt_sigframe.c: New file.
+	* linux/alpha/arch_rt_sigframe.c: Likewise.
+	* linux/arc/arch_rt_sigframe.c: Likewise.
+	* linux/arm/arch_rt_sigframe.c: Likewise.
+	* linux/avr32/arch_rt_sigframe.c: Likewise.
+	* linux/bfin/arch_rt_sigframe.c: Likewise.
+	* linux/crisv10/arch_rt_sigframe.c: Likewise.
+	* linux/crisv32/arch_rt_sigframe.c: Likewise.
+	* linux/hppa/arch_rt_sigframe.c: Likewise.
+	* linux/i386/arch_rt_sigframe.c: Likewise.
+	* linux/ia64/arch_rt_sigframe.c: Likewise.
+	* linux/m68k/arch_rt_sigframe.c: Likewise.
+	* linux/metag/arch_rt_sigframe.c: Likewise.
+	* linux/microblaze/arch_rt_sigframe.c: Likewise.
+	* linux/mips/arch_rt_sigframe.c: Likewise.
+	* linux/nios2/arch_rt_sigframe.c: Likewise.
+	* linux/or1k/arch_rt_sigframe.c: Likewise.
+	* linux/powerpc/arch_rt_sigframe.c: Likewise.
+	* linux/powerpc64/arch_rt_sigframe.c: Likewise.
+	* linux/riscv/arch_rt_sigframe.c: Likewise.
+	* linux/s390/arch_rt_sigframe.c: Likewise.
+	* linux/s390x/arch_rt_sigframe.c: Likewise.
+	* linux/sh/arch_rt_sigframe.c: Likewise.
+	* linux/sh64/arch_rt_sigframe.c: Likewise.
+	* linux/sparc/arch_rt_sigframe.c: Likewise.
+	* linux/sparc64/arch_rt_sigframe.c: Likewise.
+	* linux/tile/arch_rt_sigframe.c: Likewise.
+	* linux/x32/arch_rt_sigframe.c: Likewise.
+	* linux/x86_64/arch_rt_sigframe.c: Likewise.
+	* linux/xtensa/arch_rt_sigframe.c: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+
+2017-03-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Introduce struct_rt_sigframe type.
+	Add rt_sigframe.h files with definitions of struct_rt_sigframe type
+	for all supported architectures.
+	These definitions are going to be used in a parser of rt_sigreturn
+	syscall.
+
+	* linux/rt_sigframe.h: New file.
+	* linux/bfin/rt_sigframe.h: Likewise.
+	* linux/crisv10/rt_sigframe.h: Likewise.
+	* linux/crisv32/rt_sigframe.h: Likewise.
+	* linux/hppa/rt_sigframe.h: Likewise.
+	* linux/i386/rt_sigframe.h: Likewise.
+	* linux/ia64/rt_sigframe.h: Likewise.
+	* linux/m68k/rt_sigframe.h: Likewise.
+	* linux/mips/rt_sigframe.h: Likewise.
+	* linux/powerpc64/rt_sigframe.h: Likewise.
+	* linux/s390/rt_sigframe.h: Likewise.
+	* linux/s390x/rt_sigframe.h: Likewise.
+	* linux/sh64/rt_sigframe.h: Likewise.
+	* linux/sparc/rt_sigframe.h: Likewise.
+	* linux/sparc64/rt_sigframe.h: Likewise.
+	* linux/tile/rt_sigframe.h: Likewise.
+	* linux/x32/rt_sigframe.h: Likewise.
+	* linux/x86_64/rt_sigframe.h: Likewise.
+	* Makefile.am (EXTRA_DIST): Add them.
+
+2017-03-13  Victor Krapivensky  <krapivenskiy.va@phystech.edu>
+
+	unwind.c: fix a possible buffer overflow.
+	Linux does not prevent a user from creating a lot of nested directories
+	with length of the absolute path of the deepest one exceeding PATH_MAX,
+	then chdir'ing into it, creating a file there and mmap'ing it. Since the
+	length of the prefix preceding the pathname in /proc/[pid]/maps is not
+	necessary 80 (it's 73 on my machine), an overflow is possible.
+
+	* unwind.c (build_mmap_cache): Fix a possible buffer overflow.
+
+2017-03-13  Victor Krapivensky  <krapivenskiy.va@phystech.edu>
+
+	util.c: remove a wrong comment.
+	4924dbd6d750665cf383b20ab4fd67e48219ab91 modified the return type, but
+	not the comment.
+
+2017-03-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	riscv: export riscv_sp_ptr.
+	Export SP register for later use by get_rt_sigframe_addr.
+
+	* linux/riscv/arch_regs.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* linux/riscv/arch_regs.c (riscv_sp_ptr): New variable.
+
+2017-03-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	or1k: export or1k_sp_ptr.
+	Export SP register for later use by get_rt_sigframe_addr.
+
+	* linux/or1k/arch_regs.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* linux/or1k/arch_regs.c (or1k_sp_ptr): New variable.
+
+2017-03-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	nios2: export nios2_sp_ptr.
+	Export SP register for later use by get_rt_sigframe_addr.
+
+	* linux/nios2/arch_regs.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* linux/nios2/arch_regs.c (nios2_sp_ptr): New variable.
+
+2017-03-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	metag: export metag_sp_ptr.
+	Export SP register for later use by get_rt_sigframe_addr.
+
+	* linux/metag/arch_regs.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* linux/metag/arch_regs.c (metag_sp_ptr): New variable.
+
+2017-03-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	avr32: export avr32_sp_ptr.
+	Export SP register for later use by get_rt_sigframe_addr.
+
+	* linux/avr32/arch_regs.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* linux/avr32/arch_regs.c (avr32_sp_ptr): New variable.
+
+2017-03-10  Dmitry V. Levin  <ldv@altlinux.org>
+
+	arc: export arc_sp_ptr.
+	Export SP register for later use by get_rt_sigframe_addr.
+
+	* linux/arc/arch_regs.h: New file.
+	* Makefile.am (EXTRA_DIST): Add it.
+	* linux/arc/arch_regs.c (arc_sp_ptr): New variable.
+
+2017-03-09  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Introduce print_sigset_addr function.
+	As the definition of NSIG_BYTES is based on NSIG defined in <signal.h>,
+	NSIG_BYTES cannot be used in files that use kernel sigset_t.
+
+	Add another wrapper around print_sigset_addr_len_limit function that
+	takes one argument less than print_sigset_addr_len wrapper.  This new
+	wrapper is going to be used in cases when the length argument is equal
+	to NSIG_BYTES.
+
+	* defs.h (print_sigset_addr): New function prototype.
+	* signal.c (print_sigset_addr): New function.
+	* linux/alpha/arch_sigreturn.c (arch_sigreturn): Replace
+	print_sigset_addr_len with print_sigset_addr.
+	* linux/arm/arch_sigreturn.c (arch_sigreturn): Likewise.
+	* linux/crisv10/arch_sigreturn.c (arch_sigreturn): Likewise.
+	* linux/ia64/arch_sigreturn.c (arch_sigreturn): Likewise.
+	* linux/microblaze/arch_sigreturn.c (arch_sigreturn): Likewise.
+	* linux/mips/arch_sigreturn.c (arch_sigreturn): Likewise.
+	* linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise.
+	* linux/x86_64/arch_sigreturn.c (arch_sigreturn): Likewise.
+
+2017-03-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+	README.md: rework guidelines about sending bug reports.
+
+2017-03-08  Abhishek Tiwari  <erabhishektiwarics@gmail.com>
+
+	Update information on how to build strace from git repository.
+	* INSTALL-git.md: Describe how to build strace from git repository.
+	* README.md: Add reference to INSTALL-git.md.
+	* README-hacking: Likewise.
+
+2017-03-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	README.md: fix references to in-tree files.
+	* README.md: Change references to COPYING and NEWS files from absolute
+	to relative.
+
+2017-03-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	INSTALL: regenerate from install.texi.
+	Regenerate INSTALL from install.texi using the following command:
+	makeinfo --plaintext install.texi > INSTALL
+
+	* INSTALL: Regenerate from install.texi.
+
+2017-03-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	install.texi: remove irrelevant sections.
+	Remove "Multiple Architectures" and "Particular Systems" sections using
+	the following filter script:
+
+	awk '/^@node (Multiple Architectures|Particular Systems)/{skip=1;next}
+	/^@node/{skip=0} {if(!skip)print}'
+
+	* install.texi (Multiple Architectures, Particular Systems): Remove.
+
+2017-03-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	install.texi: import from GNU Autoconf.
+	install.texi from GNU Autoconf is the ultimate source of INSTALL file.
+	This edition of install.texi has been downloaded from
+	https://git.savannah.gnu.org/cgit/autoconf.git/plain/doc/install.texi?id=63f3c78cdb0ccc85751543e387ef2a7252d5f0a2
+
+	* install.texi: Import from GNU Autoconf.
+
+2017-03-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+	    Md Haris Iqbal  <haris.phnx@gmail.com>
+
+	Implement -e trace=%sched option for tracing sched_* syscalls.
+	Based on the patch by Md Haris Iqbal
+	(https://sourceforge.net/p/strace/mailman/message/35111320/)
+
+	linux/*/syscallent.h part is modified automatically by:
+
+	    git grep -Fl 'SEN(sched_' linux/ | xargs sed -i \
+	        's/0\(,[[:space:]]*SEN(sched_\)/TSC\1/'
+
+	* sysent.h (TRACE_SCHED): New definition.
+	* syscall.c: Alias TSC to TRACE_SCHED around syscallent.h inclusion.
+	* linux/32/syscallent.h: Add TSC flag for sched_* sycalls.
+	* 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.
+	* qualify.c (lookup_class): Add TRACE_SCHED for "%sched".
+	* tests/ksysent.c: Define TSC to 0.
+	* tests/nsyscalls.c: Likewise.
+	* tests/sched.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add sched.test.
+	* strace.1 (.SS Filtering): Add information about %sched syscall class.
+	* NEWS: Mention this change.
+
+2017-03-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add "%" prefix for syscall classes in qualify.
+	(as suggested in
+	https://www.mail-archive.com/strace-devel@lists.sourceforge.net/msg05147.html )
+
+	In order to move them to a different namespace than syscall names. This is
+	already a problem in case of ipc class which shadows ipc syscall.
+
+	Old behaviour is retained in order to preserve backwards compatibility.
+
+	* qualify.c (lookup_class) <syscall_class>: Add %-prefixed class definitions.
+	* strace.1 (.SS Filtering): Add information regarding %-prefixed class
+	syntax, declare legacy class syntax deprecated.
+	* tests/net.test: Update to use %-prefixed syscall class name.
+	* tests/netlink_protocol.test: Likewise.
+	* tests/qual_fault-exit_group.test: Likewise.
+	* tests/qual_syscall.test: Likewise.
+	* tests/scm_rights-fd.test: Likewise.
+	* tests/sigreturn.test: Likewise.
+	* tests/uio.test: Likewise.
+	* NEWS: Mention this change.
+
+2017-02-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: simplify print_time_t.
+	* tests/print_time.c (print_time_t): Treat localtime errors as fatal.
+
+2017-02-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Update homepage URL.
+	* README: Change homepage URL to https://strace.io
+	* debian/control: Likewise.
+	* strace.spec.in: Likewise.
+
+2017-02-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: transform print_time_t into print_time_t_nsec.
+	* tests/print_time.c (print_time_t): Rename to print_time_t_nsec,
+	take second argument and print it.
+	* tests/tests.h (print_time_t): Rename to print_time_t_nsec,
+	add second argument.
+	* tests/utime.c (main): Use print_time_t_nsec instead of print_time_t.
+	* tests/xstatx.c (print_stat): Likewise.  Pass nanoseconds
+	to print_time_t_nsec instead of printing them.
+
+	tests: use print_time_t in utime.test.
+	* tests/utime.c (print_tm): Remove.
+	(main): Use print_time_t instead of print_tm.
+
+2017-02-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: move print_time function to libtests.
+	Rename print_time function to print_time_t and move it to libtests.
+
+	* tests/print_time.c: New file.
+	* tests/Makefile.am (libtests_a_SOURCES): Add it.
+	* tests/tests.h (print_time_t): New prototype.
+	* tests/print_time.c (print_time): Remove.
+	(print_stat): Replace print_time with print_time_t.
+
+2017-02-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: macroize printing of atime, mtime, and ctime fields in xstatx.c.
+	Introduce a macro for printing similar time related fields.
+
+	* print_struct_stat.c (PRINT_ST_TIME): New macro.
+	(print_stat): Use it.
+
+2017-02-26  Dmitry V. Levin  <ldv@altlinux.org>
+
+	print_struct_stat.c: macroize printing of atime, mtime, and ctime fields
+	Introduce a macro for printing similar time related fields.
+
+	* print_struct_stat.c (PRINT_ST_TIME): New macro.
+	(print_struct_stat): Use it.
+
+2017-02-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+	x32: fix decoding of flags argument of preadv2 and pwritev2 syscalls.
+	x32 is the only linux architecture where preadv2 and pwritev2 syscalls
+	take 5 arguments instead of 6.
+
+	* io.c (PREADV2_PWRITEV2_FLAGS_ARG_NO): New macro.
+	(SYS_FUNC(preadv2), SYS_FUNC(pwritev2)): Use it.
+	* linux/x32/syscallent.h (preadv2, pwritev2): Change nargs to 5.
+	* NEWS: Mention this fix.
+	* tests/preadv2-pwritev2.c (main): Fix invocation of preadv2
+	and pwritev2 syscalls on x32.
+
+2017-02-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: rewrite ppoll syscall decoding check from match_grep to match_diff
+	Unlike the former test that was based on match_grep,
+	the new one uses match_diff and does more rigorous testing.
+
+	* tests/ppoll-v.c: New file.
+	* tests/ppoll-v.test: New test.
+	* tests/ppoll.c: Rewrite.
+	* tests/ppoll.test: Likewise.
+	* tests/ppoll.expected: Remove.
+	* tests/ppoll-v.expected: Remove.
+	* tests/.gitignore: Add ppoll-v.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	(DECODER_TESTS): Add ppoll-v.test.
+	(EXTRA_DIST): Remove ppoll.expected and ppoll-v.expected.
+
+2017-02-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: move get_sigset_size function to libtests.
+	* tests/get_sigset_size.c: New file.
+	* tests/Makefile.am (libtests_a_SOURCES): Add it.
+	* tests/tests.h (get_sigset_size): New prototype.
+	* tests/ptrace.c: Do not check for __NR_rt_sigprocmask.
+	(main): Use get_sigset_size.
+	* tests/signalfd4.c: Do not check for __NR_rt_sigprocmask.
+	(get_sigset_size): Remove.
+
+2017-02-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	sched: enhance decoding of sched_setattr syscall.
+	Implement read/write semantics of struct sched_attr.size argument
+	of sched_setattr syscall.  Do not print members of struct sched_attr
+	besides sched_attr.size when the specified structure size is less than
+	the minimal size allowed by the kernel.
+
+	* sched.c (print_sched_attr): Fetch struct sched_attr.size and use it
+	as the structure size.  Print struct sched_attr.size only when the
+	structure size is less than SCHED_ATTR_MIN_SIZE.
+	(SYS_FUNC(sched_setattr)): Call print_sched_attr with zero size
+	argument.  Print struct sched_attr.size returned by the kernel
+	on exiting syscall in case of E2BIG. Print the last syscall argument
+	on exiting syscall.
+	(SYS_FUNC(sched_getattr)): Do not call print_sched_attr with zero size
+	argument.
+	* NEWS: Mention it.
+	* tests/sched_xetattr.c (main): Check it.
+
+2017-02-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check decoding of sched_[gs]etattr corner cases.
+	* tests/sched_xetattr.c (main): Check that integer arguments
+	of sched_getattr and sched_setattr syscalls are decoded properly
+	by adding a few cases with filled higher 32 bits.
+	Check that pointer argument is decoded properly
+	on F8ILL_KULONG_SUPPORTED architectures.
+
+2017-02-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Move definition of struct sched_attr to a separate header file.
+	Avoid multiple defintions of struct sched_attr by creating a separate
+	header file with its definition and using it in other places.
+
+	* sched_attr.h: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* sched.c: Include it.
+	(print_sched_attr): Use it.
+	* tests/sched_xetattr.c: Include it.
+	(main): Use it.
+
+2017-02-18  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: rewrite sched_xetattr.test from match_grep to match_diff.
+	Unlike the previous edition of the test that was based on match_grep,
+	the new one is match_diff based and does more rigorous testing.
+
+	* tests/adjtimex.c: Include "xlat.h" and "xlat/schedulers.h",
+	(sys_sched_getattr, sys_sched_setattr): New functions.
+	(main): Use them.  Update expected output.
+	* tests/adjtimex.test: Use run_strace_match_diff.
+
+2017-02-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Use tprints instead of tprintf in a few more places.
+	* bpf.c (bpf_obj_manage, bpf_prog_attach_detach): Replace tprintf
+	with tprints for printing strings without format specifiers.
+	* dm.c (dm_decode_dm_target_spec): Likewise.
+	* mq.c (SYS_FUNC(mq_timedreceive)): Likewise.
+	* perf.c (print_perf_event_attr): Likewise.
+	* syscall.c (trace_syscall_exiting): Likewise.
+
+2017-02-17  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf: update BPF_PROG_ATTACH decoding.
+	Implement decoding of BPF_F_ALLOW_OVERRIDE flag of BPF_PROG_ATTACH
+	command introduced by linux kernel commit v4.10-rc7-174-g7f67763.
+
+	* configure.ac: Check for union bpf_attr.attach_flags
+	instead of union bpf_attr.attach_type.
+	* xlat/bpf_attach_flags.in: New file.
+	* bpf.c: Include "xlat/bpf_attach_flags.h".
+	(bpf_prog_attach_detach): Rename print_attach_bpf_fd argument
+	to print_attach.  Add attach_flags field to the structure,
+	print it in case of BPF_PROG_ATTACH.
+	* tests/bpf.c: Check for HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
+	instead of HAVE_UNION_BPF_ATTR_ATTACH_TYPE.
+	(prog_cgroup): Initialize attach_flags field.
+	(main): Update expected output.
+
+2017-02-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: rewrite adjtimex.test from match_grep to match_diff.
+	Unlike the previous edition of the test that was based on match_grep,
+	the new one is match_diff based and does more rigorous testing.
+
+	* tests/adjtimex.c: Include "xlat.h", "xlat/adjtimex_state.h",
+	and "xlat/adjtimex_status.h".
+	(main): Update expected output.
+	* tests/adjtimex.test: Use run_strace_match_diff.
+
+2017-02-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: replace casts of 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
+	* tests/init_delete_module.h (bogus_zero): Remove.
+	* tests/delete_module.c (main): Replace bogus_zero and
+	(kernel_ulong_t) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
+	* tests/finit_module.c (main): Replace bogus_zero
+	with F8ILL_KULONG_MASK.
+	* tests/init_module.c (main): Likewise.
+	* tests/pipe2.c (main): Likewise.
+	* tests/epoll_ctl.c (invoke_syscall): Replace
+	(unsigned long) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
+	* tests/rt_tgsigqueueinfo.c (k_tgsigqueueinfo): Likewise.
+	* tests/fanotify_init.c (main): Likewise.
+	* tests/xetpgid.c (main): Likewise.
+	* tests/xetpriority.c (main): Likewise.
+	(kernel_ulong_t) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
+	* tests/fanotify_mark.c (main): Likewise.
+	* tests/file_handle.c (main): Likewise.
+	* tests/kexec_load.c (main): Likewise.
+	* tests/setfsugid.c (main): Likewise.
+	* tests/getgroups.c (main): Replace (long) 0xffffffff00000000ULL
+	with F8ILL_KULONG_MASK.
+	* tests/setgroups.c (main): Replace (long) 0xffffffff00000000ULL
+	and (unsigned long) 0xffffffff00000000ULL with F8ILL_KULONG_MASK.
+
+2017-02-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fill higher bits of integer arguments of fcntl* syscalls.
+	Check that integer arguments of fcntl and fcntl64 syscalls are decoded
+	properly by casting them to kernel_ulong_t and filling higher bits.
+
+	* tests/struct_flock.c (invoke_test_syscall): Cast "fd" and "cmd"
+	syscall arguments to kernel_ulong_t, fill their higher 32 bits.
+
+2017-02-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use sprintrc in tests of fcntl and fcntl64 syscalls.
+	* tests/struct_flock.c (EINVAL_STR): Remove.
+	(test_flock_einval, test_flock): Use sprintrc instead of EINVAL_STR.
+	* tests/fcntl.c (test_flock64_einval): Likewise.
+	* tests/fcntl64.c (test_flock64_einval, test_flock64): Likewise.
+
+2017-02-15  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.16-1.
+	* strace.spec.in: Likewise.
+
 2017-02-14  Dmitry V. Levin  <ldv@altlinux.org>
 
 	Prepare for 4.16 release.
diff --git a/INSTALL b/INSTALL
index 0fad641..a713eb7 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,108 +1,107 @@
 Installation Instructions
 *************************
 
-Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
 Inc.
 
-Copying and distribution of this file, with or without modification, are
-permitted in any medium without royalty provided the copyright notice
-and this notice are preserved.  This file is offered as-is, without
-warranty of any kind.
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
 
 Basic Installation
 ==================
 
-Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package.  The following
-more-detailed instructions are generic; see the `README' file for
-instructions specific to this package.  Some packages provide this
-`INSTALL' file but do not implement all of the features documented
-below.  The lack of an optional feature in a given package is not
-necessarily a bug.  More recommendations for GNU packages can be found
-in *note Makefile Conventions: (standards)Makefile Conventions.
+Briefly, the shell command './configure && make && make install' should
+configure, build, and install this package.  The following more-detailed
+instructions are generic; see the 'README' file for instructions
+specific to this package.  Some packages provide this 'INSTALL' file but
+do not implement all of the features documented below.  The lack of an
+optional feature in a given package is not necessarily a bug.  More
+recommendations for GNU packages can be found in *note Makefile
+Conventions: (standards)Makefile Conventions.
 
-   The `configure' shell script attempts to guess correct values for
+   The 'configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
+those values to create a 'Makefile' in each directory of the package.
+It may also create one or more '.h' files containing system-dependent
+definitions.  Finally, it creates a shell script 'config.status' that
 you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
+file 'config.log' containing compiler output (useful mainly for
+debugging 'configure').
 
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  Caching is
-disabled by default to prevent problems with accidental use of stale
-cache files.
+   It can also use an optional file (typically called 'config.cache' and
+enabled with '--cache-file=config.cache' or simply '-C') that saves the
+results of its tests to speed up reconfiguring.  Caching is disabled by
+default to prevent problems with accidental use of stale cache files.
 
    If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
+to figure out how 'configure' could check whether to do them, and mail
+diffs or instructions to the address given in the 'README' so they can
 be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
+some point 'config.cache' contains results you don't want to keep, you
 may remove or edit it.
 
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You need `configure.ac' if
-you want to change it or regenerate `configure' using a newer version
-of `autoconf'.
+   The file 'configure.ac' (or 'configure.in') is used to create
+'configure' by a program called 'autoconf'.  You need 'configure.ac' if
+you want to change it or regenerate 'configure' using a newer version of
+'autoconf'.
 
-The simplest way to compile this package is:
+   The simplest way to compile this package is:
 
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.
+  1. 'cd' to the directory containing the package's source code and type
+     './configure' to configure the package for your system.
 
-     Running `configure' might take a while.  While running, it prints
+     Running 'configure' might take a while.  While running, it prints
      some messages telling which features it is checking for.
 
-  2. Type `make' to compile the package.
+  2. Type 'make' to compile the package.
 
-  3. Optionally, type `make check' to run any self-tests that come with
+  3. Optionally, type 'make check' to run any self-tests that come with
      the package, generally using the just-built uninstalled binaries.
 
-  4. Type `make install' to install the programs and any data files and
+  4. Type 'make install' to install the programs and any data files and
      documentation.  When installing into a prefix owned by root, it is
      recommended that the package be configured and built as a regular
-     user, and only the `make install' phase executed with root
+     user, and only the 'make install' phase executed with root
      privileges.
 
-  5. Optionally, type `make installcheck' to repeat any self-tests, but
+  5. Optionally, type 'make installcheck' to repeat any self-tests, but
      this time using the binaries in their final installed location.
      This target does not install anything.  Running this target as a
-     regular user, particularly if the prior `make install' required
+     regular user, particularly if the prior 'make install' required
      root privileges, verifies that the installation completed
      correctly.
 
   6. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
+     source code directory by typing 'make clean'.  To also remove the
+     files that 'configure' created (so you can compile the package for
+     a different kind of computer), type 'make distclean'.  There is
+     also a 'make maintainer-clean' target, but that is intended mainly
      for the package's developers.  If you use it, you may have to get
      all sorts of other programs in order to regenerate files that came
      with the distribution.
 
-  7. Often, you can also type `make uninstall' to remove the installed
+  7. Often, you can also type 'make uninstall' to remove the installed
      files again.  In practice, not all packages have tested that
      uninstallation works correctly, even though it is required by the
      GNU Coding Standards.
 
-  8. Some packages, particularly those that use Automake, provide `make
+  8. Some packages, particularly those that use Automake, provide 'make
      distcheck', which can by used by developers to test that all other
-     targets like `make install' and `make uninstall' work correctly.
+     targets like 'make install' and 'make uninstall' work correctly.
      This target is generally not run by end users.
 
 Compilers and Options
 =====================
 
 Some systems require unusual options for compilation or linking that the
-`configure' script does not know about.  Run `./configure --help' for
+'configure' script does not know about.  Run './configure --help' for
 details on some of the pertinent environment variables.
 
-   You can give `configure' initial values for configuration parameters
-by setting variables in the command line or in the environment.  Here
-is an example:
+   You can give 'configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here is
+an example:
 
      ./configure CC=c99 CFLAGS=-g LIBS=-lposix
 
@@ -111,90 +110,90 @@
 Installation Names
 ==================
 
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc.  You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX', where PREFIX must be an
+By default, 'make install' installs the package's commands under
+'/usr/local/bin', include files under '/usr/local/include', etc.  You
+can specify an installation prefix other than '/usr/local' by giving
+'configure' the option '--prefix=PREFIX', where PREFIX must be an
 absolute file name.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
 PREFIX as the prefix for installing programs and libraries.
 Documentation and other data files still use the regular prefix.
 
    In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.  In general, the
-default for these options is expressed in terms of `${prefix}', so that
-specifying just `--prefix' will affect all of the other directory
+options like '--bindir=DIR' to specify different values for particular
+kinds of files.  Run 'configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the default
+for these options is expressed in terms of '${prefix}', so that
+specifying just '--prefix' will affect all of the other directory
 specifications that were not explicitly provided.
 
    The most portable way to affect installation locations is to pass the
-correct locations to `configure'; however, many packages provide one or
+correct locations to 'configure'; however, many packages provide one or
 both of the following shortcuts of passing variable assignments to the
-`make install' command line to change installation locations without
+'make install' command line to change installation locations without
 having to reconfigure or recompile.
 
    The first method involves providing an override variable for each
-affected directory.  For example, `make install
+affected directory.  For example, 'make install
 prefix=/alternate/directory' will choose an alternate location for all
 directory configuration variables that were expressed in terms of
-`${prefix}'.  Any directories that were specified during `configure',
-but not in terms of `${prefix}', must each be overridden at install
-time for the entire installation to be relocated.  The approach of
-makefile variable overrides for each directory variable is required by
-the GNU Coding Standards, and ideally causes no recompilation.
-However, some platforms have known limitations with the semantics of
-shared libraries that end up requiring recompilation when using this
-method, particularly noticeable in packages that use GNU Libtool.
+'${prefix}'.  Any directories that were specified during 'configure',
+but not in terms of '${prefix}', must each be overridden at install time
+for the entire installation to be relocated.  The approach of makefile
+variable overrides for each directory variable is required by the GNU
+Coding Standards, and ideally causes no recompilation.  However, some
+platforms have known limitations with the semantics of shared libraries
+that end up requiring recompilation when using this method, particularly
+noticeable in packages that use GNU Libtool.
 
-   The second method involves providing the `DESTDIR' variable.  For
-example, `make install DESTDIR=/alternate/directory' will prepend
-`/alternate/directory' before all installation names.  The approach of
-`DESTDIR' overrides is not required by the GNU Coding Standards, and
+   The second method involves providing the 'DESTDIR' variable.  For
+example, 'make install DESTDIR=/alternate/directory' will prepend
+'/alternate/directory' before all installation names.  The approach of
+'DESTDIR' overrides is not required by the GNU Coding Standards, and
 does not work on platforms that have drive letters.  On the other hand,
 it does better at avoiding recompilation issues, and works well even
-when some directory options were not specified in terms of `${prefix}'
-at `configure' time.
+when some directory options were not specified in terms of '${prefix}'
+at 'configure' time.
 
 Optional Features
 =================
 
 If the package supports it, you can cause programs to be installed with
-an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+an extra prefix or suffix on their names by giving 'configure' the
+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
 
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
+   Some packages pay attention to '--enable-FEATURE' options to
+'configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
+is something like 'gnu-as' or 'x' (for the X Window System).  The
+'README' should mention any '--enable-' and '--with-' options that the
 package recognizes.
 
-   For packages that use the X Window System, `configure' can usually
+   For packages that use the X Window System, 'configure' can usually
 find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
+you can use the 'configure' options '--x-includes=DIR' and
+'--x-libraries=DIR' to specify their locations.
 
    Some packages offer the ability to configure how verbose the
-execution of `make' will be.  For these packages, running `./configure
+execution of 'make' will be.  For these packages, running './configure
 --enable-silent-rules' sets the default to minimal output, which can be
-overridden with `make V=1'; while running `./configure
+overridden with 'make V=1'; while running './configure
 --disable-silent-rules' sets the default to verbose, which can be
-overridden with `make V=0'.
+overridden with 'make V=0'.
 
 Specifying the System Type
 ==========================
 
-There may be some features `configure' cannot figure out automatically,
+There may be some features 'configure' cannot figure out automatically,
 but needs to determine by the type of machine the package will run on.
 Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
+architectures, 'configure' can figure that out, but if it prints a
 message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
+'--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as 'sun4', or a canonical name which has the form:
 
      CPU-COMPANY-SYSTEM
 
@@ -203,100 +202,100 @@
      OS
      KERNEL-OS
 
-See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
+   See the file 'config.sub' for the possible values of each field.  If
+'config.sub' isn't included in this package, then this package doesn't
 need to know the machine type.
 
    If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
+use the option '--target=TYPE' to select the type of system they will
 produce code for.
 
    If you want to _use_ a cross compiler, that generates code for a
 platform different from the build platform, you should specify the
 "host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
+eventually be run) with '--host=TYPE'.
 
 Sharing Defaults
 ================
 
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
+If you want to set default values for 'configure' scripts to share, you
+can create a site shell script called 'config.site' that gives default
+values for variables like 'CC', 'cache_file', and 'prefix'.  'configure'
+looks for 'PREFIX/share/config.site' if it exists, then
+'PREFIX/etc/config.site' if it exists.  Or, you can set the
+'CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all 'configure' scripts look for a site script.
 
 Defining Variables
 ==================
 
 Variables not defined in a site shell script can be set in the
-environment passed to `configure'.  However, some packages may run
+environment passed to 'configure'.  However, some packages may run
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'.  For example:
+them in the 'configure' command line, using 'VAR=value'.  For example:
 
      ./configure CC=/usr/local2/bin/gcc
 
-causes the specified `gcc' to be used as the C compiler (unless it is
+causes the specified 'gcc' to be used as the C compiler (unless it is
 overridden in the site shell script).
 
-Unfortunately, this technique does not work for `CONFIG_SHELL' due to
-an Autoconf limitation.  Until the limitation is lifted, you can use
-this workaround:
+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
+Autoconf limitation.  Until the limitation is lifted, you can use this
+workaround:
 
      CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
 
-`configure' Invocation
+'configure' Invocation
 ======================
 
-`configure' recognizes the following options to control how it operates.
+'configure' recognizes the following options to control how it operates.
 
-`--help'
-`-h'
-     Print a summary of all of the options to `configure', and exit.
+'--help'
+'-h'
+     Print a summary of all of the options to 'configure', and exit.
 
-`--help=short'
-`--help=recursive'
+'--help=short'
+'--help=recursive'
      Print a summary of the options unique to this package's
-     `configure', and exit.  The `short' variant lists options used
-     only in the top level, while the `recursive' variant lists options
-     also present in any nested packages.
+     'configure', and exit.  The 'short' variant lists options used only
+     in the top level, while the 'recursive' variant lists options also
+     present in any nested packages.
 
-`--version'
-`-V'
-     Print the version of Autoconf used to generate the `configure'
+'--version'
+'-V'
+     Print the version of Autoconf used to generate the 'configure'
      script, and exit.
 
-`--cache-file=FILE'
+'--cache-file=FILE'
      Enable the cache: use and save the results of the tests in FILE,
-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
      disable caching.
 
-`--config-cache'
-`-C'
-     Alias for `--cache-file=config.cache'.
+'--config-cache'
+'-C'
+     Alias for '--cache-file=config.cache'.
 
-`--quiet'
-`--silent'
-`-q'
+'--quiet'
+'--silent'
+'-q'
      Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
+     suppress all normal output, redirect it to '/dev/null' (any error
      messages will still be shown).
 
-`--srcdir=DIR'
+'--srcdir=DIR'
      Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
+     'configure' can determine that directory automatically.
 
-`--prefix=DIR'
-     Use DIR as the installation prefix.  *note Installation Names::
-     for more details, including other options available for fine-tuning
-     the installation locations.
+'--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names:: for
+     more details, including other options available for fine-tuning the
+     installation locations.
 
-`--no-create'
-`-n'
+'--no-create'
+'-n'
      Run the configure checks, but stop before creating any output
      files.
 
-`configure' also accepts some other, not widely useful, options.  Run
-`configure --help' for more details.
+'configure' also accepts some other, not widely useful, options.  Run
+'configure --help' for more details.
diff --git a/Makefile b/Makefile
index f24fc88..37b43af 100644
--- a/Makefile
+++ b/Makefile
@@ -20,6 +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.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -190,8 +191,9 @@
 	fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c \
 	mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
 	print_sigevent.c print_time.c print_timespec.c print_timeval.c \
-	print_timex.c printrusage.c printsiginfo.c rtc.c sg_io_v3.c \
-	sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c
+	print_timex.c printrusage.c printsiginfo.c rt_sigreturn.c \
+	rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c \
+	ustat.c utime.c v4l2.c
 am__objects_1 = libmpers_m32_a-block.$(OBJEXT) \
 	libmpers_m32_a-btrfs.$(OBJEXT) libmpers_m32_a-dirent.$(OBJEXT) \
 	libmpers_m32_a-evdev.$(OBJEXT) \
@@ -216,6 +218,7 @@
 	libmpers_m32_a-print_timex.$(OBJEXT) \
 	libmpers_m32_a-printrusage.$(OBJEXT) \
 	libmpers_m32_a-printsiginfo.$(OBJEXT) \
+	libmpers_m32_a-rt_sigreturn.$(OBJEXT) \
 	libmpers_m32_a-rtc.$(OBJEXT) libmpers_m32_a-sg_io_v3.$(OBJEXT) \
 	libmpers_m32_a-sigaltstack.$(OBJEXT) \
 	libmpers_m32_a-sock.$(OBJEXT) libmpers_m32_a-sysinfo.$(OBJEXT) \
@@ -232,8 +235,9 @@
 	fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c \
 	mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
 	print_sigevent.c print_time.c print_timespec.c print_timeval.c \
-	print_timex.c printrusage.c printsiginfo.c rtc.c sg_io_v3.c \
-	sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c
+	print_timex.c printrusage.c printsiginfo.c rt_sigreturn.c \
+	rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c \
+	ustat.c utime.c v4l2.c
 am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
 	libmpers_mx32_a-btrfs.$(OBJEXT) \
 	libmpers_mx32_a-dirent.$(OBJEXT) \
@@ -259,6 +263,7 @@
 	libmpers_mx32_a-print_timex.$(OBJEXT) \
 	libmpers_mx32_a-printrusage.$(OBJEXT) \
 	libmpers_mx32_a-printsiginfo.$(OBJEXT) \
+	libmpers_mx32_a-rt_sigreturn.$(OBJEXT) \
 	libmpers_mx32_a-rtc.$(OBJEXT) \
 	libmpers_mx32_a-sg_io_v3.$(OBJEXT) \
 	libmpers_mx32_a-sigaltstack.$(OBJEXT) \
@@ -273,6 +278,7 @@
 libstrace_a_LIBADD =
 am_libstrace_a_OBJECTS = libstrace_a-fstatfs.$(OBJEXT) \
 	libstrace_a-fstatfs64.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
+	libstrace_a-sigreturn.$(OBJEXT) \
 	libstrace_a-socketcall.$(OBJEXT) libstrace_a-statfs.$(OBJEXT) \
 	libstrace_a-statfs64.$(OBJEXT) \
 	libstrace_a-sync_file_range.$(OBJEXT) \
@@ -299,23 +305,25 @@
 	linux/x32/asm_stat.h linux/x86_64/asm_stat.h lookup_dcookie.c \
 	loop.c lseek.c 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 net.c netlink.c nsig.h numa.c 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_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 qualify.c quota.c \
-	readahead.c readlink.c reboot.c regs.h renameat.c resource.c \
-	rtc.c sched.c scsi.c seccomp.c seccomp_fprog.h sendfile.c \
-	sg_io_v3.c sg_io_v4.c sigaltstack.c sigevent.h signal.c \
-	signalfd.c sigreturn.c sock.c sockaddr.c socketutils.c \
-	sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h strace.c \
-	swapon.c syscall.c sysctl.c sysent.h sysinfo.c syslog.c \
-	sysmips.c term.c time.c times.c truncate.c ubi.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.h xmalloc.c unwind.c
+	native_defs.h net.c netlink.c nsfs.c nsfs.h nsig.h numa.c \
+	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_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 qualify.c quota.c readahead.c readlink.c reboot.c \
+	regs.h renameat.c resource.c rt_sigframe.c rt_sigreturn.c \
+	rtc.c sched.c sched_attr.h scsi.c seccomp.c seccomp_fprog.h \
+	sendfile.c sg_io_v3.c sg_io_v4.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 swapon.c syscall.c sysctl.c sysent.h \
+	sysinfo.c syslog.c sysmips.c term.c time.c times.c truncate.c \
+	ubi.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.h \
+	xmalloc.c unwind.c
 #am__objects_3 = strace-unwind.$(OBJEXT)
 am_strace_OBJECTS = strace-access.$(OBJEXT) strace-affinity.$(OBJEXT) \
 	strace-aio.$(OBJEXT) strace-alpha.$(OBJEXT) \
@@ -358,13 +366,14 @@
 	strace-mmsghdr.$(OBJEXT) strace-mount.$(OBJEXT) \
 	strace-mq.$(OBJEXT) strace-msghdr.$(OBJEXT) \
 	strace-mtd.$(OBJEXT) strace-net.$(OBJEXT) \
-	strace-netlink.$(OBJEXT) strace-numa.$(OBJEXT) \
-	strace-oldstat.$(OBJEXT) strace-open.$(OBJEXT) \
-	strace-or1k_atomic.$(OBJEXT) strace-pathtrace.$(OBJEXT) \
-	strace-perf.$(OBJEXT) strace-personality.$(OBJEXT) \
-	strace-pkeys.$(OBJEXT) strace-poll.$(OBJEXT) \
-	strace-prctl.$(OBJEXT) strace-print_dev_t.$(OBJEXT) \
-	strace-print_mq_attr.$(OBJEXT) strace-print_msgbuf.$(OBJEXT) \
+	strace-netlink.$(OBJEXT) strace-nsfs.$(OBJEXT) \
+	strace-numa.$(OBJEXT) strace-oldstat.$(OBJEXT) \
+	strace-open.$(OBJEXT) strace-or1k_atomic.$(OBJEXT) \
+	strace-pathtrace.$(OBJEXT) strace-perf.$(OBJEXT) \
+	strace-personality.$(OBJEXT) strace-pkeys.$(OBJEXT) \
+	strace-poll.$(OBJEXT) strace-prctl.$(OBJEXT) \
+	strace-print_dev_t.$(OBJEXT) strace-print_mq_attr.$(OBJEXT) \
+	strace-print_msgbuf.$(OBJEXT) \
 	strace-print_sg_req_info.$(OBJEXT) \
 	strace-print_sigevent.$(OBJEXT) strace-print_statfs.$(OBJEXT) \
 	strace-print_struct_stat.$(OBJEXT) strace-print_time.$(OBJEXT) \
@@ -376,15 +385,16 @@
 	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-sched.$(OBJEXT) \
 	strace-scsi.$(OBJEXT) strace-seccomp.$(OBJEXT) \
 	strace-sendfile.$(OBJEXT) strace-sg_io_v3.$(OBJEXT) \
 	strace-sg_io_v4.$(OBJEXT) strace-sigaltstack.$(OBJEXT) \
 	strace-signal.$(OBJEXT) strace-signalfd.$(OBJEXT) \
-	strace-sigreturn.$(OBJEXT) strace-sock.$(OBJEXT) \
-	strace-sockaddr.$(OBJEXT) strace-socketutils.$(OBJEXT) \
-	strace-sram_alloc.$(OBJEXT) strace-stat.$(OBJEXT) \
-	strace-stat64.$(OBJEXT) strace-statfs.$(OBJEXT) \
+	strace-sock.$(OBJEXT) strace-sockaddr.$(OBJEXT) \
+	strace-socketutils.$(OBJEXT) strace-sram_alloc.$(OBJEXT) \
+	strace-stat.$(OBJEXT) strace-stat64.$(OBJEXT) \
+	strace-statfs.$(OBJEXT) strace-statx.$(OBJEXT) \
 	strace-strace.$(OBJEXT) strace-swapon.$(OBJEXT) \
 	strace-syscall.$(OBJEXT) strace-sysctl.$(OBJEXT) \
 	strace-sysinfo.$(OBJEXT) strace-syslog.$(OBJEXT) \
@@ -560,12 +570,12 @@
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
-ACLOCAL = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing aclocal-1.14
+ACLOCAL = ${SHELL} /tmp/strace-4.17/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
-AUTOCONF = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoconf
-AUTOHEADER = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoheader
-AUTOMAKE = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing automake-1.14
+AUTOCONF = ${SHELL} /tmp/strace-4.17/missing autoconf
+AUTOHEADER = ${SHELL} /tmp/strace-4.17/missing autoheader
+AUTOMAKE = ${SHELL} /tmp/strace-4.17/missing automake-1.14
 AWK = gawk
 BUILD_EXEEXT = 
 BUILD_OBJEXT = 
@@ -579,12 +589,13 @@
 CODE_COVERAGE_CXXFLAGS = 
 CODE_COVERAGE_ENABLED = no
 CODE_COVERAGE_LDFLAGS = 
+COPYRIGHT_YEAR = 2017
 CPP = gcc -E
 CPPFLAGS = 
 CPPFLAGS_FOR_BUILD = 
 CPP_FOR_BUILD = gcc -E
 CYGPATH_W = echo
-DEB_CHANGELOGTIME = Wed, 15 Feb 2017 11:38:25 -0800
+DEB_CHANGELOGTIME = Thu, 25 May 2017 15:09:49 -0700
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
 ECHO_C = 
@@ -611,34 +622,34 @@
 LIBS = 
 LTLIBOBJS = 
 MAINT = #
-MAKEINFO = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing makeinfo
+MAKEINFO = ${SHELL} /tmp/strace-4.17/missing makeinfo
 MIPS_ABI = 
 MKDIR_P = /bin/mkdir -p
 OBJEXT = o
 PACKAGE = strace
 PACKAGE_BUGREPORT = strace-devel@lists.sourceforge.net
 PACKAGE_NAME = strace
-PACKAGE_STRING = strace 4.16
+PACKAGE_STRING = strace 4.17
 PACKAGE_TARNAME = strace
 PACKAGE_URL = https://strace.io
-PACKAGE_VERSION = 4.16
+PACKAGE_VERSION = 4.17
 PATH_SEPARATOR = :
 PERL = /usr/bin/perl
 RANLIB = ranlib
-RPM_CHANGELOGTIME = Wed Feb 15 2017
+RPM_CHANGELOGTIME = Thu May 25 2017
 SED = /bin/sed
 SET_MAKE = 
 SHELL = /bin/sh
 STRIP = 
 VALGRIND = valgrind
 VALGRIND_ENABLED = yes
-VERSION = 4.16
+VERSION = 4.17
 WARN_CFLAGS =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
 WARN_CFLAGS_FOR_BUILD =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
-abs_builddir = /usr/local/google/home/enh/Downloads/strace-4.16
-abs_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16
-abs_top_builddir = /usr/local/google/home/enh/Downloads/strace-4.16
-abs_top_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16
+abs_builddir = /tmp/strace-4.17
+abs_srcdir = /tmp/strace-4.17
+abs_top_builddir = /tmp/strace-4.17
+abs_top_srcdir = /tmp/strace-4.17
 ac_ct_CC = gcc
 ac_ct_CC_FOR_BUILD = gcc
 am__include = include
@@ -670,7 +681,7 @@
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/install-sh
+install_sh = ${SHELL} /tmp/strace-4.17/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 libunwind_CPPFLAGS = 
@@ -714,14 +725,15 @@
 
 AM_CFLAGS_FOR_BUILD = $(WARN_CFLAGS_FOR_BUILD)
 AM_CPPFLAGS_FOR_BUILD = $(AM_CPPFLAGS)
-XLAT_INPUT_FILES = xlat/access_flags.in xlat/aclipc.in \
-	xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in \
+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/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_type.in xlat/bpf_class.in \
-	xlat/bpf_commands.in xlat/bpf_map_types.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_types.in \
 	xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in \
 	xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in \
 	xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in \
@@ -790,9 +802,9 @@
 	xlat/netlink_protocols.in xlat/netlink_types.in \
 	xlat/notifyflags.in xlat/nt_descriptor_types.in \
 	xlat/open_access_modes.in xlat/open_mode_flags.in \
-	xlat/openmodessol.in xlat/packet_mreq_type.in \
-	xlat/perf_attr_size.in xlat/perf_branch_sample_type.in \
-	xlat/perf_event_open_flags.in xlat/perf_event_read_format.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 \
@@ -832,8 +844,9 @@
 	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/swap_flags.in xlat/sync_file_range_flags.in \
-	xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.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 \
@@ -854,22 +867,25 @@
 	xlat/v4l2_format_description_flags.in \
 	xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in \
 	xlat/v4l2_input_types.in xlat/v4l2_memories.in \
-	xlat/v4l2_streaming_capabilities.in xlat/wait4_options.in \
+	xlat/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/xfs_dqblk_flags.in xlat/xfs_quota_flags.in
-XLAT_HEADER_FILES = xlat/access_flags.h xlat/aclipc.h xlat/addrfams.h \
+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/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_type.h xlat/bpf_class.h \
-	xlat/bpf_commands.h xlat/bpf_map_types.h \
-	xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h \
-	xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h \
-	xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h \
-	xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h \
-	xlat/bsg_subprotocol.h xlat/bt_protocols.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_types.h xlat/bpf_map_update_elem_flags.h \
+	xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h \
+	xlat/bpf_op_jmp.h xlat/bpf_prog_types.h xlat/bpf_rval.h \
+	xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_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 \
@@ -928,12 +944,12 @@
 	xlat/netlink_protocols.h xlat/netlink_types.h \
 	xlat/notifyflags.h xlat/nt_descriptor_types.h \
 	xlat/open_access_modes.h xlat/open_mode_flags.h \
-	xlat/openmodessol.h xlat/packet_mreq_type.h \
-	xlat/perf_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/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 \
@@ -965,7 +981,8 @@
 	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/swap_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 \
@@ -987,9 +1004,12 @@
 	xlat/v4l2_format_description_flags.h \
 	xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h \
 	xlat/v4l2_input_types.h xlat/v4l2_memories.h \
-	xlat/v4l2_streaming_capabilities.h xlat/wait4_options.h \
-	xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h \
-	xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
+	xlat/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/xfs_dqblk_flags.h \
+	xlat/xfs_quota_flags.h
 strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_2) \
 	$(CODE_COVERAGE_CPPFLAGS)
 strace_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
@@ -1003,6 +1023,7 @@
 	fstatfs.c \
 	fstatfs64.c \
 	ipc.c \
+	sigreturn.c	\
 	socketcall.c \
 	statfs.c \
 	statfs64.c \
@@ -1029,24 +1050,25 @@
 	linux/x32/asm_stat.h linux/x86_64/asm_stat.h lookup_dcookie.c \
 	loop.c lseek.c 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 net.c netlink.c nsig.h numa.c 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_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 qualify.c quota.c \
-	readahead.c readlink.c reboot.c regs.h renameat.c resource.c \
-	rtc.c sched.c scsi.c seccomp.c seccomp_fprog.h sendfile.c \
-	sg_io_v3.c sg_io_v4.c sigaltstack.c sigevent.h signal.c \
-	signalfd.c sigreturn.c sock.c sockaddr.c socketutils.c \
-	sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h strace.c \
-	swapon.c syscall.c sysctl.c sysent.h sysinfo.c syslog.c \
-	sysmips.c term.c time.c times.c truncate.c ubi.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.h xmalloc.c \
-	$(am__append_1)
+	native_defs.h net.c netlink.c nsfs.c nsfs.h nsig.h numa.c \
+	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_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 qualify.c quota.c readahead.c readlink.c reboot.c \
+	regs.h renameat.c resource.c rt_sigframe.c rt_sigreturn.c \
+	rtc.c sched.c sched_attr.h scsi.c seccomp.c seccomp_fprog.h \
+	sendfile.c sg_io_v3.c sg_io_v4.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 swapon.c syscall.c sysctl.c sysent.h \
+	sysinfo.c syslog.c sysmips.c term.c time.c times.c truncate.c \
+	ubi.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.h \
+	xmalloc.c $(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 .)
@@ -1077,7 +1099,6 @@
 	debian/strace64.install		\
 	debian/strace64.manpages	\
 	debian/watch			\
-	errnoent.sh			\
 	generate_sen.sh			\
 	ioctl_iocdef.c			\
 	ioctlsort.c			\
@@ -1090,6 +1111,7 @@
 	linux/64/syscallent.h		\
 	linux/aarch64/arch_regs.c	\
 	linux/aarch64/arch_regs.h	\
+	linux/aarch64/arch_rt_sigframe.c\
 	linux/aarch64/arch_sigreturn.c	\
 	linux/aarch64/errnoent1.h	\
 	linux/aarch64/get_error.c	\
@@ -1107,6 +1129,7 @@
 	linux/alpha/arch_getrval2.c	\
 	linux/alpha/arch_regs.c		\
 	linux/alpha/arch_regs.h		\
+	linux/alpha/arch_rt_sigframe.c	\
 	linux/alpha/arch_sigreturn.c	\
 	linux/alpha/errnoent.h		\
 	linux/alpha/get_error.c		\
@@ -1121,6 +1144,8 @@
 	linux/alpha/syscallent.h	\
 	linux/alpha/userent.h		\
 	linux/arc/arch_regs.c		\
+	linux/arc/arch_regs.h		\
+	linux/arc/arch_rt_sigframe.c	\
 	linux/arc/get_error.c		\
 	linux/arc/get_scno.c		\
 	linux/arc/get_syscall_args.c	\
@@ -1133,6 +1158,7 @@
 	linux/arch_sigreturn.c		\
 	linux/arm/arch_regs.c		\
 	linux/arm/arch_regs.h		\
+	linux/arm/arch_rt_sigframe.c	\
 	linux/arm/arch_sigreturn.c	\
 	linux/arm/get_error.c		\
 	linux/arm/get_scno.c		\
@@ -1144,6 +1170,8 @@
 	linux/arm/syscallent.h		\
 	linux/arm/userent.h		\
 	linux/avr32/arch_regs.c		\
+	linux/avr32/arch_regs.h		\
+	linux/avr32/arch_rt_sigframe.c	\
 	linux/avr32/get_error.c		\
 	linux/avr32/get_scno.c		\
 	linux/avr32/get_syscall_args.c	\
@@ -1154,32 +1182,38 @@
 	linux/avr32/syscallent.h	\
 	linux/avr32/userent.h		\
 	linux/bfin/arch_regs.c		\
+	linux/bfin/arch_rt_sigframe.c	\
 	linux/bfin/get_error.c		\
 	linux/bfin/get_scno.c		\
 	linux/bfin/get_syscall_args.c	\
 	linux/bfin/get_syscall_result.c	\
 	linux/bfin/ioctls_arch0.h	\
 	linux/bfin/ioctls_inc0.h	\
+	linux/bfin/rt_sigframe.h	\
 	linux/bfin/set_error.c		\
 	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	\
@@ -1189,6 +1223,7 @@
 	linux/getregs_old.h		\
 	linux/hppa/arch_regs.c		\
 	linux/hppa/arch_regs.h		\
+	linux/hppa/arch_rt_sigframe.c	\
 	linux/hppa/errnoent.h		\
 	linux/hppa/get_error.c		\
 	linux/hppa/get_scno.c		\
@@ -1196,18 +1231,21 @@
 	linux/hppa/get_syscall_result.c	\
 	linux/hppa/ioctls_arch0.h	\
 	linux/hppa/ioctls_inc0.h	\
+	linux/hppa/rt_sigframe.h	\
 	linux/hppa/set_error.c		\
 	linux/hppa/set_scno.c		\
 	linux/hppa/signalent.h		\
 	linux/hppa/syscallent.h		\
 	linux/i386/arch_regs.c		\
 	linux/i386/arch_regs.h		\
+	linux/i386/arch_rt_sigframe.c	\
 	linux/i386/arch_sigreturn.c	\
 	linux/i386/get_error.c		\
 	linux/i386/get_scno.c		\
 	linux/i386/get_syscall_args.c	\
 	linux/i386/ioctls_arch0.h	\
 	linux/i386/ioctls_inc0.h	\
+	linux/i386/rt_sigframe.h	\
 	linux/i386/set_error.c		\
 	linux/i386/set_scno.c		\
 	linux/i386/syscallent.h		\
@@ -1216,12 +1254,13 @@
 	linux/ia64/arch_getrval2.c	\
 	linux/ia64/arch_regs.c		\
 	linux/ia64/arch_regs.h		\
-	linux/ia64/arch_sigreturn.c	\
+	linux/ia64/arch_rt_sigframe.c	\
 	linux/ia64/get_error.c		\
 	linux/ia64/get_scno.c		\
 	linux/ia64/get_syscall_args.c	\
 	linux/ia64/ioctls_arch0.h	\
 	linux/ia64/ioctls_inc0.h	\
+	linux/ia64/rt_sigframe.h	\
 	linux/ia64/set_error.c		\
 	linux/ia64/set_scno.c		\
 	linux/ia64/syscallent.h		\
@@ -1229,17 +1268,21 @@
 	linux/inet_diag.h		\
 	linux/m68k/arch_regs.c		\
 	linux/m68k/arch_regs.h		\
+	linux/m68k/arch_rt_sigframe.c	\
 	linux/m68k/arch_sigreturn.c	\
 	linux/m68k/get_error.c		\
 	linux/m68k/get_scno.c		\
 	linux/m68k/get_syscall_args.c	\
 	linux/m68k/ioctls_arch0.h	\
 	linux/m68k/ioctls_inc0.h	\
+	linux/m68k/rt_sigframe.h	\
 	linux/m68k/set_error.c		\
 	linux/m68k/set_scno.c		\
 	linux/m68k/syscallent.h		\
 	linux/m68k/userent.h		\
 	linux/metag/arch_regs.c		\
+	linux/metag/arch_regs.h		\
+	linux/metag/arch_rt_sigframe.c	\
 	linux/metag/get_error.c		\
 	linux/metag/get_scno.c		\
 	linux/metag/get_syscall_args.c	\
@@ -1249,6 +1292,7 @@
 	linux/metag/set_scno.c		\
 	linux/metag/syscallent.h	\
 	linux/microblaze/arch_regs.c	\
+	linux/microblaze/arch_rt_sigframe.c\
 	linux/microblaze/arch_sigreturn.c	\
 	linux/microblaze/get_error.c	\
 	linux/microblaze/get_scno.c	\
@@ -1263,6 +1307,7 @@
 	linux/mips/arch_getrval2.c	\
 	linux/mips/arch_regs.c		\
 	linux/mips/arch_regs.h		\
+	linux/mips/arch_rt_sigframe.c	\
 	linux/mips/arch_sigreturn.c	\
 	linux/mips/errnoent.h		\
 	linux/mips/genstub.sh		\
@@ -1271,6 +1316,7 @@
 	linux/mips/get_syscall_args.c	\
 	linux/mips/ioctls_arch0.h	\
 	linux/mips/ioctls_inc0.h	\
+	linux/mips/rt_sigframe.h	\
 	linux/mips/set_error.c		\
 	linux/mips/set_scno.c		\
 	linux/mips/signalent.h		\
@@ -1283,6 +1329,8 @@
 	linux/mtd-abi.h			\
 	linux/netlink_diag.h		\
 	linux/nios2/arch_regs.c		\
+	linux/nios2/arch_regs.h		\
+	linux/nios2/arch_rt_sigframe.c	\
 	linux/nios2/get_error.c		\
 	linux/nios2/get_scno.c		\
 	linux/nios2/get_syscall_args.c	\
@@ -1292,6 +1340,8 @@
 	linux/nios2/set_scno.c		\
 	linux/nios2/syscallent.h	\
 	linux/or1k/arch_regs.c		\
+	linux/or1k/arch_regs.h		\
+	linux/or1k/arch_rt_sigframe.c	\
 	linux/or1k/get_error.c		\
 	linux/or1k/get_scno.c		\
 	linux/or1k/get_syscall_args.c	\
@@ -1304,6 +1354,7 @@
 	linux/personality.h		\
 	linux/powerpc/arch_regs.c	\
 	linux/powerpc/arch_regs.h	\
+	linux/powerpc/arch_rt_sigframe.c\
 	linux/powerpc/arch_sigreturn.c	\
 	linux/powerpc/errnoent.h	\
 	linux/powerpc/get_error.c	\
@@ -1319,6 +1370,7 @@
 	linux/powerpc/userent.h		\
 	linux/powerpc64/arch_regs.c	\
 	linux/powerpc64/arch_regs.h	\
+	linux/powerpc64/arch_rt_sigframe.c\
 	linux/powerpc64/arch_sigreturn.c	\
 	linux/powerpc64/errnoent.h	\
 	linux/powerpc64/errnoent1.h	\
@@ -1331,6 +1383,7 @@
 	linux/powerpc64/ioctls_arch1.h	\
 	linux/powerpc64/ioctls_inc0.h	\
 	linux/powerpc64/ioctls_inc1.h	\
+	linux/powerpc64/rt_sigframe.h	\
 	linux/powerpc64/set_error.c	\
 	linux/powerpc64/set_scno.c	\
 	linux/powerpc64/signalent1.h	\
@@ -1339,6 +1392,8 @@
 	linux/powerpc64/userent.h	\
 	linux/ptp_clock.h		\
 	linux/riscv/arch_regs.c		\
+	linux/riscv/arch_regs.h		\
+	linux/riscv/arch_rt_sigframe.c	\
 	linux/riscv/errnoent1.h		\
 	linux/riscv/get_error.c		\
 	linux/riscv/get_scno.c		\
@@ -1352,14 +1407,17 @@
 	linux/riscv/signalent1.h	\
 	linux/riscv/syscallent.h	\
 	linux/riscv/syscallent1.h	\
+	linux/rt_sigframe.h		\
 	linux/s390/arch_regs.c		\
 	linux/s390/arch_regs.h		\
+	linux/s390/arch_rt_sigframe.c	\
 	linux/s390/arch_sigreturn.c	\
 	linux/s390/get_error.c		\
 	linux/s390/get_scno.c		\
 	linux/s390/get_syscall_args.c	\
 	linux/s390/ioctls_arch0.h	\
 	linux/s390/ioctls_inc0.h	\
+	linux/s390/rt_sigframe.h	\
 	linux/s390/set_error.c		\
 	linux/s390/set_scno.c		\
 	linux/s390/syscallent.h		\
@@ -1368,18 +1426,21 @@
 	linux/s390/userent1.h		\
 	linux/s390x/arch_regs.c		\
 	linux/s390x/arch_regs.h		\
+	linux/s390x/arch_rt_sigframe.c	\
 	linux/s390x/arch_sigreturn.c	\
 	linux/s390x/get_error.c		\
 	linux/s390x/get_scno.c		\
 	linux/s390x/get_syscall_args.c	\
 	linux/s390x/ioctls_arch0.h	\
 	linux/s390x/ioctls_inc0.h	\
+	linux/s390x/rt_sigframe.h	\
 	linux/s390x/set_error.c		\
 	linux/s390x/set_scno.c		\
 	linux/s390x/syscallent.h	\
 	linux/s390x/userent.h		\
 	linux/sh/arch_getrval2.c	\
 	linux/sh/arch_regs.c		\
+	linux/sh/arch_rt_sigframe.c	\
 	linux/sh/get_error.c		\
 	linux/sh/get_scno.c		\
 	linux/sh/get_syscall_args.c	\
@@ -1393,12 +1454,14 @@
 	linux/sh/userent0.h		\
 	linux/sh64/arch_regs.c		\
 	linux/sh64/arch_regs.h		\
+	linux/sh64/arch_rt_sigframe.c	\
 	linux/sh64/get_error.c		\
 	linux/sh64/get_scno.c		\
 	linux/sh64/get_syscall_args.c	\
 	linux/sh64/get_syscall_result.c	\
 	linux/sh64/ioctls_arch0.h	\
 	linux/sh64/ioctls_inc0.h	\
+	linux/sh64/rt_sigframe.h	\
 	linux/sh64/set_error.c		\
 	linux/sh64/set_scno.c		\
 	linux/sh64/syscallent.h		\
@@ -1408,6 +1471,7 @@
 	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		\
@@ -1416,6 +1480,7 @@
 	linux/sparc/get_syscall_args.c	\
 	linux/sparc/ioctls_arch0.h	\
 	linux/sparc/ioctls_inc0.h	\
+	linux/sparc/rt_sigframe.h	\
 	linux/sparc/set_error.c		\
 	linux/sparc/set_scno.c		\
 	linux/sparc/signalent.h		\
@@ -1424,6 +1489,7 @@
 	linux/sparc64/arch_getrval2.c	\
 	linux/sparc64/arch_regs.c	\
 	linux/sparc64/arch_regs.h	\
+	linux/sparc64/arch_rt_sigframe.c\
 	linux/sparc64/arch_sigreturn.c	\
 	linux/sparc64/errnoent.h	\
 	linux/sparc64/errnoent1.h	\
@@ -1434,6 +1500,7 @@
 	linux/sparc64/ioctls_arch1.h	\
 	linux/sparc64/ioctls_inc0.h	\
 	linux/sparc64/ioctls_inc1.h	\
+	linux/sparc64/rt_sigframe.h	\
 	linux/sparc64/set_error.c	\
 	linux/sparc64/set_scno.c	\
 	linux/sparc64/signalent.h	\
@@ -1445,6 +1512,7 @@
 	linux/syscall.h			\
 	linux/tile/arch_regs.c		\
 	linux/tile/arch_regs.h		\
+	linux/tile/arch_rt_sigframe.c	\
 	linux/tile/arch_sigreturn.c	\
 	linux/tile/errnoent1.h		\
 	linux/tile/get_error.c		\
@@ -1454,6 +1522,7 @@
 	linux/tile/ioctls_arch1.h	\
 	linux/tile/ioctls_inc0.h	\
 	linux/tile/ioctls_inc1.h	\
+	linux/tile/rt_sigframe.h	\
 	linux/tile/set_error.c		\
 	linux/tile/set_scno.c		\
 	linux/tile/signalent1.h		\
@@ -1466,6 +1535,7 @@
 	linux/userent0.h		\
 	linux/x32/arch_regs.c		\
 	linux/x32/arch_regs.h		\
+	linux/x32/arch_rt_sigframe.c	\
 	linux/x32/arch_sigreturn.c	\
 	linux/x32/errnoent1.h		\
 	linux/x32/get_error.c		\
@@ -1475,6 +1545,7 @@
 	linux/x32/ioctls_arch1.h	\
 	linux/x32/ioctls_inc0.h		\
 	linux/x32/ioctls_inc1.h		\
+	linux/x32/rt_sigframe.h		\
 	linux/x32/set_error.c		\
 	linux/x32/set_scno.c		\
 	linux/x32/signalent1.h		\
@@ -1483,6 +1554,7 @@
 	linux/x32/userent.h		\
 	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	\
@@ -1498,6 +1570,7 @@
 	linux/x86_64/ioctls_inc0.h	\
 	linux/x86_64/ioctls_inc1.h	\
 	linux/x86_64/ioctls_inc2.h	\
+	linux/x86_64/rt_sigframe.h	\
 	linux/x86_64/set_error.c	\
 	linux/x86_64/set_scno.c		\
 	linux/x86_64/signalent1.h	\
@@ -1507,6 +1580,7 @@
 	linux/x86_64/syscallent2.h	\
 	linux/x86_64/userent.h		\
 	linux/xtensa/arch_regs.c	\
+	linux/xtensa/arch_rt_sigframe.c	\
 	linux/xtensa/get_error.c	\
 	linux/xtensa/get_scno.c		\
 	linux/xtensa/get_syscall_args.c	\
@@ -1517,20 +1591,14 @@
 	linux/xtensa/set_scno.c		\
 	linux/xtensa/syscallent.h	\
 	linux/xtensa/userent.h		\
-	maint/ioctls_gen.sh		\
-	maint/ioctls_hex.sh		\
-	maint/ioctls_sym.sh		\
-	maint/print_ioctlent.c		\
 	mpers.awk			\
 	mpers.sh			\
 	mpers_test.sh			\
 	mpers_xlat.h			\
 	scno.head			\
-	signalent.sh			\
 	strace-graph			\
 	strace-log-merge		\
 	strace.spec			\
-	syscallent.sh			\
 	$(XLAT_INPUT_FILES)		\
 	$(XLAT_HEADER_FILES)		\
 	xlat/gen.sh			\
@@ -1572,7 +1640,7 @@
 SCNO_SED = /TRACE_INDIRECT_SUBCALL/d; s/^\[[[:space:]]*\($(digits)\)\][[:space:]]*=[[:space:]]*{[^,]*,[^,]*,[^,]*,[[:space:]]*"\($(al_nums)\)"[[:space:]]*},.*/\#ifndef __NR_\2\n\# define __NR_\2 (SYSCALL_BIT | \1)\n\#endif/p
 
 # Generated by ./generate_mpers_am.sh; do not edit.
-mpers_source_files = block.c btrfs.c dirent.c evdev.c fetch_seccomp_fprog.c fetch_struct_flock.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timespec.c print_timeval.c print_timex.c printrusage.c printsiginfo.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
+mpers_source_files = block.c btrfs.c dirent.c evdev.c fetch_seccomp_fprog.c fetch_struct_flock.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timespec.c print_timeval.c print_timex.c printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
 
 # defines mpers_source_files
 srcdir_mpers_source_files = $(patsubst %,$(srcdir)/%,$(mpers_source_files))
@@ -1786,6 +1854,7 @@
 include ./$(DEPDIR)/libmpers_m32_a-print_timex.Po
 include ./$(DEPDIR)/libmpers_m32_a-printrusage.Po
 include ./$(DEPDIR)/libmpers_m32_a-printsiginfo.Po
+include ./$(DEPDIR)/libmpers_m32_a-rt_sigreturn.Po
 include ./$(DEPDIR)/libmpers_m32_a-rtc.Po
 include ./$(DEPDIR)/libmpers_m32_a-sg_io_v3.Po
 include ./$(DEPDIR)/libmpers_m32_a-sigaltstack.Po
@@ -1821,6 +1890,7 @@
 include ./$(DEPDIR)/libmpers_mx32_a-print_timex.Po
 include ./$(DEPDIR)/libmpers_mx32_a-printrusage.Po
 include ./$(DEPDIR)/libmpers_mx32_a-printsiginfo.Po
+include ./$(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Po
 include ./$(DEPDIR)/libmpers_mx32_a-rtc.Po
 include ./$(DEPDIR)/libmpers_mx32_a-sg_io_v3.Po
 include ./$(DEPDIR)/libmpers_mx32_a-sigaltstack.Po
@@ -1833,6 +1903,7 @@
 include ./$(DEPDIR)/libstrace_a-fstatfs.Po
 include ./$(DEPDIR)/libstrace_a-fstatfs64.Po
 include ./$(DEPDIR)/libstrace_a-ipc.Po
+include ./$(DEPDIR)/libstrace_a-sigreturn.Po
 include ./$(DEPDIR)/libstrace_a-socketcall.Po
 include ./$(DEPDIR)/libstrace_a-statfs.Po
 include ./$(DEPDIR)/libstrace_a-statfs64.Po
@@ -1916,6 +1987,7 @@
 include ./$(DEPDIR)/strace-mtd.Po
 include ./$(DEPDIR)/strace-net.Po
 include ./$(DEPDIR)/strace-netlink.Po
+include ./$(DEPDIR)/strace-nsfs.Po
 include ./$(DEPDIR)/strace-numa.Po
 include ./$(DEPDIR)/strace-oldstat.Po
 include ./$(DEPDIR)/strace-open.Po
@@ -1950,6 +2022,8 @@
 include ./$(DEPDIR)/strace-reboot.Po
 include ./$(DEPDIR)/strace-renameat.Po
 include ./$(DEPDIR)/strace-resource.Po
+include ./$(DEPDIR)/strace-rt_sigframe.Po
+include ./$(DEPDIR)/strace-rt_sigreturn.Po
 include ./$(DEPDIR)/strace-rtc.Po
 include ./$(DEPDIR)/strace-sched.Po
 include ./$(DEPDIR)/strace-scsi.Po
@@ -1960,7 +2034,6 @@
 include ./$(DEPDIR)/strace-sigaltstack.Po
 include ./$(DEPDIR)/strace-signal.Po
 include ./$(DEPDIR)/strace-signalfd.Po
-include ./$(DEPDIR)/strace-sigreturn.Po
 include ./$(DEPDIR)/strace-sock.Po
 include ./$(DEPDIR)/strace-sockaddr.Po
 include ./$(DEPDIR)/strace-socketutils.Po
@@ -1968,6 +2041,7 @@
 include ./$(DEPDIR)/strace-stat.Po
 include ./$(DEPDIR)/strace-stat64.Po
 include ./$(DEPDIR)/strace-statfs.Po
+include ./$(DEPDIR)/strace-statx.Po
 include ./$(DEPDIR)/strace-strace.Po
 include ./$(DEPDIR)/strace-swapon.Po
 include ./$(DEPDIR)/strace-syscall.Po
@@ -2374,6 +2448,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
 
+libmpers_m32_a-rt_sigreturn.o: rt_sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo -c -o libmpers_m32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Po
+#	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_m32_a-rt_sigreturn.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+
+libmpers_m32_a-rt_sigreturn.obj: rt_sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo -c -o libmpers_m32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Po
+#	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_m32_a-rt_sigreturn.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+
 libmpers_m32_a-rtc.o: rtc.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-rtc.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-rtc.Tpo -c -o libmpers_m32_a-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-rtc.Tpo $(DEPDIR)/libmpers_m32_a-rtc.Po
@@ -2864,6 +2952,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
 
+libmpers_mx32_a-rt_sigreturn.o: rt_sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo -c -o libmpers_mx32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Po
+#	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_mx32_a-rt_sigreturn.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+
+libmpers_mx32_a-rt_sigreturn.obj: rt_sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo -c -o libmpers_mx32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Po
+#	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_mx32_a-rt_sigreturn.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+
 libmpers_mx32_a-rtc.o: rtc.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-rtc.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-rtc.Tpo -c -o libmpers_mx32_a-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-rtc.Tpo $(DEPDIR)/libmpers_mx32_a-rtc.Po
@@ -3032,6 +3134,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-ipc.obj `if test -f 'ipc.c'; then $(CYGPATH_W) 'ipc.c'; else $(CYGPATH_W) '$(srcdir)/ipc.c'; fi`
 
+libstrace_a-sigreturn.o: sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.o -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
+#	$(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
+
+libstrace_a-sigreturn.obj: sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
+#	$(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -c -o libstrace_a-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
+
 libstrace_a-socketcall.o: socketcall.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketcall.o -MD -MP -MF $(DEPDIR)/libstrace_a-socketcall.Tpo -c -o libstrace_a-socketcall.o `test -f 'socketcall.c' || echo '$(srcdir)/'`socketcall.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketcall.Tpo $(DEPDIR)/libstrace_a-socketcall.Po
@@ -4194,6 +4310,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink.obj `if test -f 'netlink.c'; then $(CYGPATH_W) 'netlink.c'; else $(CYGPATH_W) '$(srcdir)/netlink.c'; fi`
 
+strace-nsfs.o: nsfs.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nsfs.o -MD -MP -MF $(DEPDIR)/strace-nsfs.Tpo -c -o strace-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-nsfs.Tpo $(DEPDIR)/strace-nsfs.Po
+#	$(AM_V_CC)source='nsfs.c' object='strace-nsfs.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
+
+strace-nsfs.obj: nsfs.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nsfs.obj -MD -MP -MF $(DEPDIR)/strace-nsfs.Tpo -c -o strace-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-nsfs.Tpo $(DEPDIR)/strace-nsfs.Po
+#	$(AM_V_CC)source='nsfs.c' object='strace-nsfs.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
+
 strace-numa.o: numa.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-numa.o -MD -MP -MF $(DEPDIR)/strace-numa.Tpo -c -o strace-numa.o `test -f 'numa.c' || echo '$(srcdir)/'`numa.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-numa.Tpo $(DEPDIR)/strace-numa.Po
@@ -4670,6 +4800,34 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(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-rt_sigframe.o: rt_sigframe.c
+	$(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_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigframe.Tpo $(DEPDIR)/strace-rt_sigframe.Po
+#	$(AM_V_CC)source='rt_sigframe.c' object='strace-rt_sigframe.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigframe.o `test -f 'rt_sigframe.c' || echo '$(srcdir)/'`rt_sigframe.c
+
+strace-rt_sigframe.obj: rt_sigframe.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigframe.obj -MD -MP -MF $(DEPDIR)/strace-rt_sigframe.Tpo -c -o strace-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigframe.Tpo $(DEPDIR)/strace-rt_sigframe.Po
+#	$(AM_V_CC)source='rt_sigframe.c' object='strace-rt_sigframe.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
+
+strace-rt_sigreturn.o: rt_sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/strace-rt_sigreturn.Tpo -c -o strace-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigreturn.Tpo $(DEPDIR)/strace-rt_sigreturn.Po
+#	$(AM_V_CC)source='rt_sigreturn.c' object='strace-rt_sigreturn.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+
+strace-rt_sigreturn.obj: rt_sigreturn.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/strace-rt_sigreturn.Tpo -c -o strace-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigreturn.Tpo $(DEPDIR)/strace-rt_sigreturn.Po
+#	$(AM_V_CC)source='rt_sigreturn.c' object='strace-rt_sigreturn.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+
 strace-rtc.o: rtc.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtc.o -MD -MP -MF $(DEPDIR)/strace-rtc.Tpo -c -o strace-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtc.Tpo $(DEPDIR)/strace-rtc.Po
@@ -4810,20 +4968,6 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-signalfd.obj `if test -f 'signalfd.c'; then $(CYGPATH_W) 'signalfd.c'; else $(CYGPATH_W) '$(srcdir)/signalfd.c'; fi`
 
-strace-sigreturn.o: sigreturn.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sigreturn.o -MD -MP -MF $(DEPDIR)/strace-sigreturn.Tpo -c -o strace-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
-	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-sigreturn.Tpo $(DEPDIR)/strace-sigreturn.Po
-#	$(AM_V_CC)source='sigreturn.c' object='strace-sigreturn.o' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
-
-strace-sigreturn.obj: sigreturn.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sigreturn.obj -MD -MP -MF $(DEPDIR)/strace-sigreturn.Tpo -c -o strace-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-sigreturn.Tpo $(DEPDIR)/strace-sigreturn.Po
-#	$(AM_V_CC)source='sigreturn.c' object='strace-sigreturn.obj' libtool=no \
-#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
-
 strace-sock.o: sock.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sock.o -MD -MP -MF $(DEPDIR)/strace-sock.Tpo -c -o strace-sock.o `test -f 'sock.c' || echo '$(srcdir)/'`sock.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-sock.Tpo $(DEPDIR)/strace-sock.Po
@@ -4922,6 +5066,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
 
+strace-statx.o: statx.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statx.o -MD -MP -MF $(DEPDIR)/strace-statx.Tpo -c -o strace-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-statx.Tpo $(DEPDIR)/strace-statx.Po
+#	$(AM_V_CC)source='statx.c' object='strace-statx.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
+
+strace-statx.obj: statx.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statx.obj -MD -MP -MF $(DEPDIR)/strace-statx.Tpo -c -o strace-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-statx.Tpo $(DEPDIR)/strace-statx.Po
+#	$(AM_V_CC)source='statx.c' object='strace-statx.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
+
 strace-strace.o: strace.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.o -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po
@@ -5788,8 +5946,6 @@
 
 $(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/aclipc.h: $(top_srcdir)/xlat/aclipc.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/adjtimex_modes.h: $(top_srcdir)/xlat/adjtimex_modes.in $(top_srcdir)/xlat/gen.sh
@@ -5808,6 +5964,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/at_flags.h: $(top_srcdir)/xlat/at_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/at_statx_sync_types.h: $(top_srcdir)/xlat/at_statx_sync_types.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/atomic_ops.h: $(top_srcdir)/xlat/atomic_ops.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/audit_arch.h: $(top_srcdir)/xlat/audit_arch.in $(top_srcdir)/xlat/gen.sh
@@ -5822,6 +5980,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bootflags3.h: $(top_srcdir)/xlat/bootflags3.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bpf_attach_flags.h: $(top_srcdir)/xlat/bpf_attach_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_attach_type.h: $(top_srcdir)/xlat/bpf_attach_type.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_class.h: $(top_srcdir)/xlat/bpf_class.in $(top_srcdir)/xlat/gen.sh
@@ -6132,8 +6292,6 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/open_mode_flags.h: $(top_srcdir)/xlat/open_mode_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/openmodessol.h: $(top_srcdir)/xlat/openmodessol.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/packet_mreq_type.h: $(top_srcdir)/xlat/packet_mreq_type.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/perf_attr_size.h: $(top_srcdir)/xlat/perf_attr_size.in $(top_srcdir)/xlat/gen.sh
@@ -6320,6 +6478,10 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/statfs_flags.h: $(top_srcdir)/xlat/statfs_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/statx_attrs.h: $(top_srcdir)/xlat/statx_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/statx_masks.h: $(top_srcdir)/xlat/statx_masks.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/swap_flags.h: $(top_srcdir)/xlat/swap_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sync_file_range_flags.h: $(top_srcdir)/xlat/sync_file_range_flags.in $(top_srcdir)/xlat/gen.sh
@@ -6408,8 +6570,20 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_memories.h: $(top_srcdir)/xlat/v4l2_memories.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_sliced_flags.h: $(top_srcdir)/xlat/v4l2_sliced_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_streaming_capabilities.h: $(top_srcdir)/xlat/v4l2_streaming_capabilities.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_audmodes.h: $(top_srcdir)/xlat/v4l2_tuner_audmodes.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_capabilities.h: $(top_srcdir)/xlat/v4l2_tuner_capabilities.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_rxsubchanses.h: $(top_srcdir)/xlat/v4l2_tuner_rxsubchanses.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_types.h: $(top_srcdir)/xlat/v4l2_tuner_types.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_vbi_flags.h: $(top_srcdir)/xlat/v4l2_vbi_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/wait4_options.h: $(top_srcdir)/xlat/wait4_options.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/waitid_types.h: $(top_srcdir)/xlat/waitid_types.in $(top_srcdir)/xlat/gen.sh
@@ -6562,6 +6736,7 @@
 
 dist-hook:
 	$(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version
+	${AM_V_GEN}echo $(COPYRIGHT_YEAR) > $(distdir)/.year
 
 news-check: NEWS
 	$(AM_V_GEN)if head -1 $< |				\
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 9b00481..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,999 +0,0 @@
-# Automake input for strace.
-#
-# Copyright (c) 2002-2009 Roland McGrath <roland@redhat.com>
-# 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>
-# 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.
-
-if HAVE_M32_RUNTIME
-TESTS_M32 = tests-m32
-endif
-if HAVE_MX32_RUNTIME
-TESTS_MX32 = tests-mx32
-endif
-SUBDIRS = tests $(TESTS_M32) $(TESTS_MX32)
-
-bin_PROGRAMS = strace
-man_MANS = strace.1
-bin_SCRIPTS = strace-graph strace-log-merge
-
-OS		= linux
-# ARCH is `i386', `m68k', `sparc', etc.
-ARCH		= @arch@
-
-ACLOCAL_AMFLAGS = -I m4
-AM_CFLAGS = $(WARN_CFLAGS)
-AM_CPPFLAGS = -I$(builddir)/$(OS)/$(ARCH) \
-	      -I$(srcdir)/$(OS)/$(ARCH) \
-	      -I$(builddir)/$(OS) \
-	      -I$(srcdir)/$(OS) \
-	      -I$(builddir) \
-	      -I$(srcdir)
-
-AM_CFLAGS_FOR_BUILD = $(WARN_CFLAGS_FOR_BUILD)
-AM_CPPFLAGS_FOR_BUILD = $(AM_CPPFLAGS)
-
-include xlat/Makemodule.am
-
-strace_CPPFLAGS = $(AM_CPPFLAGS)
-strace_CFLAGS = $(AM_CFLAGS)
-strace_LDFLAGS =
-strace_LDADD = libstrace.a
-noinst_LIBRARIES = libstrace.a
-
-libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
-libstrace_a_CFLAGS = $(strace_CFLAGS)
-libstrace_a_SOURCES =	\
-	fstatfs.c \
-	fstatfs64.c \
-	ipc.c \
-	socketcall.c \
-	statfs.c \
-	statfs64.c \
-	sync_file_range.c \
-	sync_file_range2.c \
-	upeek.c		\
-	upoke.c		\
-	# end of libstrace_a_SOURCES
-
-strace_SOURCES =	\
-	access.c	\
-	affinity.c	\
-	aio.c		\
-	alpha.c		\
-	bjm.c		\
-	block.c		\
-	bpf.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		\
-	empty.h		\
-	epoll.c		\
-	evdev.c		\
-	eventfd.c	\
-	execve.c	\
-	fadvise.c	\
-	fallocate.c	\
-	fanotify.c	\
-	fchownat.c	\
-	fcntl.c		\
-	fetch_seccomp_fprog.c \
-	fetch_struct_flock.c \
-	fetch_struct_mmsghdr.c \
-	fetch_struct_msghdr.c \
-	fetch_struct_stat.c \
-	fetch_struct_stat64.c \
-	fetch_struct_statfs.c \
-	file_handle.c	\
-	file_ioctl.c	\
-	fs_x_ioctl.c	\
-	flock.c		\
-	flock.h		\
-	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	\
-	ldt.c		\
-	link.c		\
-	linux/asm_stat.h \
-	linux/x32/asm_stat.h \
-	linux/x86_64/asm_stat.h \
-	lookup_dcookie.c \
-	loop.c		\
-	lseek.c		\
-	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	\
-	net.c		\
-	netlink.c       \
-	nsig.h		\
-	numa.c		\
-	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_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	\
-	qualify.c	\
-	quota.c		\
-	readahead.c	\
-	readlink.c	\
-	reboot.c	\
-	regs.h		\
-	renameat.c	\
-	resource.c	\
-	rtc.c		\
-	sched.c		\
-	scsi.c		\
-	seccomp.c	\
-	seccomp_fprog.h \
-	sendfile.c	\
-	sg_io_v3.c	\
-	sg_io_v4.c	\
-	sigaltstack.c	\
-	sigevent.h	\
-	signal.c	\
-	signalfd.c	\
-	sigreturn.c	\
-	sock.c		\
-	sockaddr.c	\
-	socketutils.c	\
-	sram_alloc.c	\
-	stat.c		\
-	stat.h		\
-	stat64.c	\
-	statfs.c	\
-	statfs.h	\
-	strace.c	\
-	swapon.c	\
-	syscall.c	\
-	sysctl.c	\
-	sysent.h	\
-	sysinfo.c	\
-	syslog.c	\
-	sysmips.c	\
-	term.c		\
-	time.c		\
-	times.c		\
-	truncate.c	\
-	ubi.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.h		\
-	xmalloc.c	\
-	# end of strace_SOURCES
-
-if USE_LIBUNWIND
-strace_SOURCES += unwind.c
-strace_CPPFLAGS += $(libunwind_CPPFLAGS)
-strace_LDFLAGS += $(libunwind_LDFLAGS)
-strace_LDADD += $(libunwind_LIBS)
-endif
-
-@CODE_COVERAGE_RULES@
-CODE_COVERAGE_BRANCH_COVERAGE = 1
-CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
-	--prefix $(shell cd $(abs_top_srcdir)/.. && pwd || echo .)
-CODE_COVERAGE_IGNORE_PATTERN = '/usr/include/*'
-strace_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS)
-strace_CFLAGS += $(CODE_COVERAGE_CFLAGS)
-strace_LDADD += $(CODE_COVERAGE_LDFLAGS)
-
-# Enable this to get link map generated
-#strace_LDFLAGS += -Wl,-Map=strace.mapfile
-
-EXTRA_DIST =				\
-	$(man_MANS)			\
-	.version			\
-	COPYING				\
-	CREDITS				\
-	ChangeLog			\
-	ChangeLog-CVS			\
-	README-linux-ptrace		\
-	debian/changelog		\
-	debian/compat			\
-	debian/control			\
-	debian/copyright		\
-	debian/rules			\
-	debian/source/format		\
-	debian/strace-udeb.install	\
-	debian/strace.docs		\
-	debian/strace.examples		\
-	debian/strace.install		\
-	debian/strace.manpages		\
-	debian/strace64.install		\
-	debian/strace64.manpages	\
-	debian/watch			\
-	errnoent.sh			\
-	generate_sen.sh			\
-	ioctl_iocdef.c			\
-	ioctlsort.c			\
-	linux/32/ioctls_inc.h		\
-	linux/32/ioctls_inc_align16.h	\
-	linux/32/ioctls_inc_align32.h	\
-	linux/32/ioctls_inc_align64.h	\
-	linux/32/syscallent.h		\
-	linux/64/ioctls_inc.h		\
-	linux/64/syscallent.h		\
-	linux/aarch64/arch_regs.c	\
-	linux/aarch64/arch_regs.h	\
-	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/ioctls_arch0.h	\
-	linux/aarch64/ioctls_arch1.h	\
-	linux/aarch64/ioctls_inc0.h	\
-	linux/aarch64/ioctls_inc1.h	\
-	linux/aarch64/set_error.c	\
-	linux/aarch64/set_scno.c	\
-	linux/aarch64/signalent1.h	\
-	linux/aarch64/syscallent.h	\
-	linux/aarch64/syscallent1.h	\
-	linux/alpha/arch_getrval2.c	\
-	linux/alpha/arch_regs.c		\
-	linux/alpha/arch_regs.h		\
-	linux/alpha/arch_sigreturn.c	\
-	linux/alpha/errnoent.h		\
-	linux/alpha/get_error.c		\
-	linux/alpha/get_scno.c		\
-	linux/alpha/get_syscall_args.c	\
-	linux/alpha/get_syscall_result.c\
-	linux/alpha/ioctls_arch0.h	\
-	linux/alpha/ioctls_inc0.h	\
-	linux/alpha/set_error.c		\
-	linux/alpha/set_scno.c		\
-	linux/alpha/signalent.h		\
-	linux/alpha/syscallent.h	\
-	linux/alpha/userent.h		\
-	linux/arc/arch_regs.c		\
-	linux/arc/get_error.c		\
-	linux/arc/get_scno.c		\
-	linux/arc/get_syscall_args.c	\
-	linux/arc/ioctls_arch0.h	\
-	linux/arc/ioctls_inc0.h		\
-	linux/arc/set_error.c		\
-	linux/arc/set_scno.c		\
-	linux/arc/syscallent.h		\
-	linux/arch_regs.h		\
-	linux/arch_sigreturn.c		\
-	linux/arm/arch_regs.c		\
-	linux/arm/arch_regs.h		\
-	linux/arm/arch_sigreturn.c	\
-	linux/arm/get_error.c		\
-	linux/arm/get_scno.c		\
-	linux/arm/get_syscall_args.c	\
-	linux/arm/ioctls_arch0.h	\
-	linux/arm/ioctls_inc0.h		\
-	linux/arm/set_error.c		\
-	linux/arm/set_scno.c		\
-	linux/arm/syscallent.h		\
-	linux/arm/userent.h		\
-	linux/avr32/arch_regs.c		\
-	linux/avr32/get_error.c		\
-	linux/avr32/get_scno.c		\
-	linux/avr32/get_syscall_args.c	\
-	linux/avr32/ioctls_arch0.h	\
-	linux/avr32/ioctls_inc0.h	\
-	linux/avr32/set_error.c		\
-	linux/avr32/set_scno.c		\
-	linux/avr32/syscallent.h	\
-	linux/avr32/userent.h		\
-	linux/bfin/arch_regs.c		\
-	linux/bfin/get_error.c		\
-	linux/bfin/get_scno.c		\
-	linux/bfin/get_syscall_args.c	\
-	linux/bfin/get_syscall_result.c	\
-	linux/bfin/ioctls_arch0.h	\
-	linux/bfin/ioctls_inc0.h	\
-	linux/bfin/set_error.c		\
-	linux/bfin/set_scno.c		\
-	linux/bfin/syscallent.h		\
-	linux/bfin/userent.h		\
-	linux/crisv10/arch_regs.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/set_error.c	\
-	linux/crisv10/set_scno.c	\
-	linux/crisv10/syscallent.h	\
-	linux/crisv10/userent.h		\
-	linux/crisv32/arch_regs.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/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_regs.c		\
-	linux/hppa/arch_regs.h		\
-	linux/hppa/errnoent.h		\
-	linux/hppa/get_error.c		\
-	linux/hppa/get_scno.c		\
-	linux/hppa/get_syscall_args.c	\
-	linux/hppa/get_syscall_result.c	\
-	linux/hppa/ioctls_arch0.h	\
-	linux/hppa/ioctls_inc0.h	\
-	linux/hppa/set_error.c		\
-	linux/hppa/set_scno.c		\
-	linux/hppa/signalent.h		\
-	linux/hppa/syscallent.h		\
-	linux/i386/arch_regs.c		\
-	linux/i386/arch_regs.h		\
-	linux/i386/arch_sigreturn.c	\
-	linux/i386/get_error.c		\
-	linux/i386/get_scno.c		\
-	linux/i386/get_syscall_args.c	\
-	linux/i386/ioctls_arch0.h	\
-	linux/i386/ioctls_inc0.h	\
-	linux/i386/set_error.c		\
-	linux/i386/set_scno.c		\
-	linux/i386/syscallent.h		\
-	linux/i386/userent.h		\
-	linux/i386/userent0.h		\
-	linux/ia64/arch_getrval2.c	\
-	linux/ia64/arch_regs.c		\
-	linux/ia64/arch_regs.h		\
-	linux/ia64/arch_sigreturn.c	\
-	linux/ia64/get_error.c		\
-	linux/ia64/get_scno.c		\
-	linux/ia64/get_syscall_args.c	\
-	linux/ia64/ioctls_arch0.h	\
-	linux/ia64/ioctls_inc0.h	\
-	linux/ia64/set_error.c		\
-	linux/ia64/set_scno.c		\
-	linux/ia64/syscallent.h		\
-	linux/ia64/userent.h		\
-	linux/inet_diag.h		\
-	linux/m68k/arch_regs.c		\
-	linux/m68k/arch_regs.h		\
-	linux/m68k/arch_sigreturn.c	\
-	linux/m68k/get_error.c		\
-	linux/m68k/get_scno.c		\
-	linux/m68k/get_syscall_args.c	\
-	linux/m68k/ioctls_arch0.h	\
-	linux/m68k/ioctls_inc0.h	\
-	linux/m68k/set_error.c		\
-	linux/m68k/set_scno.c		\
-	linux/m68k/syscallent.h		\
-	linux/m68k/userent.h		\
-	linux/metag/arch_regs.c		\
-	linux/metag/get_error.c		\
-	linux/metag/get_scno.c		\
-	linux/metag/get_syscall_args.c	\
-	linux/metag/ioctls_arch0.h	\
-	linux/metag/ioctls_inc0.h	\
-	linux/metag/set_error.c		\
-	linux/metag/set_scno.c		\
-	linux/metag/syscallent.h	\
-	linux/microblaze/arch_regs.c	\
-	linux/microblaze/arch_sigreturn.c	\
-	linux/microblaze/get_error.c	\
-	linux/microblaze/get_scno.c	\
-	linux/microblaze/get_syscall_args.c	\
-	linux/microblaze/get_syscall_result.c	\
-	linux/microblaze/ioctls_arch0.h	\
-	linux/microblaze/ioctls_inc0.h	\
-	linux/microblaze/set_error.c	\
-	linux/microblaze/set_scno.c	\
-	linux/microblaze/syscallent.h	\
-	linux/microblaze/userent.h	\
-	linux/mips/arch_getrval2.c	\
-	linux/mips/arch_regs.c		\
-	linux/mips/arch_regs.h		\
-	linux/mips/arch_sigreturn.c	\
-	linux/mips/errnoent.h		\
-	linux/mips/genstub.sh		\
-	linux/mips/get_error.c		\
-	linux/mips/get_scno.c		\
-	linux/mips/get_syscall_args.c	\
-	linux/mips/ioctls_arch0.h	\
-	linux/mips/ioctls_inc0.h	\
-	linux/mips/set_error.c		\
-	linux/mips/set_scno.c		\
-	linux/mips/signalent.h		\
-	linux/mips/syscallent-compat.h	\
-	linux/mips/syscallent-n32.h	\
-	linux/mips/syscallent-n64.h	\
-	linux/mips/syscallent-o32.h	\
-	linux/mips/syscallent.h		\
-	linux/mips/userent.h		\
-	linux/mtd-abi.h			\
-	linux/netlink_diag.h		\
-	linux/nios2/arch_regs.c		\
-	linux/nios2/get_error.c		\
-	linux/nios2/get_scno.c		\
-	linux/nios2/get_syscall_args.c	\
-	linux/nios2/ioctls_arch0.h	\
-	linux/nios2/ioctls_inc0.h	\
-	linux/nios2/set_error.c		\
-	linux/nios2/set_scno.c		\
-	linux/nios2/syscallent.h	\
-	linux/or1k/arch_regs.c		\
-	linux/or1k/get_error.c		\
-	linux/or1k/get_scno.c		\
-	linux/or1k/get_syscall_args.c	\
-	linux/or1k/ioctls_arch0.h	\
-	linux/or1k/ioctls_inc0.h	\
-	linux/or1k/set_error.c		\
-	linux/or1k/set_scno.c		\
-	linux/or1k/syscallent.h		\
-	linux/or1k/userent.h		\
-	linux/personality.h		\
-	linux/powerpc/arch_regs.c	\
-	linux/powerpc/arch_regs.h	\
-	linux/powerpc/arch_sigreturn.c	\
-	linux/powerpc/errnoent.h	\
-	linux/powerpc/get_error.c	\
-	linux/powerpc/get_scno.c	\
-	linux/powerpc/get_syscall_args.c	\
-	linux/powerpc/getregs_old.c	\
-	linux/powerpc/getregs_old.h	\
-	linux/powerpc/ioctls_arch0.h	\
-	linux/powerpc/ioctls_inc0.h	\
-	linux/powerpc/set_error.c	\
-	linux/powerpc/set_scno.c	\
-	linux/powerpc/syscallent.h	\
-	linux/powerpc/userent.h		\
-	linux/powerpc64/arch_regs.c	\
-	linux/powerpc64/arch_regs.h	\
-	linux/powerpc64/arch_sigreturn.c	\
-	linux/powerpc64/errnoent.h	\
-	linux/powerpc64/errnoent1.h	\
-	linux/powerpc64/get_error.c	\
-	linux/powerpc64/get_scno.c	\
-	linux/powerpc64/get_syscall_args.c	\
-	linux/powerpc64/getregs_old.c	\
-	linux/powerpc64/getregs_old.h	\
-	linux/powerpc64/ioctls_arch0.h	\
-	linux/powerpc64/ioctls_arch1.h	\
-	linux/powerpc64/ioctls_inc0.h	\
-	linux/powerpc64/ioctls_inc1.h	\
-	linux/powerpc64/set_error.c	\
-	linux/powerpc64/set_scno.c	\
-	linux/powerpc64/signalent1.h	\
-	linux/powerpc64/syscallent.h	\
-	linux/powerpc64/syscallent1.h	\
-	linux/powerpc64/userent.h	\
-	linux/ptp_clock.h		\
-	linux/riscv/arch_regs.c		\
-	linux/riscv/errnoent1.h		\
-	linux/riscv/get_error.c		\
-	linux/riscv/get_scno.c		\
-	linux/riscv/get_syscall_args.c	\
-	linux/riscv/ioctls_arch0.h	\
-	linux/riscv/ioctls_arch1.h	\
-	linux/riscv/ioctls_inc0.h	\
-	linux/riscv/ioctls_inc1.h	\
-	linux/riscv/set_error.c		\
-	linux/riscv/set_scno.c		\
-	linux/riscv/signalent1.h	\
-	linux/riscv/syscallent.h	\
-	linux/riscv/syscallent1.h	\
-	linux/s390/arch_regs.c		\
-	linux/s390/arch_regs.h		\
-	linux/s390/arch_sigreturn.c	\
-	linux/s390/get_error.c		\
-	linux/s390/get_scno.c		\
-	linux/s390/get_syscall_args.c	\
-	linux/s390/ioctls_arch0.h	\
-	linux/s390/ioctls_inc0.h	\
-	linux/s390/set_error.c		\
-	linux/s390/set_scno.c		\
-	linux/s390/syscallent.h		\
-	linux/s390/userent.h		\
-	linux/s390/userent0.h		\
-	linux/s390/userent1.h		\
-	linux/s390x/arch_regs.c		\
-	linux/s390x/arch_regs.h		\
-	linux/s390x/arch_sigreturn.c	\
-	linux/s390x/get_error.c		\
-	linux/s390x/get_scno.c		\
-	linux/s390x/get_syscall_args.c	\
-	linux/s390x/ioctls_arch0.h	\
-	linux/s390x/ioctls_inc0.h	\
-	linux/s390x/set_error.c		\
-	linux/s390x/set_scno.c		\
-	linux/s390x/syscallent.h	\
-	linux/s390x/userent.h		\
-	linux/sh/arch_getrval2.c	\
-	linux/sh/arch_regs.c		\
-	linux/sh/get_error.c		\
-	linux/sh/get_scno.c		\
-	linux/sh/get_syscall_args.c	\
-	linux/sh/get_syscall_result.c	\
-	linux/sh/ioctls_arch0.h		\
-	linux/sh/ioctls_inc0.h		\
-	linux/sh/set_error.c		\
-	linux/sh/set_scno.c		\
-	linux/sh/syscallent.h		\
-	linux/sh/userent.h		\
-	linux/sh/userent0.h		\
-	linux/sh64/arch_regs.c		\
-	linux/sh64/arch_regs.h		\
-	linux/sh64/get_error.c		\
-	linux/sh64/get_scno.c		\
-	linux/sh64/get_syscall_args.c	\
-	linux/sh64/get_syscall_result.c	\
-	linux/sh64/ioctls_arch0.h	\
-	linux/sh64/ioctls_inc0.h	\
-	linux/sh64/set_error.c		\
-	linux/sh64/set_scno.c		\
-	linux/sh64/syscallent.h		\
-	linux/sh64/userent.h		\
-	linux/signalent.h		\
-	linux/sock_diag.h		\
-	linux/sparc/arch_getrval2.c	\
-	linux/sparc/arch_regs.c		\
-	linux/sparc/arch_regs.h		\
-	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	\
-	linux/sparc/ioctls_arch0.h	\
-	linux/sparc/ioctls_inc0.h	\
-	linux/sparc/set_error.c		\
-	linux/sparc/set_scno.c		\
-	linux/sparc/signalent.h		\
-	linux/sparc/syscallent.h	\
-	linux/sparc/userent.h		\
-	linux/sparc64/arch_getrval2.c	\
-	linux/sparc64/arch_regs.c	\
-	linux/sparc64/arch_regs.h	\
-	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/ioctls_arch0.h	\
-	linux/sparc64/ioctls_arch1.h	\
-	linux/sparc64/ioctls_inc0.h	\
-	linux/sparc64/ioctls_inc1.h	\
-	linux/sparc64/set_error.c	\
-	linux/sparc64/set_scno.c	\
-	linux/sparc64/signalent.h	\
-	linux/sparc64/signalent1.h	\
-	linux/sparc64/syscallent.h	\
-	linux/sparc64/syscallent1.h	\
-	linux/sparc64/userent.h		\
-	linux/subcall.h			\
-	linux/syscall.h			\
-	linux/tile/arch_regs.c		\
-	linux/tile/arch_regs.h		\
-	linux/tile/arch_sigreturn.c	\
-	linux/tile/errnoent1.h		\
-	linux/tile/get_error.c		\
-	linux/tile/get_scno.c		\
-	linux/tile/get_syscall_args.c	\
-	linux/tile/ioctls_arch0.h	\
-	linux/tile/ioctls_arch1.h	\
-	linux/tile/ioctls_inc0.h	\
-	linux/tile/ioctls_inc1.h	\
-	linux/tile/set_error.c		\
-	linux/tile/set_scno.c		\
-	linux/tile/signalent1.h		\
-	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_regs.c		\
-	linux/x32/arch_regs.h		\
-	linux/x32/arch_sigreturn.c	\
-	linux/x32/errnoent1.h		\
-	linux/x32/get_error.c		\
-	linux/x32/get_scno.c		\
-	linux/x32/get_syscall_args.c	\
-	linux/x32/ioctls_arch0.h	\
-	linux/x32/ioctls_arch1.h	\
-	linux/x32/ioctls_inc0.h		\
-	linux/x32/ioctls_inc1.h		\
-	linux/x32/set_error.c		\
-	linux/x32/set_scno.c		\
-	linux/x32/signalent1.h		\
-	linux/x32/syscallent.h		\
-	linux/x32/syscallent1.h		\
-	linux/x32/userent.h		\
-	linux/x86_64/arch_regs.c	\
-	linux/x86_64/arch_regs.h	\
-	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	\
-	linux/x86_64/getregs_old.c	\
-	linux/x86_64/getregs_old.h	\
-	linux/x86_64/ioctls_arch0.h	\
-	linux/x86_64/ioctls_arch1.h	\
-	linux/x86_64/ioctls_arch2.h	\
-	linux/x86_64/ioctls_inc0.h	\
-	linux/x86_64/ioctls_inc1.h	\
-	linux/x86_64/ioctls_inc2.h	\
-	linux/x86_64/set_error.c	\
-	linux/x86_64/set_scno.c		\
-	linux/x86_64/signalent1.h	\
-	linux/x86_64/signalent2.h	\
-	linux/x86_64/syscallent.h	\
-	linux/x86_64/syscallent1.h	\
-	linux/x86_64/syscallent2.h	\
-	linux/x86_64/userent.h		\
-	linux/xtensa/arch_regs.c	\
-	linux/xtensa/get_error.c	\
-	linux/xtensa/get_scno.c		\
-	linux/xtensa/get_syscall_args.c	\
-	linux/xtensa/get_syscall_result.c	\
-	linux/xtensa/ioctls_arch0.h	\
-	linux/xtensa/ioctls_inc0.h	\
-	linux/xtensa/set_error.c	\
-	linux/xtensa/set_scno.c		\
-	linux/xtensa/syscallent.h	\
-	linux/xtensa/userent.h		\
-	maint/ioctls_gen.sh		\
-	maint/ioctls_hex.sh		\
-	maint/ioctls_sym.sh		\
-	maint/print_ioctlent.c		\
-	mpers.awk			\
-	mpers.sh			\
-	mpers_test.sh			\
-	mpers_xlat.h			\
-	scno.head			\
-	signalent.sh			\
-	strace-graph			\
-	strace-log-merge		\
-	strace.spec			\
-	syscallent.sh			\
-	$(XLAT_INPUT_FILES)		\
-	$(XLAT_HEADER_FILES)		\
-	xlat/gen.sh			\
-	xlate.el
-
-.PHONY: check-valgrind-local
-check-valgrind-local:
-
-.PHONY: srpm
-srpm: dist-xz
-	rpmbuild --define '%_srcrpmdir .' -ts $(distdir).tar.xz
-
-$(srcdir)/.version:
-	$(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
-
-strace_SOURCES_c = \
-	$(filter %.c,$(strace_SOURCES)) $(filter %.c,$(libstrace_a_SOURCES))
-
-sys_func.h: $(patsubst %,$(srcdir)/%,$(strace_SOURCES_c))
-	for f in $^; do \
-		sed -n 's/^SYS_FUNC(.*/extern &;/p' $$f; \
-	done | sort -u > $@
-
-syscallent_names = subcall.h syscallent.h syscallent1.h \
-		   syscallent-n32.h syscallent-n64.h syscallent-o32.h
-syscallent_patterns = $(patsubst %,\%/%,$(syscallent_names))
-syscallent_files = $(filter $(syscallent_patterns),$(EXTRA_DIST))
-
-sen.h: $(patsubst %,$(srcdir)/%,$(syscallent_files))
-	for f in $^; do cat -- $$f; done | \
-		$(srcdir)/generate_sen.sh > $@
-
-dist-hook:
-	$(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version
-
-today = $(shell date +%Y-%m-%d)
-version_regexp = $(subst .,\.,$(VERSION))
-news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))'
-
-news-check: NEWS
-	$(AM_V_GEN)if head -1 $< |				\
-	  grep -x $(news_check_regexp) >/dev/null; then		\
-		:;						\
-	else							\
-		echo >&2 '$<: check failed';			\
-		exit 1;						\
-	fi
-
-ioctlsort_CC = $(CC_FOR_BUILD)
-ioctlsort_DEFS = $(DEFS)
-ioctlsort_INCLUDES = $(DEFAULT_INCLUDES) $(INCLUDES)
-ioctlsort_CPPFLAGS = $(AM_CPPFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD)
-ioctlsort_CFLAGS = $(AM_CFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD)
-ioctlsort_LDFLAGS = $(AM_LDFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD)
-
-ioctls_inc_h = $(wildcard $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h)
-ioctlent_h = $(patsubst $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%,ioctlent%,$(ioctls_inc_h))
-ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h)))
-
-ioctl_redefs%.h: ioctlent%.h ioctlent0.h
-	sort $< > $<-t
-	sort ioctlent0.h | comm -23 $<-t - | \
-		sed -r -n 's/^\{ "([^"]+)", (0x[[:xdigit:]]+) \},$$/#ifdef \1\n# undef \1\n# define \1 \2\n#endif/p' \
-		> $@-t
-	rm -f $<-t
-	mv $@-t $@
-
-ioctlent%.h: ioctlsort%
-	./$< > $@
-
-# Need to pick up <linux/ioctl.h> definitions *for host* while compiling
-# ioctlsort *for build*, hence this magic.
-ioctl_iocdef.i: $(srcdir)/ioctl_iocdef.c
-	$(CPP) -P $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-		$(strace_CPPFLAGS) $(CPPFLAGS) $< -o $@
-
-ioctl_iocdef.h: ioctl_iocdef.i
-	sed -n 's/^DEFINE HOST/#define /p' $< > $@
-
-ioctlsort%$(BUILD_EXEEXT): ioctlsort%.o
-	$(ioctlsort_CC) $(ioctlsort_CFLAGS) $(ioctlsort_LDFLAGS) $< -o $@
-
-ioctlsort%.o: ioctls_all%.h ioctl_iocdef.h $(srcdir)/ioctlsort.c
-	$(ioctlsort_CC) $(ioctlsort_DEFS) $(ioctlsort_INCLUDES) $(ioctlsort_CPPFLAGS) $(ioctlsort_CFLAGS) -DIOCTLSORT_INC=\"$<\" -c -o $@ $(srcdir)/ioctlsort.c
-
-ioctls_all%.h: $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%.h $(srcdir)/$(OS)/$(ARCH)/ioctls_arch%.h
-	cat $^ > $@
-
-BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) \
-		native_printer_decls.h native_printer_defs.h printers.h sen.h sys_func.h .version
-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
-DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h
-
-include scno.am
-
-$(strace_OBJECTS): scno.h
-
-# defines mpers_source_files
-include mpers.am
-srcdir_mpers_source_files = $(patsubst %,$(srcdir)/%,$(mpers_source_files))
-mpers_preproc_files = $(mpers_source_files:.c=.c.mpers.i)
-
-mpers_NAME =
-mpers_PREFIX = $(mpers_NAME)_
-mpers_DEFS = $(DEFS)
-mpers_INCLUDES = $(DEFAULT_INCLUDES) $(INCLUDES)
-mpers_CPPFLAGS = $(strace_CPPFLAGS) $(CPPFLAGS)
-mpers_sh_opts = $(mpers_DEFS) $(mpers_INCLUDES) $(mpers_CPPFLAGS)
-libmpers_CPPFLAGS = $(strace_CPPFLAGS) -DIN_MPERS
-libmpers_CFLAGS = $(strace_CFLAGS)
-
-# mpers targets
-
-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; \
-	done
-	> $@
-
-m%_type_defs.h: $(srcdir_mpers_source_files)
-	for f in $^; do \
-		sed -r -n 's/^#[[:space:]]*include DEF_MPERS_TYPE\(([^)]+)\)/#ifdef MPERS_$(mpers_PREFIX)\1\n# define \1 MPERS_$(mpers_PREFIX)\1\n#endif/p' $$f || exit; \
-	done > $@-t
-	echo '#undef MPERS_PRINTER_NAME' >> $@-t
-	echo '#define MPERS_PRINTER_NAME(printer_name) printer_name' >> $@-t
-	echo '#include "$(mpers_PREFIX)printer_decls.h"' >> $@-t
-	echo '#include MPERS_$(mpers_PREFIX)IOCTL_MACROS' >> $@-t
-	mv $@-t $@
-
-m%_funcs.h: $(srcdir_mpers_source_files)
-	for f in $^; do \
-		sed -r -n 's/^SYS_FUNC\(([^)]+)\)/#undef sys_\1\n#define sys_\1 $(mpers_PREFIX)sys_\1/p' $$f || exit; \
-	done > $@-t && \
-	echo '#include "sys_func.h"' >> $@-t
-	mv $@-t $@
-
-# printers
-
-%.c.mpers.i: $(srcdir)/%.c
-	$(CPP) -P $(mpers_sh_opts) -DIN_MPERS_BOOTSTRAP $< -o $@
-
-mpers_printer_decl_pattern = ^MPERS_PRINTER_DECL\(([^,)]+),[[:space:]]*([^,)]+),[[:space:]]*([^)]+)\)$$
-
-printers.h: $(mpers_preproc_files)
-	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
-	echo 'typedef struct {' >> $@-t
-	for f in $^; do \
-		sed -r -n 's/$(mpers_printer_decl_pattern)/ \1 (*\2)(\3);\n#define \2 MPERS_PRINTER_NAME(\2)\n/p' $$f \
-		|| exit; \
-	done >> $@-t
-	echo '} struct_printers;' >> $@-t
-	echo 'extern const struct_printers *printers;' >> $@-t
-	echo '#define MPERS_PRINTER_NAME(printer_name) printers->printer_name' >> $@-t
-	mv $@-t $@
-
-%_printer_decls.h: $(mpers_preproc_files)
-	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
-	for f in $^; do \
-		sed -r -n 's/$(mpers_printer_decl_pattern)/extern \1 $(mpers_PREFIX)\2(\3);/p' $$f \
-		|| exit; \
-	done >> $@-t
-	mv $@-t $@
-
-%_printer_defs.h: $(mpers_preproc_files)
-	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
-	for f in $^; do \
-		sed -r -n 's/$(mpers_printer_decl_pattern)/.\2 = $(mpers_PREFIX)\2,/p' $$f \
-		|| exit; \
-	done >> $@-t
-	mv $@-t $@
-
-native_printer_decls.h native_printer_defs.h: mpers_PREFIX =
-
-if HAVE_M32_MPERS
-
-strace_LDADD += libmpers-m32.a
-noinst_LIBRARIES += libmpers-m32.a
-libmpers_m32_a_SOURCES = $(mpers_source_files)
-libmpers_m32_a_CPPFLAGS = $(libmpers_CPPFLAGS) -DMPERS_IS_m32 -I$(builddir)/mpers-m32
-libmpers_m32_a_CFLAGS = $(libmpers_CFLAGS)
-mpers_m32_targets = mpers-m32.stamp m32_type_defs.h m32_funcs.h m32_printer_decls.h m32_printer_defs.h
-
-BUILT_SOURCES += $(mpers_m32_targets)
-CLEANFILES    += $(mpers_m32_targets)
-
-$(mpers_m32_targets): mpers_NAME = m32
-
-endif # HAVE_M32_MPERS
-
-if HAVE_MX32_MPERS
-
-strace_LDADD += libmpers-mx32.a
-noinst_LIBRARIES += libmpers-mx32.a
-libmpers_mx32_a_SOURCES = $(mpers_source_files)
-libmpers_mx32_a_CPPFLAGS = $(libmpers_CPPFLAGS) -DMPERS_IS_mx32 -I$(builddir)/mpers-mx32
-libmpers_mx32_a_CFLAGS = $(libmpers_CFLAGS)
-mpers_mx32_targets = mpers-mx32.stamp mx32_type_defs.h mx32_funcs.h mx32_printer_decls.h mx32_printer_defs.h
-
-BUILT_SOURCES += $(mpers_mx32_targets)
-CLEANFILES    += $(mpers_mx32_targets)
-
-$(mpers_mx32_targets): mpers_NAME = mx32
-
-endif # HAVE_MX32_MPERS
-
-clean-local:
-	-rm -rf mpers-m32 mpers-mx32
-
-if MAINTAINER_MODE
-
-gen_changelog_start_date = 2009-07-08 20:00
-$(srcdir)/ChangeLog: $(srcdir)/gitlog-to-changelog $(srcdir)/Makefile.in \
-		     $(srcdir)/.version
-	@rm -f $@.new
-	(cd $(srcdir); \
-	 ./gitlog-to-changelog --append-dot \
-	   --since='$(gen_changelog_start_date)'; \
-	 echo; echo; echo 'See ChangeLog-CVS for older changes.' \
-	) > $@.new
-	chmod 444 $@.new
-	mv -f $@.new $@
-
-$(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \
-		   $(srcdir)/Makefile.in $(srcdir)/.version
-	$(AM_V_GEN)							\
-	(								\
-	  cd $(srcdir);							\
-	  sed '/^##/,$$d' CREDITS.in;					\
-	  { sed -n '1,/^##>/d; s/   */\t/; s/^./&/p' CREDITS.in;	\
-	    git log --pretty=format:'%aN	%aE';			\
-	  } | LC_ALL=C sort -u						\
-	    | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}';		\
-	) > $@-t && mv $@-t $@
-
-export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX
-
-endif
diff --git a/Makefile.in b/Makefile.in
index d0a31ad..ee3dbe3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -20,6 +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.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -190,8 +191,9 @@
 	fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c \
 	mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
 	print_sigevent.c print_time.c print_timespec.c print_timeval.c \
-	print_timex.c printrusage.c printsiginfo.c rtc.c sg_io_v3.c \
-	sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c
+	print_timex.c printrusage.c printsiginfo.c rt_sigreturn.c \
+	rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c \
+	ustat.c utime.c v4l2.c
 am__objects_1 = libmpers_m32_a-block.$(OBJEXT) \
 	libmpers_m32_a-btrfs.$(OBJEXT) libmpers_m32_a-dirent.$(OBJEXT) \
 	libmpers_m32_a-evdev.$(OBJEXT) \
@@ -216,6 +218,7 @@
 	libmpers_m32_a-print_timex.$(OBJEXT) \
 	libmpers_m32_a-printrusage.$(OBJEXT) \
 	libmpers_m32_a-printsiginfo.$(OBJEXT) \
+	libmpers_m32_a-rt_sigreturn.$(OBJEXT) \
 	libmpers_m32_a-rtc.$(OBJEXT) libmpers_m32_a-sg_io_v3.$(OBJEXT) \
 	libmpers_m32_a-sigaltstack.$(OBJEXT) \
 	libmpers_m32_a-sock.$(OBJEXT) libmpers_m32_a-sysinfo.$(OBJEXT) \
@@ -232,8 +235,9 @@
 	fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c \
 	mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
 	print_sigevent.c print_time.c print_timespec.c print_timeval.c \
-	print_timex.c printrusage.c printsiginfo.c rtc.c sg_io_v3.c \
-	sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c
+	print_timex.c printrusage.c printsiginfo.c rt_sigreturn.c \
+	rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c \
+	ustat.c utime.c v4l2.c
 am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
 	libmpers_mx32_a-btrfs.$(OBJEXT) \
 	libmpers_mx32_a-dirent.$(OBJEXT) \
@@ -259,6 +263,7 @@
 	libmpers_mx32_a-print_timex.$(OBJEXT) \
 	libmpers_mx32_a-printrusage.$(OBJEXT) \
 	libmpers_mx32_a-printsiginfo.$(OBJEXT) \
+	libmpers_mx32_a-rt_sigreturn.$(OBJEXT) \
 	libmpers_mx32_a-rtc.$(OBJEXT) \
 	libmpers_mx32_a-sg_io_v3.$(OBJEXT) \
 	libmpers_mx32_a-sigaltstack.$(OBJEXT) \
@@ -273,6 +278,7 @@
 libstrace_a_LIBADD =
 am_libstrace_a_OBJECTS = libstrace_a-fstatfs.$(OBJEXT) \
 	libstrace_a-fstatfs64.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
+	libstrace_a-sigreturn.$(OBJEXT) \
 	libstrace_a-socketcall.$(OBJEXT) libstrace_a-statfs.$(OBJEXT) \
 	libstrace_a-statfs64.$(OBJEXT) \
 	libstrace_a-sync_file_range.$(OBJEXT) \
@@ -299,23 +305,25 @@
 	linux/x32/asm_stat.h linux/x86_64/asm_stat.h lookup_dcookie.c \
 	loop.c lseek.c 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 net.c netlink.c nsig.h numa.c 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_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 qualify.c quota.c \
-	readahead.c readlink.c reboot.c regs.h renameat.c resource.c \
-	rtc.c sched.c scsi.c seccomp.c seccomp_fprog.h sendfile.c \
-	sg_io_v3.c sg_io_v4.c sigaltstack.c sigevent.h signal.c \
-	signalfd.c sigreturn.c sock.c sockaddr.c socketutils.c \
-	sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h strace.c \
-	swapon.c syscall.c sysctl.c sysent.h sysinfo.c syslog.c \
-	sysmips.c term.c time.c times.c truncate.c ubi.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.h xmalloc.c unwind.c
+	native_defs.h net.c netlink.c nsfs.c nsfs.h nsig.h numa.c \
+	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_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 qualify.c quota.c readahead.c readlink.c reboot.c \
+	regs.h renameat.c resource.c rt_sigframe.c rt_sigreturn.c \
+	rtc.c sched.c sched_attr.h scsi.c seccomp.c seccomp_fprog.h \
+	sendfile.c sg_io_v3.c sg_io_v4.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 swapon.c syscall.c sysctl.c sysent.h \
+	sysinfo.c syslog.c sysmips.c term.c time.c times.c truncate.c \
+	ubi.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.h \
+	xmalloc.c 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) \
@@ -358,13 +366,14 @@
 	strace-mmsghdr.$(OBJEXT) strace-mount.$(OBJEXT) \
 	strace-mq.$(OBJEXT) strace-msghdr.$(OBJEXT) \
 	strace-mtd.$(OBJEXT) strace-net.$(OBJEXT) \
-	strace-netlink.$(OBJEXT) strace-numa.$(OBJEXT) \
-	strace-oldstat.$(OBJEXT) strace-open.$(OBJEXT) \
-	strace-or1k_atomic.$(OBJEXT) strace-pathtrace.$(OBJEXT) \
-	strace-perf.$(OBJEXT) strace-personality.$(OBJEXT) \
-	strace-pkeys.$(OBJEXT) strace-poll.$(OBJEXT) \
-	strace-prctl.$(OBJEXT) strace-print_dev_t.$(OBJEXT) \
-	strace-print_mq_attr.$(OBJEXT) strace-print_msgbuf.$(OBJEXT) \
+	strace-netlink.$(OBJEXT) strace-nsfs.$(OBJEXT) \
+	strace-numa.$(OBJEXT) strace-oldstat.$(OBJEXT) \
+	strace-open.$(OBJEXT) strace-or1k_atomic.$(OBJEXT) \
+	strace-pathtrace.$(OBJEXT) strace-perf.$(OBJEXT) \
+	strace-personality.$(OBJEXT) strace-pkeys.$(OBJEXT) \
+	strace-poll.$(OBJEXT) strace-prctl.$(OBJEXT) \
+	strace-print_dev_t.$(OBJEXT) strace-print_mq_attr.$(OBJEXT) \
+	strace-print_msgbuf.$(OBJEXT) \
 	strace-print_sg_req_info.$(OBJEXT) \
 	strace-print_sigevent.$(OBJEXT) strace-print_statfs.$(OBJEXT) \
 	strace-print_struct_stat.$(OBJEXT) strace-print_time.$(OBJEXT) \
@@ -376,15 +385,16 @@
 	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-sched.$(OBJEXT) \
 	strace-scsi.$(OBJEXT) strace-seccomp.$(OBJEXT) \
 	strace-sendfile.$(OBJEXT) strace-sg_io_v3.$(OBJEXT) \
 	strace-sg_io_v4.$(OBJEXT) strace-sigaltstack.$(OBJEXT) \
 	strace-signal.$(OBJEXT) strace-signalfd.$(OBJEXT) \
-	strace-sigreturn.$(OBJEXT) strace-sock.$(OBJEXT) \
-	strace-sockaddr.$(OBJEXT) strace-socketutils.$(OBJEXT) \
-	strace-sram_alloc.$(OBJEXT) strace-stat.$(OBJEXT) \
-	strace-stat64.$(OBJEXT) strace-statfs.$(OBJEXT) \
+	strace-sock.$(OBJEXT) strace-sockaddr.$(OBJEXT) \
+	strace-socketutils.$(OBJEXT) strace-sram_alloc.$(OBJEXT) \
+	strace-stat.$(OBJEXT) strace-stat64.$(OBJEXT) \
+	strace-statfs.$(OBJEXT) strace-statx.$(OBJEXT) \
 	strace-strace.$(OBJEXT) strace-swapon.$(OBJEXT) \
 	strace-syscall.$(OBJEXT) strace-sysctl.$(OBJEXT) \
 	strace-sysinfo.$(OBJEXT) strace-syslog.$(OBJEXT) \
@@ -579,6 +589,7 @@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
 CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
 CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
@@ -714,14 +725,15 @@
 
 AM_CFLAGS_FOR_BUILD = $(WARN_CFLAGS_FOR_BUILD)
 AM_CPPFLAGS_FOR_BUILD = $(AM_CPPFLAGS)
-XLAT_INPUT_FILES = xlat/access_flags.in xlat/aclipc.in \
-	xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in \
+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/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_type.in xlat/bpf_class.in \
-	xlat/bpf_commands.in xlat/bpf_map_types.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_types.in \
 	xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in \
 	xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in \
 	xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in \
@@ -790,9 +802,9 @@
 	xlat/netlink_protocols.in xlat/netlink_types.in \
 	xlat/notifyflags.in xlat/nt_descriptor_types.in \
 	xlat/open_access_modes.in xlat/open_mode_flags.in \
-	xlat/openmodessol.in xlat/packet_mreq_type.in \
-	xlat/perf_attr_size.in xlat/perf_branch_sample_type.in \
-	xlat/perf_event_open_flags.in xlat/perf_event_read_format.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 \
@@ -832,8 +844,9 @@
 	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/swap_flags.in xlat/sync_file_range_flags.in \
-	xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.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 \
@@ -854,22 +867,25 @@
 	xlat/v4l2_format_description_flags.in \
 	xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in \
 	xlat/v4l2_input_types.in xlat/v4l2_memories.in \
-	xlat/v4l2_streaming_capabilities.in xlat/wait4_options.in \
+	xlat/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/xfs_dqblk_flags.in xlat/xfs_quota_flags.in
-XLAT_HEADER_FILES = xlat/access_flags.h xlat/aclipc.h xlat/addrfams.h \
+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/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_type.h xlat/bpf_class.h \
-	xlat/bpf_commands.h xlat/bpf_map_types.h \
-	xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h \
-	xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h \
-	xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h \
-	xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h \
-	xlat/bsg_subprotocol.h xlat/bt_protocols.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_types.h xlat/bpf_map_update_elem_flags.h \
+	xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h \
+	xlat/bpf_op_jmp.h xlat/bpf_prog_types.h xlat/bpf_rval.h \
+	xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_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 \
@@ -928,12 +944,12 @@
 	xlat/netlink_protocols.h xlat/netlink_types.h \
 	xlat/notifyflags.h xlat/nt_descriptor_types.h \
 	xlat/open_access_modes.h xlat/open_mode_flags.h \
-	xlat/openmodessol.h xlat/packet_mreq_type.h \
-	xlat/perf_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/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 \
@@ -965,7 +981,8 @@
 	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/swap_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 \
@@ -987,9 +1004,12 @@
 	xlat/v4l2_format_description_flags.h \
 	xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h \
 	xlat/v4l2_input_types.h xlat/v4l2_memories.h \
-	xlat/v4l2_streaming_capabilities.h xlat/wait4_options.h \
-	xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h \
-	xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
+	xlat/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/xfs_dqblk_flags.h \
+	xlat/xfs_quota_flags.h
 strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_2) \
 	$(CODE_COVERAGE_CPPFLAGS)
 strace_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
@@ -1003,6 +1023,7 @@
 	fstatfs.c \
 	fstatfs64.c \
 	ipc.c \
+	sigreturn.c	\
 	socketcall.c \
 	statfs.c \
 	statfs64.c \
@@ -1029,24 +1050,25 @@
 	linux/x32/asm_stat.h linux/x86_64/asm_stat.h lookup_dcookie.c \
 	loop.c lseek.c 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 net.c netlink.c nsig.h numa.c 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_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 qualify.c quota.c \
-	readahead.c readlink.c reboot.c regs.h renameat.c resource.c \
-	rtc.c sched.c scsi.c seccomp.c seccomp_fprog.h sendfile.c \
-	sg_io_v3.c sg_io_v4.c sigaltstack.c sigevent.h signal.c \
-	signalfd.c sigreturn.c sock.c sockaddr.c socketutils.c \
-	sram_alloc.c stat.c stat.h stat64.c statfs.c statfs.h strace.c \
-	swapon.c syscall.c sysctl.c sysent.h sysinfo.c syslog.c \
-	sysmips.c term.c time.c times.c truncate.c ubi.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.h xmalloc.c \
-	$(am__append_1)
+	native_defs.h net.c netlink.c nsfs.c nsfs.h nsig.h numa.c \
+	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_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 qualify.c quota.c readahead.c readlink.c reboot.c \
+	regs.h renameat.c resource.c rt_sigframe.c rt_sigreturn.c \
+	rtc.c sched.c sched_attr.h scsi.c seccomp.c seccomp_fprog.h \
+	sendfile.c sg_io_v3.c sg_io_v4.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 swapon.c syscall.c sysctl.c sysent.h \
+	sysinfo.c syslog.c sysmips.c term.c time.c times.c truncate.c \
+	ubi.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.h \
+	xmalloc.c $(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 .)
@@ -1077,7 +1099,6 @@
 	debian/strace64.install		\
 	debian/strace64.manpages	\
 	debian/watch			\
-	errnoent.sh			\
 	generate_sen.sh			\
 	ioctl_iocdef.c			\
 	ioctlsort.c			\
@@ -1090,6 +1111,7 @@
 	linux/64/syscallent.h		\
 	linux/aarch64/arch_regs.c	\
 	linux/aarch64/arch_regs.h	\
+	linux/aarch64/arch_rt_sigframe.c\
 	linux/aarch64/arch_sigreturn.c	\
 	linux/aarch64/errnoent1.h	\
 	linux/aarch64/get_error.c	\
@@ -1107,6 +1129,7 @@
 	linux/alpha/arch_getrval2.c	\
 	linux/alpha/arch_regs.c		\
 	linux/alpha/arch_regs.h		\
+	linux/alpha/arch_rt_sigframe.c	\
 	linux/alpha/arch_sigreturn.c	\
 	linux/alpha/errnoent.h		\
 	linux/alpha/get_error.c		\
@@ -1121,6 +1144,8 @@
 	linux/alpha/syscallent.h	\
 	linux/alpha/userent.h		\
 	linux/arc/arch_regs.c		\
+	linux/arc/arch_regs.h		\
+	linux/arc/arch_rt_sigframe.c	\
 	linux/arc/get_error.c		\
 	linux/arc/get_scno.c		\
 	linux/arc/get_syscall_args.c	\
@@ -1133,6 +1158,7 @@
 	linux/arch_sigreturn.c		\
 	linux/arm/arch_regs.c		\
 	linux/arm/arch_regs.h		\
+	linux/arm/arch_rt_sigframe.c	\
 	linux/arm/arch_sigreturn.c	\
 	linux/arm/get_error.c		\
 	linux/arm/get_scno.c		\
@@ -1144,6 +1170,8 @@
 	linux/arm/syscallent.h		\
 	linux/arm/userent.h		\
 	linux/avr32/arch_regs.c		\
+	linux/avr32/arch_regs.h		\
+	linux/avr32/arch_rt_sigframe.c	\
 	linux/avr32/get_error.c		\
 	linux/avr32/get_scno.c		\
 	linux/avr32/get_syscall_args.c	\
@@ -1154,32 +1182,38 @@
 	linux/avr32/syscallent.h	\
 	linux/avr32/userent.h		\
 	linux/bfin/arch_regs.c		\
+	linux/bfin/arch_rt_sigframe.c	\
 	linux/bfin/get_error.c		\
 	linux/bfin/get_scno.c		\
 	linux/bfin/get_syscall_args.c	\
 	linux/bfin/get_syscall_result.c	\
 	linux/bfin/ioctls_arch0.h	\
 	linux/bfin/ioctls_inc0.h	\
+	linux/bfin/rt_sigframe.h	\
 	linux/bfin/set_error.c		\
 	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	\
@@ -1189,6 +1223,7 @@
 	linux/getregs_old.h		\
 	linux/hppa/arch_regs.c		\
 	linux/hppa/arch_regs.h		\
+	linux/hppa/arch_rt_sigframe.c	\
 	linux/hppa/errnoent.h		\
 	linux/hppa/get_error.c		\
 	linux/hppa/get_scno.c		\
@@ -1196,18 +1231,21 @@
 	linux/hppa/get_syscall_result.c	\
 	linux/hppa/ioctls_arch0.h	\
 	linux/hppa/ioctls_inc0.h	\
+	linux/hppa/rt_sigframe.h	\
 	linux/hppa/set_error.c		\
 	linux/hppa/set_scno.c		\
 	linux/hppa/signalent.h		\
 	linux/hppa/syscallent.h		\
 	linux/i386/arch_regs.c		\
 	linux/i386/arch_regs.h		\
+	linux/i386/arch_rt_sigframe.c	\
 	linux/i386/arch_sigreturn.c	\
 	linux/i386/get_error.c		\
 	linux/i386/get_scno.c		\
 	linux/i386/get_syscall_args.c	\
 	linux/i386/ioctls_arch0.h	\
 	linux/i386/ioctls_inc0.h	\
+	linux/i386/rt_sigframe.h	\
 	linux/i386/set_error.c		\
 	linux/i386/set_scno.c		\
 	linux/i386/syscallent.h		\
@@ -1216,12 +1254,13 @@
 	linux/ia64/arch_getrval2.c	\
 	linux/ia64/arch_regs.c		\
 	linux/ia64/arch_regs.h		\
-	linux/ia64/arch_sigreturn.c	\
+	linux/ia64/arch_rt_sigframe.c	\
 	linux/ia64/get_error.c		\
 	linux/ia64/get_scno.c		\
 	linux/ia64/get_syscall_args.c	\
 	linux/ia64/ioctls_arch0.h	\
 	linux/ia64/ioctls_inc0.h	\
+	linux/ia64/rt_sigframe.h	\
 	linux/ia64/set_error.c		\
 	linux/ia64/set_scno.c		\
 	linux/ia64/syscallent.h		\
@@ -1229,17 +1268,21 @@
 	linux/inet_diag.h		\
 	linux/m68k/arch_regs.c		\
 	linux/m68k/arch_regs.h		\
+	linux/m68k/arch_rt_sigframe.c	\
 	linux/m68k/arch_sigreturn.c	\
 	linux/m68k/get_error.c		\
 	linux/m68k/get_scno.c		\
 	linux/m68k/get_syscall_args.c	\
 	linux/m68k/ioctls_arch0.h	\
 	linux/m68k/ioctls_inc0.h	\
+	linux/m68k/rt_sigframe.h	\
 	linux/m68k/set_error.c		\
 	linux/m68k/set_scno.c		\
 	linux/m68k/syscallent.h		\
 	linux/m68k/userent.h		\
 	linux/metag/arch_regs.c		\
+	linux/metag/arch_regs.h		\
+	linux/metag/arch_rt_sigframe.c	\
 	linux/metag/get_error.c		\
 	linux/metag/get_scno.c		\
 	linux/metag/get_syscall_args.c	\
@@ -1249,6 +1292,7 @@
 	linux/metag/set_scno.c		\
 	linux/metag/syscallent.h	\
 	linux/microblaze/arch_regs.c	\
+	linux/microblaze/arch_rt_sigframe.c\
 	linux/microblaze/arch_sigreturn.c	\
 	linux/microblaze/get_error.c	\
 	linux/microblaze/get_scno.c	\
@@ -1263,6 +1307,7 @@
 	linux/mips/arch_getrval2.c	\
 	linux/mips/arch_regs.c		\
 	linux/mips/arch_regs.h		\
+	linux/mips/arch_rt_sigframe.c	\
 	linux/mips/arch_sigreturn.c	\
 	linux/mips/errnoent.h		\
 	linux/mips/genstub.sh		\
@@ -1271,6 +1316,7 @@
 	linux/mips/get_syscall_args.c	\
 	linux/mips/ioctls_arch0.h	\
 	linux/mips/ioctls_inc0.h	\
+	linux/mips/rt_sigframe.h	\
 	linux/mips/set_error.c		\
 	linux/mips/set_scno.c		\
 	linux/mips/signalent.h		\
@@ -1283,6 +1329,8 @@
 	linux/mtd-abi.h			\
 	linux/netlink_diag.h		\
 	linux/nios2/arch_regs.c		\
+	linux/nios2/arch_regs.h		\
+	linux/nios2/arch_rt_sigframe.c	\
 	linux/nios2/get_error.c		\
 	linux/nios2/get_scno.c		\
 	linux/nios2/get_syscall_args.c	\
@@ -1292,6 +1340,8 @@
 	linux/nios2/set_scno.c		\
 	linux/nios2/syscallent.h	\
 	linux/or1k/arch_regs.c		\
+	linux/or1k/arch_regs.h		\
+	linux/or1k/arch_rt_sigframe.c	\
 	linux/or1k/get_error.c		\
 	linux/or1k/get_scno.c		\
 	linux/or1k/get_syscall_args.c	\
@@ -1304,6 +1354,7 @@
 	linux/personality.h		\
 	linux/powerpc/arch_regs.c	\
 	linux/powerpc/arch_regs.h	\
+	linux/powerpc/arch_rt_sigframe.c\
 	linux/powerpc/arch_sigreturn.c	\
 	linux/powerpc/errnoent.h	\
 	linux/powerpc/get_error.c	\
@@ -1319,6 +1370,7 @@
 	linux/powerpc/userent.h		\
 	linux/powerpc64/arch_regs.c	\
 	linux/powerpc64/arch_regs.h	\
+	linux/powerpc64/arch_rt_sigframe.c\
 	linux/powerpc64/arch_sigreturn.c	\
 	linux/powerpc64/errnoent.h	\
 	linux/powerpc64/errnoent1.h	\
@@ -1331,6 +1383,7 @@
 	linux/powerpc64/ioctls_arch1.h	\
 	linux/powerpc64/ioctls_inc0.h	\
 	linux/powerpc64/ioctls_inc1.h	\
+	linux/powerpc64/rt_sigframe.h	\
 	linux/powerpc64/set_error.c	\
 	linux/powerpc64/set_scno.c	\
 	linux/powerpc64/signalent1.h	\
@@ -1339,6 +1392,8 @@
 	linux/powerpc64/userent.h	\
 	linux/ptp_clock.h		\
 	linux/riscv/arch_regs.c		\
+	linux/riscv/arch_regs.h		\
+	linux/riscv/arch_rt_sigframe.c	\
 	linux/riscv/errnoent1.h		\
 	linux/riscv/get_error.c		\
 	linux/riscv/get_scno.c		\
@@ -1352,14 +1407,17 @@
 	linux/riscv/signalent1.h	\
 	linux/riscv/syscallent.h	\
 	linux/riscv/syscallent1.h	\
+	linux/rt_sigframe.h		\
 	linux/s390/arch_regs.c		\
 	linux/s390/arch_regs.h		\
+	linux/s390/arch_rt_sigframe.c	\
 	linux/s390/arch_sigreturn.c	\
 	linux/s390/get_error.c		\
 	linux/s390/get_scno.c		\
 	linux/s390/get_syscall_args.c	\
 	linux/s390/ioctls_arch0.h	\
 	linux/s390/ioctls_inc0.h	\
+	linux/s390/rt_sigframe.h	\
 	linux/s390/set_error.c		\
 	linux/s390/set_scno.c		\
 	linux/s390/syscallent.h		\
@@ -1368,18 +1426,21 @@
 	linux/s390/userent1.h		\
 	linux/s390x/arch_regs.c		\
 	linux/s390x/arch_regs.h		\
+	linux/s390x/arch_rt_sigframe.c	\
 	linux/s390x/arch_sigreturn.c	\
 	linux/s390x/get_error.c		\
 	linux/s390x/get_scno.c		\
 	linux/s390x/get_syscall_args.c	\
 	linux/s390x/ioctls_arch0.h	\
 	linux/s390x/ioctls_inc0.h	\
+	linux/s390x/rt_sigframe.h	\
 	linux/s390x/set_error.c		\
 	linux/s390x/set_scno.c		\
 	linux/s390x/syscallent.h	\
 	linux/s390x/userent.h		\
 	linux/sh/arch_getrval2.c	\
 	linux/sh/arch_regs.c		\
+	linux/sh/arch_rt_sigframe.c	\
 	linux/sh/get_error.c		\
 	linux/sh/get_scno.c		\
 	linux/sh/get_syscall_args.c	\
@@ -1393,12 +1454,14 @@
 	linux/sh/userent0.h		\
 	linux/sh64/arch_regs.c		\
 	linux/sh64/arch_regs.h		\
+	linux/sh64/arch_rt_sigframe.c	\
 	linux/sh64/get_error.c		\
 	linux/sh64/get_scno.c		\
 	linux/sh64/get_syscall_args.c	\
 	linux/sh64/get_syscall_result.c	\
 	linux/sh64/ioctls_arch0.h	\
 	linux/sh64/ioctls_inc0.h	\
+	linux/sh64/rt_sigframe.h	\
 	linux/sh64/set_error.c		\
 	linux/sh64/set_scno.c		\
 	linux/sh64/syscallent.h		\
@@ -1408,6 +1471,7 @@
 	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		\
@@ -1416,6 +1480,7 @@
 	linux/sparc/get_syscall_args.c	\
 	linux/sparc/ioctls_arch0.h	\
 	linux/sparc/ioctls_inc0.h	\
+	linux/sparc/rt_sigframe.h	\
 	linux/sparc/set_error.c		\
 	linux/sparc/set_scno.c		\
 	linux/sparc/signalent.h		\
@@ -1424,6 +1489,7 @@
 	linux/sparc64/arch_getrval2.c	\
 	linux/sparc64/arch_regs.c	\
 	linux/sparc64/arch_regs.h	\
+	linux/sparc64/arch_rt_sigframe.c\
 	linux/sparc64/arch_sigreturn.c	\
 	linux/sparc64/errnoent.h	\
 	linux/sparc64/errnoent1.h	\
@@ -1434,6 +1500,7 @@
 	linux/sparc64/ioctls_arch1.h	\
 	linux/sparc64/ioctls_inc0.h	\
 	linux/sparc64/ioctls_inc1.h	\
+	linux/sparc64/rt_sigframe.h	\
 	linux/sparc64/set_error.c	\
 	linux/sparc64/set_scno.c	\
 	linux/sparc64/signalent.h	\
@@ -1445,6 +1512,7 @@
 	linux/syscall.h			\
 	linux/tile/arch_regs.c		\
 	linux/tile/arch_regs.h		\
+	linux/tile/arch_rt_sigframe.c	\
 	linux/tile/arch_sigreturn.c	\
 	linux/tile/errnoent1.h		\
 	linux/tile/get_error.c		\
@@ -1454,6 +1522,7 @@
 	linux/tile/ioctls_arch1.h	\
 	linux/tile/ioctls_inc0.h	\
 	linux/tile/ioctls_inc1.h	\
+	linux/tile/rt_sigframe.h	\
 	linux/tile/set_error.c		\
 	linux/tile/set_scno.c		\
 	linux/tile/signalent1.h		\
@@ -1466,6 +1535,7 @@
 	linux/userent0.h		\
 	linux/x32/arch_regs.c		\
 	linux/x32/arch_regs.h		\
+	linux/x32/arch_rt_sigframe.c	\
 	linux/x32/arch_sigreturn.c	\
 	linux/x32/errnoent1.h		\
 	linux/x32/get_error.c		\
@@ -1475,6 +1545,7 @@
 	linux/x32/ioctls_arch1.h	\
 	linux/x32/ioctls_inc0.h		\
 	linux/x32/ioctls_inc1.h		\
+	linux/x32/rt_sigframe.h		\
 	linux/x32/set_error.c		\
 	linux/x32/set_scno.c		\
 	linux/x32/signalent1.h		\
@@ -1483,6 +1554,7 @@
 	linux/x32/userent.h		\
 	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	\
@@ -1498,6 +1570,7 @@
 	linux/x86_64/ioctls_inc0.h	\
 	linux/x86_64/ioctls_inc1.h	\
 	linux/x86_64/ioctls_inc2.h	\
+	linux/x86_64/rt_sigframe.h	\
 	linux/x86_64/set_error.c	\
 	linux/x86_64/set_scno.c		\
 	linux/x86_64/signalent1.h	\
@@ -1507,6 +1580,7 @@
 	linux/x86_64/syscallent2.h	\
 	linux/x86_64/userent.h		\
 	linux/xtensa/arch_regs.c	\
+	linux/xtensa/arch_rt_sigframe.c	\
 	linux/xtensa/get_error.c	\
 	linux/xtensa/get_scno.c		\
 	linux/xtensa/get_syscall_args.c	\
@@ -1517,20 +1591,14 @@
 	linux/xtensa/set_scno.c		\
 	linux/xtensa/syscallent.h	\
 	linux/xtensa/userent.h		\
-	maint/ioctls_gen.sh		\
-	maint/ioctls_hex.sh		\
-	maint/ioctls_sym.sh		\
-	maint/print_ioctlent.c		\
 	mpers.awk			\
 	mpers.sh			\
 	mpers_test.sh			\
 	mpers_xlat.h			\
 	scno.head			\
-	signalent.sh			\
 	strace-graph			\
 	strace-log-merge		\
 	strace.spec			\
-	syscallent.sh			\
 	$(XLAT_INPUT_FILES)		\
 	$(XLAT_HEADER_FILES)		\
 	xlat/gen.sh			\
@@ -1572,7 +1640,7 @@
 SCNO_SED = /TRACE_INDIRECT_SUBCALL/d; s/^\[[[:space:]]*\($(digits)\)\][[:space:]]*=[[:space:]]*{[^,]*,[^,]*,[^,]*,[[:space:]]*"\($(al_nums)\)"[[:space:]]*},.*/\#ifndef __NR_\2\n\# define __NR_\2 (SYSCALL_BIT | \1)\n\#endif/p
 
 # Generated by ./generate_mpers_am.sh; do not edit.
-mpers_source_files = block.c btrfs.c dirent.c evdev.c fetch_seccomp_fprog.c fetch_struct_flock.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timespec.c print_timeval.c print_timex.c printrusage.c printsiginfo.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
+mpers_source_files = block.c btrfs.c dirent.c evdev.c fetch_seccomp_fprog.c fetch_struct_flock.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timespec.c print_timeval.c print_timex.c printrusage.c printsiginfo.c rt_sigreturn.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
 
 # defines mpers_source_files
 srcdir_mpers_source_files = $(patsubst %,$(srcdir)/%,$(mpers_source_files))
@@ -1786,6 +1854,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_timex.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-printrusage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-printsiginfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-rt_sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-rtc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-sg_io_v3.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-sigaltstack.Po@am__quote@
@@ -1821,6 +1890,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_timex.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-printrusage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-printsiginfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-rtc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-sg_io_v3.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-sigaltstack.Po@am__quote@
@@ -1833,6 +1903,7 @@
 @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-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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-statfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-statfs64.Po@am__quote@
@@ -1916,6 +1987,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mtd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-net.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-nsfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-numa.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-oldstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-open.Po@am__quote@
@@ -1950,6 +2022,8 @@
 @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-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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sched.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-scsi.Po@am__quote@
@@ -1960,7 +2034,6 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sigaltstack.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-signal.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-signalfd.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-sockaddr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-socketutils.Po@am__quote@
@@ -1968,6 +2041,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-stat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-stat64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-statfs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-statx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-strace.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-swapon.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-syscall.Po@am__quote@
@@ -2374,6 +2448,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_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
 
+libmpers_m32_a-rt_sigreturn.o: rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo -c -o libmpers_m32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_m32_a-rt_sigreturn.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) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+
+libmpers_m32_a-rt_sigreturn.obj: rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo -c -o libmpers_m32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_m32_a-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_m32_a-rt_sigreturn.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) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -c -o libmpers_m32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+
 libmpers_m32_a-rtc.o: rtc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-rtc.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-rtc.Tpo -c -o libmpers_m32_a-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-rtc.Tpo $(DEPDIR)/libmpers_m32_a-rtc.Po
@@ -2864,6 +2952,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-printsiginfo.obj `if test -f 'printsiginfo.c'; then $(CYGPATH_W) 'printsiginfo.c'; else $(CYGPATH_W) '$(srcdir)/printsiginfo.c'; fi`
 
+libmpers_mx32_a-rt_sigreturn.o: rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo -c -o libmpers_mx32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_mx32_a-rt_sigreturn.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) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+
+libmpers_mx32_a-rt_sigreturn.obj: rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo -c -o libmpers_mx32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Tpo $(DEPDIR)/libmpers_mx32_a-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigreturn.c' object='libmpers_mx32_a-rt_sigreturn.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) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -c -o libmpers_mx32_a-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+
 libmpers_mx32_a-rtc.o: rtc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-rtc.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-rtc.Tpo -c -o libmpers_mx32_a-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-rtc.Tpo $(DEPDIR)/libmpers_mx32_a-rtc.Po
@@ -3032,6 +3134,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-ipc.obj `if test -f 'ipc.c'; then $(CYGPATH_W) 'ipc.c'; else $(CYGPATH_W) '$(srcdir)/ipc.c'; fi`
 
+libstrace_a-sigreturn.o: sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.o -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.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-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
+
+libstrace_a-sigreturn.obj: sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-sigreturn.obj -MD -MP -MF $(DEPDIR)/libstrace_a-sigreturn.Tpo -c -o libstrace_a-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-sigreturn.Tpo $(DEPDIR)/libstrace_a-sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='sigreturn.c' object='libstrace_a-sigreturn.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-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
+
 libstrace_a-socketcall.o: socketcall.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-socketcall.o -MD -MP -MF $(DEPDIR)/libstrace_a-socketcall.Tpo -c -o libstrace_a-socketcall.o `test -f 'socketcall.c' || echo '$(srcdir)/'`socketcall.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-socketcall.Tpo $(DEPDIR)/libstrace_a-socketcall.Po
@@ -4194,6 +4310,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-netlink.obj `if test -f 'netlink.c'; then $(CYGPATH_W) 'netlink.c'; else $(CYGPATH_W) '$(srcdir)/netlink.c'; fi`
 
+strace-nsfs.o: nsfs.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nsfs.o -MD -MP -MF $(DEPDIR)/strace-nsfs.Tpo -c -o strace-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-nsfs.Tpo $(DEPDIR)/strace-nsfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='nsfs.c' object='strace-nsfs.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-nsfs.o `test -f 'nsfs.c' || echo '$(srcdir)/'`nsfs.c
+
+strace-nsfs.obj: nsfs.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-nsfs.obj -MD -MP -MF $(DEPDIR)/strace-nsfs.Tpo -c -o strace-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-nsfs.Tpo $(DEPDIR)/strace-nsfs.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='nsfs.c' object='strace-nsfs.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-nsfs.obj `if test -f 'nsfs.c'; then $(CYGPATH_W) 'nsfs.c'; else $(CYGPATH_W) '$(srcdir)/nsfs.c'; fi`
+
 strace-numa.o: numa.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-numa.o -MD -MP -MF $(DEPDIR)/strace-numa.Tpo -c -o strace-numa.o `test -f 'numa.c' || echo '$(srcdir)/'`numa.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-numa.Tpo $(DEPDIR)/strace-numa.Po
@@ -4670,6 +4800,34 @@
 @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-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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigframe.c' object='strace-rt_sigframe.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-rt_sigframe.o `test -f 'rt_sigframe.c' || echo '$(srcdir)/'`rt_sigframe.c
+
+strace-rt_sigframe.obj: rt_sigframe.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigframe.obj -MD -MP -MF $(DEPDIR)/strace-rt_sigframe.Tpo -c -o strace-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigframe.Tpo $(DEPDIR)/strace-rt_sigframe.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigframe.c' object='strace-rt_sigframe.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-rt_sigframe.obj `if test -f 'rt_sigframe.c'; then $(CYGPATH_W) 'rt_sigframe.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigframe.c'; fi`
+
+strace-rt_sigreturn.o: rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigreturn.o -MD -MP -MF $(DEPDIR)/strace-rt_sigreturn.Tpo -c -o strace-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigreturn.Tpo $(DEPDIR)/strace-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigreturn.c' object='strace-rt_sigreturn.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-rt_sigreturn.o `test -f 'rt_sigreturn.c' || echo '$(srcdir)/'`rt_sigreturn.c
+
+strace-rt_sigreturn.obj: rt_sigreturn.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rt_sigreturn.obj -MD -MP -MF $(DEPDIR)/strace-rt_sigreturn.Tpo -c -o strace-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rt_sigreturn.Tpo $(DEPDIR)/strace-rt_sigreturn.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='rt_sigreturn.c' object='strace-rt_sigreturn.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-rt_sigreturn.obj `if test -f 'rt_sigreturn.c'; then $(CYGPATH_W) 'rt_sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/rt_sigreturn.c'; fi`
+
 strace-rtc.o: rtc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-rtc.o -MD -MP -MF $(DEPDIR)/strace-rtc.Tpo -c -o strace-rtc.o `test -f 'rtc.c' || echo '$(srcdir)/'`rtc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-rtc.Tpo $(DEPDIR)/strace-rtc.Po
@@ -4810,20 +4968,6 @@
 @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-signalfd.obj `if test -f 'signalfd.c'; then $(CYGPATH_W) 'signalfd.c'; else $(CYGPATH_W) '$(srcdir)/signalfd.c'; fi`
 
-strace-sigreturn.o: sigreturn.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sigreturn.o -MD -MP -MF $(DEPDIR)/strace-sigreturn.Tpo -c -o strace-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-sigreturn.Tpo $(DEPDIR)/strace-sigreturn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='sigreturn.c' object='strace-sigreturn.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-sigreturn.o `test -f 'sigreturn.c' || echo '$(srcdir)/'`sigreturn.c
-
-strace-sigreturn.obj: sigreturn.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sigreturn.obj -MD -MP -MF $(DEPDIR)/strace-sigreturn.Tpo -c -o strace-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-sigreturn.Tpo $(DEPDIR)/strace-sigreturn.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='sigreturn.c' object='strace-sigreturn.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-sigreturn.obj `if test -f 'sigreturn.c'; then $(CYGPATH_W) 'sigreturn.c'; else $(CYGPATH_W) '$(srcdir)/sigreturn.c'; fi`
-
 strace-sock.o: sock.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-sock.o -MD -MP -MF $(DEPDIR)/strace-sock.Tpo -c -o strace-sock.o `test -f 'sock.c' || echo '$(srcdir)/'`sock.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-sock.Tpo $(DEPDIR)/strace-sock.Po
@@ -4922,6 +5066,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-statfs.obj `if test -f 'statfs.c'; then $(CYGPATH_W) 'statfs.c'; else $(CYGPATH_W) '$(srcdir)/statfs.c'; fi`
 
+strace-statx.o: statx.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statx.o -MD -MP -MF $(DEPDIR)/strace-statx.Tpo -c -o strace-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-statx.Tpo $(DEPDIR)/strace-statx.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='statx.c' object='strace-statx.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-statx.o `test -f 'statx.c' || echo '$(srcdir)/'`statx.c
+
+strace-statx.obj: statx.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-statx.obj -MD -MP -MF $(DEPDIR)/strace-statx.Tpo -c -o strace-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-statx.Tpo $(DEPDIR)/strace-statx.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='statx.c' object='strace-statx.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-statx.obj `if test -f 'statx.c'; then $(CYGPATH_W) 'statx.c'; else $(CYGPATH_W) '$(srcdir)/statx.c'; fi`
+
 strace-strace.o: strace.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-strace.o -MD -MP -MF $(DEPDIR)/strace-strace.Tpo -c -o strace-strace.o `test -f 'strace.c' || echo '$(srcdir)/'`strace.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-strace.Tpo $(DEPDIR)/strace-strace.Po
@@ -5788,8 +5946,6 @@
 
 $(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/aclipc.h: $(top_srcdir)/xlat/aclipc.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/adjtimex_modes.h: $(top_srcdir)/xlat/adjtimex_modes.in $(top_srcdir)/xlat/gen.sh
@@ -5808,6 +5964,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/at_flags.h: $(top_srcdir)/xlat/at_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/at_statx_sync_types.h: $(top_srcdir)/xlat/at_statx_sync_types.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/atomic_ops.h: $(top_srcdir)/xlat/atomic_ops.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/audit_arch.h: $(top_srcdir)/xlat/audit_arch.in $(top_srcdir)/xlat/gen.sh
@@ -5822,6 +5980,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bootflags3.h: $(top_srcdir)/xlat/bootflags3.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bpf_attach_flags.h: $(top_srcdir)/xlat/bpf_attach_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_attach_type.h: $(top_srcdir)/xlat/bpf_attach_type.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/bpf_class.h: $(top_srcdir)/xlat/bpf_class.in $(top_srcdir)/xlat/gen.sh
@@ -6132,8 +6292,6 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/open_mode_flags.h: $(top_srcdir)/xlat/open_mode_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/openmodessol.h: $(top_srcdir)/xlat/openmodessol.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/packet_mreq_type.h: $(top_srcdir)/xlat/packet_mreq_type.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/perf_attr_size.h: $(top_srcdir)/xlat/perf_attr_size.in $(top_srcdir)/xlat/gen.sh
@@ -6320,6 +6478,10 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/statfs_flags.h: $(top_srcdir)/xlat/statfs_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/statx_attrs.h: $(top_srcdir)/xlat/statx_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/statx_masks.h: $(top_srcdir)/xlat/statx_masks.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/swap_flags.h: $(top_srcdir)/xlat/swap_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/sync_file_range_flags.h: $(top_srcdir)/xlat/sync_file_range_flags.in $(top_srcdir)/xlat/gen.sh
@@ -6408,8 +6570,20 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_memories.h: $(top_srcdir)/xlat/v4l2_memories.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_sliced_flags.h: $(top_srcdir)/xlat/v4l2_sliced_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/v4l2_streaming_capabilities.h: $(top_srcdir)/xlat/v4l2_streaming_capabilities.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_audmodes.h: $(top_srcdir)/xlat/v4l2_tuner_audmodes.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_capabilities.h: $(top_srcdir)/xlat/v4l2_tuner_capabilities.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_rxsubchanses.h: $(top_srcdir)/xlat/v4l2_tuner_rxsubchanses.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_tuner_types.h: $(top_srcdir)/xlat/v4l2_tuner_types.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/v4l2_vbi_flags.h: $(top_srcdir)/xlat/v4l2_vbi_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/wait4_options.h: $(top_srcdir)/xlat/wait4_options.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/waitid_types.h: $(top_srcdir)/xlat/waitid_types.in $(top_srcdir)/xlat/gen.sh
@@ -6446,6 +6620,7 @@
 
 dist-hook:
 	$(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version
+	${AM_V_GEN}echo $(COPYRIGHT_YEAR) > $(distdir)/.year
 
 news-check: NEWS
 	$(AM_V_GEN)if head -1 $< |				\
diff --git a/NEWS b/NEWS
index e5d01a3..b8c88eb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,58 @@
+Noteworthy changes in release 4.17 (2017-05-24)
+===============================================
+
+* Changes in command line syntax
+  * Syscall classes specified in -e trace= option now have % prefix (like
+    -e trace=%process).  Old style class names without leading % are still
+    supported, but considered deprecated now.
+
+* Improvements
+  * Optimized syscall filtering.
+  * Improved representation of timestamps.
+  * Enhanced decoding of sched_setattr syscall.
+  * Added -e trace=%stat option for tracing variants of stat syscall.
+  * Added -e trace=%lstat option for tracing variants of lstat syscall.
+  * Added -e trace=%fstat option for tracing variants of fstat and fstatat
+    syscalls.
+  * Added -e trace=%%stat option for tracing syscalls used for querying file
+    status information (stat, lstat, fstat, fstatat, statx, and their
+    variations).
+  * Added -e trace=%statfs option for tracing statfs, statfs64 and statvfs
+    syscalls.
+  * Added -e trace=%fstatfs option for tracing fstatfs, fstatfs64 and fstatvfs
+    syscalls.
+  * Added -e trace=%%statfs option for tracing syscalls used for querying file
+    system statistics information (statfs-like, fstatfs-like and ustat).
+  * Added -e trace=/regex option for filtering syscalls using regular
+    expressions.
+  * Added support for prepending of question mark before syscall qualification
+    in -e trace expressions in order to suppress error in case no syscalls
+    matched the provided qualification.
+  * Implemented decoding of signal mask in rt_sigreturn syscall on alpha, arc,
+    arm, avr32, bfin, cris, hppa, m68k, metag, microblaze, mips, nios2, or1k,
+    powerpc, powerpc64, riscv, sh, sh64, sparc, sparc64, tile, x86, and xtensa
+    architectures.
+  * Implemented decoding of statx syscall.
+  * Implemented decoding of NS_* ioctl commands.
+  * Implemented decoding of the remaining V4L2_BUF_TYPE_* types.
+  * Implemented decoding of VIDIOC_[SG]_TUNER ioctl commands.
+  * Implemented decoding of NLMSG_ERROR netlink messages.
+  * Improved decoding of BPF_PROG_ATTACH command of bpf syscall.
+  * Improved decoding of misplaced parts in DM_* ioctl commands.
+  * Updated lists of ioctl commands from Linux 4.11.
+
+* Bug fixes
+  * Fixed decoding of flags argument of preadv2 and pwritev2 syscalls on x32.
+  * Fixed the number of arguments and tracing flags of alpha specific syscalls.
+  * Fixed decoding of old sigsuspend syscall on alpha, cris, mips, powerpc,
+    powerpc64, sh, sh64, sparc, and sparc64.
+  * Fixed decoding of sgetmask and ssetmask syscalls on 64-bit architectures.
+  * Fixed decoding of netlink messages received within struct msghdr.
+  * Worked around a bug in miscompiled aarch64 kernels leading to the 3rd
+    argument of sched_getattr syscall being not quite 32-bit.
+  * Fixed corner cases of printing inaccessible times argument of utimes
+    and futimesat syscalls.
+
 Noteworthy changes in release 4.16 (2017-02-14)
 ===============================================
 
diff --git a/README b/README
index ae80800..bc70155 100644
--- a/README
+++ b/README
@@ -8,7 +8,7 @@
 See the file NEWS for information on what has changed in recent versions.
 
 The project's homepage is at
-	https://sourceforge.net/projects/strace/
+	https://strace.io
 
 strace has a mailing list:
 	strace-devel@lists.sourceforge.net.
diff --git a/aio.c b/aio.c
index e246b35..5565d0c 100644
--- a/aio.c
+++ b/aio.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -73,7 +74,8 @@
 		tprints(cmds[cmd].name);
 		return cmds[cmd].sub;
 	}
-	tprintf("%u /* SUB_??? */", cmd);
+	tprintf("%u", cmd);
+	tprints_comment("SUB_???");
 	return SUB_NONE;
 }
 
diff --git a/bjm.c b/bjm.c
index 926add3..a9a777f 100644
--- a/bjm.c
+++ b/bjm.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/bpf.c b/bpf.c
index 9941018..2c709e1 100644
--- a/bpf.c
+++ b/bpf.c
@@ -37,6 +37,7 @@
 #include "xlat/bpf_prog_types.h"
 #include "xlat/bpf_map_update_elem_flags.h"
 #include "xlat/bpf_attach_type.h"
+#include "xlat/bpf_attach_flags.h"
 
 static int
 bpf_map_create(struct tcb *const tcp, const kernel_ulong_t addr,
@@ -197,21 +198,21 @@
 	if (umoven_or_printaddr(tcp, addr, size, &attr))
 		return RVAL_DECODED | RVAL_FD;
 
-	tprintf("{pathname=");
+	tprints("{pathname=");
 	printpath(tcp, attr.pathname);
 	tprints(", bpf_fd=");
 	printfd(tcp, attr.bpf_fd);
-	tprintf("}");
+	tprints("}");
 
 	return RVAL_DECODED | RVAL_FD;
 }
 
 static int
 bpf_prog_attach_detach(struct tcb *const tcp, const kernel_ulong_t addr,
-		       unsigned int size, bool print_attach_bpf_fd)
+		       unsigned int size, bool print_attach)
 {
 	struct {
-		uint32_t target_fd, attach_bpf_fd, attach_type;
+		uint32_t target_fd, attach_bpf_fd, attach_type, attach_flags;
 	} attr = {};
 
 	if (!size) {
@@ -223,15 +224,19 @@
 	if (umoven_or_printaddr(tcp, addr, size, &attr))
 		return RVAL_DECODED;
 
-	tprintf("{target_fd=");
+	tprints("{target_fd=");
 	printfd(tcp, attr.target_fd);
-	if (print_attach_bpf_fd) {
-		tprintf(", attach_bpf_fd=");
+	if (print_attach) {
+		tprints(", attach_bpf_fd=");
 		printfd(tcp, attr.attach_bpf_fd);
 	}
-	tprintf(", attach_type=");
+	tprints(", attach_type=");
 	printxval(bpf_attach_type, attr.attach_type, "BPF_???");
-	tprintf("}");
+	if (print_attach) {
+		tprints(", attach_flags=");
+		printflags(bpf_attach_flags, attr.attach_flags, "BPF_F_???");
+	}
+	tprints("}");
 
 	return RVAL_DECODED;
 }
diff --git a/btrfs.c b/btrfs.c
index e007040..141cafa 100644
--- a/btrfs.c
+++ b/btrfs.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -180,7 +181,7 @@
 {
 	tprintf(", %s=%" PRIu64, name, value);
 	if (value == UINT64_MAX)
-		tprints(" /* UINT64_MAX */");
+		tprints_comment("UINT64_MAX");
 }
 
 #define print_member_u64(obj, name) print_u64(#name, obj->name)
@@ -261,19 +262,15 @@
 static void
 btrfs_print_key_type(uint32_t type)
 {
-	const char *str = xlookup(btrfs_key_types, type);
 	tprintf("%u", type);
-	if (str)
-		tprintf(" /* %s */", str);
+	tprints_comment(xlookup(btrfs_key_types, type));
 }
 
 static void
 btrfs_print_objectid(uint64_t objectid)
 {
-	const char *str = xlookup(btrfs_tree_objectids, objectid);
 	tprintf("%" PRIu64, objectid);
-	if (str)
-		tprintf(" /* %s */", str);
+	tprints_comment(xlookup(btrfs_tree_objectids, objectid));
 }
 
 static void
@@ -412,7 +409,7 @@
 	if (value) {
 		tprintf(", %s=%" PRIu64, name, value);
 		if (value == UINT64_MAX)
-			tprints(" /* UINT64_MAX */");
+			tprints_comment("UINT64_MAX");
 	}
 }
 #define print_key_value(tcp, key, name)					\
@@ -610,7 +607,7 @@
 
 		tprintf("%" PRIu64, (uint64_t) args.len);
 		if (args.len == UINT64_MAX)
-			tprints(" /* UINT64_MAX */");
+			tprints_comment("UINT64_MAX");
 
 		tprints(", flags=");
 		printflags64(btrfs_defrag_flags, args.flags,
@@ -702,35 +699,27 @@
 		printxval64(btrfs_dev_replace_results, args.result,
 			    "BTRFS_IOCTL_DEV_REPLACE_RESULT_???");
 		if (args.cmd == BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS) {
-			char buf[sizeof("HH:MM:SS") + 1];
-			time_t time;
 			tprints(", ");
 			printxval64(btrfs_dev_replace_state,
 				   args.status.replace_state,
 				   "BTRFS_IOCTL_DEV_REPLACE_STATE_???");
-			tprintf(", progress_1000=%" PRIu64 " /* ",
+			tprintf(", progress_1000=%" PRIu64,
 				(uint64_t) args.status.progress_1000);
+
 			if (args.status.progress_1000 <= 1000)
-				tprintf("%" PRIu64 ".%.2" PRIu64 "%%",
-					(uint64_t) args.status.progress_1000 / 10,
-					(uint64_t) args.status.progress_1000 % 10);
-			else
-				tprints("???");
-			tprints(" */ ,");
+				tprintf_comment("%u.%u%%",
+					(unsigned) args.status.progress_1000 / 10,
+					(unsigned) args.status.progress_1000 % 10);
 
-			time = args.status.time_started;
-			strftime(buf, sizeof(buf), "%T",
-				 localtime(&time));
-			tprintf("time_started=%" PRIu64" /* %s */, ",
-				(uint64_t) args.status.time_started, buf);
+			tprintf(", time_started=%" PRIu64,
+				(uint64_t) args.status.time_started);
+			tprints_comment(sprinttime(args.status.time_started));
 
-			time = args.status.time_stopped;
-			strftime(buf, sizeof(buf), "%T",
-				 localtime(&time));
-			tprintf("time_stopped=%" PRIu64" /* %s */, ",
-				(uint64_t) args.status.time_stopped, buf);
+			tprintf(", time_stopped=%" PRIu64,
+				(uint64_t) args.status.time_stopped);
+			tprints_comment(sprinttime(args.status.time_stopped));
 
-			tprintf("num_write_errors=%" PRIu64
+			tprintf(", num_write_errors=%" PRIu64
 				", num_uncorrectable_read_errors=%" PRIu64,
 				(uint64_t) args.status.num_write_errors,
 				(uint64_t) args.status.num_uncorrectable_read_errors);
@@ -779,14 +768,17 @@
 		if (umove_or_printaddr(tcp, arg, &flarg))
 			break;
 
-		tprints("[ /* supported */ ");
+		tprints("[");
 		btrfs_print_features(&flarg[0]);
+		tprints_comment("supported");
 
-		tprints(", /* safe to set */ ");
+		tprints(", ");
 		btrfs_print_features(&flarg[1]);
+		tprints_comment("safe to set");
 
-		tprints(", /* safe to clear */ ");
+		tprints(", ");
 		btrfs_print_features(&flarg[2]);
+		tprints_comment("safe to clear");
 		tprints("]");
 
 		break;
@@ -869,10 +861,8 @@
 				tprints("...");
 				break;
 			}
-			const char *name = xlookup(btrfs_dev_stats_values, i);
-			if (name)
-				tprintf("/* %s */ ", name);
 			tprintf("%" PRI__u64, args.values[i]);
+			tprints_comment(xlookup(btrfs_dev_stats_values, i));
 		}
 		tprints("]}");
 		break;
@@ -1108,7 +1098,7 @@
 					args.start);
 				tprintf("%" PRI__u64, args.end);
 				if (args.end == UINT64_MAX)
-					tprints(" /* UINT64_MAX */");
+					tprints_comment("UINT64_MAX");
 				tprints(", flags=");
 				printflags64(btrfs_scrub_flags, args.flags,
 					     "BTRFS_SCRUB_???");
diff --git a/cacheflush.c b/cacheflush.c
index 8c2c05c..f9fc582 100644
--- a/cacheflush.c
+++ b/cacheflush.c
@@ -4,6 +4,7 @@
  * Copyright (c) 2010 Carmelo Amoroso <carmelo.amoroso@st.com>
  * Copyright (c) 2015 Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/capability.c b/capability.c
index a3f06ea..760bdda 100644
--- a/capability.c
+++ b/capability.c
@@ -2,6 +2,7 @@
  * Copyright (c) 2000 Wichert Akkerman <wakkerma@debian.org>
  * Copyright (c) 2011 Denys Vlasenko <dvlasenk@redhat.com>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/clone.c b/clone.c
index 5c60fbe..a1c799a 100644
--- a/clone.c
+++ b/clone.c
@@ -4,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/config.guess b/config.guess
index 3c022c5..69ed3e5 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2015 Free Software Foundation, Inc.
+#   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2015-09-14'
+timestamp='2017-03-05'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -27,7 +27,7 @@
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 #
 # Please send patches to <config-patches@gnu.org>.
 
@@ -50,7 +50,7 @@
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2015 Free Software Foundation, Inc.
+Copyright 1992-2017 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -186,9 +186,12 @@
 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
-	# to ELF recently, or will in the future.
+	# to ELF recently (or will in the future) and ABI.
 	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
+	    earm*)
+		os=netbsdelf
+		;;
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
 			| grep -q __ELF__
@@ -237,6 +240,10 @@
 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
 	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
 	exit ;;
+    *:LibertyBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE}
+	exit ;;
     *:ekkoBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
 	exit ;;
@@ -268,42 +275,42 @@
 	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
 	case "$ALPHA_CPU_TYPE" in
 	    "EV4 (21064)")
-		UNAME_MACHINE="alpha" ;;
+		UNAME_MACHINE=alpha ;;
 	    "EV4.5 (21064)")
-		UNAME_MACHINE="alpha" ;;
+		UNAME_MACHINE=alpha ;;
 	    "LCA4 (21066/21068)")
-		UNAME_MACHINE="alpha" ;;
+		UNAME_MACHINE=alpha ;;
 	    "EV5 (21164)")
-		UNAME_MACHINE="alphaev5" ;;
+		UNAME_MACHINE=alphaev5 ;;
 	    "EV5.6 (21164A)")
-		UNAME_MACHINE="alphaev56" ;;
+		UNAME_MACHINE=alphaev56 ;;
 	    "EV5.6 (21164PC)")
-		UNAME_MACHINE="alphapca56" ;;
+		UNAME_MACHINE=alphapca56 ;;
 	    "EV5.7 (21164PC)")
-		UNAME_MACHINE="alphapca57" ;;
+		UNAME_MACHINE=alphapca57 ;;
 	    "EV6 (21264)")
-		UNAME_MACHINE="alphaev6" ;;
+		UNAME_MACHINE=alphaev6 ;;
 	    "EV6.7 (21264A)")
-		UNAME_MACHINE="alphaev67" ;;
+		UNAME_MACHINE=alphaev67 ;;
 	    "EV6.8CB (21264C)")
-		UNAME_MACHINE="alphaev68" ;;
+		UNAME_MACHINE=alphaev68 ;;
 	    "EV6.8AL (21264B)")
-		UNAME_MACHINE="alphaev68" ;;
+		UNAME_MACHINE=alphaev68 ;;
 	    "EV6.8CX (21264D)")
-		UNAME_MACHINE="alphaev68" ;;
+		UNAME_MACHINE=alphaev68 ;;
 	    "EV6.9A (21264/EV69A)")
-		UNAME_MACHINE="alphaev69" ;;
+		UNAME_MACHINE=alphaev69 ;;
 	    "EV7 (21364)")
-		UNAME_MACHINE="alphaev7" ;;
+		UNAME_MACHINE=alphaev7 ;;
 	    "EV7.9 (21364A)")
-		UNAME_MACHINE="alphaev79" ;;
+		UNAME_MACHINE=alphaev79 ;;
 	esac
 	# A Pn.n version is a patched version.
 	# A Vn.n version is a released version.
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
 	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
 	exitcode=$?
 	trap '' 0
@@ -376,16 +383,16 @@
 	exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
 	eval $set_cc_for_build
-	SUN_ARCH="i386"
+	SUN_ARCH=i386
 	# If there is a compiler, see if it is configured for 64-bit objects.
 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
 	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		grep IS_64BIT_ARCH >/dev/null
 	    then
-		SUN_ARCH="x86_64"
+		SUN_ARCH=x86_64
 	    fi
 	fi
 	echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
@@ -410,7 +417,7 @@
 	exit ;;
     sun*:*:4.2BSD:*)
 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
-	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3
 	case "`/bin/arch`" in
 	    sun3)
 		echo m68k-sun-sunos${UNAME_RELEASE}
@@ -635,13 +642,13 @@
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
 		    case "${sc_cpu_version}" in
-		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
 		      532)                      # CPU_PA_RISC2_0
 			case "${sc_kernel_bits}" in
-			  32) HP_ARCH="hppa2.0n" ;;
-			  64) HP_ARCH="hppa2.0w" ;;
-			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+			  32) HP_ARCH=hppa2.0n ;;
+			  64) HP_ARCH=hppa2.0w ;;
+			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
 			esac ;;
 		    esac
 		fi
@@ -680,11 +687,11 @@
 		    exit (0);
 		}
 EOF
-		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		fi ;;
 	esac
-	if [ ${HP_ARCH} = "hppa2.0w" ]
+	if [ ${HP_ARCH} = hppa2.0w ]
 	then
 	    eval $set_cc_for_build
 
@@ -697,12 +704,12 @@
 	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
 	    # => hppa64-hp-hpux11.23
 
-	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+	    if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) |
 		grep -q __LP64__
 	    then
-		HP_ARCH="hppa2.0w"
+		HP_ARCH=hppa2.0w
 	    else
-		HP_ARCH="hppa64"
+		HP_ARCH=hppa64
 	    fi
 	fi
 	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
@@ -807,14 +814,14 @@
 	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
-	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
 	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
 	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     5000:UNIX_System_V:4.*:*)
-	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
 	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -830,10 +837,11 @@
 	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	case ${UNAME_PROCESSOR} in
 	    amd64)
-		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-	    *)
-		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		UNAME_PROCESSOR=x86_64 ;;
+	    i386)
+		UNAME_PROCESSOR=i586 ;;
 	esac
+	echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
@@ -896,7 +904,7 @@
 	exit ;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
 	exit ;;
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
@@ -919,7 +927,7 @@
 	  EV68*) UNAME_MACHINE=alphaev68 ;;
 	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
-	if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
     arc:Linux:*:* | arceb:Linux:*:*)
@@ -993,6 +1001,9 @@
 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
 	;;
+    mips64el:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     openrisc*:Linux:*:*)
 	echo or1k-unknown-linux-${LIBC}
 	exit ;;
@@ -1025,6 +1036,9 @@
     ppcle:Linux:*:*)
 	echo powerpcle-unknown-linux-${LIBC}
 	exit ;;
+    riscv32:Linux:*:* | riscv64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
 	echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
 	exit ;;
@@ -1123,7 +1137,7 @@
 	# uname -m prints for DJGPP always 'pc', but it prints nothing about
 	# the processor, so we play safe by assuming i586.
 	# Note: whatever this is, it MUST be the same as what config.sub
-	# prints for the "djgpp" host, or else GDB configury will decide that
+	# prints for the "djgpp" host, or else GDB configure will decide that
 	# this is a cross-build.
 	echo i586-pc-msdosdjgpp
 	exit ;;
@@ -1272,6 +1286,9 @@
     SX-8R:SUPER-UX:*:*)
 	echo sx8r-nec-superux${UNAME_RELEASE}
 	exit ;;
+    SX-ACE:SUPER-UX:*:*)
+	echo sxace-nec-superux${UNAME_RELEASE}
+	exit ;;
     Power*:Rhapsody:*:*)
 	echo powerpc-apple-rhapsody${UNAME_RELEASE}
 	exit ;;
@@ -1285,9 +1302,9 @@
 	    UNAME_PROCESSOR=powerpc
 	fi
 	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
-	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+	    if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
 		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+		    (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
 		    grep IS_64BIT_ARCH >/dev/null
 		then
 		    case $UNAME_PROCESSOR in
@@ -1309,7 +1326,7 @@
 	exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
 	UNAME_PROCESSOR=`uname -p`
-	if test "$UNAME_PROCESSOR" = "x86"; then
+	if test "$UNAME_PROCESSOR" = x86; then
 		UNAME_PROCESSOR=i386
 		UNAME_MACHINE=pc
 	fi
@@ -1327,6 +1344,9 @@
     NSR-?:NONSTOP_KERNEL:*:*)
 	echo nsr-tandem-nsk${UNAME_RELEASE}
 	exit ;;
+    NSX-?:NONSTOP_KERNEL:*:*)
+	echo nsx-tandem-nsk${UNAME_RELEASE}
+	exit ;;
     *:NonStop-UX:*:*)
 	echo mips-compaq-nonstopux
 	exit ;;
@@ -1340,7 +1360,7 @@
 	# "uname -m" is not consistent, so use $cputype instead. 386
 	# is converted to i386 for consistency with other x86
 	# operating systems.
-	if test "$cputype" = "386"; then
+	if test "$cputype" = 386; then
 	    UNAME_MACHINE=i386
 	else
 	    UNAME_MACHINE="$cputype"
@@ -1382,7 +1402,7 @@
 	echo i386-pc-xenix
 	exit ;;
     i*86:skyos:*:*)
-	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'`
 	exit ;;
     i*86:rdos:*:*)
 	echo ${UNAME_MACHINE}-pc-rdos
@@ -1393,23 +1413,25 @@
     x86_64:VMkernel:*:*)
 	echo ${UNAME_MACHINE}-unknown-esx
 	exit ;;
+    amd64:Isilon\ OneFS:*:*)
+	echo x86_64-unknown-onefs
+	exit ;;
 esac
 
 cat >&2 <<EOF
 $0: unable to guess system type
 
-This script, last modified $timestamp, has failed to recognize
-the operating system you are using. It is advised that you
-download the most up to date version of the config scripts from
+This script (version $timestamp), has failed to recognize the
+operating system you are using. If your script is old, overwrite
+config.guess and config.sub with the latest versions from:
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
-If the version you run ($0) is already up to date, please
-send the following data and any information you think might be
-pertinent to <config-patches@gnu.org> in order to provide the needed
-information to handle your system.
+If $0 has already been updated, send the following data and any
+information you think might be pertinent to config-patches@gnu.org to
+provide the necessary information to handle your system.
 
 config.guess timestamp = $timestamp
 
diff --git a/config.h.in b/config.h.in
index 8b335f8..54b9892 100644
--- a/config.h.in
+++ b/config.h.in
@@ -27,6 +27,9 @@
 /* Define for the Blackfin architecture. */
 #undef BFIN
 
+/* Current copyright year. */
+#undef COPYRIGHT_YEAR
+
 /* Define for the CRISv10 architecture. */
 #undef CRISV10
 
@@ -390,6 +393,14 @@
    don't. */
 #undef HAVE_DECL_SYS_ERRLIST
 
+/* Define to 1 if you have the declaration of `V4L2_BUF_TYPE_SDR_CAPTURE', and
+   to 0 if you don't. */
+#undef HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+
+/* Define to 1 if you have the declaration of `V4L2_BUF_TYPE_SDR_OUTPUT', and
+   to 0 if you don't. */
+#undef HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+
 /* Define to 1 if you have the declaration of
    `V4L2_BUF_TYPE_SLICED_VBI_CAPTURE', and to 0 if you don't. */
 #undef HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
@@ -743,6 +754,9 @@
    file. */
 #undef HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H
 
+/* Define to 1 if you have the <linux/nsfs.h> header file. */
+#undef HAVE_LINUX_NSFS_H
+
 /* Define to 1 if you have the <linux/perf_event.h> header file. */
 #undef HAVE_LINUX_PERF_EVENT_H
 
@@ -1038,6 +1052,12 @@
 /* Define to 1 if `domainname' is a member of `struct utsname'. */
 #undef HAVE_STRUCT_UTSNAME_DOMAINNAME
 
+/* Define to 1 if `buffersize' is a member of `struct v4l2_sdr_format'. */
+#undef HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+
+/* Define to 1 if `global_alpha' is a member of `struct v4l2_window'. */
+#undef HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+
 /* Define to 1 if the system has the type `struct __kernel_flock'. */
 #undef HAVE_STRUCT___KERNEL_FLOCK
 
@@ -1092,8 +1112,8 @@
 /* Define to 1 if typeof works with your compiler. */
 #undef HAVE_TYPEOF
 
-/* Define to 1 if union bpf_attr.attach_type initialization works */
-#undef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+/* Define to 1 if union bpf_attr.attach_flags initialization works */
+#undef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 
 /* Define to 1 if union bpf_attr.bpf_fd initialization works */
 #undef HAVE_UNION_BPF_ATTR_BPF_FD
diff --git a/config.status b/config.status
index e383585..da6c496 100755
--- a/config.status
+++ b/config.status
@@ -380,7 +380,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.16, which was
+This file was extended by strace $as_me 4.17, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -430,7 +430,7 @@
 
 ac_cs_config=""
 ac_cs_version="\
-strace config.status 4.16
+strace config.status 4.17
 configured by ./configure, generated by GNU Autoconf 2.69,
   with options \"$ac_cs_config\"
 
@@ -438,7 +438,7 @@
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
-ac_pwd='/usr/local/google/home/enh/Downloads/strace-4.16'
+ac_pwd='/tmp/strace-4.17'
 srcdir='.'
 INSTALL='/usr/bin/install -c'
 MKDIR_P='/bin/mkdir -p'
@@ -736,6 +736,7 @@
 S["arch_mx32"]="x32"
 S["arch_m32"]="i386"
 S["arch"]="x86_64"
+S["COPYRIGHT_YEAR"]="2017"
 S["CODE_COVERAGE_RULES"]="\n"\
 "# Code coverage\n"\
 "#\n"\
@@ -903,8 +904,8 @@
 S["LDFLAGS"]=""
 S["CFLAGS"]="-g -O2"
 S["CC"]="gcc"
-S["DEB_CHANGELOGTIME"]="Wed, 15 Feb 2017 11:38:25 -0800"
-S["RPM_CHANGELOGTIME"]="Wed Feb 15 2017"
+S["DEB_CHANGELOGTIME"]="Thu, 25 May 2017 15:09:49 -0700"
+S["RPM_CHANGELOGTIME"]="Thu May 25 2017"
 S["host_os"]="linux-gnu"
 S["host_vendor"]="pc"
 S["host_cpu"]="x86_64"
@@ -930,13 +931,13 @@
 S["MKDIR_P"]="/bin/mkdir -p"
 S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s"
 S["STRIP"]=""
-S["install_sh"]="${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/install-sh"
-S["MAKEINFO"]="${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing makeinfo"
-S["AUTOHEADER"]="${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoheader"
-S["AUTOMAKE"]="${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing automake-1.14"
-S["AUTOCONF"]="${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoconf"
-S["ACLOCAL"]="${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing aclocal-1.14"
-S["VERSION"]="4.16"
+S["install_sh"]="${SHELL} /tmp/strace-4.17/install-sh"
+S["MAKEINFO"]="${SHELL} /tmp/strace-4.17/missing makeinfo"
+S["AUTOHEADER"]="${SHELL} /tmp/strace-4.17/missing autoheader"
+S["AUTOMAKE"]="${SHELL} /tmp/strace-4.17/missing automake-1.14"
+S["AUTOCONF"]="${SHELL} /tmp/strace-4.17/missing autoconf"
+S["ACLOCAL"]="${SHELL} /tmp/strace-4.17/missing aclocal-1.14"
+S["VERSION"]="4.17"
 S["PACKAGE"]="strace"
 S["CYGPATH_W"]="echo"
 S["am__isrc"]=""
@@ -975,8 +976,8 @@
 S["exec_prefix"]="${prefix}"
 S["PACKAGE_URL"]="https://strace.io"
 S["PACKAGE_BUGREPORT"]="strace-devel@lists.sourceforge.net"
-S["PACKAGE_STRING"]="strace 4.16"
-S["PACKAGE_VERSION"]="4.16"
+S["PACKAGE_STRING"]="strace 4.17"
+S["PACKAGE_VERSION"]="4.17"
 S["PACKAGE_TARNAME"]="strace"
 S["PACKAGE_NAME"]="strace"
 S["PATH_SEPARATOR"]=":"
@@ -1024,12 +1025,12 @@
 BEGIN {
 D["PACKAGE_NAME"]=" \"strace\""
 D["PACKAGE_TARNAME"]=" \"strace\""
-D["PACKAGE_VERSION"]=" \"4.16\""
-D["PACKAGE_STRING"]=" \"strace 4.16\""
+D["PACKAGE_VERSION"]=" \"4.17\""
+D["PACKAGE_STRING"]=" \"strace 4.17\""
 D["PACKAGE_BUGREPORT"]=" \"strace-devel@lists.sourceforge.net\""
 D["PACKAGE_URL"]=" \"https://strace.io\""
 D["PACKAGE"]=" \"strace\""
-D["VERSION"]=" \"4.16\""
+D["VERSION"]=" \"4.17\""
 D["STDC_HEADERS"]=" 1"
 D["HAVE_SYS_TYPES_H"]=" 1"
 D["HAVE_SYS_STAT_H"]=" 1"
@@ -1045,6 +1046,7 @@
 D["_GNU_SOURCE"]=" 1"
 D["_POSIX_PTHREAD_SEMANTICS"]=" 1"
 D["_TANDEM_SOURCE"]=" 1"
+D["COPYRIGHT_YEAR"]=" \"2017\""
 D["X86_64"]=" 1"
 D["ENABLE_ARM_OABI"]=" 0"
 D["HAVE_TYPEOF"]=" 1"
@@ -1263,6 +1265,8 @@
 D["HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE"]=" 1"
 D["HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_OUTPUT"]=" 1"
 D["HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY"]=" 1"
+D["HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE"]=" 0"
+D["HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT"]=" 0"
 D["HAVE_DECL_V4L2_TUNER_RADIO"]=" 1"
 D["HAVE_DECL_V4L2_TUNER_ANALOG_TV"]=" 1"
 D["HAVE_DECL_V4L2_TUNER_DIGITAL_TV"]=" 1"
@@ -1297,6 +1301,7 @@
 D["HAVE_DECL_V4L2_CTRL_TYPE_STRING"]=" 1"
 D["HAVE_DECL_V4L2_CTRL_TYPE_BITMASK"]=" 1"
 D["HAVE_DECL_V4L2_CTRL_TYPE_INTEGER_MENU"]=" 1"
+D["HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA"]=" 1"
 D["HAVE_BLKGETSIZE64"]=" 1"
 D["SIZEOF_LONG"]=" 8"
 D["SIZEOF_LONG_LONG"]=" 8"
diff --git a/config.sub b/config.sub
index 7a8ce3e..569b01e 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2015 Free Software Foundation, Inc.
+#   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2015-08-20'
+timestamp='2017-03-21'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -33,7 +33,7 @@
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -53,8 +53,7 @@
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
-Usage: $0 [OPTION] CPU-MFR-OPSYS
-       $0 [OPTION] ALIAS
+Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
 
 Canonicalize a configuration name.
 
@@ -68,7 +67,7 @@
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2015 Free Software Foundation, Inc.
+Copyright 1992-2017 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -118,7 +117,7 @@
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
   knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
-  kopensolaris*-gnu* | \
+  kopensolaris*-gnu* | cloudabi*-eabi* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -302,6 +301,7 @@
 	| open8 | or1k | or1knd | or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle \
+	| pru \
 	| pyramid \
 	| riscv32 | riscv64 \
 	| rl78 | rx \
@@ -315,6 +315,7 @@
 	| ubicom32 \
 	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
 	| visium \
+	| wasm32 \
 	| we32k \
 	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
@@ -429,6 +430,7 @@
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+	| pru-* \
 	| pyramid-* \
 	| riscv32-* | riscv64-* \
 	| rl78-* | romp-* | rs6000-* | rx-* \
@@ -445,6 +447,7 @@
 	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
 	| vax-* \
 	| visium-* \
+	| wasm32-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
@@ -521,7 +524,7 @@
 		basic_machine=i386-pc
 		os=-aros
 		;;
-        asmjs)
+	asmjs)
 		basic_machine=asmjs-unknown
 		;;
 	aux)
@@ -644,6 +647,14 @@
 		basic_machine=m68k-bull
 		os=-sysv3
 		;;
+	e500v[12])
+		basic_machine=powerpc-unknown
+		os=$os"spe"
+		;;
+	e500v[12]-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		os=$os"spe"
+		;;
 	ebmon29k)
 		basic_machine=a29k-amd
 		os=-ebmon
@@ -939,6 +950,9 @@
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
+	nsx-tandem)
+		basic_machine=nsx-tandem
+		;;
 	op50n-* | op60c-*)
 		basic_machine=hppa1.1-oki
 		os=-proelf
@@ -1023,7 +1037,7 @@
 	ppc-* | ppcbe-*)
 		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
-	ppcle | powerpclittle | ppc-le | powerpc-little)
+	ppcle | powerpclittle)
 		basic_machine=powerpcle-unknown
 		;;
 	ppcle-* | powerpclittle-*)
@@ -1033,7 +1047,7 @@
 		;;
 	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
-	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+	ppc64le | powerpc64little)
 		basic_machine=powerpc64le-unknown
 		;;
 	ppc64le-* | powerpc64little-*)
@@ -1234,6 +1248,9 @@
 		basic_machine=a29k-wrs
 		os=-vxworks
 		;;
+	wasm32)
+		basic_machine=wasm32-unknown
+		;;
 	w65*)
 		basic_machine=w65-wdc
 		os=-none
@@ -1383,14 +1400,14 @@
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
-	      | -bitrig* | -openbsd* | -solidbsd* \
+	      | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-	      | -chorusos* | -chorusrdb* | -cegcc* \
+	      | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
 	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+	      | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
 	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
@@ -1399,7 +1416,8 @@
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+	      | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1531,6 +1549,8 @@
 		;;
 	-nacl*)
 		;;
+	-ios)
+		;;
 	-none)
 		;;
 	*)
@@ -1626,6 +1646,9 @@
 	sparc-* | *-sun)
 		os=-sunos4.1.1
 		;;
+	pru-*)
+		os=-elf
+		;;
 	*-be)
 		os=-beos
 		;;
diff --git a/configure b/configure
index 36905ea..9a1c087 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.16.
+# Generated by GNU Autoconf 2.69 for strace 4.17.
 #
 # Report bugs to <strace-devel@lists.sourceforge.net>.
 #
@@ -582,8 +582,8 @@
 # Identity of this package.
 PACKAGE_NAME='strace'
 PACKAGE_TARNAME='strace'
-PACKAGE_VERSION='4.16'
-PACKAGE_STRING='strace 4.16'
+PACKAGE_VERSION='4.17'
+PACKAGE_STRING='strace 4.17'
 PACKAGE_BUGREPORT='strace-devel@lists.sourceforge.net'
 PACKAGE_URL='https://strace.io'
 
@@ -658,6 +658,7 @@
 arch_mx32
 arch_m32
 arch
+COPYRIGHT_YEAR
 CODE_COVERAGE_RULES
 CODE_COVERAGE_LDFLAGS
 CODE_COVERAGE_CXXFLAGS
@@ -1345,7 +1346,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.16 to adapt to many kinds of systems.
+\`configure' configures strace 4.17 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1415,7 +1416,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of strace 4.16:";;
+     short | recursive ) echo "Configuration of strace 4.17:";;
    esac
   cat <<\_ACEOF
 
@@ -1527,7 +1528,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-strace configure 4.16
+strace configure 4.17
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2267,7 +2268,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.16, which was
+It was created by strace $as_me 4.17, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2619,6 +2620,7 @@
 
 
 
+
 ac_aux_dir=
 for ac_dir in . "$srcdir"/.; do
   if test -f "$ac_dir/install-sh"; then
@@ -3136,7 +3138,7 @@
 
 # Define the identity of the package.
  PACKAGE='strace'
- VERSION='4.16'
+ VERSION='4.17'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -8529,6 +8531,12 @@
 
 
 
+
+$as_echo "#define COPYRIGHT_YEAR \"2017\"" >>confdefs.h
+
+COPYRIGHT_YEAR=2017
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported architecture" >&5
 $as_echo_n "checking for supported architecture... " >&6; }
 arch_m32=
@@ -9670,7 +9678,7 @@
 fi
 
 
-for ac_header in asm/cachectl.h asm/sysmips.h bluetooth/bluetooth.h elf.h inttypes.h linux/bsg.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fiemap.h linux/filter.h linux/hiddev.h linux/ip_vs.h linux/ipc.h linux/mmtimer.h linux/msg.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/sysmips.h bluetooth/bluetooth.h elf.h inttypes.h linux/bsg.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fiemap.h linux/filter.h linux/hiddev.h linux/ip_vs.h linux/ipc.h linux/mmtimer.h linux/msg.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
 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"
@@ -9836,9 +9844,9 @@
 $as_echo "#define HAVE_UNION_BPF_ATTR_BPF_FD 1" >>confdefs.h
 
 	fi
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether union bpf_attr.attach_type initialization works" >&5
-$as_echo_n "checking whether union bpf_attr.attach_type initialization works... " >&6; }
-if ${st_cv_have_union_bpf_attr_attach_type+:} false; 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_have_union_bpf_attr_attach_flags+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -9847,23 +9855,23 @@
 int
 main ()
 {
-union bpf_attr a = { .attach_type = 0 };
+union bpf_attr a = { .attach_flags = 0 };
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  st_cv_have_union_bpf_attr_attach_type=yes
+  st_cv_have_union_bpf_attr_attach_flags=yes
 else
-  st_cv_have_union_bpf_attr_attach_type=no
+  st_cv_have_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_have_union_bpf_attr_attach_type" >&5
-$as_echo "$st_cv_have_union_bpf_attr_attach_type" >&6; }
-	if test $st_cv_have_union_bpf_attr_attach_type = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_have_union_bpf_attr_attach_flags" >&5
+$as_echo "$st_cv_have_union_bpf_attr_attach_flags" >&6; }
+	if test $st_cv_have_union_bpf_attr_attach_flags = yes; then
 
-$as_echo "#define HAVE_UNION_BPF_ATTR_ATTACH_TYPE 1" >>confdefs.h
+$as_echo "#define HAVE_UNION_BPF_ATTR_ATTACH_FLAGS 1" >>confdefs.h
 
 	fi
 
@@ -11430,6 +11438,34 @@
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SDR_CAPTURE" "ac_cv_have_decl_V4L2_BUF_TYPE_SDR_CAPTURE" "#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SDR_CAPTURE" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "V4L2_BUF_TYPE_SDR_OUTPUT" "ac_cv_have_decl_V4L2_BUF_TYPE_SDR_OUTPUT" "#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_have_decl_V4L2_BUF_TYPE_SDR_OUTPUT" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT $ac_have_decl
+_ACEOF
 ac_fn_c_check_decl "$LINENO" "V4L2_TUNER_RADIO" "ac_cv_have_decl_V4L2_TUNER_RADIO" "#include <sys/time.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
@@ -11908,6 +11944,34 @@
 _ACEOF
 
 
+ac_fn_c_check_member "$LINENO" "struct v4l2_window" "global_alpha" "ac_cv_member_struct_v4l2_window_global_alpha" "#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_window_global_alpha" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct v4l2_sdr_format" "buffersize" "ac_cv_member_struct_v4l2_sdr_format_buffersize" "#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>
+"
+if test "x$ac_cv_member_struct_v4l2_sdr_format_buffersize" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE 1
+_ACEOF
+
+
+fi
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BLKGETSIZE64" >&5
 $as_echo_n "checking for BLKGETSIZE64... " >&6; }
 if ${ac_cv_have_blkgetsize64+:} false; then :
@@ -14134,7 +14198,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.16, which was
+This file was extended by strace $as_me 4.17, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -14201,7 +14265,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.16
+strace config.status 4.17
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 7004bd3..620a33b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,6 +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.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -35,7 +36,8 @@
 	[strace-devel@lists.sourceforge.net],
 	[strace],
 	[https://strace.io])
-AC_COPYRIGHT([Copyright (C) 1999-2017 The strace developers.])
+m4_define([copyright_year], m4_esyscmd([./copyright-year-gen .year]))
+AC_COPYRIGHT([Copyright (C) 1999-]copyright_year[ The strace developers.])
 AC_CONFIG_SRCDIR([strace.c])
 AC_CONFIG_AUX_DIR([.])
 AC_CONFIG_HEADERS([config.h])
@@ -59,6 +61,9 @@
 AC_USE_SYSTEM_EXTENSIONS
 AX_CODE_COVERAGE
 
+AC_DEFINE([COPYRIGHT_YEAR], "[copyright_year]", [Current copyright year.])
+AC_SUBST([COPYRIGHT_YEAR], [copyright_year])
+
 AC_MSG_CHECKING([for supported architecture])
 arch_m32=
 arch_mx32=
@@ -366,6 +371,7 @@
 	linux/ipc.h
 	linux/mmtimer.h
 	linux/msg.h
+	linux/nsfs.h
 	linux/perf_event.h
 	linux/quota.h
 	linux/seccomp.h
@@ -434,16 +440,16 @@
 		AC_DEFINE(HAVE_UNION_BPF_ATTR_BPF_FD, [1],
 			  [Define to 1 if union bpf_attr.bpf_fd initialization works])
 	fi
-	AC_CACHE_CHECK([whether union bpf_attr.attach_type initialization works],
-		       [st_cv_have_union_bpf_attr_attach_type],
+	AC_CACHE_CHECK([whether union bpf_attr.attach_flags initialization works],
+		       [st_cv_have_union_bpf_attr_attach_flags],
 		[AC_COMPILE_IFELSE(
 			[AC_LANG_PROGRAM([[#include <linux/bpf.h>]],
-					 [[union bpf_attr a = { .attach_type = 0 };]])],
-			[st_cv_have_union_bpf_attr_attach_type=yes],
-			[st_cv_have_union_bpf_attr_attach_type=no])])
-	if test $st_cv_have_union_bpf_attr_attach_type = yes; then
-		AC_DEFINE(HAVE_UNION_BPF_ATTR_ATTACH_TYPE, [1],
-			  [Define to 1 if union bpf_attr.attach_type initialization works])
+					 [[union bpf_attr a = { .attach_flags = 0 };]])],
+			[st_cv_have_union_bpf_attr_attach_flags=yes],
+			[st_cv_have_union_bpf_attr_attach_flags=no])])
+	if test $st_cv_have_union_bpf_attr_attach_flags = yes; then
+		AC_DEFINE(HAVE_UNION_BPF_ATTR_ATTACH_FLAGS, [1],
+			  [Define to 1 if union bpf_attr.attach_flags initialization works])
 	fi
 ])
 
@@ -608,6 +614,8 @@
 	V4L2_BUF_TYPE_SLICED_VBI_CAPTURE,
 	V4L2_BUF_TYPE_SLICED_VBI_OUTPUT,
 	V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY,
+	V4L2_BUF_TYPE_SDR_CAPTURE,
+	V4L2_BUF_TYPE_SDR_OUTPUT,
 	V4L2_TUNER_RADIO,
 	V4L2_TUNER_ANALOG_TV,
 	V4L2_TUNER_DIGITAL_TV,
@@ -647,6 +655,14 @@
 #include <linux/types.h>
 #include <linux/videodev2.h>])
 
+AC_CHECK_MEMBERS(m4_normalize([
+	struct v4l2_window.global_alpha,
+	struct v4l2_sdr_format.buffersize
+]),,, [#include <sys/time.h>
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/videodev2.h>])
+
 AC_CACHE_CHECK([for BLKGETSIZE64], [ac_cv_have_blkgetsize64],
 	[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
 #include <stdlib.h>
diff --git a/count.c b/count.c
index 4b333bf..1af9336 100644
--- a/count.c
+++ b/count.c
@@ -8,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/debian/changelog b/debian/changelog
index c4a21b8..d891a6f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,14 +1,20 @@
-strace (4.16-1) experimental; urgency=low
+strace (4.17-1) experimental; urgency=low
 
-  * strace 4.16 snapshot.
+  * strace 4.17 snapshot.
 
- -- Strace <strace-devel@lists.sourceforge.net>  Wed, 15 Feb 2017 11:38:25 -0800
+ -- Strace <strace-devel@lists.sourceforge.net>  Thu, 25 May 2017 15:09:49 -0700
+
+strace (4.16-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 14 Feb 2017 10:11:12 +0000
 
 strace (4.15-1) unstable; urgency=medium
 
   * New upstream version.
 
- -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 14 Dec 2016 08:09:10 +0000
+ -- Dmitry V. Levin <ldv@altlinux.org>  Wed, 14 Dec 2016 08:09:10 +0000
 
 strace (4.14-1) unstable; urgency=medium
 
diff --git a/debian/changelog.in b/debian/changelog.in
index 288cef9..8aab9d9 100644
--- a/debian/changelog.in
+++ b/debian/changelog.in
@@ -4,11 +4,17 @@
 
  -- Strace <@PACKAGE_BUGREPORT@>  @DEB_CHANGELOGTIME@
 
+strace (4.16-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 14 Feb 2017 10:11:12 +0000
+
 strace (4.15-1) unstable; urgency=medium
 
   * New upstream version.
 
- -- Dmitry V. Levin <ldv@altlinux.org>  Tue, 14 Dec 2016 08:09:10 +0000
+ -- Dmitry V. Levin <ldv@altlinux.org>  Wed, 14 Dec 2016 08:09:10 +0000
 
 strace (4.14-1) unstable; urgency=medium
 
diff --git a/debian/control b/debian/control
index 79773c3..2a7963f 100644
--- a/debian/control
+++ b/debian/control
@@ -4,7 +4,7 @@
 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
 Standards-Version: 3.9.6
-Homepage: http://sourceforge.net/projects/strace/
+Homepage: https://strace.io
 Vcs-Git: https://anonscm.debian.org/git/collab-maint/strace.git
 Vcs-Browser: https://anonscm.debian.org/git/collab-maint/strace.git
 
diff --git a/defs.h b/defs.h
index b333a22..fb3a603 100644
--- a/defs.h
+++ b/defs.h
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -292,12 +293,15 @@
 
 extern const struct xlat addrfams[];
 extern const struct xlat at_flags[];
+extern const struct xlat clocknames[];
 extern const struct xlat dirent_types[];
 extern const struct xlat evdev_abs[];
 extern const struct xlat msg_flags[];
+extern const struct xlat netlink_protocols[];
 extern const struct xlat open_access_modes[];
 extern const struct xlat open_mode_flags[];
 extern const struct xlat resource_flags[];
+extern const struct xlat setns_types[];
 extern const struct xlat sg_io_info[];
 extern const struct xlat socketlayers[];
 extern const struct xlat whence_codes[];
@@ -409,8 +413,9 @@
 extern void call_summary(FILE *);
 
 extern void clear_regs(void);
-extern void get_regs(pid_t pid);
-extern int get_scno(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.
  *
@@ -542,11 +547,14 @@
 extern void addflags(const struct xlat *, uint64_t);
 extern int printflags64(const struct xlat *, uint64_t, const char *);
 extern const char *sprintflags(const char *, const struct xlat *, uint64_t);
-extern const char *sprinttime(time_t);
+extern const char *sprinttime(long long sec);
+extern const char *sprinttime_nsec(long long sec, unsigned long long nsec);
+extern const char *sprinttime_usec(long long sec, unsigned long long usec);
 extern void print_symbolic_mode_t(unsigned int);
 extern void print_numeric_umode_t(unsigned short);
 extern void print_numeric_long_umask(unsigned long);
 extern void print_dev_t(unsigned long long dev);
+extern void print_abnormal_hi(kernel_ulong_t);
 
 extern void
 dumpiov_in_msghdr(struct tcb *, kernel_ulong_t addr, kernel_ulong_t data_size);
@@ -571,7 +579,7 @@
 printpath(struct tcb *, kernel_ulong_t addr);
 
 #define TIMESPEC_TEXT_BUFSIZE \
-		(sizeof(intmax_t)*3 * 2 + sizeof("{tv_sec=%jd, tv_nsec=%jd}"))
+		(sizeof(long long) * 3 * 2 + sizeof("{tv_sec=-, tv_nsec=}"))
 extern void printfd(struct tcb *, int);
 extern void print_sockaddr(struct tcb *tcp, const void *, int);
 extern bool print_sockaddr_by_inode(const unsigned long, const enum sock_proto);
@@ -585,6 +593,8 @@
 
 extern void
 print_sigset_addr_len(struct tcb *, kernel_ulong_t addr, kernel_ulong_t len);
+extern void
+print_sigset_addr(struct tcb *, kernel_ulong_t addr);
 
 extern const char *sprintsigmask_n(const char *, const void *, unsigned int);
 #define tprintsigmask_addr(prefix, mask) \
@@ -635,6 +645,7 @@
 DECL_IOCTL(dm);
 DECL_IOCTL(file);
 DECL_IOCTL(fs_x);
+DECL_IOCTL(nsfs);
 DECL_IOCTL(ptp);
 DECL_IOCTL(scsi);
 DECL_IOCTL(term);
@@ -707,7 +718,7 @@
 extern void printrusage32(struct tcb *, kernel_ulong_t);
 extern const char *sprint_timeval32(struct tcb *tcp, kernel_ulong_t);
 extern void print_timeval32(struct tcb *tcp, kernel_ulong_t);
-extern void print_timeval32_pair(struct tcb *tcp, kernel_ulong_t);
+extern void print_timeval32_utimes(struct tcb *tcp, kernel_ulong_t);
 extern void print_itimerval32(struct tcb *tcp, kernel_ulong_t);
 #endif
 
@@ -738,6 +749,8 @@
 extern void tabto(void);
 extern void tprintf(const char *fmt, ...) ATTRIBUTE_FORMAT((printf, 1, 2));
 extern void tprints(const char *str);
+extern void tprintf_comment(const char *fmt, ...) ATTRIBUTE_FORMAT((printf, 1, 2));
+extern void tprints_comment(const char *str);
 
 #if SUPPORTED_PERSONALITIES > 1
 extern void set_personality(int personality);
diff --git a/desc.c b/desc.c
index 4882469..d52afc4 100644
--- a/desc.c
+++ b/desc.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/dirent.c b/dirent.c
index 2ba6fe7..d413ed6 100644
--- a/dirent.c
+++ b/dirent.c
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -78,13 +79,13 @@
 
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
-		tprints(", ");
 		return 0;
 	}
 
 	const unsigned int count = tcp->u_arg[2];
 
 	if (syserror(tcp) || !verbose(tcp)) {
+		tprints(", ");
 		printaddr(tcp->u_arg[1]);
 		tprintf(", %u", count);
 		return 0;
@@ -101,6 +102,7 @@
 	if (len) {
 		buf = malloc(len);
 		if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
+			tprints(", ");
 			printaddr(tcp->u_arg[1]);
 			tprintf(", %u", count);
 			free(buf);
@@ -110,8 +112,9 @@
 		buf = NULL;
 	}
 
+	tprints(",");
 	if (!abbrev(tcp))
-		tprints("[");
+		tprints(" [");
 	for (i = 0; len && i <= len - sizeof(kernel_dirent); ) {
 		kernel_dirent *d = (kernel_dirent *) &buf[i];
 
@@ -143,7 +146,7 @@
 		}
 		dents++;
 		if (d->d_reclen < sizeof(kernel_dirent)) {
-			tprints("/* d_reclen < sizeof(struct dirent) */");
+			tprints_comment("d_reclen < sizeof(struct dirent)");
 			break;
 		}
 		i += d->d_reclen;
@@ -151,7 +154,7 @@
 	if (!abbrev(tcp))
 		tprints("]");
 	else
-		tprintf("/* %u entries */", dents);
+		tprintf_comment("%u entries", dents);
 	tprintf(", %u", count);
 	free(buf);
 	return 0;
diff --git a/dirent64.c b/dirent64.c
index 448a2f1..e2a4253 100644
--- a/dirent64.c
+++ b/dirent64.c
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -46,13 +47,13 @@
 
 	if (entering(tcp)) {
 		printfd(tcp, tcp->u_arg[0]);
-		tprints(", ");
 		return 0;
 	}
 
 	const unsigned int count = tcp->u_arg[2];
 
 	if (syserror(tcp) || !verbose(tcp)) {
+		tprints(", ");
 		printaddr(tcp->u_arg[1]);
 		tprintf(", %u", count);
 		return 0;
@@ -69,6 +70,7 @@
 	if (len) {
 		buf = malloc(len);
 		if (!buf || umoven(tcp, tcp->u_arg[1], len, buf) < 0) {
+			tprints(", ");
 			printaddr(tcp->u_arg[1]);
 			tprintf(", %u", count);
 			free(buf);
@@ -78,8 +80,9 @@
 		buf = NULL;
 	}
 
+	tprints(",");
 	if (!abbrev(tcp))
-		tprints("[");
+		tprints(" [");
 	for (i = 0; len && i <= len - d_name_offset; ) {
 		struct dirent64 *d = (struct dirent64 *) &buf[i];
 		if (!abbrev(tcp)) {
@@ -110,7 +113,7 @@
 			tprints("}");
 		}
 		if (d->d_reclen < d_name_offset) {
-			tprints("/* d_reclen < offsetof(struct dirent64, d_name) */");
+			tprints_comment("d_reclen < offsetof(struct dirent64, d_name)");
 			break;
 		}
 		i += d->d_reclen;
@@ -119,7 +122,7 @@
 	if (!abbrev(tcp))
 		tprints("]");
 	else
-		tprintf("/* %u entries */", dents);
+		tprintf_comment("%u entries", dents);
 	tprintf(", %u", count);
 	free(buf);
 	return 0;
diff --git a/dm.c b/dm.c
index 7f85689..26dcb22 100644
--- a/dm.c
+++ b/dm.c
@@ -5,6 +5,7 @@
  * Copyright (c) 2016 Masatake Yamato <yamato@redhat.com>
  * Copyright (c) 2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -140,7 +141,7 @@
 		sizeof(struct dm_target_spec);
 	uint32_t i;
 	uint32_t offset = ioc->data_start;
-	uint32_t offset_end;
+	uint32_t offset_end = 0;
 
 	if (abbrev(tcp)) {
 		if (ioc->target_count)
@@ -150,20 +151,23 @@
 	}
 
 	for (i = 0; i < ioc->target_count; i++) {
-		struct dm_target_spec s;
+		tprints(", ");
+
+		if (i && offset <= offset_end)
+			goto misplaced;
 
 		offset_end = offset + target_spec_size;
 
 		if (offset_end <= offset || offset_end > ioc->data_size)
 			goto misplaced;
 
-		tprints(", ");
-
 		if (i >= max_strlen) {
 			tprints("...");
 			break;
 		}
 
+		struct dm_target_spec s;
+
 		if (umove_or_printaddr(tcp, addr + offset, &s))
 			break;
 
@@ -180,21 +184,19 @@
 		tprints(", string=");
 		printstr_ex(tcp, addr + offset_end, ioc->data_size - offset_end,
 			     QUOTE_0_TERMINATED);
-		tprintf("}");
+		tprints("}");
 
 		if (entering(tcp))
 			offset += s.next;
 		else
 			offset = ioc->data_start + s.next;
-
-		if (offset <= offset_end)
-			goto misplaced;
 	}
 
 	return;
 
 misplaced:
-	tprints(", /* misplaced struct dm_target_spec */ ...");
+	tprints("???");
+	tprints_comment("misplaced struct dm_target_spec");
 }
 
 bool
@@ -211,6 +213,16 @@
 dm_decode_dm_target_deps(struct tcb *const tcp, const kernel_ulong_t addr,
 			 const struct dm_ioctl *const ioc)
 {
+	if (ioc->data_start == ioc->data_size)
+		return;
+
+	tprints(", ");
+
+	if (abbrev(tcp)) {
+		tprints("...");
+		return;
+	}
+
 	static const uint32_t target_deps_dev_offs =
 		offsetof(struct dm_target_deps, dev);
 	uint64_t dev_buf;
@@ -219,13 +231,6 @@
 	uint32_t offset_end = offset + target_deps_dev_offs;
 	uint32_t space;
 
-	if (abbrev(tcp)) {
-		tprints(", ...");
-		return;
-	}
-
-	tprints(", ");
-
 	if (offset_end <= offset || offset_end > ioc->data_size)
 		goto misplaced;
 
@@ -247,7 +252,8 @@
 	return;
 
 misplaced:
-	tprints("/* misplaced struct dm_target_deps */ ...");
+	tprints("???");
+	tprints_comment("misplaced struct dm_target_deps");
 }
 
 static void
@@ -258,22 +264,28 @@
 		offsetof(struct dm_name_list, name);
 	struct dm_name_list s;
 	uint32_t offset = ioc->data_start;
-	uint32_t offset_end;
+	uint32_t offset_end = 0;
 	uint32_t count;
 
+	if (ioc->data_start == ioc->data_size)
+		return;
+
 	if (abbrev(tcp)) {
 		tprints(", ...");
 		return;
 	}
 
 	for (count = 0;; count++) {
+		tprints(", ");
+
+		if (count && offset <= offset_end)
+			goto misplaced;
+
 		offset_end = offset + name_list_name_offs;
 
 		if (offset_end <= offset || offset_end > ioc->data_size)
 			goto misplaced;
 
-		tprints(", ");
-
 		if (count >= max_strlen) {
 			tprints("...");
 			break;
@@ -281,10 +293,6 @@
 
 		if (umove_or_printaddr(tcp, addr + offset, &s))
 			break;
-		if (!count && !s.dev) {
-			tprints("/* no devices present */");
-			break;
-		}
 
 		tprints("{dev=");
 		print_dev_t(s.dev);
@@ -298,14 +306,13 @@
 			break;
 
 		offset += s.next;
-		if (offset <= offset_end)
-			goto misplaced;
 	}
 
 	return;
 
 misplaced:
-	tprints(", /* misplaced struct dm_name_list */ ...");
+	tprints("???");
+	tprints_comment("misplaced struct dm_name_list");
 }
 
 static void
@@ -316,22 +323,28 @@
 		offsetof(struct dm_target_versions, name);
 	struct dm_target_versions s;
 	uint32_t offset = ioc->data_start;
-	uint32_t offset_end;
+	uint32_t offset_end = 0;
 	uint32_t count;
 
+	if (ioc->data_start == ioc->data_size)
+		return;
+
 	if (abbrev(tcp)) {
 		tprints(", ...");
 		return;
 	}
 
 	for (count = 0;; count++) {
+		tprints(", ");
+
+		if (count && offset <= offset_end)
+			goto misplaced;
+
 		offset_end = offset + target_vers_name_offs;
 
 		if (offset_end <= offset || offset_end > ioc->data_size)
 			goto misplaced;
 
-		tprints(", ");
-
 		if (count >= max_strlen) {
 			tprints("...");
 			break;
@@ -350,35 +363,37 @@
 			break;
 
 		offset += s.next;
-		if (offset <= offset_end)
-			goto misplaced;
 	}
 
 	return;
 
 misplaced:
-	tprints(", /* misplaced struct dm_target_versions */ ...");
+	tprints("???");
+	tprints_comment("misplaced struct dm_target_versions");
 }
 
 static void
 dm_decode_dm_target_msg(struct tcb *const tcp, const kernel_ulong_t addr,
 		        const struct dm_ioctl *const ioc)
 {
+	if (ioc->data_start == ioc->data_size)
+		return;
+
+	tprints(", ");
+
+	if (abbrev(tcp)) {
+		tprints("...");
+		return;
+	}
+
 	static const uint32_t target_msg_message_offs =
 		offsetof(struct dm_target_msg, message);
 	uint32_t offset = ioc->data_start;
 	uint32_t offset_end = offset + target_msg_message_offs;
 
-	if (abbrev(tcp)) {
-		tprints(", ...");
-		return;
-	}
-
 	if (offset_end > offset && offset_end <= ioc->data_size) {
 		struct dm_target_msg s;
 
-		tprints(", ");
-
 		if (umove_or_printaddr(tcp, addr + offset, &s))
 			return;
 
@@ -387,7 +402,8 @@
 			    QUOTE_0_TERMINATED);
 		tprints("}");
 	} else {
-		tprints(", /* misplaced struct dm_target_msg */");
+		tprints("???");
+		tprints_comment("misplaced struct dm_target_msg");
 	}
 }
 
@@ -395,19 +411,22 @@
 dm_decode_string(struct tcb *const tcp, const kernel_ulong_t addr,
 		 const struct dm_ioctl *const ioc)
 {
-	uint32_t offset = ioc->data_start;
+	tprints(", ");
 
 	if (abbrev(tcp)) {
-		tprints(", ...");
+		tprints("...");
 		return;
 	}
 
-	if (offset < ioc->data_size) {
-		tprints(", string=");
+	uint32_t offset = ioc->data_start;
+
+	if (offset <= ioc->data_size) {
+		tprints("string=");
 		printstr_ex(tcp, addr + offset, ioc->data_size - offset,
 			    QUOTE_0_TERMINATED);
 	} else {
-		tprints(", /* misplaced string */");
+		tprints("???");
+		tprints_comment("misplaced string");
 	}
 }
 
@@ -485,20 +504,20 @@
 	 * ioctl fields
 	 */
 	if (ioc->version[0] != DM_VERSION_MAJOR) {
-		tprints(", /* Unsupported device mapper ABI version */ ...");
+		tprints_comment("unsupported device mapper ABI version");
 		goto skip;
 	}
 
 	tprintf(", data_size=%u", ioc->data_size);
 
-	if (dm_ioctl_has_params(code))
-		tprintf(", data_start=%u", ioc->data_start);
-
 	if (ioc->data_size < offsetof(struct dm_ioctl, data)) {
-		tprints(", /* Incorrect data_size */ ...");
+		tprints_comment("data_size too small");
 		goto skip;
 	}
 
+	if (dm_ioctl_has_params(code))
+		tprintf(", data_start=%u", ioc->data_start);
+
 	dm_decode_device(code, ioc);
 	dm_decode_values(tcp, code, ioc);
 	dm_decode_flags(ioc);
diff --git a/epoll.c b/epoll.c
index 8dc7ab0..d5f2f55 100644
--- a/epoll.c
+++ b/epoll.c
@@ -2,6 +2,7 @@
  * Copyright (c) 2004-2007 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2004 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2005-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
diff --git a/errnoent.sh b/errnoent.sh
deleted file mode 100755
index 0b1b06a..0000000
--- a/errnoent.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-# Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.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.
-
-awk '
-$1 == "#define" && $2 ~ /^E[A-Z0-9_]+$/ && $3 ~ /^[0-9]+$/ {
-	errno[$3] = $2
-	if ($3 > max)
-		max = $3
-}
-END {
-	for (i = 0; i <= max; i++)
-		if (errno[i])
-			printf("[%3d] = \"%s\",\n", i, errno[i])
-}
-' "$@"
diff --git a/execve.c b/execve.c
index 6e45b11..5455b15 100644
--- a/execve.c
+++ b/execve.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2007 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2011-2012 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2010-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -78,10 +79,10 @@
 static void
 printargc(struct tcb *const tcp, kernel_ulong_t addr)
 {
-	if (!addr || !verbose(tcp)) {
-		printaddr(addr);
+	printaddr(addr);
+
+	if (!addr || !verbose(tcp))
 		return;
-	}
 
 	bool unterminated = false;
 	unsigned int count = 0;
@@ -89,17 +90,16 @@
 
 	for (; addr; addr += current_wordsize, ++count) {
 		if (umoven(tcp, addr, current_wordsize, &cp)) {
-			if (count) {
-				unterminated = true;
-				break;
-			}
-			printaddr(addr);
-			return;
+			if (!count)
+				return;
+
+			unterminated = true;
+			break;
 		}
 		if (!cp)
 			break;
 	}
-	tprintf("[/* %u var%s%s */]",
+	tprintf_comment("%u var%s%s",
 		count, count == 1 ? "" : "s",
 		unterminated ? ", unterminated" : "");
 }
diff --git a/fadvise.c b/fadvise.c
index f0d057b..292a061 100644
--- a/fadvise.c
+++ b/fadvise.c
@@ -5,6 +5,7 @@
  * Copyright (c) 2009 Andreas Schwab <schwab@redhat.com>
  * Copyright (c) 2009 Kirill A. Shutemov <kirill@shutemov.name>
  * Copyright (c) 2011-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/fanotify.c b/fanotify.c
index 203e9d2..a9ec0e9 100644
--- a/fanotify.c
+++ b/fanotify.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/fcntl.c b/fcntl.c
index 74168c6..a42489b 100644
--- a/fcntl.c
+++ b/fcntl.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/fetch_seccomp_fprog.c b/fetch_seccomp_fprog.c
index e483e81..0aedb20 100644
--- a/fetch_seccomp_fprog.c
+++ b/fetch_seccomp_fprog.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/fetch_struct_flock.c b/fetch_struct_flock.c
index bb24876..1a57edf 100644
--- a/fetch_struct_flock.c
+++ b/fetch_struct_flock.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/fetch_struct_stat.c b/fetch_struct_stat.c
index 50d1028..317d381 100644
--- a/fetch_struct_stat.c
+++ b/fetch_struct_stat.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
@@ -65,8 +66,10 @@
 
 #ifdef HAVE_STRUCT_STAT_ST_MTIME_NSEC
 # define TIME_NSEC(arg) zero_extend_signed_to_ull(arg)
+# define HAVE_NSEC true
 #else
 # define TIME_NSEC(arg) 0
+# define HAVE_NSEC false
 #endif
 
 MPERS_PRINTER_DECL(bool, fetch_struct_stat,
@@ -94,6 +97,7 @@
 	dst->atime_nsec = TIME_NSEC(buf.st_atime_nsec);
 	dst->ctime_nsec = TIME_NSEC(buf.st_ctime_nsec);
 	dst->mtime_nsec = TIME_NSEC(buf.st_mtime_nsec);
+	dst->has_nsec = HAVE_NSEC;
 	return true;
 #else /* !HAVE_STRUCT_STAT */
 	printaddr(addr);
diff --git a/fetch_struct_stat64.c b/fetch_struct_stat64.c
index b7e4805..3480c10 100644
--- a/fetch_struct_stat64.c
+++ b/fetch_struct_stat64.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
@@ -63,8 +64,10 @@
 
 #ifdef HAVE_STRUCT_STAT64_ST_MTIME_NSEC
 # define TIME_NSEC(arg) zero_extend_signed_to_ull(arg)
+# define HAVE_NSEC true
 #else
 # define TIME_NSEC(arg) 0
+# define HAVE_NSEC false
 #endif
 
 MPERS_PRINTER_DECL(bool, fetch_struct_stat64,
@@ -92,6 +95,7 @@
 	dst->atime_nsec = TIME_NSEC(buf.st_atime_nsec);
 	dst->ctime_nsec = TIME_NSEC(buf.st_ctime_nsec);
 	dst->mtime_nsec = TIME_NSEC(buf.st_mtime_nsec);
+	dst->has_nsec = HAVE_NSEC;
 	return true;
 #else /* !HAVE_STRUCT_STAT64 */
 	printaddr(addr);
diff --git a/file_handle.c b/file_handle.c
index f2f0b22..46a61c5 100644
--- a/file_handle.c
+++ b/file_handle.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/flock.c b/flock.c
index 6ec43db..c714775 100644
--- a/flock.c
+++ b/flock.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/flock.h b/flock.h
index afa5148..00e4906 100644
--- a/flock.h
+++ b/flock.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/futex.c b/futex.c
index 5267dc4..16ccddb 100644
--- a/futex.c
+++ b/futex.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2007-2008 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2009 Andreas Schwab <schwab@redhat.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -51,6 +52,7 @@
 	const unsigned int val = tcp->u_arg[2];
 	const unsigned int val2 = tcp->u_arg[3];
 	const unsigned int val3 = tcp->u_arg[5];
+	const char *comment;
 
 	printaddr(uaddr);
 	tprints(", ");
@@ -94,15 +96,15 @@
 		tprints(", ");
 		if ((val3 >> 28) & 8)
 			tprints("FUTEX_OP_OPARG_SHIFT<<28|");
-		if (printxval(futexwakeops, (val3 >> 28) & 0x7, NULL))
-			tprints("<<28");
-		else
-			tprints("<<28 /* FUTEX_OP_??? */");
+		comment = printxval(futexwakeops, (val3 >> 28) & 0x7, NULL)
+			? NULL : "FUTEX_OP_???";
+		tprints("<<28");
+		tprints_comment(comment);
 		tprintf("|%#x<<12|", (val3 >> 12) & 0xfff);
-		if (printxval(futexwakecmps, (val3 >> 24) & 0xf, NULL))
-			tprints("<<24");
-		else
-			tprints("<<24 /* FUTEX_OP_CMP_??? */");
+		comment = printxval(futexwakecmps, (val3 >> 24) & 0xf, NULL)
+			? NULL : "FUTEX_OP_CMP_???";
+		tprints("<<24");
+		tprints_comment(comment);
 		tprintf("|%#x", val3 & 0xfff);
 		break;
 	case FUTEX_WAIT_REQUEUE_PI:
diff --git a/gcc_compat.h b/gcc_compat.h
index fe3f904..08e8117 100644
--- a/gcc_compat.h
+++ b/gcc_compat.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/io.c b/io.c
index c41b66f..acac455 100644
--- a/io.c
+++ b/io.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -94,7 +95,7 @@
 				len = c->data_size;
 			if (c->data_size != (kernel_ulong_t) -1)
 				c->data_size -= len;
-			decode_netlink(tcp, iov[0], iov[1]);
+			decode_netlink(tcp, iov[0], len);
 			break;
 		default:
 			printaddr(iov[0]);
@@ -224,11 +225,6 @@
 	return do_preadv(tcp, -1);
 }
 
-SYS_FUNC(preadv2)
-{
-	return do_preadv(tcp, 5);
-}
-
 static int
 do_pwritev(struct tcb *tcp, const int flags_arg)
 {
@@ -253,9 +249,29 @@
 	return do_pwritev(tcp, -1);
 }
 
+/*
+ * x32 is the only architecture where preadv2 takes 5 arguments
+ * instead of 6, see preadv64v2 in kernel sources.
+ * Likewise, x32 is the only architecture where pwritev2 takes 5 arguments
+ * instead of 6, see pwritev64v2 in kernel sources.
+ */
+
+#if defined X86_64
+# define PREADV2_PWRITEV2_FLAGS_ARG_NO (current_personality == 2 ? 4 : 5)
+#elif defined X32
+# define PREADV2_PWRITEV2_FLAGS_ARG_NO (current_personality == 0 ? 4 : 5)
+#else
+# define PREADV2_PWRITEV2_FLAGS_ARG_NO 5
+#endif
+
+SYS_FUNC(preadv2)
+{
+	return do_preadv(tcp, PREADV2_PWRITEV2_FLAGS_ARG_NO);
+}
+
 SYS_FUNC(pwritev2)
 {
-	return do_pwritev(tcp, 5);
+	return do_pwritev(tcp, PREADV2_PWRITEV2_FLAGS_ARG_NO);
 }
 
 #include "xlat/splice_flags.h"
diff --git a/ioctl.c b/ioctl.c
index aa1880f..264c7c0 100644
--- a/ioctl.c
+++ b/ioctl.c
@@ -3,6 +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-2001 Wichert Akkerman <wichert@cistron.nl>
+ * Copyright (c) 1999-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -280,6 +281,8 @@
 	case 0x94:
 		return btrfs_ioctl(tcp, code, arg);
 #endif
+	case 0xb7:
+		return nsfs_ioctl(tcp, code, arg);
 #ifdef HAVE_LINUX_DM_IOCTL_H
 	case 0xfd:
 		return dm_ioctl(tcp, code, arg);
diff --git a/ioctlent0.h b/ioctlent0.h
index e6ffddb..d075f3b 100644
--- a/ioctlent0.h
+++ b/ioctlent0.h
@@ -574,6 +574,8 @@
 { "HPET_IE_OFF", 0x00006802 },
 { "HPET_EPI", 0x00006804 },
 { "HPET_DPI", 0x00006805 },
+{ "I915_PERF_IOCTL_ENABLE", 0x00006900 },
+{ "I915_PERF_IOCTL_DISABLE", 0x00006901 },
 { "KYRO_IOCTL_OVERLAY_CREATE", 0x00006b00 },
 { "KYRO_IOCTL_OVERLAY_VIEWPORT_SET", 0x00006b01 },
 { "KYRO_IOCTL_SET_VIDEO_MODE", 0x00006b02 },
@@ -880,8 +882,11 @@
 { "VHOST_RESET_OWNER", 0x0000af02 },
 { "BT_BMC_IOCTL_SMS_ATN", 0x0000b100 },
 { "PPPOEIOCDFWD", 0x0000b101 },
+{ "RPMSG_DESTROY_EPT_IOCTL", 0x0000b502 },
 { "NS_GET_USERNS", 0x0000b701 },
 { "NS_GET_PARENT", 0x0000b702 },
+{ "NS_GET_NSTYPE", 0x0000b703 },
+{ "NS_GET_OWNER_UID", 0x0000b704 },
 { "IOCTL_EVTCHN_RESTRICT_DOMID", 0x00024506 },
 { "IOCTL_EVTCHN_BIND_VIRQ", 0x00044500 },
 { "IOCTL_EVTCHN_BIND_UNBOUND_PORT", 0x00044502 },
@@ -1436,6 +1441,7 @@
 { "DRM_IOCTL_SIS_FB_INIT", 0x40106456 },
 { "DRM_IOCTL_RADEON_SETPARAM", 0x40106459 },
 { "TUNER_SET_CONFIG", 0x4010645c },
+{ "DRM_IOCTL_I915_PERF_OPEN", 0x40106476 },
 { "FS_IOC_GET_ENCRYPTION_PWSALT", 0x40106614 },
 { "HSC_SET_TX", 0x40106b15 },
 { "HSC_GET_TX", 0x40106b16 },
@@ -1576,6 +1582,7 @@
 { "PHN_SETREGS", 0x40287008 },
 { "RTC_WKALM_SET", 0x4028700f },
 { "VHOST_SET_VRING_ADDR", 0x4028af11 },
+{ "RPMSG_CREATE_EPT_IOCTL", 0x4028b501 },
 { "NVM_DEV_INIT", 0x402c4c24 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", 0x402c5342 },
 { "TCSETS2", 0x402c542b },
@@ -1635,6 +1642,8 @@
 { "SET_ARRAY_INFO", 0x40480923 },
 { "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 },
 { "SNDRV_TIMER_IOCTL_GPARAMS", 0x40485404 },
+{ "BC_TRANSACTION_SG", 0x40486311 },
+{ "BC_REPLY_SG", 0x40486312 },
 { "BTRFS_IOC_SEND", 0x40489426 },
 { "KVM_SET_GUEST_DEBUG", 0x4048ae9b },
 { "KVM_S390_IRQ", 0x4048aeb4 },
@@ -1678,11 +1687,23 @@
 { "ASHMEM_SET_NAME", 0x41007701 },
 { "BTRFS_IOC_SET_FSLABEL", 0x41009432 },
 { "USBDEVFS_GETDRIVER", 0x41045508 },
+{ "IOC_OPAL_TAKE_OWNERSHIP", 0x410870de },
+{ "IOC_OPAL_REVERT_TPR", 0x410870e2 },
 { "CA_SEND_MSG", 0x410c6f85 },
+{ "IOC_OPAL_ACTIVATE_USR", 0x411070e1 },
+{ "IOC_OPAL_ENABLE_DISABLE_MBR", 0x411070e5 },
+{ "IOC_OPAL_ERASE_LR", 0x411070e6 },
+{ "IOC_OPAL_SECURE_ERASE_LR", 0x411070e7 },
+{ "IOC_OPAL_SAVE", 0x411870dc },
+{ "IOC_OPAL_LOCK_UNLOCK", 0x411870dd },
+{ "IOC_OPAL_ACTIVATE_LSP", 0x411870df },
+{ "IOC_OPAL_ADD_USR_TO_LR", 0x411870e4 },
+{ "IOC_OPAL_LR_SETUP", 0x412870e3 },
 { "KVM_SET_SREGS", 0x4138ae84 },
 { "KVM_SET_XCRS", 0x4188aea7 },
 { "KVM_SET_FPU", 0x41a0ae8d },
 { "SNDRV_EMU10K1_IOCTL_CODE_POKE", 0x41b04811 },
+{ "IOC_OPAL_SET_PW", 0x422070e0 },
 { "PTP_SYS_OFFSET", 0x43403d05 },
 { "JSIOCSBTNMAP", 0x44006a33 },
 { "KVM_SET_LAPIC", 0x4400ae8f },
@@ -2059,6 +2080,8 @@
 { "GENWQE_READ_REG16", 0x8010a522 },
 { "UFFDIO_UNREGISTER", 0x8010aa01 },
 { "UFFDIO_WAKE", 0x8010aa02 },
+{ "KVM_PPC_RESIZE_HPT_PREPARE", 0x8010aead },
+{ "KVM_PPC_RESIZE_HPT_COMMIT", 0x8010aeae },
 { "FDGETMAXERRS", 0x8014020e },
 { "GET_DISK_INFO", 0x80140912 },
 { "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -2680,6 +2703,7 @@
 { "GENWQE_SLU_READ", 0xc038a551 },
 { "PTP_SYS_OFFSET_PRECISE", 0xc0403d08 },
 { "CAPI_GET_PROFILE", 0xc0404309 },
+{ "NVME_NVM_IOCTL_SUBMIT_VIO", 0xc0404c42 },
 { "ND_IOCTL_CALL", 0xc0404e0a },
 { "SNDRV_CTL_IOCTL_ELEM_REMOVE", 0xc0405519 },
 { "VIDIOC_ENUM_FMT", 0xc0405602 },
@@ -2719,6 +2743,8 @@
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 0xc04c5349 },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
 { "CEC_ADAP_G_CAPS", 0xc04c6100 },
+{ "NVME_NVM_IOCTL_ADMIN_VIO", 0xc0504c41 },
+{ "NVME_NVM_IOCTL_IO_VIO", 0xc0504c43 },
 { "SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 0xc0505350 },
 { "SNDRV_TIMER_IOCTL_GSTATUS", 0xc0505405 },
 { "SNDRV_CTL_IOCTL_ELEM_LIST", 0xc0505510 },
diff --git a/ioctlent1.h b/ioctlent1.h
index 8e963ae..3bdb14f 100644
--- a/ioctlent1.h
+++ b/ioctlent1.h
@@ -574,6 +574,8 @@
 { "HPET_IE_OFF", 0x00006802 },
 { "HPET_EPI", 0x00006804 },
 { "HPET_DPI", 0x00006805 },
+{ "I915_PERF_IOCTL_ENABLE", 0x00006900 },
+{ "I915_PERF_IOCTL_DISABLE", 0x00006901 },
 { "KYRO_IOCTL_OVERLAY_CREATE", 0x00006b00 },
 { "KYRO_IOCTL_OVERLAY_VIEWPORT_SET", 0x00006b01 },
 { "KYRO_IOCTL_SET_VIDEO_MODE", 0x00006b02 },
@@ -880,8 +882,11 @@
 { "VHOST_RESET_OWNER", 0x0000af02 },
 { "BT_BMC_IOCTL_SMS_ATN", 0x0000b100 },
 { "PPPOEIOCDFWD", 0x0000b101 },
+{ "RPMSG_DESTROY_EPT_IOCTL", 0x0000b502 },
 { "NS_GET_USERNS", 0x0000b701 },
 { "NS_GET_PARENT", 0x0000b702 },
+{ "NS_GET_NSTYPE", 0x0000b703 },
+{ "NS_GET_OWNER_UID", 0x0000b704 },
 { "IOCTL_EVTCHN_RESTRICT_DOMID", 0x00024506 },
 { "IOCTL_EVTCHN_BIND_VIRQ", 0x00044500 },
 { "IOCTL_EVTCHN_BIND_UNBOUND_PORT", 0x00044502 },
@@ -1449,6 +1454,7 @@
 { "DRM_IOCTL_I915_HWS_ADDR", 0x40106451 },
 { "DRM_IOCTL_I915_GEM_INIT", 0x40106453 },
 { "DRM_IOCTL_SIS_AGP_FREE", 0x40106455 },
+{ "DRM_IOCTL_I915_PERF_OPEN", 0x40106476 },
 { "FS_IOC_GET_ENCRYPTION_PWSALT", 0x40106614 },
 { "HSC_SET_TX", 0x40106b15 },
 { "HSC_GET_TX", 0x40106b16 },
@@ -1577,6 +1583,7 @@
 { "PHN_SETREGS", 0x40287008 },
 { "RTC_WKALM_SET", 0x4028700f },
 { "VHOST_SET_VRING_ADDR", 0x4028af11 },
+{ "RPMSG_CREATE_EPT_IOCTL", 0x4028b501 },
 { "EVIOCSFF", 0x402c4580 },
 { "NVM_DEV_INIT", 0x402c4c24 },
 { "NVME_IOCTL_SUBMIT_IO", 0x402c4e42 },
@@ -1634,6 +1641,8 @@
 { "BTRFS_IOC_SEND", 0x40449426 },
 { "SET_ARRAY_INFO", 0x40480923 },
 { "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 },
+{ "BC_TRANSACTION_SG", 0x40486311 },
+{ "BC_REPLY_SG", 0x40486312 },
 { "KVM_SET_GUEST_DEBUG", 0x4048ae9b },
 { "KVM_S390_IRQ", 0x4048aeb4 },
 { "GSMIOC_SETCONF", 0x404c4701 },
@@ -1676,11 +1685,23 @@
 { "ASHMEM_SET_NAME", 0x41007701 },
 { "BTRFS_IOC_SET_FSLABEL", 0x41009432 },
 { "USBDEVFS_GETDRIVER", 0x41045508 },
+{ "IOC_OPAL_TAKE_OWNERSHIP", 0x410870de },
+{ "IOC_OPAL_REVERT_TPR", 0x410870e2 },
 { "CA_SEND_MSG", 0x410c6f85 },
+{ "IOC_OPAL_ACTIVATE_USR", 0x411070e1 },
+{ "IOC_OPAL_ENABLE_DISABLE_MBR", 0x411070e5 },
+{ "IOC_OPAL_ERASE_LR", 0x411070e6 },
+{ "IOC_OPAL_SECURE_ERASE_LR", 0x411070e7 },
+{ "IOC_OPAL_SAVE", 0x411870dc },
+{ "IOC_OPAL_LOCK_UNLOCK", 0x411870dd },
+{ "IOC_OPAL_ACTIVATE_LSP", 0x411870df },
+{ "IOC_OPAL_ADD_USR_TO_LR", 0x411870e4 },
+{ "IOC_OPAL_LR_SETUP", 0x412870e3 },
 { "KVM_SET_SREGS", 0x4138ae84 },
 { "KVM_SET_XCRS", 0x4188aea7 },
 { "SNDRV_EMU10K1_IOCTL_CODE_POKE", 0x418c4811 },
 { "KVM_SET_FPU", 0x41a0ae8d },
+{ "IOC_OPAL_SET_PW", 0x422070e0 },
 { "PTP_SYS_OFFSET", 0x43403d05 },
 { "JSIOCSBTNMAP", 0x44006a33 },
 { "KVM_SET_LAPIC", 0x4400ae8f },
@@ -2061,6 +2082,8 @@
 { "GENWQE_READ_REG16", 0x8010a522 },
 { "UFFDIO_UNREGISTER", 0x8010aa01 },
 { "UFFDIO_WAKE", 0x8010aa02 },
+{ "KVM_PPC_RESIZE_HPT_PREPARE", 0x8010aead },
+{ "KVM_PPC_RESIZE_HPT_COMMIT", 0x8010aeae },
 { "FDGETMAXERRS", 0x8014020e },
 { "GET_DISK_INFO", 0x80140912 },
 { "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -2676,6 +2699,7 @@
 { "BLKTRACESETUP", 0xc0401273 },
 { "PTP_SYS_OFFSET_PRECISE", 0xc0403d08 },
 { "CAPI_GET_PROFILE", 0xc0404309 },
+{ "NVME_NVM_IOCTL_SUBMIT_VIO", 0xc0404c42 },
 { "ND_IOCTL_CALL", 0xc0404e0a },
 { "SNDRV_TIMER_IOCTL_GSTATUS", 0xc0405405 },
 { "SNDRV_CTL_IOCTL_ELEM_REMOVE", 0xc0405519 },
@@ -2720,6 +2744,8 @@
 { "VIDIOC_ENUMINPUT", 0xc04c561a },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
 { "CEC_ADAP_G_CAPS", 0xc04c6100 },
+{ "NVME_NVM_IOCTL_ADMIN_VIO", 0xc0504c41 },
+{ "NVME_NVM_IOCTL_IO_VIO", 0xc0504c43 },
 { "SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 0xc0505350 },
 { "CEC_DQEVENT", 0xc0506107 },
 { "DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY", 0xc0506470 },
diff --git a/ioctlent2.h b/ioctlent2.h
index 6811dc2..5549d01 100644
--- a/ioctlent2.h
+++ b/ioctlent2.h
@@ -574,6 +574,8 @@
 { "HPET_IE_OFF", 0x00006802 },
 { "HPET_EPI", 0x00006804 },
 { "HPET_DPI", 0x00006805 },
+{ "I915_PERF_IOCTL_ENABLE", 0x00006900 },
+{ "I915_PERF_IOCTL_DISABLE", 0x00006901 },
 { "KYRO_IOCTL_OVERLAY_CREATE", 0x00006b00 },
 { "KYRO_IOCTL_OVERLAY_VIEWPORT_SET", 0x00006b01 },
 { "KYRO_IOCTL_SET_VIDEO_MODE", 0x00006b02 },
@@ -880,8 +882,11 @@
 { "VHOST_RESET_OWNER", 0x0000af02 },
 { "BT_BMC_IOCTL_SMS_ATN", 0x0000b100 },
 { "PPPOEIOCDFWD", 0x0000b101 },
+{ "RPMSG_DESTROY_EPT_IOCTL", 0x0000b502 },
 { "NS_GET_USERNS", 0x0000b701 },
 { "NS_GET_PARENT", 0x0000b702 },
+{ "NS_GET_NSTYPE", 0x0000b703 },
+{ "NS_GET_OWNER_UID", 0x0000b704 },
 { "IOCTL_EVTCHN_RESTRICT_DOMID", 0x00024506 },
 { "IOCTL_EVTCHN_BIND_VIRQ", 0x00044500 },
 { "IOCTL_EVTCHN_BIND_UNBOUND_PORT", 0x00044502 },
@@ -1447,6 +1452,7 @@
 { "DRM_IOCTL_I915_GEM_INIT", 0x40106453 },
 { "DRM_IOCTL_SIS_AGP_FREE", 0x40106455 },
 { "DRM_IOCTL_RADEON_SETPARAM", 0x40106459 },
+{ "DRM_IOCTL_I915_PERF_OPEN", 0x40106476 },
 { "FS_IOC_GET_ENCRYPTION_PWSALT", 0x40106614 },
 { "HSC_SET_TX", 0x40106b15 },
 { "HSC_GET_TX", 0x40106b16 },
@@ -1577,6 +1583,7 @@
 { "PHN_SETREGS", 0x40287008 },
 { "RTC_WKALM_SET", 0x4028700f },
 { "VHOST_SET_VRING_ADDR", 0x4028af11 },
+{ "RPMSG_CREATE_EPT_IOCTL", 0x4028b501 },
 { "EVIOCSFF", 0x402c4580 },
 { "NVM_DEV_INIT", 0x402c4c24 },
 { "SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", 0x402c5342 },
@@ -1633,6 +1640,8 @@
 { "DRM_IOCTL_I915_INIT", 0x40446440 },
 { "SET_ARRAY_INFO", 0x40480923 },
 { "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 },
+{ "BC_TRANSACTION_SG", 0x40486311 },
+{ "BC_REPLY_SG", 0x40486312 },
 { "BTRFS_IOC_SEND", 0x40489426 },
 { "KVM_SET_GUEST_DEBUG", 0x4048ae9b },
 { "KVM_S390_IRQ", 0x4048aeb4 },
@@ -1676,11 +1685,23 @@
 { "ASHMEM_SET_NAME", 0x41007701 },
 { "BTRFS_IOC_SET_FSLABEL", 0x41009432 },
 { "USBDEVFS_GETDRIVER", 0x41045508 },
+{ "IOC_OPAL_TAKE_OWNERSHIP", 0x410870de },
+{ "IOC_OPAL_REVERT_TPR", 0x410870e2 },
 { "CA_SEND_MSG", 0x410c6f85 },
+{ "IOC_OPAL_ACTIVATE_USR", 0x411070e1 },
+{ "IOC_OPAL_ENABLE_DISABLE_MBR", 0x411070e5 },
+{ "IOC_OPAL_ERASE_LR", 0x411070e6 },
+{ "IOC_OPAL_SECURE_ERASE_LR", 0x411070e7 },
+{ "IOC_OPAL_SAVE", 0x411870dc },
+{ "IOC_OPAL_LOCK_UNLOCK", 0x411870dd },
+{ "IOC_OPAL_ACTIVATE_LSP", 0x411870df },
+{ "IOC_OPAL_ADD_USR_TO_LR", 0x411870e4 },
+{ "IOC_OPAL_LR_SETUP", 0x412870e3 },
 { "KVM_SET_SREGS", 0x4138ae84 },
 { "KVM_SET_XCRS", 0x4188aea7 },
 { "SNDRV_EMU10K1_IOCTL_CODE_POKE", 0x418c4811 },
 { "KVM_SET_FPU", 0x41a0ae8d },
+{ "IOC_OPAL_SET_PW", 0x422070e0 },
 { "PTP_SYS_OFFSET", 0x43403d05 },
 { "JSIOCSBTNMAP", 0x44006a33 },
 { "KVM_SET_LAPIC", 0x4400ae8f },
@@ -2060,6 +2081,8 @@
 { "GENWQE_READ_REG16", 0x8010a522 },
 { "UFFDIO_UNREGISTER", 0x8010aa01 },
 { "UFFDIO_WAKE", 0x8010aa02 },
+{ "KVM_PPC_RESIZE_HPT_PREPARE", 0x8010aead },
+{ "KVM_PPC_RESIZE_HPT_COMMIT", 0x8010aeae },
 { "FDGETMAXERRS", 0x8014020e },
 { "GET_DISK_INFO", 0x80140912 },
 { "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -2675,6 +2698,7 @@
 { "VIDIOC_OMAP3ISP_PRV_CFG", 0xc03c56c2 },
 { "PTP_SYS_OFFSET_PRECISE", 0xc0403d08 },
 { "CAPI_GET_PROFILE", 0xc0404309 },
+{ "NVME_NVM_IOCTL_SUBMIT_VIO", 0xc0404c42 },
 { "ND_IOCTL_CALL", 0xc0404e0a },
 { "SNDRV_TIMER_IOCTL_GSTATUS", 0xc0405405 },
 { "SNDRV_CTL_IOCTL_ELEM_REMOVE", 0xc0405519 },
@@ -2715,6 +2739,8 @@
 { "SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 0xc04c5349 },
 { "VIDIOC_OMAP3ISP_AF_CFG", 0xc04c56c5 },
 { "CEC_ADAP_G_CAPS", 0xc04c6100 },
+{ "NVME_NVM_IOCTL_ADMIN_VIO", 0xc0504c41 },
+{ "NVME_NVM_IOCTL_IO_VIO", 0xc0504c43 },
 { "SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 0xc0505350 },
 { "VIDIOC_QUERYBUF", 0xc0505609 },
 { "VIDIOC_QBUF", 0xc050560f },
diff --git a/ioctlsort.c b/ioctlsort.c
index 079f21e..9bab978 100644
--- a/ioctlsort.c
+++ b/ioctlsort.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2001 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2004-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 1999-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/ioprio.c b/ioprio.c
index 0b83be7..682a7b3 100644
--- a/ioprio.c
+++ b/ioprio.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/ipc_defs.h b/ipc_defs.h
index e0043ce..fc5d88f 100644
--- a/ipc_defs.h
+++ b/ipc_defs.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2003 Roland McGrath <roland@redhat.com>
+ * Copyright (c) 2003-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/ipc_msg.c b/ipc_msg.c
index a5f9e83..dc898a8 100644
--- a/ipc_msg.c
+++ b/ipc_msg.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/ipc_msgctl.c b/ipc_msgctl.c
index f289c30..eb3641c 100644
--- a/ipc_msgctl.c
+++ b/ipc_msgctl.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/ipc_sem.c b/ipc_sem.c
index 4a70378..d5f4190 100644
--- a/ipc_sem.c
+++ b/ipc_sem.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/ipc_shm.c b/ipc_shm.c
index c4bdb87..7284b18 100644
--- a/ipc_shm.c
+++ b/ipc_shm.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/ipc_shmctl.c b/ipc_shmctl.c
index ff76af8..18b92b3 100644
--- a/ipc_shmctl.c
+++ b/ipc_shmctl.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/kcmp.c b/kcmp.c
index 97795e6..8c0994b 100644
--- a/kcmp.c
+++ b/kcmp.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/kernel_types.h b/kernel_types.h
index 5a27613..373a3e0 100644
--- a/kernel_types.h
+++ b/kernel_types.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/kexec.c b/kexec.c
index 44d5bd1..c11113d 100644
--- a/kexec.c
+++ b/kexec.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/keyctl.c b/keyctl.c
index c270221..3165fcd 100644
--- a/keyctl.c
+++ b/keyctl.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/ldt.c b/ldt.c
index 91bdf15..81bc8ae 100644
--- a/ldt.c
+++ b/ldt.c
@@ -6,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/linux/32/ioctls_inc_align16.h b/linux/32/ioctls_inc_align16.h
index 71c9d18..d509dc6 100644
--- a/linux/32/ioctls_inc_align16.h
+++ b/linux/32/ioctls_inc_align16.h
@@ -264,11 +264,14 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1a },
@@ -451,8 +454,10 @@
 { "linux/android/binder.h", "BC_REGISTER_LOOPER", _IOC_NONE, 0x630b, 0x00 },
 { "linux/android/binder.h", "BC_RELEASE", _IOC_WRITE, 0x6306, 0x04 },
 { "linux/android/binder.h", "BC_REPLY", _IOC_WRITE, 0x6301, 0x40 },
+{ "linux/android/binder.h", "BC_REPLY_SG", _IOC_WRITE, 0x6312, 0x48 },
 { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
 { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
+{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
 { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -1315,6 +1320,9 @@
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_IO_VIO", _IOC_READ|_IOC_WRITE, 0x4c43, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_SUBMIT_VIO", _IOC_READ|_IOC_WRITE, 0x4c42, 0x40 },
 { "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
 { "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
 { "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
@@ -1455,6 +1463,8 @@
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nsfs.h", "NS_GET_NSTYPE", _IOC_NONE, 0xb703, 0x00 },
+{ "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
@@ -1665,6 +1675,8 @@
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
 { "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
+{ "linux/rpmsg.h", "RPMSG_CREATE_EPT_IOCTL", _IOC_WRITE, 0xb501, 0x28 },
+{ "linux/rpmsg.h", "RPMSG_DESTROY_EPT_IOCTL", _IOC_NONE, 0xb502, 0x00 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -1704,6 +1716,18 @@
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x24 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_USR", _IOC_WRITE, 0x70e1, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
+{ "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@@ -2418,23 +2442,23 @@
 { "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
 { "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
 { "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x26 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x26 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h
index 699eb90..b1b0339 100644
--- a/linux/32/ioctls_inc_align32.h
+++ b/linux/32/ioctls_inc_align32.h
@@ -264,11 +264,14 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1c },
@@ -451,8 +454,10 @@
 { "linux/android/binder.h", "BC_REGISTER_LOOPER", _IOC_NONE, 0x630b, 0x00 },
 { "linux/android/binder.h", "BC_RELEASE", _IOC_WRITE, 0x6306, 0x04 },
 { "linux/android/binder.h", "BC_REPLY", _IOC_WRITE, 0x6301, 0x40 },
+{ "linux/android/binder.h", "BC_REPLY_SG", _IOC_WRITE, 0x6312, 0x48 },
 { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
 { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
+{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
 { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -1315,6 +1320,9 @@
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_IO_VIO", _IOC_READ|_IOC_WRITE, 0x4c43, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_SUBMIT_VIO", _IOC_READ|_IOC_WRITE, 0x4c42, 0x40 },
 { "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
 { "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
 { "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
@@ -1455,6 +1463,8 @@
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nsfs.h", "NS_GET_NSTYPE", _IOC_NONE, 0xb703, 0x00 },
+{ "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
@@ -1665,6 +1675,8 @@
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
 { "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
+{ "linux/rpmsg.h", "RPMSG_CREATE_EPT_IOCTL", _IOC_WRITE, 0xb501, 0x28 },
+{ "linux/rpmsg.h", "RPMSG_DESTROY_EPT_IOCTL", _IOC_NONE, 0xb502, 0x00 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -1704,6 +1716,18 @@
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x24 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x24 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_USR", _IOC_WRITE, 0x70e1, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
+{ "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@@ -2418,23 +2442,23 @@
 { "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
 { "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
 { "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h
index fcd9d8c..ac97f5f 100644
--- a/linux/32/ioctls_inc_align64.h
+++ b/linux/32/ioctls_inc_align64.h
@@ -264,11 +264,14 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1c },
@@ -451,8 +454,10 @@
 { "linux/android/binder.h", "BC_REGISTER_LOOPER", _IOC_NONE, 0x630b, 0x00 },
 { "linux/android/binder.h", "BC_RELEASE", _IOC_WRITE, 0x6306, 0x04 },
 { "linux/android/binder.h", "BC_REPLY", _IOC_WRITE, 0x6301, 0x40 },
+{ "linux/android/binder.h", "BC_REPLY_SG", _IOC_WRITE, 0x6312, 0x48 },
 { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
 { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
+{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
 { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -1315,6 +1320,9 @@
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_IO_VIO", _IOC_READ|_IOC_WRITE, 0x4c43, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_SUBMIT_VIO", _IOC_READ|_IOC_WRITE, 0x4c42, 0x40 },
 { "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
 { "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
 { "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
@@ -1455,6 +1463,8 @@
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nsfs.h", "NS_GET_NSTYPE", _IOC_NONE, 0xb703, 0x00 },
+{ "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
@@ -1665,6 +1675,8 @@
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
 { "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
+{ "linux/rpmsg.h", "RPMSG_CREATE_EPT_IOCTL", _IOC_WRITE, 0xb501, 0x28 },
+{ "linux/rpmsg.h", "RPMSG_DESTROY_EPT_IOCTL", _IOC_NONE, 0xb502, 0x00 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -1704,6 +1716,18 @@
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_USR", _IOC_WRITE, 0x70e1, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
+{ "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@@ -2418,23 +2442,23 @@
 { "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
 { "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
 { "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h
index 6316235..44315e0 100644
--- a/linux/32/syscallent.h
+++ b/linux/32/syscallent.h
@@ -44,8 +44,8 @@
 [ 40] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 41] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [ 42] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
-[ 43] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[ 44] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[ 43] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[ 44] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [ 45] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [ 46] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
 [ 47] = { 6,	TD,		SEN(fallocate),			"fallocate"		},
@@ -80,8 +80,8 @@
 [ 76] = { 6,	TD,		SEN(splice),			"splice"		},
 [ 77] = { 4,	TD,		SEN(tee),			"tee"			},
 [ 78] = { 4,	TD|TF,		SEN(readlinkat),		"readlinkat"		},
-[ 79] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
-[ 80] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[ 79] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
+[ 80] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [ 81] = { 0,	0,		SEN(sync),			"sync"			},
 [ 82] = { 1,	TD,		SEN(fsync),			"fsync"			},
 [ 83] = { 1,	TD,		SEN(fdatasync),			"fdatasync"		},
@@ -281,6 +281,7 @@
 [288] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [289] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [290] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[291] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #undef sys_ARCH_mmap
 #undef ARCH_WANT_SYNC_FILE_RANGE2
diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h
index f59fe11..995c8ce 100644
--- a/linux/64/ioctls_inc.h
+++ b/linux/64/ioctls_inc.h
@@ -264,11 +264,14 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x20 },
@@ -451,8 +454,10 @@
 { "linux/android/binder.h", "BC_REGISTER_LOOPER", _IOC_NONE, 0x630b, 0x00 },
 { "linux/android/binder.h", "BC_RELEASE", _IOC_WRITE, 0x6306, 0x04 },
 { "linux/android/binder.h", "BC_REPLY", _IOC_WRITE, 0x6301, 0x40 },
+{ "linux/android/binder.h", "BC_REPLY_SG", _IOC_WRITE, 0x6312, 0x48 },
 { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
 { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
+{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
 { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -1315,6 +1320,9 @@
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_IO_VIO", _IOC_READ|_IOC_WRITE, 0x4c43, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_SUBMIT_VIO", _IOC_READ|_IOC_WRITE, 0x4c42, 0x40 },
 { "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
 { "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
 { "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
@@ -1455,6 +1463,8 @@
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nsfs.h", "NS_GET_NSTYPE", _IOC_NONE, 0xb703, 0x00 },
+{ "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
@@ -1665,6 +1675,8 @@
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
 { "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
+{ "linux/rpmsg.h", "RPMSG_CREATE_EPT_IOCTL", _IOC_WRITE, 0xb501, 0x28 },
+{ "linux/rpmsg.h", "RPMSG_DESTROY_EPT_IOCTL", _IOC_NONE, 0xb502, 0x00 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -1704,6 +1716,18 @@
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_USR", _IOC_WRITE, 0x70e1, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
+{ "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x08 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@@ -2418,23 +2442,23 @@
 { "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
 { "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
 { "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x08 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x08 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x08 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h
index 598d942..b5de226 100644
--- a/linux/64/syscallent.h
+++ b/linux/64/syscallent.h
@@ -41,8 +41,8 @@
 [ 40] = { 5,	TF,		SEN(mount),			"mount"			},
 [ 41] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [ 42] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
-[ 43] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[ 44] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 43] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[ 44] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [ 45] = { 2,	TF,		SEN(truncate),			"truncate"		},
 [ 46] = { 2,	TD,		SEN(ftruncate),			"ftruncate"		},
 [ 47] = { 4,	TD,		SEN(fallocate),			"fallocate"		},
@@ -77,8 +77,8 @@
 [ 76] = { 6,	TD,		SEN(splice),			"splice"		},
 [ 77] = { 4,	TD,		SEN(tee),			"tee"			},
 [ 78] = { 4,	TD|TF,		SEN(readlinkat),		"readlinkat"		},
-[ 79] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
-[ 80] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[ 79] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
+[ 80] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [ 81] = { 0,	0,		SEN(sync),			"sync"			},
 [ 82] = { 1,	TD,		SEN(fsync),			"fsync"			},
 [ 83] = { 1,	TD,		SEN(fdatasync),			"fdatasync"		},
@@ -137,7 +137,7 @@
 [136] = { 2,	TS,		SEN(rt_sigpending),		"rt_sigpending"		},
 [137] = { 4,	TS,		SEN(rt_sigtimedwait),		"rt_sigtimedwait"	},
 [138] = { 3,	TS,		SEN(rt_sigqueueinfo),		"rt_sigqueueinfo"	},
-[139] = { 0,	TS,		SEN(sigreturn),			"rt_sigreturn"		},
+[139] = { 0,	TS,		SEN(rt_sigreturn),		"rt_sigreturn"		},
 [140] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [141] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [142] = { 4,	0,		SEN(reboot),			"reboot"		},
@@ -274,3 +274,4 @@
 [288] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [289] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [290] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[291] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
diff --git a/linux/aarch64/arch_rt_sigframe.c b/linux/aarch64/arch_rt_sigframe.c
new file mode 100644
index 0000000..5400a52
--- /dev/null
+++ b/linux/aarch64/arch_rt_sigframe.c
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#undef FUNC_GET_RT_SIGFRAME_ADDR
+#define	FUNC_GET_RT_SIGFRAME_ADDR	\
+	static kernel_ulong_t arm_get_rt_sigframe_addr(struct tcb *tcp)
+
+#include "arm/arch_rt_sigframe.c"
+
+#undef FUNC_GET_RT_SIGFRAME_ADDR
+#define	FUNC_GET_RT_SIGFRAME_ADDR	DEF_FUNC_GET_RT_SIGFRAME_ADDR
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return tcp->currpers == 1 ? arm_get_rt_sigframe_addr(tcp)
+				  : *aarch64_sp_ptr;
+}
diff --git a/linux/aarch64/syscallent.h b/linux/aarch64/syscallent.h
index 6b23f8c..4ff6118 100644
--- a/linux/aarch64/syscallent.h
+++ b/linux/aarch64/syscallent.h
@@ -27,8 +27,8 @@
 [1035] = { 3,	TF,		SEN(readlink),		"readlink"	},
 [1036] = { 2,	TF,		SEN(symlink),		"symlink"	},
 [1037] = { 2,	TF,		SEN(utimes),		"utimes"	},
-[1038] = { 2,	TF,		SEN(stat),		"stat"		},
-[1039] = { 2,	TF,		SEN(lstat),		"lstat"		},
+[1038] = { 2,	TF|TST|TSTA,	SEN(stat),		"stat"		},
+[1039] = { 2,	TF|TLST|TSTA,	SEN(lstat),		"lstat"		},
 [1040] = { 1,	TD,		SEN(pipe),		"pipe"		},
 [1041] = { 2,	TD,		SEN(dup2),		"dup2"		},
 [1042] = { 1,	TD,		SEN(epoll_create),	"epoll_create"	},
@@ -38,14 +38,14 @@
 [1046] = { 4,	TD|TN,		SEN(sendfile64),	"sendfile"	},
 [1047] = { 2,	TD,		SEN(ftruncate),		"ftruncate"	},
 [1048] = { 2,	TF,		SEN(truncate),		"truncate"	},
-[1049] = { 2,	TF,		SEN(stat),		"stat"		},
-[1050] = { 2,	TF,		SEN(lstat),		"lstat"		},
-[1051] = { 2,	TD,		SEN(fstat),		"fstat"		},
+[1049] = { 2,	TF|TST|TSTA,	SEN(stat),		"stat"		},
+[1050] = { 2,	TF|TLST|TSTA,	SEN(lstat),		"lstat"		},
+[1051] = { 2,	TD|TFST|TSTA,	SEN(fstat),		"fstat"		},
 [1052] = { 3,	TD,		SEN(fcntl),		"fcntl"		},
 [1053] = { 4,	TD,		SEN(fadvise64),		"fadvise64"	},
-[1054] = { 4,	TD|TF,		SEN(newfstatat),	"newfstatat"	},
-[1055] = { 2,	TD,		SEN(fstatfs),		"fstatfs"	},
-[1056] = { 2,	TF,		SEN(statfs),		"statfs"	},
+[1054] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),	"newfstatat"	},
+[1055] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),		"fstatfs"	},
+[1056] = { 2,	TF|TSF|TSFA,	SEN(statfs),		"statfs"	},
 [1057] = { 3,	TD,		SEN(lseek),		"lseek"		},
 [1058] = { 6,	TD|TM|SI,	SEN(mmap),		"mmap"		},
 [1059] = { 1,	0,		SEN(alarm),		"alarm"		},
@@ -59,7 +59,7 @@
 [1067] = { 5,	TD,		SEN(select),		"select"	},
 [1068] = { 3,	TD,		SEN(poll),		"poll"		},
 [1069] = { 4,	TD,		SEN(epoll_wait),	"epoll_wait"	},
-[1070] = { 2,	0,		SEN(ustat),		"ustat"		},
+[1070] = { 2,	TSFA,		SEN(ustat),		"ustat"		},
 [1071] = { 0,	TP,		SEN(vfork),		"vfork"		},
 [1072] = { 4,	TP,		SEN(wait4),		"wait4"		},
 [1073] = { 4,	TN,		SEN(recv),		"recv"		},
diff --git a/linux/alpha/arch_rt_sigframe.c b/linux/alpha/arch_rt_sigframe.c
new file mode 100644
index 0000000..3343183
--- /dev/null
+++ b/linux/alpha/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	unsigned long addr;
+
+	return upeek(tcp->pid, REG_FP, &addr) ? 0 : addr;
+}
diff --git a/linux/alpha/arch_sigreturn.c b/linux/alpha/arch_sigreturn.c
index 3317a95..d5f19c5 100644
--- a/linux/alpha/arch_sigreturn.c
+++ b/linux/alpha/arch_sigreturn.c
@@ -8,6 +8,6 @@
 	addr += offsetof(struct sigcontext, sc_mask);
 
 	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
+	print_sigset_addr(tcp, addr);
 	tprints("}");
 }
diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h
index b55f23a..848c323 100644
--- a/linux/alpha/syscallent.h
+++ b/linux/alpha/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,100 +27,100 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[  0] = { 6,	0,		SEN(printargs),			"osf_syscall"		}, /*not implemented */
+[  0] = { 6,	0,		SEN(printargs),			"osf_syscall"		}, /* not implemented */
 [  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] = { 5,	0,		SEN(printargs),			"osf_old_open"		}, /*not implemented */
+[  5] = { 5,	0,		SEN(printargs),			"osf_old_open"		}, /* not implemented */
 [  6] = { 1,	TD,		SEN(close),			"close"			},
 [  7] = { 4,	TP,		SEN(osf_wait4),			"osf_wait4"		},
-[  8] = { 5,	0,		SEN(printargs),			"osf_old_creat"		}, /*not implemented */
+[  8] = { 5,	0,		SEN(printargs),			"osf_old_creat"		}, /* not implemented */
 [  9] = { 2,	TF,		SEN(link),			"link"			},
 [ 10] = { 1,	TF,		SEN(unlink),			"unlink"		},
-[ 11] = { 5,	0,		SEN(printargs),			"osf_execve"		}, /*not implemented */
+[ 11] = { 5,	0,		SEN(printargs),			"osf_execve"		}, /* not implemented */
 [ 12] = { 1,	TF,		SEN(chdir),			"chdir"			},
 [ 13] = { 1,	TD,		SEN(fchdir),			"fchdir"		},
 [ 14] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown),			"chown"			},
 [ 17] = { 1,	TM|SI,		SEN(brk),			"brk"			},
-[ 18] = { 5,	0,		SEN(printargs),			"osf_getfsstat"		}, /*not implemented */
+[ 18] = { 5,	TSFA,		SEN(printargs),			"osf_getfsstat"		}, /* not implemented */
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [ 20] = { 0,	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"		},
-[ 25] = { 5,	0,		SEN(printargs),			"exec_with_loader"	}, /*not implemented */
+[ 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 */
-[ 28] = { 5,	0,		SEN(printargs),			"osf_nsendmsg"		}, /*not implemented */
-[ 29] = { 5,	0,		SEN(printargs),			"osf_nrecvfrom"		}, /*not implemented */
-[ 30] = { 5,	0,		SEN(printargs),			"osf_naccept"		}, /*not implemented */
-[ 31] = { 5,	0,		SEN(printargs),			"osf_ngetpeername"	}, /*not implemented */
-[ 32] = { 5,	0,		SEN(printargs),			"osf_ngetsockname"	}, /*not implemented */
+[ 27] = { 5,	0,		SEN(printargs),			"osf_nrecvmsg"		}, /* not implemented */
+[ 28] = { 5,	0,		SEN(printargs),			"osf_nsendmsg"		}, /* not implemented */
+[ 29] = { 5,	0,		SEN(printargs),			"osf_nrecvfrom"		}, /* not implemented */
+[ 30] = { 5,	0,		SEN(printargs),			"osf_naccept"		}, /* not implemented */
+[ 31] = { 5,	0,		SEN(printargs),			"osf_ngetpeername"	}, /* not implemented */
+[ 32] = { 5,	0,		SEN(printargs),			"osf_ngetsockname"	}, /* not implemented */
 [ 33] = { 2,	TF,		SEN(access),			"access"		},
-[ 34] = { 5,	0,		SEN(printargs),			"osf_chflags"		}, /*not implemented */
-[ 35] = { 5,	0,		SEN(printargs),			"osf_fchflags"		}, /*not implemented */
+[ 34] = { 5,	0,		SEN(printargs),			"osf_chflags"		}, /* not implemented */
+[ 35] = { 5,	0,		SEN(printargs),			"osf_fchflags"		}, /* not implemented */
 [ 36] = { 0,	0,		SEN(sync),			"sync"			},
 [ 37] = { 2,	TS,		SEN(kill),			"kill"			},
-[ 38] = { 5,	0,		SEN(printargs),			"osf_old_stat"		}, /*not implemented */
+[ 38] = { 5,	TF|TST|TSTA,	SEN(printargs),			"osf_old_stat"		}, /* not implemented */
 [ 39] = { 2,	0,		SEN(setpgid),			"setpgid"		},
-[ 40] = { 5,	0,		SEN(printargs),			"osf_old_lstat"		}, /*not implemented */
+[ 40] = { 5,	TF|TLST|TSTA,	SEN(printargs),			"osf_old_lstat"		}, /* not implemented */
 [ 41] = { 1,	TD,		SEN(dup),			"dup"			},
 [ 42] = { 0,	TD,		SEN(pipe),			"pipe"			},
 [ 43] = { 4,	0,		SEN(printargs),			"osf_set_program_attributes"	},
-[ 44] = { 5,	0,		SEN(printargs),			"osf_profil"		}, /*not implemented */
+[ 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] = { 1,	NF,		SEN(getxgid),			"getxgid"		},
+[ 46] = { 5,	0,		SEN(printargs),			"osf_old_sigaction"	}, /* not implemented */
+[ 47] = { 0,	NF,		SEN(getxgid),			"getxgid"		},
 [ 48] = { 2,	TS,		SEN(sigprocmask),		"osf_sigprocmask"	},
-[ 49] = { 5,	0,		SEN(printargs),			"osf_getlogin"		}, /*not implemented */
-[ 50] = { 5,	0,		SEN(printargs),			"osf_setlogin"		}, /*not implemented */
+[ 49] = { 5,	0,		SEN(printargs),			"osf_getlogin"		}, /* not implemented */
+[ 50] = { 5,	0,		SEN(printargs),			"osf_setlogin"		}, /* not implemented */
 [ 51] = { 1,	TF,		SEN(acct),			"acct"			},
 [ 52] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
 [ 53] = { },
 [ 54] = { 3,	TD,		SEN(ioctl),			"ioctl"			},
-[ 55] = { 5,	0,		SEN(printargs),			"osf_reboot"		}, /*not implemented */
-[ 56] = { 5,	0,		SEN(printargs),			"osf_revoke"		}, /*not implemented */
+[ 55] = { 5,	0,		SEN(printargs),			"osf_reboot"		}, /* not implemented */
+[ 56] = { 5,	0,		SEN(printargs),			"osf_revoke"		}, /* not implemented */
 [ 57] = { 2,	TF,		SEN(symlink),			"symlink"		},
 [ 58] = { 3,	TF,		SEN(readlink),			"readlink"		},
 [ 59] = { 3,	TF|TP|SE|SI,	SEN(execve),			"execve"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 5,	0,		SEN(printargs),			"osf_old_fstat"		}, /*not implemented */
+[ 62] = { 5,	TD|TFST|TSTA,	SEN(printargs),			"osf_old_fstat"		}, /* not implemented */
 [ 63] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
 [ 64] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
-[ 65] = { 5,	TM,		SEN(printargs),			"osf_mremap"		}, /*not implemented */
+[ 65] = { 5,	TM,		SEN(printargs),			"osf_mremap"		}, /* not implemented */
 [ 66] = { 0,	TP,		SEN(vfork),			"vfork"			},
-[ 67] = { 2,	TF,		SEN(stat),			"stat"			},
-[ 68] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[ 69] = { 5,	TM,		SEN(printargs),			"osf_sbrk"		}, /*not implemented */
-[ 70] = { 5,	0,		SEN(printargs),			"osf_sstk"		}, /*not implemented */
+[ 67] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[ 68] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
+[ 69] = { 5,	TM,		SEN(printargs),			"osf_sbrk"		}, /* not implemented */
+[ 70] = { 5,	0,		SEN(printargs),			"osf_sstk"		}, /* not implemented */
 [ 71] = { 6,	TD|TM|SI,	SEN(mmap),			"mmap"			},
-[ 72] = { 5,	0,		SEN(printargs),			"osf_old_vadvise"	}, /*not implemented */
+[ 72] = { 5,	0,		SEN(printargs),			"osf_old_vadvise"	}, /* not implemented */
 [ 73] = { 2,	TM|SI,		SEN(munmap),			"munmap"		},
 [ 74] = { 3,	TM|SI,		SEN(mprotect),			"mprotect"		},
 [ 75] = { 3,	TM,		SEN(madvise),			"madvise"		},
 [ 76] = { 0,	0,		SEN(vhangup),			"vhangup"		},
-[ 77] = { 5,	0,		SEN(printargs),			"osf_kmodcall"		}, /*not implemented */
-[ 78] = { 5,	TM,		SEN(printargs),			"osf_mincore"		}, /*not implemented */
+[ 77] = { 5,	0,		SEN(printargs),			"osf_kmodcall"		}, /* not implemented */
+[ 78] = { 5,	TM,		SEN(printargs),			"osf_mincore"		}, /* not implemented */
 [ 79] = { 2,	0,		SEN(getgroups),			"getgroups"		},
 [ 80] = { 2,	0,		SEN(setgroups),			"setgroups"		},
-[ 81] = { 5,	0,		SEN(printargs),			"osf_old_getpgrp"	}, /*not implemented */
+[ 81] = { 5,	0,		SEN(printargs),			"osf_old_getpgrp"	}, /* not implemented */
 [ 82] = { 2,	0,		SEN(setpgrp),			"setpgrp"		},
 [ 83] = { 3,	0,		SEN(osf_setitimer),		"osf_setitimer"		},
-[ 84] = { 5,	0,		SEN(printargs),			"osf_old_wait"		}, /*not implemented */
-[ 85] = { 5,	0,		SEN(printargs),			"osf_table"		}, /*not implemented */
+[ 84] = { 5,	0,		SEN(printargs),			"osf_old_wait"		}, /* not implemented */
+[ 85] = { 5,	0,		SEN(printargs),			"osf_table"		}, /* not implemented */
 [ 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"		},
 [ 90] = { 2,	TD,		SEN(dup2),			"dup2"			},
-[ 91] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[ 91] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [ 92] = { 3,	TD,		SEN(fcntl),			"fcntl"			},
-[ 93] = { 5,	0,		SEN(osf_select),		"osf_select"		},
+[ 93] = { 5,	TD,		SEN(osf_select),		"osf_select"		},
 [ 94] = { 3,	TD,		SEN(poll),			"poll"			},
 [ 95] = { 1,	TD,		SEN(fsync),			"fsync"			},
 [ 96] = { 3,	0,		SEN(setpriority),		"setpriority"		},
@@ -133,15 +134,15 @@
 [104] = { 3,	TN,		SEN(bind),			"bind"			},
 [105] = { 5,	TN,		SEN(setsockopt),		"setsockopt"		},
 [106] = { 2,	TN,		SEN(listen),			"listen"		},
-[107] = { 5,	0,		SEN(printargs),			"osf_plock"		}, /*not implemented */
-[108] = { 5,	0,		SEN(printargs),			"osf_old_sigvec"	}, /*not implemented */
-[109] = { 5,	0,		SEN(printargs),			"osf_old_sigblock"	}, /*not implemented */
-[110] = { 5,	0,		SEN(printargs),			"osf_old_sigsetmask"	}, /*not implemented */
-[111] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[107] = { 5,	0,		SEN(printargs),			"osf_plock"		}, /* not implemented */
+[108] = { 5,	0,		SEN(printargs),			"osf_old_sigvec"	}, /* not implemented */
+[109] = { 5,	0,		SEN(printargs),			"osf_old_sigblock"	}, /* not implemented */
+[110] = { 5,	0,		SEN(printargs),			"osf_old_sigsetmask"	}, /* not implemented */
+[111] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
 [112] = { 2,	0,		SEN(printargs),			"osf_sigstack"		},
 [113] = { 3,	TN,		SEN(recvmsg),			"recvmsg"		},
 [114] = { 3,	TN,		SEN(sendmsg),			"sendmsg"		},
-[115] = { 5,	0,		SEN(printargs),			"osf_old_vtrace"	}, /*not implemented */
+[115] = { 5,	0,		SEN(printargs),			"osf_old_vtrace"	}, /* not implemented */
 [116] = { 2,	0,		SEN(osf_gettimeofday),		"osf_gettimeofday"	},
 [117] = { 2,	0,		SEN(osf_getrusage),		"osf_getrusage"		},
 [118] = { 5,	TN,		SEN(getsockopt),		"getsockopt"		},
@@ -164,43 +165,43 @@
 [135] = { 4,	TN,		SEN(socketpair),		"socketpair"		},
 [136] = { 2,	TF,		SEN(mkdir),			"mkdir"			},
 [137] = { 1,	TF,		SEN(rmdir),			"rmdir"			},
-[138] = { 2,	0,		SEN(osf_utimes),		"osf_utimes"		},
-[139] = { 5,	0,		SEN(printargs),			"osf_old_sigreturn"	},
-[140] = { 5,	0,		SEN(printargs),			"osf_adjtime"		}, /*not implemented */
+[138] = { 2,	TF,		SEN(osf_utimes),		"osf_utimes"		},
+[139] = { 5,	0,		SEN(printargs),			"osf_old_sigreturn"	}, /* not implemented */
+[140] = { 5,	0,		SEN(printargs),			"osf_adjtime"		}, /* not implemented */
 [141] = { 3,	TN,		SEN(getpeername),		"getpeername"		},
-[142] = { 5,	0,		SEN(printargs),			"osf_gethostid"		}, /*not implemented */
-[143] = { 5,	0,		SEN(printargs),			"osf_sethostid"		}, /*not implemented */
+[142] = { 5,	0,		SEN(printargs),			"osf_gethostid"		}, /* not implemented */
+[143] = { 5,	0,		SEN(printargs),			"osf_sethostid"		}, /* not implemented */
 [144] = { 2,	0,		SEN(getrlimit),			"getrlimit"		},
 [145] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
-[146] = { 5,	0,		SEN(printargs),			"osf_old_killpg"	}, /*not implemented */
+[146] = { 5,	0,		SEN(printargs),			"osf_old_killpg"	}, /* not implemented */
 [147] = { 0,	0,		SEN(setsid),			"setsid"		},
 [148] = { 4,	TF,		SEN(quotactl),			"quotactl"		},
-[149] = { 5,	0,		SEN(printargs),			"osf_oldquota"		}, /*not implemented */
+[149] = { 5,	0,		SEN(printargs),			"osf_oldquota"		}, /* not implemented */
 [150] = { 3,	TN,		SEN(getsockname),		"getsockname"		},
 [151 ... 152] = { },
-[153] = { 5,	0,		SEN(printargs),			"osf_pid_block"		}, /*not implemented */
-[154] = { 5,	0,		SEN(printargs),			"osf_pid_unblock"	}, /*not implemented */
+[153] = { 5,	0,		SEN(printargs),			"osf_pid_block"		}, /* not implemented */
+[154] = { 5,	0,		SEN(printargs),			"osf_pid_unblock"	}, /* not implemented */
 [155] = { },
 [156] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
-[157] = { 5,	0,		SEN(printargs),			"osf_sigwaitprim"	}, /*not implemented */
-[158] = { 5,	0,		SEN(printargs),			"osf_nfssvc"		}, /*not implemented */
+[157] = { 5,	0,		SEN(printargs),			"osf_sigwaitprim"	}, /* not implemented */
+[158] = { 5,	0,		SEN(printargs),			"osf_nfssvc"		}, /* not implemented */
 [159] = { 4,	0,		SEN(printargs),			"osf_getdirentries"	},
-[160] = { 3,	0,		SEN(osf_statfs),		"osf_statfs"		},
-[161] = { 3,	0,		SEN(osf_fstatfs),		"osf_fstatfs"		},
+[160] = { 3,	TF|TSF|TSFA,	SEN(osf_statfs),		"osf_statfs"		},
+[161] = { 3,	TD|TFSF|TSFA,	SEN(osf_fstatfs),		"osf_fstatfs"		},
 [162] = { },
-[163] = { 5,	0,		SEN(printargs),			"osf_asynch_daemon"	}, /*not implemented */
-[164] = { 5,	0,		SEN(printargs),			"osf_getfh"		}, /*not implemented */
+[163] = { 5,	0,		SEN(printargs),			"osf_asynch_daemon"	}, /* not implemented */
+[164] = { 5,	0,		SEN(printargs),			"osf_getfh"		}, /* not implemented */
 [165] = { 2,	0,		SEN(printargs),			"osf_getdomainname"	},
 [166] = { 2,	0,		SEN(setdomainname),		"setdomainname"		},
 [167 ... 168] = { },
-[169] = { 5,	0,		SEN(printargs),			"osf_exportfs"		}, /*not implemented */
+[169] = { 5,	0,		SEN(printargs),			"osf_exportfs"		}, /* not implemented */
 [170 ... 180] = { },
-[181] = { 5,	0,		SEN(printargs),			"osf_alt_plock"		}, /*not implemented */
+[181] = { 5,	0,		SEN(printargs),			"osf_alt_plock"		}, /* not implemented */
 [182 ... 183] = { },
-[184] = { 5,	0,		SEN(printargs),			"osf_getmnt"		}, /*not implemented */
+[184] = { 5,	0,		SEN(printargs),			"osf_getmnt"		}, /* not implemented */
 [185 ... 186] = { },
-[187] = { 5,	0,		SEN(printargs),			"osf_alt_sigpending"	}, /*not implemented */
-[188] = { 5,	0,		SEN(printargs),			"osf_alt_setsid"	}, /*not implemented */
+[187] = { 5,	0,		SEN(printargs),			"osf_alt_sigpending"	}, /* not implemented */
+[188] = { 5,	0,		SEN(printargs),			"osf_alt_setsid"	}, /* not implemented */
 [189 ... 198] = { },
 [199] = { 4,	0,		SEN(printargs),			"osf_swapon"		},
 [200] = { 3,	TI,		SEN(msgctl),			"msgctl"		},
@@ -216,63 +217,63 @@
 [210] = { 3,	TI,		SEN(shmctl),			"shmctl"		},
 [211] = { 1,	TI|TM|SI,	SEN(shmdt),			"shmdt"			},
 [212] = { 3,	TI,		SEN(shmget),			"shmget"		},
-[213] = { 5,	0,		SEN(printargs),			"osf_mvalid"		}, /*not implemented */
-[214] = { 5,	0,		SEN(printargs),			"osf_getaddressconf"	}, /*not implemented */
-[215] = { 5,	0,		SEN(printargs),			"osf_msleep"		}, /*not implemented */
-[216] = { 5,	0,		SEN(printargs),			"osf_mwakeup"		}, /*not implemented */
+[213] = { 5,	0,		SEN(printargs),			"osf_mvalid"		}, /* not implemented */
+[214] = { 5,	0,		SEN(printargs),			"osf_getaddressconf"	}, /* not implemented */
+[215] = { 5,	0,		SEN(printargs),			"osf_msleep"		}, /* not implemented */
+[216] = { 5,	0,		SEN(printargs),			"osf_mwakeup"		}, /* not implemented */
 [217] = { 3,	TM,		SEN(msync),			"msync"			},
-[218] = { 5,	0,		SEN(printargs),			"osf_signal"		}, /*not implemented */
-[219] = { 5,	0,		SEN(printargs),			"osf_utc_gettime"	}, /*not implemented */
-[220] = { 5,	0,		SEN(printargs),			"osf_utc_adjtime"	}, /*not implemented */
+[218] = { 5,	0,		SEN(printargs),			"osf_signal"		}, /* not implemented */
+[219] = { 5,	0,		SEN(printargs),			"osf_utc_gettime"	}, /* not implemented */
+[220] = { 5,	0,		SEN(printargs),			"osf_utc_adjtime"	}, /* not implemented */
 [221] = { },
-[222] = { 5,	0,		SEN(printargs),			"osf_security"		}, /*not implemented */
-[223] = { 5,	0,		SEN(printargs),			"osf_kloadcall"		}, /*not implemented */
-[224] = { 5,	0,		SEN(printargs),			"osf_stat"		}, /*not implemented */
-[225] = { 5,	0,		SEN(printargs),			"osf_lstat"		}, /*not implemented */
-[226] = { 5,	0,		SEN(printargs),			"osf_fstat"		}, /*not implemented */
-[227] = { 3,	0,		SEN(osf_statfs),		"osf_statfs64"		}, /*not implemented */
-[228] = { 3,	0,		SEN(osf_fstatfs),		"osf_fstatfs64"		}, /*not implemented */
+[222] = { 5,	0,		SEN(printargs),			"osf_security"		}, /* not implemented */
+[223] = { 5,	0,		SEN(printargs),			"osf_kloadcall"		}, /* not implemented */
+[224] = { 2,	TF|TST|TSTA,	SEN(printargs),			"osf_stat"		},
+[225] = { 2,	TF|TLST|TSTA,	SEN(printargs),			"osf_lstat"		},
+[226] = { 2,	TD|TFST|TSTA,	SEN(printargs),			"osf_fstat"		},
+[227] = { 3,	TF|TSF|TSFA,	SEN(osf_statfs),		"osf_statfs64"		},
+[228] = { 3,	TD|TFSF|TSFA,	SEN(osf_fstatfs),		"osf_fstatfs64"		},
 [229 ... 232] = { },
 [233] = { 1,	0,		SEN(getpgid),			"getpgid"		},
 [234] = { 1,	0,		SEN(getsid),			"getsid"		},
 [235] = { 2,	TS,		SEN(sigaltstack),		"sigaltstack"		},
-[236] = { 5,	0,		SEN(printargs),			"osf_waitid"		}, /*not implemented */
-[237] = { 5,	0,		SEN(printargs),			"osf_priocntlset"	}, /*not implemented */
-[238] = { 5,	0,		SEN(printargs),			"osf_sigsendset"	}, /*not implemented */
-[239] = { 5,	0,		SEN(printargs),			"osf_set_speculative"	}, /*not implemented */
-[240] = { 5,	0,		SEN(printargs),			"osf_msfs_syscall"	}, /*not implemented */
-[241] = { 5,	0,		SEN(printargs),			"osf_sysinfo"		},
-[242] = { 5,	0,		SEN(printargs),			"osf_uadmin"		}, /*not implemented */
-[243] = { 5,	0,		SEN(printargs),			"osf_fuser"		}, /*not implemented */
+[236] = { 5,	0,		SEN(printargs),			"osf_waitid"		}, /* not implemented */
+[237] = { 5,	0,		SEN(printargs),			"osf_priocntlset"	}, /* not implemented */
+[238] = { 5,	0,		SEN(printargs),			"osf_sigsendset"	}, /* not implemented */
+[239] = { 5,	0,		SEN(printargs),			"osf_set_speculative"	}, /* not implemented */
+[240] = { 5,	0,		SEN(printargs),			"osf_msfs_syscall"	}, /* not implemented */
+[241] = { 3,	0,		SEN(printargs),			"osf_sysinfo"		},
+[242] = { 5,	0,		SEN(printargs),			"osf_uadmin"		}, /* not implemented */
+[243] = { 5,	0,		SEN(printargs),			"osf_fuser"		}, /* not implemented */
 [244] = { 2,	0,		SEN(printargs),			"osf_proplist_syscall"	},
-[245] = { 5,	0,		SEN(printargs),			"osf_ntp_adjtime"	}, /*not implemented */
-[246] = { 5,	0,		SEN(printargs),			"osf_ntp_gettime"	}, /*not implemented */
-[247] = { 5,	0,		SEN(printargs),			"osf_pathconf"		}, /*not implemented */
-[248] = { 5,	0,		SEN(printargs),			"osf_fpathconf"		}, /*not implemented */
+[245] = { 5,	0,		SEN(printargs),			"osf_ntp_adjtime"	}, /* not implemented */
+[246] = { 5,	0,		SEN(printargs),			"osf_ntp_gettime"	}, /* not implemented */
+[247] = { 5,	0,		SEN(printargs),			"osf_pathconf"		}, /* not implemented */
+[248] = { 5,	0,		SEN(printargs),			"osf_fpathconf"		}, /* not implemented */
 [249] = { },
-[250] = { 5,	0,		SEN(printargs),			"osf_uswitch"		}, /*not implemented */
+[250] = { 5,	0,		SEN(printargs),			"osf_uswitch"		}, /* not implemented */
 [251] = { 2,	0,		SEN(printargs),			"osf_usleep_thread"	},
-[252] = { 5,	0,		SEN(printargs),			"osf_audcntl"		}, /*not implemented */
-[253] = { 5,	0,		SEN(printargs),			"osf_audgen"		}, /*not implemented */
+[252] = { 5,	0,		SEN(printargs),			"osf_audcntl"		}, /* not implemented */
+[253] = { 5,	0,		SEN(printargs),			"osf_audgen"		}, /* not implemented */
 [254] = { 3,	0,		SEN(sysfs),			"sysfs"			},
-[255] = { 5,	0,		SEN(printargs),			"osf_subsys_info"	}, /*not implemented */
+[255] = { 5,	0,		SEN(printargs),			"osf_subsys_info"	}, /* not implemented */
 [256] = { 5,	0,		SEN(printargs),			"osf_getsysinfo"	},
 [257] = { 5,	0,		SEN(printargs),			"osf_setsysinfo"	},
-[258] = { 5,	0,		SEN(printargs),			"osf_afs_syscall"	}, /*not implemented */
-[259] = { 5,	0,		SEN(printargs),			"osf_swapctl"		}, /*not implemented */
-[260] = { 5,	0,		SEN(printargs),			"osf_memcntl"		}, /*not implemented */
-[261] = { 5,	0,		SEN(printargs),			"osf_fdatasync"		}, /*not implemented */
+[258] = { 5,	0,		SEN(printargs),			"osf_afs_syscall"	}, /* not implemented */
+[259] = { 5,	0,		SEN(printargs),			"osf_swapctl"		}, /* not implemented */
+[260] = { 5,	0,		SEN(printargs),			"osf_memcntl"		}, /* not implemented */
+[261] = { 5,	0,		SEN(printargs),			"osf_fdatasync"		}, /* not implemented */
 [262 ... 299] = { },
 [300] = { 2,	0,		SEN(bdflush),			"bdflush"		},
-[301] = { 3,	0,		SEN(printargs),			"sethae"		},
+[301] = { 1,	0,		SEN(printargs),			"sethae"		},
 [302] = { 5,	TF,		SEN(mount),			"mount"			},
 [303] = { 1,	0,		SEN(adjtimex),			"old_adjtimex"		},
 [304] = { 1,	TF,		SEN(swapoff),			"swapoff"		},
 [305] = { 3,	TD,		SEN(getdents),			"getdents"		},
-[306] = { 2,	0,		SEN(create_module),		"create_module"		},
+[306] = { 2,	0,		SEN(create_module),		"create_module"		}, /* not implemented */
 [307] = { 3,	0,		SEN(init_module),		"init_module"		},
 [308] = { 2,	0,		SEN(delete_module),		"delete_module"		},
-[309] = { 1,	0,		SEN(get_kernel_syms),		"get_kernel_syms"	},
+[309] = { 1,	0,		SEN(get_kernel_syms),		"get_kernel_syms"	}, /* not implemented */
 [310] = { 3,	0,		SEN(syslog),			"syslog"		},
 [311] = { 4,	0,		SEN(reboot),			"reboot"		},
 [312] = { 5,	TP,		SEN(clone),			"clone"			},
@@ -290,9 +291,9 @@
 [324] = { 1,	NF,		SEN(personality),		"personality"		},
 [325] = { 1,	NF,		SEN(setfsuid),			"setfsuid"		},
 [326] = { 1,	NF,		SEN(setfsgid),			"setfsgid"		},
-[327] = { 2,	0,		SEN(ustat),			"ustat"			},
-[328] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[329] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[327] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
+[328] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[329] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [330] = { 2,	0,		SEN(sched_setparam),		"sched_setparam"	},
 [331] = { 2,	0,		SEN(sched_getparam),		"sched_getparam"	},
 [332] = { 3,	0,		SEN(sched_setscheduler),	"sched_setscheduler"	},
@@ -301,16 +302,16 @@
 [335] = { 1,	0,		SEN(sched_get_priority_max),	"sched_get_priority_max"},
 [336] = { 1,	0,		SEN(sched_get_priority_min),	"sched_get_priority_min"},
 [337] = { 2,	0,		SEN(sched_rr_get_interval),	"sched_rr_get_interval"	},
-[338] = { 5,	0,		SEN(afs_syscall),		"afs_syscall"		},
+[338] = { 5,	0,		SEN(afs_syscall),		"afs_syscall"		}, /* not implemented */
 [339] = { 1,	0,		SEN(uname),			"uname"			},
 [340] = { 2,	0,		SEN(nanosleep),			"nanosleep"		},
 [341] = { 5,	TM|SI,		SEN(mremap),			"mremap"		},
-[342] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
+[342] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		}, /* not implemented */
 [343] = { 3,	0,		SEN(setresuid),			"setresuid"		},
 [344] = { 3,	0,		SEN(getresuid),			"getresuid"		},
 [345] = { 5,	0,		SEN(printargs),			"pciconfig_read"	},
 [346] = { 5,	0,		SEN(printargs),			"pciconfig_write"	},
-[347] = { 5,	0,		SEN(query_module),		"query_module"		},
+[347] = { 5,	0,		SEN(query_module),		"query_module"		}, /* not implemented */
 [348] = { 5,	0,		SEN(prctl),			"prctl"			},
 [349] = { 4,	TD,		SEN(pread),			"pread64"		},
 [350] = { 4,	TD,		SEN(pwrite),			"pwrite64"		},
@@ -336,7 +337,7 @@
 [370] = { 4,	TD|TN,		SEN(sendfile),			"sendfile"		},
 [371] = { 3,	0,		SEN(setresgid),			"setresgid"		},
 [372] = { 3,	0,		SEN(getresgid),			"getresgid"		},
-[373] = { 4,	0,		SEN(printargs),			"dipc"			}, /*not implemented */
+[373] = { 4,	0,		SEN(printargs),			"dipc"			}, /* not implemented */
 [374] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [375] = { 3,	TM,		SEN(mincore),			"mincore"		},
 [376] = { 3,	0,		SEN(printargs),			"pciconfig_iobase"	},
@@ -360,7 +361,7 @@
 [394] = { 6,	0,		SEN(futex),			"futex"			},
 [395] = { 3,	0,		SEN(sched_setaffinity),		"sched_setaffinity"	},
 [396] = { 3,	0,		SEN(sched_getaffinity),		"sched_getaffinity"	},
-[397] = { 5,	0,		SEN(tuxcall),			"tuxcall"		},
+[397] = { 5,	0,		SEN(tuxcall),			"tuxcall"		}, /* not implemented */
 [398] = { 2,	TM,		SEN(io_setup),			"io_setup"		},
 [399] = { 1,	TM,		SEN(io_destroy),		"io_destroy"		},
 [400] = { 5,	0,		SEN(io_getevents),		"io_getevents"		},
@@ -387,13 +388,13 @@
 [422] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
 [423] = { 4,	TI,		SEN(semtimedop),		"semtimedop"		},
 [424] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
-[425] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[426] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[427] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
-[428] = { 5,	0,		SEN(vserver),			"vserver"		},
-[429] = { 6,	TM,		SEN(mbind),			"mbind"			},
-[430] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
-[431] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
+[425] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
+[426] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
+[427] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
+[428] = { 5,	0,		SEN(vserver),			"vserver"		}, /* not implemented */
+[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"		},
 [433] = { 1,	0,		SEN(mq_unlink),			"mq_unlink"		},
 [434] = { 5,	0,		SEN(mq_timedsend),		"mq_timedsend"		},
@@ -417,7 +418,7 @@
 [452] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [453] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [454] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[455] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[455] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [456] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [457] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [458] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -439,7 +440,7 @@
 [474] = { 6,	TD,		SEN(epoll_pwait),		"epoll_pwait"		},
 [475] = { 4,	TD|TF,		SEN(utimensat),			"utimensat"		},
 [476] = { 3,	TD|TS,		SEN(signalfd),			"signalfd"		},
-[477] = { 4,	TD,		SEN(timerfd),			"timerfd"		},
+[477] = { 4,	TD,		SEN(timerfd),			"timerfd"		}, /* not implemented */
 [478] = { 1,	TD,		SEN(eventfd),			"eventfd"		},
 [479] = { 5,	TN,		SEN(recvmmsg),			"recvmmsg"		},
 [480] = { 4,	TD,		SEN(fallocate),			"fallocate"		},
diff --git a/linux/arc/arch_regs.c b/linux/arc/arch_regs.c
index 1846008..9a5c2df 100644
--- a/linux/arc/arch_regs.c
+++ b/linux/arc/arch_regs.c
@@ -1,3 +1,4 @@
 static struct user_regs_struct arc_regs;
+unsigned long *const arc_sp_ptr = &arc_regs.sp;
 #define ARCH_REGS_FOR_GETREGSET arc_regs
 #define ARCH_PC_REG arc_regs.efa
diff --git a/linux/arc/arch_regs.h b/linux/arc/arch_regs.h
new file mode 100644
index 0000000..75c850a
--- /dev/null
+++ b/linux/arc/arch_regs.h
@@ -0,0 +1 @@
+extern unsigned long *const arc_sp_ptr;
diff --git a/linux/arc/arch_rt_sigframe.c b/linux/arc/arch_rt_sigframe.c
new file mode 100644
index 0000000..a735d04
--- /dev/null
+++ b/linux/arc/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *arc_sp_ptr;
+}
diff --git a/linux/arch_sigreturn.c b/linux/arch_sigreturn.c
index 73a2b10..8f101d8 100644
--- a/linux/arch_sigreturn.c
+++ b/linux/arch_sigreturn.c
@@ -1,5 +1,3 @@
-#warning sigreturn/rt_sigreturn signal mask decoding is not implemented for this architecture
-
 static void
 arch_sigreturn(struct tcb *tcp)
 {
diff --git a/linux/arm/arch_rt_sigframe.c b/linux/arm/arch_rt_sigframe.c
new file mode 100644
index 0000000..0282bd3
--- /dev/null
+++ b/linux/arm/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *arm_sp_ptr;
+}
diff --git a/linux/arm/arch_sigreturn.c b/linux/arm/arch_sigreturn.c
index 378ba67..b60dad8 100644
--- a/linux/arm/arch_sigreturn.c
+++ b/linux/arm/arch_sigreturn.c
@@ -14,6 +14,6 @@
 			(*arm_sp_ptr +
 			 OFFSETOF_STRUCT_UCONTEXT_UC_SIGMASK);
 	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
+	print_sigset_addr(tcp, addr);
 	tprints("}");
 }
diff --git a/linux/arm/get_scno.c b/linux/arm/get_scno.c
index d2bc068..3440782 100644
--- a/linux/arm/get_scno.c
+++ b/linux/arm/get_scno.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/linux/arm/ioctls_arch0.h b/linux/arm/ioctls_arch0.h
index f44b4a3..c0a9128 100644
--- a/linux/arm/ioctls_arch0.h
+++ b/linux/arm/ioctls_arch0.h
@@ -44,6 +44,8 @@
 { "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
 { "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
 { "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
 { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
 { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
index 23e57f6..a6fb470 100644
--- a/linux/arm/syscallent.h
+++ b/linux/arm/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,14 +89,14 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -221,9 +222,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_4koff),		"mmap2"			},
 [193] = { 4,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 4,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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"		},
@@ -290,8 +291,8 @@
 [263] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [264] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [265] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[266] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[267] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[266] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[267] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [268] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [269] = { 2,	TF,		SEN(utimes),			"utimes"		},
 [270] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
@@ -351,7 +352,7 @@
 [324] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [325] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [326] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[327] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[327] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [328] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [329] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [330] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -421,6 +422,7 @@
 [394] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [395] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [396] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[397] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #ifdef __ARM_EABI__
 # define ARM_FIRST_SHUFFLED_SYSCALL 400
diff --git a/linux/avr32/arch_regs.c b/linux/avr32/arch_regs.c
index 8b52a8d..2f88d8f 100644
--- a/linux/avr32/arch_regs.c
+++ b/linux/avr32/arch_regs.c
@@ -1,3 +1,4 @@
 static struct pt_regs avr32_regs;
+unsigned long *const avr32_sp_ptr = &avr32_regs.sp;
 #define ARCH_REGS_FOR_GETREGS avr32_regs
 #define ARCH_PC_REG avr32_regs.pc
diff --git a/linux/avr32/arch_regs.h b/linux/avr32/arch_regs.h
new file mode 100644
index 0000000..4ed62dd
--- /dev/null
+++ b/linux/avr32/arch_regs.h
@@ -0,0 +1 @@
+extern unsigned long *const avr32_sp_ptr;
diff --git a/linux/avr32/arch_rt_sigframe.c b/linux/avr32/arch_rt_sigframe.c
new file mode 100644
index 0000000..6650f8e
--- /dev/null
+++ b/linux/avr32/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *avr32_sp_ptr;
+}
diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h
index d18902f..915aa8d 100644
--- a/linux/avr32/syscallent.h
+++ b/linux/avr32/syscallent.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2004-2009 Atmel Corporation
+ * Copyright (c) 2009-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,9 +56,9 @@
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
 [ 28] = { 0,	TS,		SEN(pause),			"pause"			},
 [ 29] = { 2,	TF,		SEN(utime),			"utime"			},
-[ 30] = { 2,	TF,		SEN(stat),			"stat"			},
-[ 31] = { 2,	TD,		SEN(fstat),			"fstat"			},
-[ 32] = { 2,	TF,		SEN(lstat),			"lstat"			},
+[ 30] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[ 31] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
+[ 32] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
 [ 33] = { 2,	TF,		SEN(access),			"access"		},
 [ 34] = { 1,	TF,		SEN(chroot),			"chroot"		},
 [ 35] = { 0,	0,		SEN(sync),			"sync"			},
@@ -87,7 +88,7 @@
 [ 59] = { 3,	0,		SEN(getresuid),			"getresuid"		},
 [ 60] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [ 61] = { 2,	0,		SEN(setregid),			"setregid"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
 [ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
 [ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
@@ -124,8 +125,8 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	TP,		SEN(wait4),			"wait4"			},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 99] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[100] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [101] = { 0,	0,		SEN(vhangup),			"vhangup"		},
 [102] = { 2,	TS,		SEN(sigaltstack),		"sigaltstack"		},
 [103] = { 3,	0,		SEN(syslog),			"syslog"		},
@@ -193,9 +194,9 @@
 [165] = { 3,	TN,		SEN(recvmsg),			"recvmsg"		},
 [166] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [167] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[168] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[169] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[170] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[168] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
+[169] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
+[170] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [171] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [172] = { 3,	TM,		SEN(mincore),			"mincore"		},
 [173] = { 3,	TM,		SEN(madvise),			"madvise"		},
@@ -244,8 +245,8 @@
 [216] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [217] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [218] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[219] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[220] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[219] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[220] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [221] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [222] = { },
 [223] = { 2,	TF,		SEN(utimes),			"utimes"		},
@@ -273,7 +274,7 @@
 [245] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [246] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [247] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[248] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[248] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [249] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [250] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [251] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/bfin/arch_rt_sigframe.c b/linux/bfin/arch_rt_sigframe.c
new file mode 100644
index 0000000..d84b834
--- /dev/null
+++ b/linux/bfin/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	unsigned long addr;
+
+	return upeek(tcp->pid, PT_USP, &addr) ? 0 : addr;
+}
diff --git a/linux/bfin/rt_sigframe.h b/linux/bfin/rt_sigframe.h
new file mode 100644
index 0000000..7b63cb1
--- /dev/null
+++ b/linux/bfin/rt_sigframe.h
@@ -0,0 +1,42 @@
+/*
+ * 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 {
+	int		sig;
+	siginfo_t	*pinfo;
+	void		*puc;
+	char		retcode[8];
+	siginfo_t	info;
+	ucontext_t	uc;
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h
index f4b8871..5cdb991 100644
--- a/linux/bfin/syscallent.h
+++ b/linux/bfin/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"chown"			},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,14 +89,14 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -221,9 +222,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_pgoff),		"mmap2"			},
 [193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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),			"chown32"		},
 [199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
 [200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
@@ -294,8 +295,8 @@
 [266] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [267] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [268] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[269] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[270] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[269] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[270] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [271] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [272] = { 2,	TF,		SEN(utimes),			"utimes"		},
 [273] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
@@ -325,7 +326,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[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"		},
diff --git a/linux/crisv10/arch_rt_sigframe.c b/linux/crisv10/arch_rt_sigframe.c
new file mode 100644
index 0000000..f3d5f10
--- /dev/null
+++ b/linux/crisv10/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	unsigned long addr;
+
+	return upeek(tcp->pid, 4 * PT_USP, &addr) ? 0 : addr;
+}
diff --git a/linux/crisv10/arch_sigreturn.c b/linux/crisv10/arch_sigreturn.c
index b449d41..0458c8e 100644
--- a/linux/crisv10/arch_sigreturn.c
+++ b/linux/crisv10/arch_sigreturn.c
@@ -11,6 +11,6 @@
 		regs[PT_USP] + offsetof(struct sigcontext, oldmask);
 
 	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
+	print_sigset_addr(tcp, addr);
 	tprints("}");
 }
diff --git a/linux/crisv10/rt_sigframe.h b/linux/crisv10/rt_sigframe.h
new file mode 100644
index 0000000..6080bae
--- /dev/null
+++ b/linux/crisv10/rt_sigframe.h
@@ -0,0 +1,41 @@
+/*
+ * 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/syscallent.h b/linux/crisv10/syscallent.h
index d411fe7..0e36774 100644
--- a/linux/crisv10/syscallent.h
+++ b/linux/crisv10/syscallent.h
@@ -16,7 +16,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -26,7 +26,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -60,17 +60,17 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[ 72] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
 [ 73] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
 [ 74] = { 2,	0,		SEN(sethostname),		"sethostname"		},
 [ 75] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
@@ -82,7 +82,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -97,16 +97,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -192,9 +192,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_pgoff),		"mmap2"			},
 [193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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"		},
@@ -262,8 +262,8 @@
 [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,		SEN(statfs64),			"statfs64"		},
-[269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[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"		},
@@ -293,7 +293,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[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"		},
diff --git a/linux/crisv32/arch_rt_sigframe.c b/linux/crisv32/arch_rt_sigframe.c
new file mode 100644
index 0000000..2f45746
--- /dev/null
+++ b/linux/crisv32/arch_rt_sigframe.c
@@ -0,0 +1 @@
+#include "crisv10/arch_rt_sigframe.c"
diff --git a/linux/crisv32/rt_sigframe.h b/linux/crisv32/rt_sigframe.h
new file mode 100644
index 0000000..bfe07d4
--- /dev/null
+++ b/linux/crisv32/rt_sigframe.h
@@ -0,0 +1 @@
+#include "crisv10/rt_sigframe.h"
diff --git a/linux/dummy.h b/linux/dummy.h
index 2758cfb..40c0726 100644
--- a/linux/dummy.h
+++ b/linux/dummy.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -113,7 +114,6 @@
 #define	sys_munlockall		printargs
 #define	sys_pause		printargs
 #define	sys_printargs		printargs
-#define	sys_rt_sigreturn	printargs
 #define	sys_sched_yield		printargs
 #define	sys_setsid		printargs
 #define	sys_set_tid_address	printargs
diff --git a/linux/hppa/arch_rt_sigframe.c b/linux/hppa/arch_rt_sigframe.c
new file mode 100644
index 0000000..e3c62fa
--- /dev/null
+++ b/linux/hppa/arch_rt_sigframe.c
@@ -0,0 +1,41 @@
+/*
+ * 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 "rt_sigframe.h"
+
+#define SIGFRAME		(sizeof(long) * 16)
+#define FUNCTIONCALLFRAME	(sizeof(long) * 12)
+#define RT_SIGFRAME_SIZE	\
+	(((sizeof(struct_rt_sigframe) + FUNCTIONCALLFRAME)) & -SIGFRAME)
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	unsigned long addr;
+
+	return upeek(tcp->pid, 4 * 30, &addr)
+		? 0 : (addr & ~1UL) - RT_SIGFRAME_SIZE;
+}
diff --git a/linux/hppa/rt_sigframe.h b/linux/hppa/rt_sigframe.h
new file mode 100644
index 0000000..56b3bdb
--- /dev/null
+++ b/linux/hppa/rt_sigframe.h
@@ -0,0 +1,39 @@
+/*
+ * 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 {
+	unsigned int	tramp[9];
+	siginfo_t	info;
+	ucontext_t	uc;
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h
index 97e2a32..ef0e2d8 100644
--- a/linux/hppa/syscallent.h
+++ b/linux/hppa/syscallent.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2001 Hewlett-Packard, Matthew Wilcox
+ * Copyright (c) 2001-2017 The strace developers.
  */
 
 [  0] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
@@ -20,7 +21,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown),			"lchown"		},
 [ 17] = { 3,	TN,		SEN(socket),			"socket"		},
-[ 18] = { 2,	TF,		SEN(stat),			"stat"			},
+[ 18] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
 [ 19] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [ 20] = { 0,	NF,		SEN(getpid),			"getpid"		},
 [ 21] = { 5,	TF,		SEN(mount),			"mount"			},
@@ -30,7 +31,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[ 28] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [ 29] = { 0,	TS,		SEN(pause),			"pause"			},
 [ 30] = { 2,	TF,		SEN(utime),			"utime"			},
 [ 31] = { 3,	TN,		SEN(connect),			"connect"		},
@@ -64,14 +65,14 @@
 [ 59] = { 1,	0,		SEN(uname),			"uname"			},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
-[ 68] = { 0,	TS,		SEN(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
+[ 69] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
 [ 70] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [ 71] = { 2,	0,		SEN(setregid),			"setregid"		},
 [ 72] = { 3,	TM,		SEN(mincore),			"mincore"		},
@@ -86,7 +87,7 @@
 [ 81] = { 2,	0,		SEN(setgroups),			"setgroups"		},
 [ 82] = { 6,	TN,		SEN(sendto),			"sendto"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(lstat),			"lstat"			},
+[ 84] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
 [ 85] = { 3,	TF,		SEN(readlink),			"readlink"		},
 [ 86] = { 1,	TF,		SEN(uselib),			"uselib"		},
 [ 87] = { 2,	TF,		SEN(swapon),			"swapon"		},
@@ -101,9 +102,9 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	TN,		SEN(recv),			"recv"			},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
-[101] = { 2,	TF,		SEN(stat64),			"stat64"		},
+[ 99] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[100] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
+[101] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
 [102] = { },
 [103] = { 3,	0,		SEN(syslog),			"syslog"		},
 [104] = { 3,	0,		SEN(setitimer),			"setitimer"		},
@@ -114,7 +115,7 @@
 [109] = { 5,	TD,		SEN(pwrite),			"pwrite64"		},
 [110] = { 2,	TF,		SEN(getcwd),			"getcwd"		},
 [111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
-[112] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[112] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [113] = { 0,	TP,		SEN(vfork),			"vfork"			},
 [114] = { 4,	TP,		SEN(wait4),			"wait4"			},
 [115] = { 1,	TF,		SEN(swapoff),			"swapoff"		},
@@ -175,7 +176,7 @@
 [170] = { 3,	0,		SEN(setresgid),			"setresgid"		},
 [171] = { 3,	0,		SEN(getresgid),			"getresgid"		},
 [172] = { 5,	0,		SEN(prctl),			"prctl"			},
-[173] = { 0,	TS,		SEN(sigreturn),			"rt_sigreturn"		},
+[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"		},
@@ -200,7 +201,7 @@
 [195] = { 3,	TI,		SEN(shmctl),			"shmctl"		},
 [196] = { 5,	TN,		SEN(getpmsg),			"getpmsg"		},
 [197] = { 5,	TN,		SEN(putpmsg),			"putpmsg"		},
-[198] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
+[198] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [199] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [200] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
 [201] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
@@ -282,7 +283,7 @@
 [277] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [278] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [279] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[280] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[280] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [281] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [282] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [283] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -300,8 +301,8 @@
 [295] = { 6,	TM,		SEN(move_pages),		"move_pages"		},
 [296] = { 3,	0,		SEN(getcpu),			"getcpu"		},
 [297] = { 6,	TD,		SEN(epoll_pwait),		"epoll_pwait"		},
-[298] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[299] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[298] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[299] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [300] = { 4,	0,		SEN(kexec_load),		"kexec_load"		},
 [301] = { 4,	TD|TF,		SEN(utimensat),			"utimensat"		},
 [302] = { 3,	TD|TS,		SEN(signalfd),			"signalfd"		},
diff --git a/linux/i386/arch_rt_sigframe.c b/linux/i386/arch_rt_sigframe.c
new file mode 100644
index 0000000..b508408
--- /dev/null
+++ b/linux/i386/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *i386_esp_ptr - 4;
+}
diff --git a/linux/i386/ioctls_arch0.h b/linux/i386/ioctls_arch0.h
index e5b81a9..71690c4 100644
--- a/linux/i386/ioctls_arch0.h
+++ b/linux/i386/ioctls_arch0.h
@@ -68,6 +68,8 @@
 { "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
 { "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
 { "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
 { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
 { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
diff --git a/linux/i386/rt_sigframe.h b/linux/i386/rt_sigframe.h
new file mode 100644
index 0000000..9157ea4
--- /dev/null
+++ b/linux/i386/rt_sigframe.h
@@ -0,0 +1,43 @@
+/*
+ * 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 {
+	uint32_t	pretcode;
+	int		sig;
+	uint32_t	pinfo;
+	uint32_t	puc;
+	siginfo_t	info;
+	ucontext_t	uc;
+	/* more data follows */
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h
index 31023c2..b0e9244 100644
--- a/linux/i386/syscallent.h
+++ b/linux/i386/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,14 +89,14 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -221,9 +222,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_pgoff),		"mmap2"			},
 [193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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"		},
@@ -293,8 +294,8 @@
 [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,		SEN(statfs64),			"statfs64"		},
-[269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[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"		},
@@ -325,7 +326,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[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"		},
@@ -408,6 +409,7 @@
 [380] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [381] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [382] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[383] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/ia64/arch_rt_sigframe.c b/linux/ia64/arch_rt_sigframe.c
new file mode 100644
index 0000000..f6e660c
--- /dev/null
+++ b/linux/ia64/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *ia64_frame_ptr + 16;
+}
diff --git a/linux/ia64/arch_sigreturn.c b/linux/ia64/arch_sigreturn.c
deleted file mode 100644
index 0c0034f..0000000
--- a/linux/ia64/arch_sigreturn.c
+++ /dev/null
@@ -1,12 +0,0 @@
-static void
-arch_sigreturn(struct tcb *tcp)
-{
-	/* offsetof(struct sigframe, sc) */
-#define OFFSETOF_STRUCT_SIGFRAME_SC	0xA0
-	const unsigned long addr = *ia64_frame_ptr + 16 +
-				   OFFSETOF_STRUCT_SIGFRAME_SC +
-				   offsetof(struct sigcontext, sc_mask);
-	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
-	tprints("}");
-}
diff --git a/linux/ia64/rt_sigframe.h b/linux/ia64/rt_sigframe.h
new file mode 100644
index 0000000..954237f
--- /dev/null
+++ b/linux/ia64/rt_sigframe.h
@@ -0,0 +1,45 @@
+/*
+ * 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 {
+	unsigned long		arg0;
+	unsigned long		arg1;
+	unsigned long		arg2;
+	void			*handler;
+	siginfo_t		info;
+	struct sigcontext	sc;
+} struct_rt_sigframe;
+
+#define OFFSETOF_SIGMASK_IN_RT_SIGFRAME	\
+		offsetof(struct_rt_sigframe, sc.sc_mask)
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h
index 97ecab9..a44a4c1 100644
--- a/linux/ia64/syscallent.h
+++ b/linux/ia64/syscallent.h
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 1999, 2001 Hewlett-Packard Co
- *	David Mosberger-Tang <davidm@hpl.hp.com>
+ *                          David Mosberger-Tang <davidm@hpl.hp.com>
+ * Copyright (c) 2000-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -86,7 +87,7 @@
 [1066] = { 3,	TD,		SEN(fcntl),			"fcntl"			},
 [1067] = { 1,	NF,		SEN(umask),			"umask"			},
 [1068] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[1069] = { 2,	0,		SEN(ustat),			"ustat"			},
+[1069] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [1070] = { 2,	TD,		SEN(dup2),			"dup2"			},
 [1071] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [1072] = { 2,	0,		SEN(setregid),			"setregid"		},
@@ -120,8 +121,8 @@
 [1100] = { 3,	TD,		SEN(fchown),			"fchown"		},
 [1101] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [1102] = { 3,	0,		SEN(setpriority),		"setpriority"		},
-[1103] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[1104] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[1103] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[1104] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [1105] = { 0,	NF,		SEN(gettid),			"gettid"		},
 [1106] = { 3,	TI,		SEN(semget),			"semget"		},
 [1107] = { 3,	TI,		SEN(semop),			"semop"			},
@@ -137,9 +138,9 @@
 [1117] = { 3,	0,		SEN(syslog),			"syslog"		},
 [1118] = { 3,	0,		SEN(setitimer),			"setitimer"		},
 [1119] = { 2,	0,		SEN(getitimer),			"getitimer"		},
-[1120] = { 2,	TF,		SEN(stat),			"stat"			},
-[1121] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[1122] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[1120] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[1121] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
+[1122] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [1123] = { 0,	0,		SEN(vhangup),			"vhangup"		},
 [1124] = { 3,	TF,		SEN(chown),			"lchown"		},
 [1125] = { 5,	TM|SI,		SEN(remap_file_pages),		"remap_file_pages"	},
@@ -198,7 +199,7 @@
 [1178] = { 2,	TS,		SEN(rt_sigpending),		"rt_sigpending"		},
 [1179] = { 4,	TS,		SEN(rt_sigprocmask),		"rt_sigprocmask"	},
 [1180] = { 3,	TS,		SEN(rt_sigqueueinfo),		"rt_sigqueueinfo"	},
-[1181] = { 0,	TS,		SEN(sigreturn),			"rt_sigreturn"		},
+[1181] = { 0,	TS,		SEN(rt_sigreturn),		"rt_sigreturn"		},
 [1182] = { 2,	TS,		SEN(rt_sigsuspend),		"rt_sigsuspend"		},
 [1183] = { 4,	TS,		SEN(rt_sigtimedwait),		"rt_sigtimedwait"	},
 [1184] = { 2,	TF,		SEN(getcwd),			"getcwd"		},
@@ -227,9 +228,9 @@
 [1207] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [1208] = { 3,	TM,		SEN(mincore),			"mincore"		},
 [1209] = { 3,	TM,		SEN(madvise),			"madvise"		},
-[1210] = { 2,	TF,		SEN(stat),			"stat"			},
-[1211] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[1212] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[1210] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[1211] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
+[1212] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [1213] = { 6,	TP,		SEN(clone),			"clone2"		},
 [1214] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [1215] = { 2,	0,		SEN(printargs),			"getunwind"		},
@@ -274,8 +275,8 @@
 [1254] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [1255] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [1256] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[1257] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
-[1258] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
+[1257] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
+[1258] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
 [1259] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [1260] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
 [1261] = { 3,	TM,		SEN(set_mempolicy),		"set_mempolicy"		},
@@ -303,7 +304,7 @@
 [1283] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [1284] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [1285] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[1286] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
+[1286] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
 [1287] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [1288] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [1289] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/m68k/arch_rt_sigframe.c b/linux/m68k/arch_rt_sigframe.c
new file mode 100644
index 0000000..9ba26e1
--- /dev/null
+++ b/linux/m68k/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *m68k_usp_ptr - 4;
+}
diff --git a/linux/m68k/rt_sigframe.h b/linux/m68k/rt_sigframe.h
new file mode 100644
index 0000000..6bb909c
--- /dev/null
+++ b/linux/m68k/rt_sigframe.h
@@ -0,0 +1,43 @@
+/*
+ * 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 {
+	char		*pretcode;
+	int		sig;
+	siginfo_t	*pinfo;
+	void		*puc;
+	char		retcode[8];
+	siginfo_t	info;
+	ucontext_t	uc;
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h
index 1c33b09..73e6387 100644
--- a/linux/m68k/syscallent.h
+++ b/linux/m68k/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"chown"			},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,14 +89,14 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -221,9 +222,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_pgoff),		"mmap2"			},
 [193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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),			"chown32"		},
 [199] = { 0,	NF,		SEN(getuid),			"getuid32"		},
 [200] = { 0,	NF,		SEN(getgid),			"getgid32"		},
@@ -288,8 +289,8 @@
 [260] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [261] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [262] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[263] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[264] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[263] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[264] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [265] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [266] = { 2,	TF,		SEN(utimes),			"utimes"		},
 [267] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
@@ -318,7 +319,7 @@
 [290] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [291] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [292] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[293] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[293] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [294] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [295] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [296] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -404,6 +405,7 @@
 [376] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [377] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [378] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[379] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/metag/arch_regs.c b/linux/metag/arch_regs.c
index e9f0d78..5944723 100644
--- a/linux/metag/arch_regs.c
+++ b/linux/metag/arch_regs.c
@@ -1,3 +1,4 @@
 static struct user_gp_regs metag_regs;
+unsigned long *const metag_sp_ptr = &metag_regs.ax[0][0];
 #define ARCH_REGS_FOR_GETREGSET metag_regs
 #define ARCH_PC_REG metag_regs.pc
diff --git a/linux/metag/arch_regs.h b/linux/metag/arch_regs.h
new file mode 100644
index 0000000..3344c92
--- /dev/null
+++ b/linux/metag/arch_regs.h
@@ -0,0 +1 @@
+extern unsigned long *const metag_sp_ptr;
diff --git a/linux/metag/arch_rt_sigframe.c b/linux/metag/arch_rt_sigframe.c
new file mode 100644
index 0000000..898c5d2
--- /dev/null
+++ b/linux/metag/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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 "rt_sigframe.h"
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *metag_sp_ptr - sizeof(struct_rt_sigframe);
+}
diff --git a/linux/microblaze/arch_rt_sigframe.c b/linux/microblaze/arch_rt_sigframe.c
new file mode 100644
index 0000000..10d03db
--- /dev/null
+++ b/linux/microblaze/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	unsigned long addr;
+
+	return upeek(tcp->pid, 4 * 1, &addr) ? 0 : addr;
+}
diff --git a/linux/microblaze/arch_sigreturn.c b/linux/microblaze/arch_sigreturn.c
index 6eb7cd8..6e4343a 100644
--- a/linux/microblaze/arch_sigreturn.c
+++ b/linux/microblaze/arch_sigreturn.c
@@ -11,6 +11,6 @@
 	addr += offsetof(struct sigcontext, oldmask);
 
 	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
+	print_sigset_addr(tcp, addr);
 	tprints("}");
 }
diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h
index d71e97a..4f6120f 100644
--- a/linux/microblaze/syscallent.h
+++ b/linux/microblaze/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,14 +89,14 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -221,9 +222,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_pgoff),		"mmap2"			},
 [193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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"		},
@@ -293,8 +294,8 @@
 [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,		SEN(statfs64),			"statfs64"		},
-[269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[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"		},
@@ -325,7 +326,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[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"		},
diff --git a/linux/mips/arch_rt_sigframe.c b/linux/mips/arch_rt_sigframe.c
new file mode 100644
index 0000000..03acc73
--- /dev/null
+++ b/linux/mips/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return mips_REG_SP;
+}
diff --git a/linux/mips/arch_sigreturn.c b/linux/mips/arch_sigreturn.c
index 72f7619..522b731 100644
--- a/linux/mips/arch_sigreturn.c
+++ b/linux/mips/arch_sigreturn.c
@@ -1,26 +1,17 @@
 static void
 arch_sigreturn(struct tcb *tcp)
 {
-#if defined LINUX_MIPSO32
+	/* 64-bit ABIs do not have old sigreturn. */
+#ifdef LINUX_MIPSO32
 	/*
 	 * offsetof(struct sigframe, sf_mask) ==
 	 * sizeof(sf_ass) + sizeof(sf_pad) + sizeof(struct sigcontext)
 	 */
 	const kernel_ulong_t addr = mips_REG_SP + 6 * 4 +
 				   sizeof(struct sigcontext);
-#else
-	/*
-	 * This decodes rt_sigreturn.
-	 * The 64-bit ABIs do not have sigreturn.
-	 *
-	 * offsetof(struct rt_sigframe, rs_uc) ==
-	 * sizeof(sf_ass) + sizeof(sf_pad) + sizeof(struct siginfo)
-	 */
-	const kernel_ulong_t addr = mips_REG_SP + 6 * 4 + 128 +
-				   offsetof(struct ucontext, uc_sigmask);
-#endif
 
 	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
+	print_sigset_addr(tcp, addr);
 	tprints("}");
+#endif
 }
diff --git a/linux/mips/rt_sigframe.h b/linux/mips/rt_sigframe.h
new file mode 100644
index 0000000..e07bcd1
--- /dev/null
+++ b/linux/mips/rt_sigframe.h
@@ -0,0 +1,39 @@
+/*
+ * 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 {
+	uint32_t	pad[6];
+	siginfo_t	info;
+	ucontext_t	uc;
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/mips/syscallent-compat.h b/linux/mips/syscallent-compat.h
index 82a373b..d8b309d 100644
--- a/linux/mips/syscallent-compat.h
+++ b/linux/mips/syscallent-compat.h
@@ -16,7 +16,7 @@
 [  15] = { 0,	0,	SEN(printargs),		"svr4_chmod"	},
 [  16] = { 0,	0,	SEN(printargs),		"svr4_chown"	},
 [  17] = { 0,	TM,	SEN(printargs),		"svr4_sbreak"	},
-[  18] = { 0,	0,	SEN(printargs),		"svr4_stat"	},
+[  18] = { 0,	TF|TST|TSTA,SEN(printargs),		"svr4_stat"	},
 [  19] = { 0,	0,	SEN(printargs),		"svr4_lseek"	},
 [  20] = { 0,	0,	SEN(printargs),		"svr4_getpid"	},
 [  21] = { 0,	0,	SEN(printargs),		"svr4_mount"	},
@@ -26,17 +26,17 @@
 [  25] = { 0,	0,	SEN(printargs),		"svr4_stime"	},
 [  26] = { 0,	0,	SEN(printargs),		"svr4_ptrace"	},
 [  27] = { 0,	0,	SEN(printargs),		"svr4_alarm"	},
-[  28] = { 0,	0,	SEN(printargs),		"svr4_fstat"	},
+[  28] = { 0,	TD|TFST|TSTA,SEN(printargs),		"svr4_fstat"	},
 [  29] = { 0,	0,	SEN(printargs),		"svr4_pause"	},
 [  30] = { 0,	0,	SEN(printargs),		"svr4_utime"	},
 [  31] = { 0,	0,	SEN(printargs),		"svr4_stty"	},
 [  32] = { 0,	0,	SEN(printargs),		"svr4_gtty"	},
 [  33] = { 0,	0,	SEN(printargs),		"svr4_access"	},
 [  34] = { 0,	0,	SEN(printargs),		"svr4_nice"	},
-[  35] = { 0,	0,	SEN(printargs),		"svr4_statfs"	},
+[  35] = { 0,	TF|TSF|TSFA,SEN(printargs),		"svr4_statfs"	},
 [  36] = { 0,	0,	SEN(printargs),		"svr4_sync"	},
 [  37] = { 0,	0,	SEN(printargs),		"svr4_kill"	},
-[  38] = { 0,	0,	SEN(printargs),		"svr4_fstatfs"	},
+[  38] = { 0,	TD|TFSF|TSFA,SEN(printargs),		"svr4_fstatfs"	},
 [  39] = { 0,	0,	SEN(printargs),		"svr4_setpgrp"	},
 [  40] = { 0,	0,	SEN(printargs),		"svr4_cxenix"	},
 [  41] = { 0,	0,	SEN(printargs),		"svr4_dup"	},
@@ -81,7 +81,7 @@
 [  85] = { 0,	0,	SEN(printargs),		"svr4_getmsg"	},
 [  86] = { 0,	0,	SEN(printargs),		"svr4_putmsg"	},
 [  87] = { 0,	0,	SEN(printargs),		"svr4_poll"	},
-[  88] = { 0,	0,	SEN(printargs),		"svr4_lstat"	},
+[  88] = { 0,	TF|TLST|TSTA,SEN(printargs),		"svr4_lstat"	},
 [  89] = { 0,	0,	SEN(printargs),		"svr4_symlink"	},
 [  90] = { 0,	0,	SEN(printargs),		"svr4_readlink"	},
 [  91] = { 0,	0,	SEN(printargs),		"svr4_setgroups"	},
@@ -96,8 +96,8 @@
 [ 100] = { 0,	0,	SEN(printargs),		"svr4_setcontext"	},
 [ 101] = { 0,	0,	SEN(printargs),		"svr4_evsys"	},
 [ 102] = { 0,	0,	SEN(printargs),		"svr4_evtrapret"	},
-[ 103] = { 0,	0,	SEN(printargs),		"svr4_statvfs"	},
-[ 104] = { 0,	0,	SEN(printargs),		"svr4_fstatvfs"	},
+[ 103] = { 0,	TF|TSF|TSFA,SEN(printargs),		"svr4_statvfs"	},
+[ 104] = { 0,	TD|TFSF|TSFA,SEN(printargs),		"svr4_fstatvfs"	},
 [ 105] = { },
 [ 106] = { 0,	0,	SEN(printargs),		"svr4_nfssys"	},
 [ 107] = { 0,	0,	SEN(printargs),		"svr4_waitid"	},
@@ -116,9 +116,9 @@
 [ 120] = { 0,	0,	SEN(printargs),		"svr4_fchdir"	},
 [ 121] = { 0,	0,	SEN(printargs),		"svr4_readv"	},
 [ 122] = { 0,	0,	SEN(printargs),		"svr4_writev"	},
-[ 123] = { 0,	0,	SEN(printargs),		"svr4_xstat"	},
-[ 124] = { 0,	0,	SEN(printargs),		"svr4_lxstat"	},
-[ 125] = { 0,	0,	SEN(printargs),		"svr4_fxstat"	},
+[ 123] = { 0,	TF|TST|TSTA,SEN(printargs),		"svr4_xstat"	},
+[ 124] = { 0,	TF|TLST|TSTA,SEN(printargs),		"svr4_lxstat"	},
+[ 125] = { 0,	TD|TFST|TSTA,SEN(printargs),		"svr4_fxstat"	},
 [ 126] = { 0,	0,	SEN(printargs),		"svr4_xmknod"	},
 [ 127] = { 0,	0,	SEN(printargs),		"svr4_clocal"	},
 [ 128] = { 0,	0,	SEN(printargs),		"svr4_setrlimit"	},
@@ -167,7 +167,7 @@
 [1015] = { 0,	0,	SEN(printargs),		"sysv_chmod"	},
 [1016] = { 0,	0,	SEN(printargs),		"sysv_chown"	},
 [1017] = { 0,	TM|SI,	SEN(printargs),		"sysv_brk"	},
-[1018] = { 0,	0,	SEN(printargs),		"sysv_stat"	},
+[1018] = { 0,	TF|TST|TSTA,SEN(printargs),		"sysv_stat"	},
 [1019] = { 0,	0,	SEN(printargs),		"sysv_lseek"	},
 [1020] = { 0,	0,	SEN(printargs),		"sysv_getpid"	},
 [1021] = { 0,	0,	SEN(printargs),		"sysv_mount"	},
@@ -177,17 +177,17 @@
 [1025] = { 0,	0,	SEN(printargs),		"sysv_stime"	},
 [1026] = { 0,	0,	SEN(printargs),		"sysv_ptrace"	},
 [1027] = { 0,	0,	SEN(printargs),		"sysv_alarm"	},
-[1028] = { 0,	0,	SEN(printargs),		"sysv_fstat"	},
+[1028] = { 0,	TD|TFST|TSTA,SEN(printargs),		"sysv_fstat"	},
 [1029] = { 0,	0,	SEN(printargs),		"sysv_pause"	},
 [1030] = { 0,	0,	SEN(printargs),		"sysv_utime"	},
 [1031] = { 0,	0,	SEN(printargs),		"sysv_stty"	},
 [1032] = { 0,	0,	SEN(printargs),		"sysv_gtty"	},
 [1033] = { 0,	0,	SEN(printargs),		"sysv_access"	},
 [1034] = { 0,	0,	SEN(printargs),		"sysv_nice"	},
-[1035] = { 0,	0,	SEN(printargs),		"sysv_statfs"	},
+[1035] = { 0,	TF|TSF|TSFA,SEN(printargs),		"sysv_statfs"	},
 [1036] = { 0,	0,	SEN(printargs),		"sysv_sync"	},
 [1037] = { 0,	0,	SEN(printargs),		"sysv_kill"	},
-[1038] = { 0,	0,	SEN(printargs),		"sysv_fstatfs"	},
+[1038] = { 0,	TD|TFSF|TSFA,SEN(printargs),		"sysv_fstatfs"	},
 [1039] = { 0,	0,	SEN(printargs),		"sysv_setpgrp"	},
 [1040] = { 0,	0,	SEN(printargs),		"sysv_syssgi"	},
 [1041] = { 0,	0,	SEN(printargs),		"sysv_dup"	},
@@ -261,7 +261,7 @@
 [1114] = { 0,	0,	SEN(printargs),		"sysv_rename"	},
 [1115] = { 0,	0,	SEN(printargs),		"sysv_symlink"	},
 [1116] = { 0,	0,	SEN(printargs),		"sysv_readlink"	},
-[1117] = { 0,	0,	SEN(printargs),		"sysv_lstat"	},
+[1117] = { 0,	TF|TLST|TSTA,SEN(printargs),		"sysv_lstat"	},
 [1118] = { 0,	0,	SEN(printargs),		"sysv_nfsmount"	},
 [1119] = { 0,	0,	SEN(printargs),		"sysv_nfssvc"	},
 [1120] = { 0,	0,	SEN(printargs),		"sysv_getfh"	},
@@ -302,9 +302,9 @@
 [1155] = { 0,	0,	SEN(printargs),		"sysv_socketpair"	},
 [1156] = { 0,	0,	SEN(printargs),		"sysv_sysinfo"	},
 [1157] = { 0,	0,	SEN(printargs),		"sysv_nuname"	},
-[1158] = { 0,	0,	SEN(printargs),		"sysv_xstat"	},
-[1159] = { 0,	0,	SEN(printargs),		"sysv_lxstat"	},
-[1160] = { 0,	0,	SEN(printargs),		"sysv_fxstat"	},
+[1158] = { 0,	TF|TST|TSTA,SEN(printargs),		"sysv_xstat"	},
+[1159] = { 0,	TF|TLST|TSTA,SEN(printargs),		"sysv_lxstat"	},
+[1160] = { 0,	TD|TFST|TSTA,SEN(printargs),		"sysv_fxstat"	},
 [1161] = { 0,	0,	SEN(printargs),		"sysv_xmknod"	},
 [1162] = { 0,	0,	SEN(printargs),		"sysv_ksigaction"	},
 [1163] = { 0,	0,	SEN(printargs),		"sysv_sigpending"	},
@@ -318,8 +318,8 @@
 [1171] = { 0,	0,	SEN(printargs),		"sysv_sigstack"	},
 [1172] = { 0,	0,	SEN(printargs),		"sysv_sigaltstack"	},
 [1173] = { 0,	0,	SEN(printargs),		"sysv_sigsendset"	},
-[1174] = { 0,	0,	SEN(printargs),		"sysv_statvfs"	},
-[1175] = { 0,	0,	SEN(printargs),		"sysv_fstatvfs"	},
+[1174] = { 0,	TF|TSF|TSFA,SEN(printargs),		"sysv_statvfs"	},
+[1175] = { 0,	TD|TFSF|TSFA,SEN(printargs),		"sysv_fstatvfs"	},
 [1176] = { 0,	0,	SEN(printargs),		"sysv_getpmsg"	},
 [1177] = { 0,	0,	SEN(printargs),		"sysv_putpmsg"	},
 [1178] = { 0,	0,	SEN(printargs),		"sysv_lchown"	},
@@ -352,7 +352,7 @@
 [2015] = { 0,	0,	SEN(printargs),		"bsd43_chmod"	},
 [2016] = { 0,	0,	SEN(printargs),		"bsd43_chown"	},
 [2017] = { 0,	TM,	SEN(printargs),		"bsd43_sbreak"	},
-[2018] = { 0,	0,	SEN(printargs),		"bsd43_oldstat"	},
+[2018] = { 0,	TF|TST|TSTA,SEN(printargs),		"bsd43_oldstat"	},
 [2019] = { 0,	0,	SEN(printargs),		"bsd43_lseek"	},
 [2020] = { 0,	0,	SEN(printargs),		"bsd43_getpid"	},
 [2021] = { 0,	0,	SEN(printargs),		"bsd43_oldmount"	},
@@ -362,7 +362,7 @@
 [2025] = { 0,	0,	SEN(printargs),		"bsd43_stime"	},
 [2026] = { 0,	0,	SEN(printargs),		"bsd43_ptrace"	},
 [2027] = { 0,	0,	SEN(printargs),		"bsd43_alarm"	},
-[2028] = { 0,	0,	SEN(printargs),		"bsd43_oldfstat"	},
+[2028] = { 0,	TD|TFST|TSTA,SEN(printargs),		"bsd43_oldfstat"	},
 [2029] = { 0,	0,	SEN(printargs),		"bsd43_pause"	},
 [2030] = { 0,	0,	SEN(printargs),		"bsd43_utime"	},
 [2031] = { 0,	0,	SEN(printargs),		"bsd43_stty"	},
@@ -372,9 +372,9 @@
 [2035] = { 0,	0,	SEN(printargs),		"bsd43_ftime"	},
 [2036] = { 0,	0,	SEN(printargs),		"bsd43_sync"	},
 [2037] = { 0,	0,	SEN(printargs),		"bsd43_kill"	},
-[2038] = { 0,	0,	SEN(printargs),		"bsd43_stat"	},
+[2038] = { 0,	TF|TST|TSTA,SEN(printargs),		"bsd43_stat"	},
 [2039] = { 0,	0,	SEN(printargs),		"bsd43_oldsetpgrp"	},
-[2040] = { 0,	0,	SEN(printargs),		"bsd43_lstat"	},
+[2040] = { 0,	TF|TLST|TSTA,SEN(printargs),		"bsd43_lstat"	},
 [2041] = { 0,	0,	SEN(printargs),		"bsd43_dup"	},
 [2042] = { 0,	0,	SEN(printargs),		"bsd43_pipe"	},
 [2043] = { 0,	0,	SEN(printargs),		"bsd43_times"	},
@@ -396,7 +396,7 @@
 [2059] = { 0,	0,	SEN(printargs),		"bsd43_execve"	},
 [2060] = { 0,	0,	SEN(printargs),		"bsd43_umask"	},
 [2061] = { 0,	0,	SEN(printargs),		"bsd43_chroot"	},
-[2062] = { 0,	0,	SEN(printargs),		"bsd43_fstat"	},
+[2062] = { 0,	TD|TFST|TSTA,SEN(printargs),		"bsd43_fstat"	},
 [2063] = { },
 [2064] = { 0,	0,	SEN(printargs),		"bsd43_getpagesize"	},
 [2065] = { 0,	TM|SI,	SEN(printargs),		"bsd43_mremap"	},
@@ -494,8 +494,8 @@
 [2157] = { 0,	0,	SEN(printargs),		"bsd43_nfs_mount"	},
 [2158] = { 0,	0,	SEN(printargs),		"bsd43_nfs_svc"	},
 [2159] = { 0,	0,	SEN(printargs),		"bsd43_getdirentries"	},
-[2160] = { 0,	0,	SEN(printargs),		"bsd43_statfs"	},
-[2161] = { 0,	0,	SEN(printargs),		"bsd43_fstatfs"	},
+[2160] = { 0,	TF|TSF|TSFA,SEN(printargs),		"bsd43_statfs"	},
+[2161] = { 0,	TD|TFSF|TSFA,SEN(printargs),		"bsd43_fstatfs"	},
 [2162] = { 0,	0,	SEN(printargs),		"bsd43_unmount"	},
 [2163] = { 0,	0,	SEN(printargs),		"bsd43_async_daemon"	},
 [2164] = { 0,	0,	SEN(printargs),		"bsd43_nfs_getfh"	},
@@ -545,7 +545,7 @@
 [3015] = { 0,	0,	SEN(printargs),		"posix_chmod"	},
 [3016] = { 0,	0,	SEN(printargs),		"posix_chown"	},
 [3017] = { 0,	TM,	SEN(printargs),		"posix_sbreak"	},
-[3018] = { 0,	0,	SEN(printargs),		"posix_stat"	},
+[3018] = { 0,	TF|TST|TSTA,SEN(printargs),		"posix_stat"	},
 [3019] = { 0,	0,	SEN(printargs),		"posix_lseek"	},
 [3020] = { 0,	0,	SEN(printargs),		"posix_getpid"	},
 [3021] = { 0,	0,	SEN(printargs),		"posix_mount"	},
@@ -555,17 +555,17 @@
 [3025] = { 0,	0,	SEN(printargs),		"posix_stime"	},
 [3026] = { 0,	0,	SEN(printargs),		"posix_ptrace"	},
 [3027] = { 0,	0,	SEN(printargs),		"posix_alarm"	},
-[3028] = { 0,	0,	SEN(printargs),		"posix_fstat"	},
+[3028] = { 0,	TD|TFST|TSTA,SEN(printargs),		"posix_fstat"	},
 [3029] = { 0,	0,	SEN(printargs),		"posix_pause"	},
 [3030] = { 0,	0,	SEN(printargs),		"posix_utime"	},
 [3031] = { 0,	0,	SEN(printargs),		"posix_stty"	},
 [3032] = { 0,	0,	SEN(printargs),		"posix_gtty"	},
 [3033] = { 0,	0,	SEN(printargs),		"posix_access"	},
 [3034] = { 0,	0,	SEN(printargs),		"posix_nice"	},
-[3035] = { 0,	0,	SEN(printargs),		"posix_statfs"	},
+[3035] = { 0,	TF|TSF|TSFA,SEN(printargs),		"posix_statfs"	},
 [3036] = { 0,	0,	SEN(printargs),		"posix_sync"	},
 [3037] = { 0,	0,	SEN(printargs),		"posix_kill"	},
-[3038] = { 0,	0,	SEN(printargs),		"posix_fstatfs"	},
+[3038] = { 0,	TD|TFSF|TSFA,SEN(printargs),		"posix_fstatfs"	},
 [3039] = { 0,	0,	SEN(printargs),		"posix_getpgrp"	},
 [3040] = { 0,	0,	SEN(printargs),		"posix_syssgi"	},
 [3041] = { 0,	0,	SEN(printargs),		"posix_dup"	},
@@ -639,7 +639,7 @@
 [3114] = { 0,	0,	SEN(printargs),		"posix_rename"	},
 [3115] = { 0,	0,	SEN(printargs),		"posix_symlink"	},
 [3116] = { 0,	0,	SEN(printargs),		"posix_readlink"	},
-[3117] = { 0,	0,	SEN(printargs),		"posix_lstat"	},
+[3117] = { 0,	TF|TLST|TSTA,SEN(printargs),		"posix_lstat"	},
 [3118] = { 0,	0,	SEN(printargs),		"posix_nfs_mount"	},
 [3119] = { 0,	0,	SEN(printargs),		"posix_nfs_svc"	},
 [3120] = { 0,	0,	SEN(printargs),		"posix_nfs_getfh"	},
diff --git a/linux/mips/syscallent-n32-stub.h b/linux/mips/syscallent-n32-stub.h
index 00b6659..4cfa682 100644
--- a/linux/mips/syscallent-n32-stub.h
+++ b/linux/mips/syscallent-n32-stub.h
@@ -2,9 +2,9 @@
 [6001] = { 3,	TD,		SEN(printargs), "n32:write"			},
 [6002] = { 3,	TD|TF,		SEN(printargs), "n32:open"			},
 [6003] = { 1,	TD,		SEN(printargs), "n32:close"			},
-[6004] = { 2,	TF,		SEN(printargs), "n32:stat"			},
-[6005] = { 2,	TD,		SEN(printargs), "n32:fstat"			},
-[6006] = { 2,	TF,		SEN(printargs), "n32:lstat"			},
+[6004] = { 2,	TF|TST|TSTA,	SEN(printargs), "n32:stat"			},
+[6005] = { 2,	TD|TFST|TSTA,	SEN(printargs), "n32:fstat"			},
+[6006] = { 2,	TF|TLST|TSTA,	SEN(printargs), "n32:lstat"			},
 [6007] = { 3,	TD,		SEN(printargs), "n32:poll"			},
 [6008] = { 3,	TD,		SEN(printargs), "n32:lseek"			},
 [6009] = { 6,	TD|TM|SI,	SEN(printargs), "n32:mmap"			},
@@ -131,9 +131,9 @@
 [6130] = { 2,	TF,		SEN(printargs), "n32:utime"			},
 [6131] = { 3,	TF,		SEN(printargs), "n32:mknod"			},
 [6132] = { 1,	NF,		SEN(printargs), "n32:personality"		},
-[6133] = { 2,	0,		SEN(printargs), "n32:ustat"			},
-[6134] = { 2,	TF,		SEN(printargs), "n32:statfs"		},
-[6135] = { 2,	TD,		SEN(printargs), "n32:fstatfs"		},
+[6133] = { 2,	TSFA,		SEN(printargs), "n32:ustat"			},
+[6134] = { 2,	TF|TSF|TSFA,	SEN(printargs), "n32:statfs"		},
+[6135] = { 2,	TD|TFSF|TSFA,	SEN(printargs), "n32:fstatfs"		},
 [6136] = { 3,	0,		SEN(printargs), "n32:sysfs"			},
 [6137] = { 2,	0,		SEN(printargs), "n32:getpriority"		},
 [6138] = { 3,	0,		SEN(printargs), "n32:setpriority"		},
@@ -215,8 +215,8 @@
 [6214] = { 0,	0,		SEN(printargs), "n32:restart_syscall"	},
 [6215] = { 4,	TI,		SEN(printargs), "n32:semtimedop"		},
 [6216] = { 4,	TD,		SEN(printargs), "n32:fadvise64"		},
-[6217] = { 3,	TF,		SEN(printargs), "n32:statfs64"		},
-[6218] = { 3,	TD,		SEN(printargs), "n32:fstatfs64"		},
+[6217] = { 3,	TF|TSF|TSFA,	SEN(printargs), "n32:statfs64"		},
+[6218] = { 3,	TD|TFSF|TSFA,	SEN(printargs), "n32:fstatfs64"		},
 [6219] = { 4,	TD|TN,		SEN(printargs), "n32:sendfile64"		},
 [6220] = { 3,	0,		SEN(printargs), "n32:timer_create"		},
 [6221] = { 4,	0,		SEN(printargs), "n32:timer_settime"		},
@@ -254,7 +254,7 @@
 [6253] = { 4,	TD|TF,		SEN(printargs), "n32:mknodat"		},
 [6254] = { 5,	TD|TF,		SEN(printargs), "n32:fchownat"		},
 [6255] = { 3,	TD|TF,		SEN(printargs), "n32:futimesat"		},
-[6256] = { 4,	TD|TF,		SEN(printargs), "n32:newfstatat"		},
+[6256] = { 4,	TD|TF|TFST|TSTA,SEN(printargs), "n32:newfstatat"		},
 [6257] = { 3,	TD|TF,		SEN(printargs), "n32:unlinkat"		},
 [6258] = { 4,	TD|TF,		SEN(printargs), "n32:renameat"		},
 [6259] = { 5,	TD|TF,		SEN(printargs), "n32:linkat"		},
@@ -328,3 +328,4 @@
 [6327] = { 4,	TM|SI,		SEN(printargs), "n32:pkey_mprotect"		},
 [6328] = { 2,	0,		SEN(printargs), "n32:pkey_alloc"		},
 [6329] = { 1,	0,		SEN(printargs), "n32:pkey_free"		},
+[6330] = { 5,	TD|TF|TSTA,	SEN(printargs), "n32:statx"			},
diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h
index c93c33b..73cbc9b 100644
--- a/linux/mips/syscallent-n32.h
+++ b/linux/mips/syscallent-n32.h
@@ -4,9 +4,9 @@
 [6001] = { 3,	TD,		SEN(write),			"write"			},
 [6002] = { 3,	TD|TF,		SEN(open),			"open"			},
 [6003] = { 1,	TD,		SEN(close),			"close"			},
-[6004] = { 2,	TF,		SEN(stat64),			"stat"			},
-[6005] = { 2,	TD,		SEN(fstat64),			"fstat"			},
-[6006] = { 2,	TF,		SEN(lstat64),			"lstat"			},
+[6004] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat"			},
+[6005] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat"			},
+[6006] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat"			},
 [6007] = { 3,	TD,		SEN(poll),			"poll"			},
 [6008] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [6009] = { 6,	TD|TM|SI,	SEN(mmap),			"mmap"			},
@@ -133,9 +133,9 @@
 [6130] = { 2,	TF,		SEN(utime),			"utime"			},
 [6131] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [6132] = { 1,	NF,		SEN(personality),		"personality"		},
-[6133] = { 2,	0,		SEN(ustat),			"ustat"			},
-[6134] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[6135] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[6133] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
+[6134] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[6135] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [6136] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [6137] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [6138] = { 3,	0,		SEN(setpriority),		"setpriority"		},
@@ -217,8 +217,8 @@
 [6214] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
 [6215] = { 4,	TI,		SEN(semtimedop),		"semtimedop"		},
 [6216] = { 4,	TD,		SEN(fadvise64_64),		"fadvise64"		},
-[6217] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[6218] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[6217] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[6218] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [6219] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
 [6220] = { 3,	0,		SEN(timer_create),		"timer_create"		},
 [6221] = { 4,	0,		SEN(timer_settime),		"timer_settime"		},
@@ -256,7 +256,7 @@
 [6253] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [6254] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [6255] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[6256] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
+[6256] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
 [6257] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [6258] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [6259] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -330,6 +330,7 @@
 [6327] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [6328] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [6329] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[6330] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 # define SYS_socket_subcall      6400
 # include "subcall.h"
diff --git a/linux/mips/syscallent-n64-stub.h b/linux/mips/syscallent-n64-stub.h
index e7c887e..4853e8e 100644
--- a/linux/mips/syscallent-n64-stub.h
+++ b/linux/mips/syscallent-n64-stub.h
@@ -2,9 +2,9 @@
 [5001] = { 3,	TD,		SEN(printargs), "n64:write"			},
 [5002] = { 3,	TD|TF,		SEN(printargs), "n64:open"			},
 [5003] = { 1,	TD,		SEN(printargs), "n64:close"			},
-[5004] = { 2,	TF,		SEN(printargs), "n64:stat"			},
-[5005] = { 2,	TD,		SEN(printargs), "n64:fstat"			},
-[5006] = { 2,	TF,		SEN(printargs), "n64:lstat"			},
+[5004] = { 2,	TF|TST|TSTA,	SEN(printargs), "n64:stat"			},
+[5005] = { 2,	TD|TFST|TSTA,	SEN(printargs), "n64:fstat"			},
+[5006] = { 2,	TF|TLST|TSTA,	SEN(printargs), "n64:lstat"			},
 [5007] = { 3,	TD,		SEN(printargs), "n64:poll"			},
 [5008] = { 3,	TD,		SEN(printargs), "n64:lseek"			},
 [5009] = { 6,	TD|TM|SI,	SEN(printargs), "n64:mmap"			},
@@ -131,9 +131,9 @@
 [5130] = { 2,	TF,		SEN(printargs), "n64:utime"			},
 [5131] = { 3,	TF,		SEN(printargs), "n64:mknod"			},
 [5132] = { 1,	NF,		SEN(printargs), "n64:personality"		},
-[5133] = { 2,	0,		SEN(printargs), "n64:ustat"			},
-[5134] = { 2,	TF,		SEN(printargs), "n64:statfs"		},
-[5135] = { 2,	TD,		SEN(printargs), "n64:fstatfs"		},
+[5133] = { 2,	TSFA,		SEN(printargs), "n64:ustat"			},
+[5134] = { 2,	TF|TSF|TSFA,	SEN(printargs), "n64:statfs"		},
+[5135] = { 2,	TD|TFSF|TSFA,	SEN(printargs), "n64:fstatfs"		},
 [5136] = { 3,	0,		SEN(printargs), "n64:sysfs"			},
 [5137] = { 2,	0,		SEN(printargs), "n64:getpriority"		},
 [5138] = { 3,	0,		SEN(printargs), "n64:setpriority"		},
@@ -250,7 +250,7 @@
 [5249] = { 4,	TD|TF,		SEN(printargs), "n64:mknodat"		},
 [5250] = { 5,	TD|TF,		SEN(printargs), "n64:fchownat"		},
 [5251] = { 3,	TD|TF,		SEN(printargs), "n64:futimesat"		},
-[5252] = { 4,	TD|TF,		SEN(printargs), "n64:newfstatat"		},
+[5252] = { 4,	TD|TF|TFST|TSTA,SEN(printargs), "n64:newfstatat"		},
 [5253] = { 3,	TD|TF,		SEN(printargs), "n64:unlinkat"		},
 [5254] = { 4,	TD|TF,		SEN(printargs), "n64:renameat"		},
 [5255] = { 5,	TD|TF,		SEN(printargs), "n64:linkat"		},
@@ -324,3 +324,4 @@
 [5323] = { 4,	TM|SI,		SEN(printargs), "n64:pkey_mprotect"		},
 [5324] = { 2,	0,		SEN(printargs), "n64:pkey_alloc"		},
 [5325] = { 1,	0,		SEN(printargs), "n64:pkey_free"		},
+[5326] = { 5,	TD|TF|TSTA,	SEN(printargs), "n64:statx"			},
diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h
index f14eebf..6e9b00a 100644
--- a/linux/mips/syscallent-n64.h
+++ b/linux/mips/syscallent-n64.h
@@ -4,9 +4,9 @@
 [5001] = { 3,	TD,		SEN(write),			"write"			},
 [5002] = { 3,	TD|TF,		SEN(open),			"open"			},
 [5003] = { 1,	TD,		SEN(close),			"close"			},
-[5004] = { 2,	TF,		SEN(stat),			"stat"			},
-[5005] = { 2,	TD,		SEN(fstat),			"fstat"			},
-[5006] = { 2,	TF,		SEN(lstat),			"lstat"			},
+[5004] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[5005] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
+[5006] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
 [5007] = { 3,	TD,		SEN(poll),			"poll"			},
 [5008] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [5009] = { 6,	TD|TM|SI,	SEN(mmap),			"mmap"			},
@@ -133,9 +133,9 @@
 [5130] = { 2,	TF,		SEN(utime),			"utime"			},
 [5131] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [5132] = { 1,	NF,		SEN(personality),		"personality"		},
-[5133] = { 2,	0,		SEN(ustat),			"ustat"			},
-[5134] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[5135] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[5133] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
+[5134] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[5135] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [5136] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [5137] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [5138] = { 3,	0,		SEN(setpriority),		"setpriority"		},
@@ -252,7 +252,7 @@
 [5249] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [5250] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [5251] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[5252] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
+[5252] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
 [5253] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [5254] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [5255] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -326,6 +326,7 @@
 [5323] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [5324] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [5325] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[5326] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 # define SYS_socket_subcall      5400
 # include "subcall.h"
diff --git a/linux/mips/syscallent-o32-stub.h b/linux/mips/syscallent-o32-stub.h
index f8604c7..04296fa 100644
--- a/linux/mips/syscallent-o32-stub.h
+++ b/linux/mips/syscallent-o32-stub.h
@@ -16,7 +16,7 @@
 [4015] = { 2,	TF,		SEN(printargs), "o32:chmod"			},
 [4016] = { 3,	TF,		SEN(printargs), "o32:lchown"		},
 [4017] = { 0,	TM,		SEN(printargs), "o32:break"			},
-[4018] = { 2,	TF,		SEN(printargs), "o32:oldstat"		},
+[4018] = { 2,	TF|TST|TSTA,	SEN(printargs), "o32:oldstat"		},
 [4019] = { 3,	TD,		SEN(printargs), "o32:lseek"			},
 [4020] = { 0,	NF,		SEN(printargs), "o32:getpid"		},
 [4021] = { 5,	TF,		SEN(printargs), "o32:mount"			},
@@ -26,7 +26,7 @@
 [4025] = { 1,	0,		SEN(printargs), "o32:stime"			},
 [4026] = { 4,	0,		SEN(printargs), "o32:ptrace"		},
 [4027] = { 1,	0,		SEN(printargs), "o32:alarm"			},
-[4028] = { 2,	TD,		SEN(printargs), "o32:oldfstat"		},
+[4028] = { 2,	TD|TFST|TSTA,	SEN(printargs), "o32:oldfstat"		},
 [4029] = { 0,	TS,		SEN(printargs), "o32:pause"			},
 [4030] = { 2,	TF,		SEN(printargs), "o32:utime"			},
 [4031] = { 0,	0,		SEN(printargs), "o32:stty"			},
@@ -60,7 +60,7 @@
 [4059] = { 1,	0,		SEN(printargs), "o32:oldolduname"		},
 [4060] = { 1,	NF,		SEN(printargs), "o32:umask"			},
 [4061] = { 1,	TF,		SEN(printargs), "o32:chroot"		},
-[4062] = { 2,	0,		SEN(printargs), "o32:ustat"			},
+[4062] = { 2,	TSFA,		SEN(printargs), "o32:ustat"			},
 [4063] = { 2,	TD,		SEN(printargs), "o32:dup2"			},
 [4064] = { 0,	NF,		SEN(printargs), "o32:getppid"		},
 [4065] = { 0,	0,		SEN(printargs), "o32:getpgrp"		},
@@ -70,7 +70,7 @@
 [4069] = { 1,	TS,		SEN(printargs), "o32:ssetmask"		},
 [4070] = { 2,	0,		SEN(printargs), "o32:setreuid"		},
 [4071] = { 2,	0,		SEN(printargs), "o32:setregid"		},
-[4072] = { 3,	TS,		SEN(printargs), "o32:sigsuspend"		},
+[4072] = { 1,	TS,		SEN(printargs), "o32:sigsuspend"		},
 [4073] = { 1,	TS,		SEN(printargs), "o32:sigpending"		},
 [4074] = { 2,	0,		SEN(printargs), "o32:sethostname"		},
 [4075] = { 2,	0,		SEN(printargs), "o32:setrlimit"		},
@@ -82,7 +82,7 @@
 [4081] = { 2,	0,		SEN(printargs), "o32:setgroups"		},
 [4082] = { 0,	0,		SEN(printargs), "o32:reserved82"		},
 [4083] = { 2,	TF,		SEN(printargs), "o32:symlink"		},
-[4084] = { 2,	TF,		SEN(printargs), "o32:oldlstat"		},
+[4084] = { 2,	TF|TLST|TSTA,	SEN(printargs), "o32:oldlstat"		},
 [4085] = { 3,	TF,		SEN(printargs), "o32:readlink"		},
 [4086] = { 1,	TF,		SEN(printargs), "o32:uselib"		},
 [4087] = { 2,	TF,		SEN(printargs), "o32:swapon"		},
@@ -97,16 +97,16 @@
 [4096] = { 2,	0,		SEN(printargs), "o32:getpriority"		},
 [4097] = { 3,	0,		SEN(printargs), "o32:setpriority"		},
 [4098] = { 0,	0,		SEN(printargs), "o32:profil"		},
-[4099] = { 2,	TF,		SEN(printargs), "o32:statfs"		},
-[4100] = { 2,	TD,		SEN(printargs), "o32:fstatfs"		},
+[4099] = { 2,	TF|TSF|TSFA,	SEN(printargs), "o32:statfs"		},
+[4100] = { 2,	TD|TFSF|TSFA,	SEN(printargs), "o32:fstatfs"		},
 [4101] = { 3,	0,		SEN(printargs), "o32:ioperm"		},
 [4102] = { 2,	TD,		SEN(printargs), "o32:socketcall"		},
 [4103] = { 3,	0,		SEN(printargs), "o32:syslog"		},
 [4104] = { 3,	0,		SEN(printargs), "o32:setitimer"		},
 [4105] = { 2,	0,		SEN(printargs), "o32:getitimer"		},
-[4106] = { 2,	TF,		SEN(printargs), "o32:stat"			},
-[4107] = { 2,	TF,		SEN(printargs), "o32:lstat"			},
-[4108] = { 2,	TD,		SEN(printargs), "o32:fstat"			},
+[4106] = { 2,	TF|TST|TSTA,	SEN(printargs), "o32:stat"			},
+[4107] = { 2,	TF|TLST|TSTA,	SEN(printargs), "o32:lstat"			},
+[4108] = { 2,	TD|TFST|TSTA,	SEN(printargs), "o32:fstat"			},
 [4109] = { 1,	0,		SEN(printargs), "o32:olduname"		},
 [4110] = { 1,	0,		SEN(printargs), "o32:iopl"			},
 [4111] = { 0,	0,		SEN(printargs), "o32:vhangup"		},
@@ -211,9 +211,9 @@
 [4210] = { 6,	TD|TM|SI,	SEN(printargs), "o32:mmap2"			},
 [4211] = { 4,	TF,		SEN(printargs), "o32:truncate64"		},
 [4212] = { 4,	TD,		SEN(printargs), "o32:ftruncate64"		},
-[4213] = { 2,	TF,		SEN(printargs), "o32:stat64"		},
-[4214] = { 2,	TF,		SEN(printargs), "o32:lstat64"		},
-[4215] = { 2,	TD,		SEN(printargs), "o32:fstat64"		},
+[4213] = { 2,	TF|TST|TSTA,	SEN(printargs), "o32:stat64"		},
+[4214] = { 2,	TF|TLST|TSTA,	SEN(printargs), "o32:lstat64"		},
+[4215] = { 2,	TD|TFST|TSTA,	SEN(printargs), "o32:fstat64"		},
 [4216] = { 2,	TF,		SEN(printargs), "o32:pivot_root"		},
 [4217] = { 3,	TM,		SEN(printargs), "o32:mincore"		},
 [4218] = { 3,	TM,		SEN(printargs), "o32:madvise"		},
@@ -253,8 +253,8 @@
 [4252] = { 1,	0,		SEN(printargs), "o32:set_tid_address"	},
 [4253] = { 0,	0,		SEN(printargs), "o32:restart_syscall"	},
 [4254] = { 7,	TD,		SEN(printargs), "o32:fadvise64"		},
-[4255] = { 3,	TF,		SEN(printargs), "o32:statfs64"		},
-[4256] = { 3,	TD,		SEN(printargs), "o32:fstatfs64"		},
+[4255] = { 3,	TF|TSF|TSFA,	SEN(printargs), "o32:statfs64"		},
+[4256] = { 3,	TD|TFSF|TSFA,	SEN(printargs), "o32:fstatfs64"		},
 [4257] = { 3,	0,		SEN(printargs), "o32:timer_create"		},
 [4258] = { 4,	0,		SEN(printargs), "o32:timer_settime"		},
 [4259] = { 2,	0,		SEN(printargs), "o32:timer_gettime"		},
@@ -291,7 +291,7 @@
 [4290] = { 4,	TD|TF,		SEN(printargs), "o32:mknodat"		},
 [4291] = { 5,	TD|TF,		SEN(printargs), "o32:fchownat"		},
 [4292] = { 3,	TD|TF,		SEN(printargs), "o32:futimesat"		},
-[4293] = { 4,	TD|TF,		SEN(printargs), "o32:fstatat64"		},
+[4293] = { 4,	TD|TF|TFST|TSTA,SEN(printargs), "o32:fstatat64"		},
 [4294] = { 3,	TD|TF,		SEN(printargs), "o32:unlinkat"		},
 [4295] = { 4,	TD|TF,		SEN(printargs), "o32:renameat"		},
 [4296] = { 5,	TD|TF,		SEN(printargs), "o32:linkat"		},
@@ -364,3 +364,4 @@
 [4363] = { 4,	TM|SI,		SEN(printargs), "o32:pkey_mprotect"		},
 [4364] = { 2,	0,		SEN(printargs), "o32:pkey_alloc"		},
 [4365] = { 1,	0,		SEN(printargs), "o32:pkey_free"		},
+[4366] = { 5,	TD|TF|TSTA,	SEN(printargs), "o32:statx"			},
diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h
index 780d3bc..9b84c48 100644
--- a/linux/mips/syscallent-o32.h
+++ b/linux/mips/syscallent-o32.h
@@ -18,7 +18,7 @@
 [4015] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [4016] = { 3,	TF,		SEN(chown),			"lchown"		},
 [4017] = { 0,	TM,		SEN(break),			"break"			},
-[4018] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[4018] = { 2,	TF|TST|TSTA,	SEN(oldstat),			"oldstat"		},
 [4019] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [4020] = { 0,	NF,		SEN(getpid),			"getpid"		},
 [4021] = { 5,	TF,		SEN(mount),			"mount"			},
@@ -28,7 +28,7 @@
 [4025] = { 1,	0,		SEN(stime),			"stime"			},
 [4026] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [4027] = { 1,	0,		SEN(alarm),			"alarm"			},
-[4028] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[4028] = { 2,	TD|TFST|TSTA,	SEN(oldfstat),			"oldfstat"		},
 [4029] = { 0,	TS,		SEN(pause),			"pause"			},
 [4030] = { 2,	TF,		SEN(utime),			"utime"			},
 [4031] = { 0,	0,		SEN(stty),			"stty"			},
@@ -62,17 +62,17 @@
 [4059] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [4060] = { 1,	NF,		SEN(umask),			"umask"			},
 [4061] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[4062] = { 2,	0,		SEN(ustat),			"ustat"			},
+[4062] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [4063] = { 2,	TD,		SEN(dup2),			"dup2"			},
 [4064] = { 0,	NF,		SEN(getppid),			"getppid"		},
 [4065] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
 [4066] = { 0,	0,		SEN(setsid),			"setsid"		},
 [4067] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
-[4068] = { 0,	TS,		SEN(siggetmask),		"sgetmask"		},
-[4069] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[4068] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
+[4069] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
 [4070] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [4071] = { 2,	0,		SEN(setregid),			"setregid"		},
-[4072] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[4072] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
 [4073] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
 [4074] = { 2,	0,		SEN(sethostname),		"sethostname"		},
 [4075] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
@@ -84,7 +84,7 @@
 [4081] = { 2,	0,		SEN(setgroups),			"setgroups"		},
 [4082] = { 0,	0,		SEN(printargs),			"reserved82"		},
 [4083] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[4084] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[4084] = { 2,	TF|TLST|TSTA,	SEN(oldlstat),			"oldlstat"		},
 [4085] = { 3,	TF,		SEN(readlink),			"readlink"		},
 [4086] = { 1,	TF,		SEN(uselib),			"uselib"		},
 [4087] = { 2,	TF,		SEN(swapon),			"swapon"		},
@@ -99,16 +99,16 @@
 [4096] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [4097] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [4098] = { 0,	0,		SEN(profil),			"profil"		},
-[4099] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[4100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[4099] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[4100] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [4101] = { 3,	0,		SEN(ioperm),			"ioperm"		},
 [4102] = { 2,	TD,		SEN(socketcall),		"socketcall"		},
 [4103] = { 3,	0,		SEN(syslog),			"syslog"		},
 [4104] = { 3,	0,		SEN(setitimer),			"setitimer"		},
 [4105] = { 2,	0,		SEN(getitimer),			"getitimer"		},
-[4106] = { 2,	TF,		SEN(stat),			"stat"			},
-[4107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[4108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[4106] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[4107] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
+[4108] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
 [4109] = { 1,	0,		SEN(olduname),			"olduname"		},
 [4110] = { 1,	0,		SEN(iopl),			"iopl"			},
 [4111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
@@ -213,9 +213,9 @@
 [4210] = { 6,	TD|TM|SI,	SEN(mmap_4koff),		"mmap2"			},
 [4211] = { 4,	TF,		SEN(truncate64),		"truncate64"		},
 [4212] = { 4,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[4213] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[4214] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[4215] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[4213] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
+[4214] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
+[4215] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [4216] = { 2,	TF,		SEN(pivotroot),			"pivot_root"		},
 [4217] = { 3,	TM,		SEN(mincore),			"mincore"		},
 [4218] = { 3,	TM,		SEN(madvise),			"madvise"		},
@@ -255,8 +255,8 @@
 [4252] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
 [4253] = { 0,	0,		SEN(restart_syscall),		"restart_syscall"	},
 [4254] = { 7,	TD,		SEN(fadvise64_64),		"fadvise64"		},
-[4255] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[4256] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[4255] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[4256] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [4257] = { 3,	0,		SEN(timer_create),		"timer_create"		},
 [4258] = { 4,	0,		SEN(timer_settime),		"timer_settime"		},
 [4259] = { 2,	0,		SEN(timer_gettime),		"timer_gettime"		},
@@ -293,7 +293,7 @@
 [4290] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [4291] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [4292] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[4293] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[4293] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [4294] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [4295] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [4296] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -366,6 +366,7 @@
 [4363] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [4364] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [4365] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[4366] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 # define SYS_socket_subcall      4400
 # include "subcall.h"
diff --git a/linux/mtd-abi.h b/linux/mtd-abi.h
index b197861..a63a99a 100644
--- a/linux/mtd-abi.h
+++ b/linux/mtd-abi.h
@@ -1,5 +1,6 @@
 /*
- * Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org> et al.
+ * 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
diff --git a/linux/nios2/arch_regs.c b/linux/nios2/arch_regs.c
index 2c30321..8a668bc 100644
--- a/linux/nios2/arch_regs.c
+++ b/linux/nios2/arch_regs.c
@@ -1,3 +1,4 @@
 static struct user_pt_regs nios2_regs;
+unsigned long *const nios2_sp_ptr = &nios2_regs.sp;
 # define ARCH_REGS_FOR_GETREGSET nios2_regs
 #define ARCH_PC_REG nios2_regs.regs[PTR_EA]
diff --git a/linux/nios2/arch_regs.h b/linux/nios2/arch_regs.h
new file mode 100644
index 0000000..7f344b5
--- /dev/null
+++ b/linux/nios2/arch_regs.h
@@ -0,0 +1 @@
+extern unsigned long *const nios2_sp_ptr;
diff --git a/linux/nios2/arch_rt_sigframe.c b/linux/nios2/arch_rt_sigframe.c
new file mode 100644
index 0000000..7359f11
--- /dev/null
+++ b/linux/nios2/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *nios2_sp_ptr;
+}
diff --git a/linux/or1k/arch_regs.c b/linux/or1k/arch_regs.c
index 78693e5..80ce763 100644
--- a/linux/or1k/arch_regs.c
+++ b/linux/or1k/arch_regs.c
@@ -1,3 +1,4 @@
 static struct user_regs_struct or1k_regs;
+unsigned long *const or1k_sp_ptr = &or1k_regs.gpr[1];
 #define ARCH_REGS_FOR_GETREGSET or1k_regs
 #define ARCH_PC_REG or1k_regs.pc
diff --git a/linux/or1k/arch_regs.h b/linux/or1k/arch_regs.h
new file mode 100644
index 0000000..44a78ec
--- /dev/null
+++ b/linux/or1k/arch_regs.h
@@ -0,0 +1 @@
+extern unsigned long *const or1k_sp_ptr;
diff --git a/linux/or1k/arch_rt_sigframe.c b/linux/or1k/arch_rt_sigframe.c
new file mode 100644
index 0000000..4f8cbbe
--- /dev/null
+++ b/linux/or1k/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *or1k_sp_ptr;
+}
diff --git a/linux/powerpc/arch_rt_sigframe.c b/linux/powerpc/arch_rt_sigframe.c
new file mode 100644
index 0000000..4a1c431
--- /dev/null
+++ b/linux/powerpc/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+#define	SIGNAL_FRAMESIZE32	64
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return ppc_regs.gpr[1] + SIGNAL_FRAMESIZE32 + 16;
+}
diff --git a/linux/powerpc/ioctls_arch0.h b/linux/powerpc/ioctls_arch0.h
index 6b429d3..10d40ff 100644
--- a/linux/powerpc/ioctls_arch0.h
+++ b/linux/powerpc/ioctls_arch0.h
@@ -136,9 +136,13 @@
 { "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 },
 { "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_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 },
 { "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
 { "linux/kvm.h", "KVM_PPC_RTAS_DEFINE_TOKEN", _IOC_WRITE, 0xaeac, 0x80 },
 { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h
index 4e1eb8b..829af9c 100644
--- a/linux/powerpc/syscallent.h
+++ b/linux/powerpc/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,17 +89,17 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
+[ 69] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
 [ 70] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [ 71] = { 2,	0,		SEN(setregid),			"setregid"		},
-[ 72] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[ 72] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
 [ 73] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
 [ 74] = { 2,	0,		SEN(sethostname),		"sethostname"		},
 [ 75] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups),			"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -221,9 +222,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_4koff),		"mmap2"			},
 [193] = { 4,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 4,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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] = { 5,	0,		SEN(printargs),			"pciconfig_read"	},
 [199] = { 5,	0,		SEN(printargs),			"pciconfig_write"	},
 [200] = { 3,	0,		SEN(printargs),			"pciconfig_iobase"	},
@@ -278,8 +279,8 @@
 [249] = { 2,	0,		SEN(printargs),			"swapcontext"		},
 [250] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [251] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[252] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[253] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[252] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[253] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [254] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
 [255] = { 1,	0,		SEN(printargs),			"rtas"			},
 [256] = { 5,	0,		SEN(printargs),			"sys_debug_setcontext"	},
@@ -317,7 +318,7 @@
 [288] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [289] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [290] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[291] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[291] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [292] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [293] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [294] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -409,6 +410,7 @@
 [380] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [381] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 [382] = { 5,	TD,		SEN(kexec_file_load),		"kexec_file_load"	},
+[383] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/powerpc64/arch_rt_sigframe.c b/linux/powerpc64/arch_rt_sigframe.c
new file mode 100644
index 0000000..333f708
--- /dev/null
+++ b/linux/powerpc64/arch_rt_sigframe.c
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#undef FUNC_GET_RT_SIGFRAME_ADDR
+#define	FUNC_GET_RT_SIGFRAME_ADDR	\
+	static kernel_ulong_t ppc_get_rt_sigframe_addr(struct tcb *tcp)
+
+#include "powerpc/arch_rt_sigframe.c"
+
+#undef FUNC_GET_RT_SIGFRAME_ADDR
+#define	FUNC_GET_RT_SIGFRAME_ADDR	DEF_FUNC_GET_RT_SIGFRAME_ADDR
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return tcp->currpers == 1
+		? ppc_get_rt_sigframe_addr(tcp) : ppc_regs.gpr[1];
+}
diff --git a/linux/powerpc64/rt_sigframe.h b/linux/powerpc64/rt_sigframe.h
new file mode 100644
index 0000000..979dbd7
--- /dev/null
+++ b/linux/powerpc64/rt_sigframe.h
@@ -0,0 +1,42 @@
+/*
+ * 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 __powerpc64__
+# include "../rt_sigframe.h"
+#else
+# ifndef STRACE_RT_SIGFRAME_H
+#  define STRACE_RT_SIGFRAME_H
+
+#  include <signal.h>
+
+typedef struct {
+	ucontext_t	uc;
+	/* more data follows */
+} struct_rt_sigframe;
+
+# endif /* !STRACE_RT_SIGFRAME_H */
+#endif /* !__powerpc64__ */
diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h
index e5263d4..3b65ed7 100644
--- a/linux/powerpc64/syscallent.h
+++ b/linux/powerpc64/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,17 +89,17 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 68] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
+[ 69] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
 [ 70] = { 2,	0,		SEN(setreuid),			"setreuid"		},
 [ 71] = { 2,	0,		SEN(setregid),			"setregid"		},
-[ 72] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[ 72] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
 [ 73] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
 [ 74] = { 2,	0,		SEN(sethostname),		"sethostname"		},
 [ 75] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups),			"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -273,8 +274,8 @@
 [249] = { 2,	0,		SEN(printargs),			"swapcontext"		},
 [250] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [251] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[252] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[253] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[252] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[253] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [254] = { },
 [255] = { 1,	0,		SEN(printargs),			"rtas"			},
 [256] = { 5,	0,		SEN(printargs),			"sys_debug_setcontext"	},
@@ -312,7 +313,7 @@
 [288] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [289] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [290] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[291] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
+[291] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
 [292] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [293] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [294] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -404,6 +405,7 @@
 [380] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [381] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
 [382] = { 5,	TD,		SEN(kexec_file_load),		"kexec_file_load"	},
+[383] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/ptp_clock.h b/linux/ptp_clock.h
index b65c834..2f92eb6 100644
--- a/linux/ptp_clock.h
+++ b/linux/ptp_clock.h
@@ -2,6 +2,7 @@
  * 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
diff --git a/linux/riscv/arch_regs.c b/linux/riscv/arch_regs.c
index 40be17d..58010df 100644
--- a/linux/riscv/arch_regs.c
+++ b/linux/riscv/arch_regs.c
@@ -1,3 +1,4 @@
 static struct user_regs_struct riscv_regs;
+unsigned long *const riscv_sp_ptr = &riscv_regs.sp;
 #define ARCH_REGS_FOR_GETREGSET riscv_regs
 #define ARCH_PC_REG riscv_regs.pc
diff --git a/linux/riscv/arch_regs.h b/linux/riscv/arch_regs.h
new file mode 100644
index 0000000..f270281
--- /dev/null
+++ b/linux/riscv/arch_regs.h
@@ -0,0 +1 @@
+extern unsigned long *const riscv_sp_ptr;
diff --git a/linux/riscv/arch_rt_sigframe.c b/linux/riscv/arch_rt_sigframe.c
new file mode 100644
index 0000000..54526c4
--- /dev/null
+++ b/linux/riscv/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *riscv_sp_ptr;
+}
diff --git a/linux/rt_sigframe.h b/linux/rt_sigframe.h
new file mode 100644
index 0000000..04b895b
--- /dev/null
+++ b/linux/rt_sigframe.h
@@ -0,0 +1,41 @@
+/*
+ * 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>
+
+/* This is a generic definition for compatible architectures. */
+
+typedef struct {
+	siginfo_t	info;
+	ucontext_t	uc;
+	/* more data might follow */
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/s390/arch_rt_sigframe.c b/linux/s390/arch_rt_sigframe.c
new file mode 100644
index 0000000..2cd468b
--- /dev/null
+++ b/linux/s390/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return *s390_frame_ptr;
+}
diff --git a/linux/s390/ioctls_arch0.h b/linux/s390/ioctls_arch0.h
index a287f0f..22f4bbc 100644
--- a/linux/s390/ioctls_arch0.h
+++ b/linux/s390/ioctls_arch0.h
@@ -37,6 +37,12 @@
 { "asm/dasd.h", "DASDAPIVER", _IOC_READ, 0x4400, 0x04 },
 { "asm/hypfs.h", "HYPFS_DIAG304", _IOC_READ|_IOC_WRITE, 0x1020, 0x18 },
 { "asm/ioctls.h", "FIOQSIZE", 0, 0x545E, 0 },
+{ "asm/pkey.h", "PKEY_CLR2PROTK", _IOC_READ|_IOC_WRITE, 0x7004, 0x6c },
+{ "asm/pkey.h", "PKEY_CLR2SECK", _IOC_READ|_IOC_WRITE, 0x7002, 0x68 },
+{ "asm/pkey.h", "PKEY_FINDCARD", _IOC_READ|_IOC_WRITE, 0x7005, 0x44 },
+{ "asm/pkey.h", "PKEY_GENSECK", _IOC_READ|_IOC_WRITE, 0x7001, 0x48 },
+{ "asm/pkey.h", "PKEY_SEC2PROTK", _IOC_READ|_IOC_WRITE, 0x7003, 0x8c },
+{ "asm/pkey.h", "PKEY_SKEY2PKEY", _IOC_READ|_IOC_WRITE, 0x7006, 0x88 },
 { "asm/sclp_ctl.h", "SCLP_CTL_SCCB", _IOC_READ|_IOC_WRITE, 0x1010, 0x0c },
 { "asm/tape390.h", "TAPE390_CRYPT_QUERY", _IOC_READ, 0x6403, 0x03 },
 { "asm/tape390.h", "TAPE390_CRYPT_SET", _IOC_WRITE, 0x6402, 0x03 },
@@ -59,6 +65,7 @@
 { "asm/zcrypt.h", "Z90STAT_STATUS_MASK", _IOC_READ, 0x7a48, 0x40 },
 { "asm/zcrypt.h", "Z90STAT_TOTALCOUNT", _IOC_READ, 0x7a40, 0x04 },
 { "asm/zcrypt.h", "Z90STAT_TOTALOPEN_COUNT", _IOC_READ, 0x7a46, 0x04 },
+{ "asm/zcrypt.h", "ZDEVICESTATUS", _IOC_READ|_IOC_WRITE, 0x7a4f, 0x00 },
 { "asm/zcrypt.h", "ZSECSENDCPRB", _IOC_READ|_IOC_WRITE, 0x7a81, 0x00 },
 { "asm/zcrypt.h", "ZSENDEP11CPRB", _IOC_READ|_IOC_WRITE, 0x7a04, 0x00 },
 { "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
@@ -103,6 +110,8 @@
 { "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
 { "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
 { "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
 { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
 { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
diff --git a/linux/s390/rt_sigframe.h b/linux/s390/rt_sigframe.h
new file mode 100644
index 0000000..7e8743e
--- /dev/null
+++ b/linux/s390/rt_sigframe.h
@@ -0,0 +1,40 @@
+/*
+ * 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 {
+	uint8_t		callee_used_stack[__SIGNAL_FRAMESIZE];
+	uint16_t	svc_insn;
+	siginfo_t	info;
+	ucontext_t	uc;
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h
index 6f841c7..3e769b6 100644
--- a/linux/s390/syscallent.h
+++ b/linux/s390/syscallent.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2000 IBM Deutschland Entwicklung GmbH, IBM Coporation
+ * Copyright (c) 2000-2017 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.
@@ -90,7 +91,7 @@
 [ 59] = { },
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
 [ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
 [ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
@@ -127,16 +128,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { },
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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] = { },
 [110] = { 4,	0,		SEN(lookup_dcookie),		"lookup_dcookie"	},
 [111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
@@ -201,7 +202,7 @@
 [170] = { 3,	0,		SEN(setresgid16),		"setresgid"		},
 [171] = { 3,	0,		SEN(getresgid16),		"getresgid"		},
 [172] = { 5,	0,		SEN(prctl),			"prctl"			},
-[173] = { 0,	TS,		SEN(sigreturn),			"rt_sigreturn"		},
+[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"		},
@@ -223,9 +224,9 @@
 [192] = { 1,	TD|TM|SI,	SEN(old_mmap_pgoff),		"mmap2"			},
 [193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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"		},
@@ -293,8 +294,8 @@
 [262] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
 [263] = { 5,	0,		SEN(vserver),			"vserver"		},
 [264] = { 6,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
-[265] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[266] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[265] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[266] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [267] = { 5,	TM|SI,		SEN(remap_file_pages),		"remap_file_pages"	},
 [268] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [269] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
@@ -321,7 +322,7 @@
 [290] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [291] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [292] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[293] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[293] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [294] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [295] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [296] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -406,6 +407,8 @@
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[378] = { },
+[379] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/s390x/arch_rt_sigframe.c b/linux/s390x/arch_rt_sigframe.c
new file mode 100644
index 0000000..9731c0e
--- /dev/null
+++ b/linux/s390x/arch_rt_sigframe.c
@@ -0,0 +1 @@
+#include "s390/arch_rt_sigframe.c"
diff --git a/linux/s390x/ioctls_arch0.h b/linux/s390x/ioctls_arch0.h
index f7c3355..f70da95 100644
--- a/linux/s390x/ioctls_arch0.h
+++ b/linux/s390x/ioctls_arch0.h
@@ -37,6 +37,12 @@
 { "asm/dasd.h", "DASDAPIVER", _IOC_READ, 0x4400, 0x04 },
 { "asm/hypfs.h", "HYPFS_DIAG304", _IOC_READ|_IOC_WRITE, 0x1020, 0x18 },
 { "asm/ioctls.h", "FIOQSIZE", 0, 0x545E, 0 },
+{ "asm/pkey.h", "PKEY_CLR2PROTK", _IOC_READ|_IOC_WRITE, 0x7004, 0x6c },
+{ "asm/pkey.h", "PKEY_CLR2SECK", _IOC_READ|_IOC_WRITE, 0x7002, 0x68 },
+{ "asm/pkey.h", "PKEY_FINDCARD", _IOC_READ|_IOC_WRITE, 0x7005, 0x44 },
+{ "asm/pkey.h", "PKEY_GENSECK", _IOC_READ|_IOC_WRITE, 0x7001, 0x48 },
+{ "asm/pkey.h", "PKEY_SEC2PROTK", _IOC_READ|_IOC_WRITE, 0x7003, 0x8c },
+{ "asm/pkey.h", "PKEY_SKEY2PKEY", _IOC_READ|_IOC_WRITE, 0x7006, 0x88 },
 { "asm/sclp_ctl.h", "SCLP_CTL_SCCB", _IOC_READ|_IOC_WRITE, 0x1010, 0x0c },
 { "asm/tape390.h", "TAPE390_CRYPT_QUERY", _IOC_READ, 0x6403, 0x03 },
 { "asm/tape390.h", "TAPE390_CRYPT_SET", _IOC_WRITE, 0x6402, 0x03 },
@@ -59,6 +65,7 @@
 { "asm/zcrypt.h", "Z90STAT_STATUS_MASK", _IOC_READ, 0x7a48, 0x40 },
 { "asm/zcrypt.h", "Z90STAT_TOTALCOUNT", _IOC_READ, 0x7a40, 0x04 },
 { "asm/zcrypt.h", "Z90STAT_TOTALOPEN_COUNT", _IOC_READ, 0x7a46, 0x04 },
+{ "asm/zcrypt.h", "ZDEVICESTATUS", _IOC_READ|_IOC_WRITE, 0x7a4f, 0x00 },
 { "asm/zcrypt.h", "ZSECSENDCPRB", _IOC_READ|_IOC_WRITE, 0x7a81, 0x00 },
 { "asm/zcrypt.h", "ZSENDEP11CPRB", _IOC_READ|_IOC_WRITE, 0x7a04, 0x00 },
 { "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
@@ -103,6 +110,8 @@
 { "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
 { "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
 { "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
 { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
 { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
diff --git a/linux/s390x/rt_sigframe.h b/linux/s390x/rt_sigframe.h
new file mode 100644
index 0000000..fc9b224
--- /dev/null
+++ b/linux/s390x/rt_sigframe.h
@@ -0,0 +1 @@
+#include "s390/rt_sigframe.h"
diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h
index ca67f46..9429641 100644
--- a/linux/s390x/syscallent.h
+++ b/linux/s390x/syscallent.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2000 IBM Deutschland Entwicklung GmbH, IBM Coporation
+ * Copyright (c) 2000-2017 The strace developers.
  * Author: Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
  * All rights reserved.
  *
@@ -89,7 +90,7 @@
 [ 59] = { },
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 62] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [ 63] = { 2,	TD,		SEN(dup2),			"dup2"			},
 [ 64] = { 0,	NF,		SEN(getppid),			"getppid"		},
 [ 65] = { 0,	0,		SEN(getpgrp),			"getpgrp"		},
@@ -121,16 +122,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { },
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 99] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[100] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [101] = { },
 [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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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] = { },
 [110] = { 3,	0,		SEN(lookup_dcookie),		"lookup_dcookie"	},
 [111] = { 0,	0,		SEN(vhangup),			"vhangup"		},
@@ -190,7 +191,7 @@
 [169] = { 3,	0,		SEN(nfsservctl),		"nfsservctl"		},
 [170 ... 171] = { },
 [172] = { 5,	0,		SEN(prctl),			"prctl"			},
-[173] = { 0,	TS,		SEN(sigreturn),			"rt_sigreturn"		},
+[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"		},
@@ -277,8 +278,8 @@
 [262] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
 [263] = { 5,	0,		SEN(vserver),			"vserver"		},
 [264] = { },
-[265] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[266] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[265] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[266] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [267] = { 5,	TM|SI,		SEN(remap_file_pages),		"remap_file_pages"	},
 [268] = { 6,	TM,		SEN(mbind),			"mbind"			},
 [269] = { 5,	TM,		SEN(get_mempolicy),		"get_mempolicy"		},
@@ -305,7 +306,7 @@
 [290] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [291] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [292] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[293] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
+[293] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
 [294] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [295] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [296] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -390,6 +391,8 @@
 [375] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [376] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [377] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[378] = { },
+[379] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sh/arch_rt_sigframe.c b/linux/sh/arch_rt_sigframe.c
new file mode 100644
index 0000000..ae16e3f
--- /dev/null
+++ b/linux/sh/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	unsigned long addr;
+
+	return upeek(tcp->pid, sizeof(long) * 15, &addr) ? 0 : addr;
+}
diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h
index 758c7f1..9b0fed9 100644
--- a/linux/sh/syscallent.h
+++ b/linux/sh/syscallent.h
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -46,7 +47,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -56,7 +57,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -90,17 +91,17 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[ 72] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
 [ 73] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
 [ 74] = { 2,	0,		SEN(sethostname),		"sethostname"		},
 [ 75] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
@@ -112,7 +113,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { 1,	TD,		SEN(oldselect),			"select"		},
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -127,16 +128,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -222,9 +223,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_4koff),		"mmap2"			},
 [193] = { 3,	TF,		SEN(truncate64),		"truncate64"		},
 [194] = { 3,	TD,		SEN(ftruncate64),		"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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"		},
@@ -293,8 +294,8 @@
 [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,		SEN(statfs64),			"statfs64"		},
-[269] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[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"		},
@@ -325,7 +326,7 @@
 [297] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [298] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [299] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[300] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[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"		},
diff --git a/linux/sh64/arch_rt_sigframe.c b/linux/sh64/arch_rt_sigframe.c
new file mode 100644
index 0000000..21204e3
--- /dev/null
+++ b/linux/sh64/arch_rt_sigframe.c
@@ -0,0 +1 @@
+#include "sh/arch_rt_sigframe.c"
diff --git a/linux/sh64/rt_sigframe.h b/linux/sh64/rt_sigframe.h
new file mode 100644
index 0000000..6080bae
--- /dev/null
+++ b/linux/sh64/rt_sigframe.h
@@ -0,0 +1,41 @@
+/*
+ * 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/sh64/syscallent.h b/linux/sh64/syscallent.h
index e35ef6f..19e7b73 100644
--- a/linux/sh64/syscallent.h
+++ b/linux/sh64/syscallent.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 [ 15] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 16] = { 3,	TF,		SEN(chown16),			"lchown"		},
 [ 17] = { 0,	TM,		SEN(break),			"break"			},
-[ 18] = { 2,	TF,		SEN(oldstat),			"oldstat"		},
+[ 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"			},
@@ -54,7 +55,7 @@
 [ 25] = { 1,	0,		SEN(stime),			"stime"			},
 [ 26] = { 4,	0,		SEN(ptrace),			"ptrace"		},
 [ 27] = { 1,	0,		SEN(alarm),			"alarm"			},
-[ 28] = { 2,	TD,		SEN(oldfstat),			"oldfstat"		},
+[ 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"			},
@@ -88,17 +89,17 @@
 [ 59] = { 1,	0,		SEN(oldolduname),		"oldolduname"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	0,		SEN(ustat),			"ustat"			},
+[ 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(siggetmask),		"sgetmask"		},
-[ 69] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
+[ 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] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[ 72] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
 [ 73] = { 1,	TS,		SEN(sigpending),		"sigpending"		},
 [ 74] = { 2,	0,		SEN(sethostname),		"sethostname"		},
 [ 75] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
@@ -110,7 +111,7 @@
 [ 81] = { 2,	0,		SEN(setgroups16),		"setgroups"		},
 [ 82] = { },
 [ 83] = { 2,	TF,		SEN(symlink),			"symlink"		},
-[ 84] = { 2,	TF,		SEN(oldlstat),			"oldlstat"		},
+[ 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"		},
@@ -125,16 +126,16 @@
 [ 96] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [ 97] = { 3,	0,		SEN(setpriority),		"setpriority"		},
 [ 98] = { 4,	0,		SEN(profil),			"profil"		},
-[ 99] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[100] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[ 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,		SEN(stat),			"stat"			},
-[107] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[108] = { 2,	TD,		SEN(fstat),			"fstat"			},
+[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"		},
@@ -220,9 +221,9 @@
 [192] = { 6,	TD|TM|SI,	SEN(mmap_4koff),		"mmap2"			},
 [193] = { 2,	TF,		SEN(truncate),			"truncate64"		},
 [194] = { 2,	TD,		SEN(ftruncate),			"ftruncate64"		},
-[195] = { 2,	TF,		SEN(stat64),			"stat64"		},
-[196] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
-[197] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[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"		},
@@ -319,8 +320,8 @@
 [293] = { 2,	0,		SEN(clock_gettime),		"clock_gettime"		},
 [294] = { 2,	0,		SEN(clock_getres),		"clock_getres"		},
 [295] = { 4,	0,		SEN(clock_nanosleep),		"clock_nanosleep"	},
-[296] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[297] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[296] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[297] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [298] = { 3,	TS,		SEN(tgkill),			"tgkill"		},
 [299] = { 2,	TF,		SEN(utimes),			"utimes"		},
 [300] = { 4,	TD,		SEN(fadvise64_64),		"fadvise64_64"		},
@@ -351,7 +352,7 @@
 [325] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [326] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [327] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[328] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[328] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [329] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [330] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [331] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
diff --git a/linux/sparc/arch_rt_sigframe.c b/linux/sparc/arch_rt_sigframe.c
new file mode 100644
index 0000000..418443e
--- /dev/null
+++ b/linux/sparc/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return sparc_regs.u_regs[U_REG_FP];
+}
diff --git a/linux/sparc/rt_sigframe.h b/linux/sparc/rt_sigframe.h
new file mode 100644
index 0000000..ef44e5c
--- /dev/null
+++ b/linux/sparc/rt_sigframe.h
@@ -0,0 +1,45 @@
+/*
+ * 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 "ptrace.h"
+#include <signal.h>
+
+typedef struct {
+	struct sparc_stackf	ss;
+	siginfo_t		info;
+	struct pt_regs		regs;
+	sigset_t		mask;
+	/* more data follows */
+} struct_rt_sigframe;
+
+#define OFFSETOF_SIGMASK_IN_RT_SIGFRAME	\
+		offsetof(struct_rt_sigframe, mask)
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h
index ab27a15..519fa58 100644
--- a/linux/sparc/syscallent.h
+++ b/linux/sparc/syscallent.h
@@ -36,9 +36,9 @@
 [ 35] = { 3,	TF,		SEN(chown),			"chown32"		},
 [ 36] = { 0,	0,		SEN(sync),			"sync"			},
 [ 37] = { 2,	TS,		SEN(kill),			"kill"			},
-[ 38] = { 2,	TF,		SEN(stat),			"stat"			},
+[ 38] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
 [ 39] = { 4,	TD|TN,		SEN(sendfile),			"sendfile"		},
-[ 40] = { 2,	TF,		SEN(lstat),			"lstat"			},
+[ 40] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
 [ 41] = { 1,	TD,		SEN(dup),			"dup"			},
 [ 42] = { 0,	TD,		SEN(pipe),			"pipe"			},
 [ 43] = { 1,	0,		SEN(times),			"times"			},
@@ -60,8 +60,8 @@
 [ 59] = { 3,	TF|TP|SE|SI,	SEN(execve),			"execve"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	TD,		SEN(fstat),			"fstat"			},
-[ 63] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[ 62] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
+[ 63] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [ 64] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
 [ 65] = { 3,	TM,		SEN(msync),			"msync"			},
 [ 66] = { 0,	TP,		SEN(vfork),			"vfork"			},
@@ -130,14 +130,14 @@
 [129] = { 2,	TF,		SEN(truncate),			"truncate"		},
 [130] = { 2,	TD,		SEN(ftruncate),			"ftruncate"		},
 [131] = { 2,	TD,		SEN(flock),			"flock"			},
-[132] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
+[132] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [133] = { 6,	TN,		SEN(sendto),			"sendto"		},
 [134] = { 2,	TN,		SEN(shutdown),			"shutdown"		},
 [135] = { 4,	TN,		SEN(socketpair),		"socketpair"		},
 [136] = { 2,	TF,		SEN(mkdir),			"mkdir"			},
 [137] = { 1,	TF,		SEN(rmdir),			"rmdir"			},
 [138] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[139] = { 2,	TF,		SEN(stat64),			"stat64"		},
+[139] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
 [140] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
 [141] = { 3,	TN,		SEN(getpeername),		"getpeername"		},
 [142] = { 6,	0,		SEN(futex),			"futex"			},
@@ -155,8 +155,8 @@
 [154] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [155] = { 3,	TD,		SEN(fcntl64),			"fcntl64"		},
 [156] = { 2,	TD,		SEN(inotify_rm_watch),		"inotify_rm_watch"	},
-[157] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[158] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[157] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[158] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [159] = { 1,	TF,		SEN(umount),			"umount"		},
 [160] = { 3,	0,		SEN(sched_setaffinity),		"sched_set_affinity"	},
 [161] = { 3,	0,		SEN(sched_getaffinity),		"sched_get_affinity"	},
@@ -166,7 +166,7 @@
 [165] = { 4,	TF,		SEN(quotactl),			"quotactl"		},
 [166] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
 [167] = { 5,	TF,		SEN(mount),			"mount"			},
-[168] = { 2,	0,		SEN(ustat),			"ustat"			},
+[168] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [169] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [170] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
 [171] = { 5,	TD,		SEN(fsetxattr),			"fsetxattr"		},
@@ -197,10 +197,10 @@
 [196] = { 3,	0,		SEN(ioprio_set),		"ioprio_set"		},
 [197] = { 0,	NF,		SEN(getppid),			"getppid"		},
 [198] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
-[199] = { 0,	TS,		SEN(siggetmask),		"sgetmask"		},
-[200] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
-[201] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
-[202] = { 2,	TF,		SEN(lstat),			"oldlstat"		},
+[199] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
+[200] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
+[201] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[202] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"oldlstat"		},
 [203] = { 1,	TF,		SEN(uselib),			"uselib"		},
 [204] = { 3,	TD,		SEN(readdir),			"readdir"		},
 [205] = { 4,	TD,		SEN(readahead),			"readahead"		},
@@ -232,8 +232,8 @@
 [231] = { 1,	0,		SEN(time),			"time"			},
 [232] = { 6,	TD,		SEN(splice),			"splice"		},
 [233] = { 1,	0,		SEN(stime),			"stime"			},
-[234] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[235] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[234] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[235] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [236] = { 5,	TD,		SEN(llseek),			"_llseek"		},
 [237] = { 2,	TM,		SEN(mlock),			"mlock"			},
 [238] = { 2,	TM,		SEN(munlock),			"munlock"		},
@@ -287,7 +287,7 @@
 [286] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [287] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [288] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[289] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[289] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [290] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [291] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [292] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -358,6 +358,7 @@
 [357] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [358] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [359] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[360] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/sparc64/arch_rt_sigframe.c b/linux/sparc64/arch_rt_sigframe.c
new file mode 100644
index 0000000..0bad84d
--- /dev/null
+++ b/linux/sparc64/arch_rt_sigframe.c
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+
+#define	STACK_BIAS	2047
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return tcp->currpers == 1 ? sparc_regs.u_regs[U_REG_FP] & 0xffffffffUL
+				  : sparc_regs.u_regs[U_REG_FP] + STACK_BIAS;
+}
diff --git a/linux/sparc64/rt_sigframe.h b/linux/sparc64/rt_sigframe.h
new file mode 100644
index 0000000..285801a
--- /dev/null
+++ b/linux/sparc64/rt_sigframe.h
@@ -0,0 +1,51 @@
+/*
+ * 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 __arch64__
+# include "sparc/rt_sigframe.h"
+#else
+# ifndef STRACE_RT_SIGFRAME_H
+#  define STRACE_RT_SIGFRAME_H
+
+#  include "ptrace.h"
+#  include <signal.h>
+
+typedef struct {
+	struct sparc_stackf	ss;
+	siginfo_t		info;
+	struct pt_regs		regs;
+	void			*fpu_save;
+	stack_t			stack;
+	sigset_t		mask;
+	/* more data follows */
+} struct_rt_sigframe;
+
+#  define OFFSETOF_SIGMASK_IN_RT_SIGFRAME	\
+		offsetof(struct_rt_sigframe, mask)
+
+# endif /* !STRACE_RT_SIGFRAME_H */
+#endif /* __arch64__ */
diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h
index ffc35a1..35ca773 100644
--- a/linux/sparc64/syscallent.h
+++ b/linux/sparc64/syscallent.h
@@ -35,9 +35,9 @@
 [ 35] = { },
 [ 36] = { 0,	0,		SEN(sync),			"sync"			},
 [ 37] = { 2,	TS,		SEN(kill),			"kill"			},
-[ 38] = { 2,	TF,		SEN(stat),			"stat"			},
+[ 38] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
 [ 39] = { 4,	TD|TN,		SEN(sendfile),			"sendfile"		},
-[ 40] = { 2,	TF,		SEN(lstat),			"lstat"			},
+[ 40] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
 [ 41] = { 1,	TD,		SEN(dup),			"dup"			},
 [ 42] = { 0,	TD,		SEN(pipe),			"pipe"			},
 [ 43] = { 1,	0,		SEN(times),			"times"			},
@@ -59,8 +59,8 @@
 [ 59] = { 3,	TF|TP|SE|SI,	SEN(execve),			"execve"		},
 [ 60] = { 1,	NF,		SEN(umask),			"umask"			},
 [ 61] = { 1,	TF,		SEN(chroot),			"chroot"		},
-[ 62] = { 2,	TD,		SEN(fstat),			"fstat"			},
-[ 63] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[ 62] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
+[ 63] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [ 64] = { 0,	0,		SEN(getpagesize),		"getpagesize"		},
 [ 65] = { 3,	TM,		SEN(msync),			"msync"			},
 [ 66] = { 0,	TP,		SEN(vfork),			"vfork"			},
@@ -128,14 +128,14 @@
 [129] = { 2,	TF,		SEN(truncate),			"truncate"		},
 [130] = { 2,	TD,		SEN(ftruncate),			"ftruncate"		},
 [131] = { 2,	TD,		SEN(flock),			"flock"			},
-[132] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
+[132] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [133] = { 6,	TN,		SEN(sendto),			"sendto"		},
 [134] = { 2,	TN,		SEN(shutdown),			"shutdown"		},
 [135] = { 4,	TN,		SEN(socketpair),		"socketpair"		},
 [136] = { 2,	TF,		SEN(mkdir),			"mkdir"			},
 [137] = { 1,	TF,		SEN(rmdir),			"rmdir"			},
 [138] = { 2,	TF,		SEN(utimes),			"utimes"		},
-[139] = { 2,	TF,		SEN(stat64),			"stat64"		},
+[139] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
 [140] = { 4,	TD|TN,		SEN(sendfile64),		"sendfile64"		},
 [141] = { 3,	TN,		SEN(getpeername),		"getpeername"		},
 [142] = { 6,	0,		SEN(futex),			"futex"			},
@@ -153,8 +153,8 @@
 [154] = { 3,	TD,		SEN(getdents64),		"getdents64"		},
 [155] = { },
 [156] = { 2,	TD,		SEN(inotify_rm_watch),		"inotify_rm_watch"	},
-[157] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[158] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[157] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[158] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [159] = { 1,	TF,		SEN(umount),			"umount"		},
 [160] = { 3,	0,		SEN(sched_setaffinity),		"sched_set_affinity"	},
 [161] = { 3,	0,		SEN(sched_getaffinity),		"sched_get_affinity"	},
@@ -164,7 +164,7 @@
 [165] = { 4,	TF,		SEN(quotactl),			"quotactl"		},
 [166] = { 1,	0,		SEN(set_tid_address),		"set_tid_address"	},
 [167] = { 5,	TF,		SEN(mount),			"mount"			},
-[168] = { 2,	0,		SEN(ustat),			"ustat"			},
+[168] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
 [169] = { 5,	TF,		SEN(setxattr),			"setxattr"		},
 [170] = { 5,	TF,		SEN(setxattr),			"lsetxattr"		},
 [171] = { 5,	TD,		SEN(fsetxattr),			"fsetxattr"		},
@@ -195,10 +195,10 @@
 [196] = { 3,	0,		SEN(ioprio_set),		"ioprio_set"		},
 [197] = { 0,	NF,		SEN(getppid),			"getppid"		},
 [198] = { 3,	TS,		SEN(sigaction),			"sigaction"		},
-[199] = { 0,	TS,		SEN(siggetmask),		"sgetmask"		},
-[200] = { 1,	TS,		SEN(sigsetmask),		"ssetmask"		},
-[201] = { 3,	TS,		SEN(sigsuspend),		"sigsuspend"		},
-[202] = { 2,	TF,		SEN(lstat),			"oldlstat"		},
+[199] = { 0,	TS,		SEN(sgetmask),			"sgetmask"		},
+[200] = { 1,	TS,		SEN(ssetmask),			"ssetmask"		},
+[201] = { 1,	TS,		SEN(sigsuspend),		"sigsuspend"		},
+[202] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"oldlstat"		},
 [203] = { 1,	TF,		SEN(uselib),			"uselib"		},
 [204] = { 3,	TD,		SEN(readdir),			"readdir"		},
 [205] = { 3,	TD,		SEN(readahead),			"readahead"		},
@@ -230,8 +230,8 @@
 [231] = { },
 [232] = { 6,	TD,		SEN(splice),			"splice"		},
 [233] = { 1,	0,		SEN(stime),			"stime"			},
-[234] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[235] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[234] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[235] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [236] = { 5,	TD,		SEN(llseek),			"_llseek"		},
 [237] = { 2,	TM,		SEN(mlock),			"mlock"			},
 [238] = { 2,	TM,		SEN(munlock),			"munlock"		},
@@ -285,7 +285,7 @@
 [286] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [287] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [288] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[289] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[289] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [290] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [291] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [292] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -356,6 +356,7 @@
 [357] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [358] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [359] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[360] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
 
 #define SYS_socket_subcall	400
 #include "subcall.h"
diff --git a/linux/subcall.h b/linux/subcall.h
index 169e5ea..c51eace 100644
--- a/linux/subcall.h
+++ b/linux/subcall.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/linux/syscall.h b/linux/syscall.h
index 6bf8b42..bd15518 100644
--- a/linux/syscall.h
+++ b/linux/syscall.h
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/linux/tile/arch_rt_sigframe.c b/linux/tile/arch_rt_sigframe.c
new file mode 100644
index 0000000..8d15e5c
--- /dev/null
+++ b/linux/tile/arch_rt_sigframe.c
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return tile_regs.sp;
+}
diff --git a/linux/tile/arch_sigreturn.c b/linux/tile/arch_sigreturn.c
index 88e946f..1c687db 100644
--- a/linux/tile/arch_sigreturn.c
+++ b/linux/tile/arch_sigreturn.c
@@ -7,6 +7,6 @@
 				   offsetof(struct ucontext, uc_sigmask);
 
 	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
+	print_sigset_addr(tcp, addr);
 	tprints("}");
 }
diff --git a/linux/tile/rt_sigframe.h b/linux/tile/rt_sigframe.h
new file mode 100644
index 0000000..e8adf1e
--- /dev/null
+++ b/linux/tile/rt_sigframe.h
@@ -0,0 +1,39 @@
+/*
+ * 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 {
+	unsigned char	save_area[C_ABI_SAVE_AREA_SIZE];
+	siginfo_t	info;
+	ucontext_t	uc;
+} struct_rt_sigframe;
+
+#endif /* !STRACE_RT_SIGFRAME_H */
diff --git a/linux/ubi-user.h b/linux/ubi-user.h
index e9e56b3..7bae56e 100644
--- a/linux/ubi-user.h
+++ b/linux/ubi-user.h
@@ -1,5 +1,6 @@
 /*
  * Copyright © 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
diff --git a/linux/x32/arch_rt_sigframe.c b/linux/x32/arch_rt_sigframe.c
new file mode 100644
index 0000000..1cc45e5
--- /dev/null
+++ b/linux/x32/arch_rt_sigframe.c
@@ -0,0 +1 @@
+#include "x86_64/arch_rt_sigframe.c"
diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h
index 46303d1..37d7076 100644
--- a/linux/x32/ioctls_inc0.h
+++ b/linux/x32/ioctls_inc0.h
@@ -264,11 +264,14 @@
 { "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_SET_VBLANK_PIPE", _IOC_WRITE, 0x644d, 0x04 },
 { "drm/i915_drm.h", "DRM_IOCTL_I915_VBLANK_SWAP", _IOC_READ|_IOC_WRITE, 0x644f, 0x0c },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_DISABLE", _IOC_NONE, 0x6901, 0x00 },
+{ "drm/i915_drm.h", "I915_PERF_IOCTL_ENABLE", _IOC_NONE, 0x6900, 0x00 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_BLIT", _IOC_WRITE, 0x6448, 0x34 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_CLEAR", _IOC_WRITE, 0x6444, 0x14 },
 { "drm/mga_drm.h", "DRM_IOCTL_MGA_DMA_BOOTSTRAP", _IOC_READ|_IOC_WRITE, 0x644c, 0x1c },
@@ -451,8 +454,10 @@
 { "linux/android/binder.h", "BC_REGISTER_LOOPER", _IOC_NONE, 0x630b, 0x00 },
 { "linux/android/binder.h", "BC_RELEASE", _IOC_WRITE, 0x6306, 0x04 },
 { "linux/android/binder.h", "BC_REPLY", _IOC_WRITE, 0x6301, 0x40 },
+{ "linux/android/binder.h", "BC_REPLY_SG", _IOC_WRITE, 0x6312, 0x48 },
 { "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
 { "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
+{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
 { "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
 { "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -1315,6 +1320,9 @@
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
 { "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_IO_VIO", _IOC_READ|_IOC_WRITE, 0x4c43, 0x50 },
+{ "linux/lightnvm.h", "NVME_NVM_IOCTL_SUBMIT_VIO", _IOC_READ|_IOC_WRITE, 0x4c42, 0x40 },
 { "linux/lightnvm.h", "NVM_DEV_CREATE", _IOC_WRITE, 0x4c22, 0x80 },
 { "linux/lightnvm.h", "NVM_DEV_FACTORY", _IOC_WRITE, 0x4c25, 0x24 },
 { "linux/lightnvm.h", "NVM_DEV_INIT", _IOC_WRITE, 0x4c24, 0x2c },
@@ -1455,6 +1463,8 @@
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_ALLOC_RANGE", _IOC_WRITE, 0x6e8c, 0x10 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SET_SUINFO", _IOC_WRITE, 0x6e8d, 0x18 },
 { "linux/nilfs2_api.h", "NILFS_IOCTL_SYNC", _IOC_READ, 0x6e8a, 0x08 },
+{ "linux/nsfs.h", "NS_GET_NSTYPE", _IOC_NONE, 0xb703, 0x00 },
+{ "linux/nsfs.h", "NS_GET_OWNER_UID", _IOC_NONE, 0xb704, 0x00 },
 { "linux/nsfs.h", "NS_GET_PARENT", _IOC_NONE, 0xb702, 0x00 },
 { "linux/nsfs.h", "NS_GET_USERNS", _IOC_NONE, 0xb701, 0x00 },
 { "linux/nvme_ioctl.h", "NVME_IOCTL_ADMIN_CMD", _IOC_READ|_IOC_WRITE, 0x4e41, 0x48 },
@@ -1665,6 +1675,8 @@
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_INBOUND", _IOC_WRITE, 0x6d12, 0x08 },
 { "linux/rio_mport_cdev.h", "RIO_UNMAP_OUTBOUND", _IOC_WRITE, 0x6d10, 0x28 },
 { "linux/rio_mport_cdev.h", "RIO_WAIT_FOR_ASYNC", _IOC_WRITE, 0x6d16, 0x08 },
+{ "linux/rpmsg.h", "RPMSG_CREATE_EPT_IOCTL", _IOC_WRITE, 0xb501, 0x28 },
+{ "linux/rpmsg.h", "RPMSG_DESTROY_EPT_IOCTL", _IOC_NONE, 0xb502, 0x00 },
 { "linux/rtc.h", "RTC_AIE_OFF", _IOC_NONE, 0x7002, 0x00 },
 { "linux/rtc.h", "RTC_AIE_ON", _IOC_NONE, 0x7001, 0x00 },
 { "linux/rtc.h", "RTC_ALM_READ", _IOC_READ, 0x7008, 0x24 },
@@ -1704,6 +1716,18 @@
 { "linux/scif_ioctl.h", "SCIF_VREADFROM", _IOC_READ|_IOC_WRITE, 0x730c, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_VWRITETO", _IOC_READ|_IOC_WRITE, 0x730d, 0x28 },
 { "linux/scif_ioctl.h", "SCIF_WRITETO", _IOC_READ|_IOC_WRITE, 0x730b, 0x28 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_LSP", _IOC_WRITE, 0x70df, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ACTIVATE_USR", _IOC_WRITE, 0x70e1, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ADD_USR_TO_LR", _IOC_WRITE, 0x70e4, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_ENABLE_DISABLE_MBR", _IOC_WRITE, 0x70e5, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_ERASE_LR", _IOC_WRITE, 0x70e6, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_LOCK_UNLOCK", _IOC_WRITE, 0x70dd, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_LR_SETUP", _IOC_WRITE, 0x70e3, 0x128 },
+{ "linux/sed-opal.h", "IOC_OPAL_REVERT_TPR", _IOC_WRITE, 0x70e2, 0x108 },
+{ "linux/sed-opal.h", "IOC_OPAL_SAVE", _IOC_WRITE, 0x70dc, 0x118 },
+{ "linux/sed-opal.h", "IOC_OPAL_SECURE_ERASE_LR", _IOC_WRITE, 0x70e7, 0x110 },
+{ "linux/sed-opal.h", "IOC_OPAL_SET_PW", _IOC_WRITE, 0x70e0, 0x220 },
+{ "linux/sed-opal.h", "IOC_OPAL_TAKE_OWNERSHIP", _IOC_WRITE, 0x70de, 0x108 },
 { "linux/serio.h", "SPIOCSTYPE", _IOC_WRITE, 0x7101, 0x04 },
 { "linux/sockios.h", "SIOCADDDLCI", 0, 0x8980, 0 },
 { "linux/sockios.h", "SIOCADDMULTI", 0, 0x8931, 0 },
@@ -2418,23 +2442,23 @@
 { "net/bluetooth/rfcomm.h", "RFCOMMRELEASEDEV", _IOC_WRITE, 0x52c9, 0x04 },
 { "net/bluetooth/rfcomm.h", "RFCOMMSTEALDLC", _IOC_WRITE, 0x52dc, 0x04 },
 { "net/nfc/nci_core.h", "NCIUARTSETDRIVER", _IOC_WRITE, 0x5500, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
-{ "rdma/hfi/hfi1_user.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
-{ "rdma/ib_user_mad.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ACK_EVENT", _IOC_WRITE, 0x1bea, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_ASSIGN_CTXT", _IOC_READ|_IOC_WRITE, 0x1be1, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CREDIT_UPD", _IOC_NONE, 0x1be6, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_INFO", _IOC_WRITE, 0x1be2, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_CTXT_RESET", _IOC_NONE, 0x1bec, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_GET_VERS", _IOC_READ, 0x1bee, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_POLL_TYPE", _IOC_WRITE, 0x1be9, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_RECV_CTRL", _IOC_WRITE, 0x1be8, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_SET_PKEY", _IOC_WRITE, 0x1beb, 0x02 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_FREE", _IOC_READ|_IOC_WRITE, 0x1be5, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_INVAL_READ", _IOC_READ|_IOC_WRITE, 0x1bed, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_TID_UPDATE", _IOC_READ|_IOC_WRITE, 0x1be4, 0x18 },
+{ "rdma/rdma_user_ioctl.h", "HFI1_IOCTL_USER_INFO", _IOC_WRITE, 0x1be3, 0x78 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_ENABLE_PKEY", _IOC_NONE, 0x1b03, 0x00 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
+{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
 { "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/x32/rt_sigframe.h b/linux/x32/rt_sigframe.h
new file mode 100644
index 0000000..8452e89
--- /dev/null
+++ b/linux/x32/rt_sigframe.h
@@ -0,0 +1 @@
+#include "x86_64/rt_sigframe.h"
diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h
index 0cda1a6..4d68327 100644
--- a/linux/x32/syscallent.h
+++ b/linux/x32/syscallent.h
@@ -2,9 +2,9 @@
 [  1] = { 3,	TD,		SEN(write),			"write"			},
 [  2] = { 3,	TD|TF,		SEN(open),			"open"			},
 [  3] = { 1,	TD,		SEN(close),			"close"			},
-[  4] = { 2,	TF,		SEN(stat),			"stat"			},
-[  5] = { 2,	TD,		SEN(fstat),			"fstat"			},
-[  6] = { 2,	TF,		SEN(lstat),			"lstat"			},
+[  4] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[  5] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
+[  6] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
 [  7] = { 3,	TD,		SEN(poll),			"poll"			},
 [  8] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [  9] = { 6,	TD|TM|SI,	SEN(mmap),			"mmap"			},
@@ -13,7 +13,7 @@
 [ 12] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 13] = { 4,	TS,		SEN(printargs),			"64:rt_sigaction"	},
 [ 14] = { 4,	TS,		SEN(rt_sigprocmask),		"rt_sigprocmask"	},
-[ 15] = { 0,	TS,		SEN(printargs),			"64:rt_sigreturn"	},
+[ 15] = { 0,	TS,		SEN(rt_sigreturn),		"64:rt_sigreturn"	},
 [ 16] = { 3,	TD,		SEN(printargs),			"64:ioctl"		},
 [ 17] = { 4,	TD,		SEN(pread),			"pread64"		},
 [ 18] = { 4,	TD,		SEN(pwrite),			"pwrite64"		},
@@ -134,9 +134,9 @@
 [133] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [134] = { 1,	TF,		SEN(printargs),			"64:uselib"		},
 [135] = { 1,	NF,		SEN(personality),		"personality"		},
-[136] = { 2,	0,		SEN(ustat),			"ustat"			},
-[137] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[138] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[136] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
+[137] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[138] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [139] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [140] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [141] = { 3,	0,		SEN(setpriority),		"setpriority"		},
@@ -260,7 +260,7 @@
 [259] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [260] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [261] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[262] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
+[262] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
 [263] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [264] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [265] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -330,13 +330,14 @@
 [329] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [330] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [331] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
-[332 ... 511] = { },
+[332] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
+[333 ... 511] = { },
 /*
  * x32-specific system call numbers start at 512 to avoid cache impact
  * for native 64-bit operation.
  */
 [512] = { 4,	CST|TS,		SEN(rt_sigaction),		"rt_sigaction"		},
-[513] = { 0,	CST|TS,		SEN(sigreturn),			"rt_sigreturn"		},
+[513] = { 0,	CST|TS,		SEN(rt_sigreturn),		"rt_sigreturn"		},
 [514] = { 3,	CST|TD,		SEN(ioctl),			"ioctl"			},
 [515] = { 3,	CST|TD,		SEN(readv),			"readv"			},
 [516] = { 3,	CST|TD,		SEN(writev),			"writev"		},
@@ -369,5 +370,5 @@
 [543] = { 2,	CST|TM,		SEN(io_setup),			"io_setup"		},
 [544] = { 3,	CST,		SEN(io_submit),			"io_submit"		},
 [545] = { 5,	CST|TD|TF|TP|SE|SI,	SEN(execveat),		"execveat"		},
-[546] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
-[547] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[546] = { 5,	TD,		SEN(preadv2),			"preadv2"		},
+[547] = { 5,	TD,		SEN(pwritev2),			"pwritev2"		},
diff --git a/linux/x86_64/arch_rt_sigframe.c b/linux/x86_64/arch_rt_sigframe.c
new file mode 100644
index 0000000..d2c7867
--- /dev/null
+++ b/linux/x86_64/arch_rt_sigframe.c
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+
+#undef FUNC_GET_RT_SIGFRAME_ADDR
+#define	FUNC_GET_RT_SIGFRAME_ADDR	\
+	static kernel_ulong_t i386_get_rt_sigframe_addr(struct tcb *tcp)
+
+#include "i386/arch_rt_sigframe.c"
+
+#undef FUNC_GET_RT_SIGFRAME_ADDR
+#define	FUNC_GET_RT_SIGFRAME_ADDR	DEF_FUNC_GET_RT_SIGFRAME_ADDR
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	return tcp->currpers == 1 ? i386_get_rt_sigframe_addr(tcp)
+				  : *x86_64_rsp_ptr - sizeof(kernel_ulong_t);
+}
diff --git a/linux/x86_64/arch_sigreturn.c b/linux/x86_64/arch_sigreturn.c
index 060b93a..9f4f0d8 100644
--- a/linux/x86_64/arch_sigreturn.c
+++ b/linux/x86_64/arch_sigreturn.c
@@ -1,32 +1,2 @@
-#define	arch_sigreturn	i386_arch_sigreturn
+/* Only x86 personality has old sigreturn syscall. */
 #include "i386/arch_sigreturn.c"
-#undef arch_sigreturn
-
-static void
-arch_sigreturn(struct tcb *tcp)
-{
-	if (current_personality == 1) {
-		i386_arch_sigreturn(tcp);
-		return;
-	}
-
-	typedef struct {
-		uint32_t flags, link, stack[3], pad;
-		struct sigcontext mcontext;
-	} ucontext_x32_header;
-
-#define	X86_64_SIGMASK_OFFSET	offsetof(struct ucontext, uc_sigmask)
-#define	X32_SIGMASK_OFFSET	sizeof(ucontext_x32_header)
-
-	const kernel_ulong_t offset =
-#ifdef X32
-		X32_SIGMASK_OFFSET;
-#else
-		current_personality == 2 ? X32_SIGMASK_OFFSET :
-					   X86_64_SIGMASK_OFFSET;
-#endif
-	const kernel_ulong_t addr = (kernel_ulong_t) *x86_64_rsp_ptr + offset;
-	tprints("{mask=");
-	print_sigset_addr_len(tcp, addr, NSIG_BYTES);
-	tprints("}");
-}
diff --git a/linux/x86_64/get_scno.c b/linux/x86_64/get_scno.c
index b8c3194..2354fb2 100644
--- a/linux/x86_64/get_scno.c
+++ b/linux/x86_64/get_scno.c
@@ -5,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/linux/x86_64/ioctls_arch0.h b/linux/x86_64/ioctls_arch0.h
index d13cb46..a28ae18 100644
--- a/linux/x86_64/ioctls_arch0.h
+++ b/linux/x86_64/ioctls_arch0.h
@@ -68,6 +68,8 @@
 { "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
 { "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
 { "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
+{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
 { "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
 { "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
 { "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
diff --git a/linux/x86_64/rt_sigframe.h b/linux/x86_64/rt_sigframe.h
new file mode 100644
index 0000000..36655a4
--- /dev/null
+++ b/linux/x86_64/rt_sigframe.h
@@ -0,0 +1,43 @@
+/*
+ * 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.
+ */
+
+#ifdef __i386__
+# include "i386/rt_sigframe.h"
+#else
+# ifndef STRACE_RT_SIGFRAME_H
+#  define STRACE_RT_SIGFRAME_H
+
+#  include <signal.h>
+
+typedef struct {
+	kernel_ulong_t	pretcode;
+	ucontext_t	uc;
+	/* more data follows */
+} struct_rt_sigframe;
+
+# endif /* !STRACE_RT_SIGFRAME_H */
+#endif /* !__i386__ */
diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h
index fcabde7..d069edb 100644
--- a/linux/x86_64/syscallent.h
+++ b/linux/x86_64/syscallent.h
@@ -2,9 +2,9 @@
 [  1] = { 3,	TD,		SEN(write),			"write"			},
 [  2] = { 3,	TD|TF,		SEN(open),			"open"			},
 [  3] = { 1,	TD,		SEN(close),			"close"			},
-[  4] = { 2,	TF,		SEN(stat),			"stat"			},
-[  5] = { 2,	TD,		SEN(fstat),			"fstat"			},
-[  6] = { 2,	TF,		SEN(lstat),			"lstat"			},
+[  4] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[  5] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
+[  6] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
 [  7] = { 3,	TD,		SEN(poll),			"poll"			},
 [  8] = { 3,	TD,		SEN(lseek),			"lseek"			},
 [  9] = { 6,	TD|TM|SI,	SEN(mmap),			"mmap"			},
@@ -13,7 +13,7 @@
 [ 12] = { 1,	TM|SI,		SEN(brk),			"brk"			},
 [ 13] = { 4,	TS,		SEN(rt_sigaction),		"rt_sigaction"		},
 [ 14] = { 4,	TS,		SEN(rt_sigprocmask),		"rt_sigprocmask"	},
-[ 15] = { 0,	TS,		SEN(sigreturn),			"rt_sigreturn"		},
+[ 15] = { 0,	TS,		SEN(rt_sigreturn),		"rt_sigreturn"		},
 [ 16] = { 3,	TD,		SEN(ioctl),			"ioctl"			},
 [ 17] = { 4,	TD,		SEN(pread),			"pread64"		},
 [ 18] = { 4,	TD,		SEN(pwrite),			"pwrite64"		},
@@ -134,9 +134,9 @@
 [133] = { 3,	TF,		SEN(mknod),			"mknod"			},
 [134] = { 1,	TF,		SEN(uselib),			"uselib"		},
 [135] = { 1,	NF,		SEN(personality),		"personality"		},
-[136] = { 2,	0,		SEN(ustat),			"ustat"			},
-[137] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[138] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
+[136] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
+[137] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[138] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
 [139] = { 3,	0,		SEN(sysfs),			"sysfs"			},
 [140] = { 2,	0,		SEN(getpriority),		"getpriority"		},
 [141] = { 3,	0,		SEN(setpriority),		"setpriority"		},
@@ -260,7 +260,7 @@
 [259] = { 4,	TD|TF,		SEN(mknodat),			"mknodat"		},
 [260] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [261] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[262] = { 4,	TD|TF,		SEN(newfstatat),		"newfstatat"		},
+[262] = { 4,	TD|TF|TFST|TSTA,SEN(newfstatat),		"newfstatat"		},
 [263] = { 3,	TD|TF,		SEN(unlinkat),			"unlinkat"		},
 [264] = { 4,	TD|TF,		SEN(renameat),			"renameat"		},
 [265] = { 5,	TD|TF,		SEN(linkat),			"linkat"		},
@@ -330,3 +330,4 @@
 [329] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
 [330] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
 [331] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[332] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
diff --git a/linux/xtensa/arch_rt_sigframe.c b/linux/xtensa/arch_rt_sigframe.c
new file mode 100644
index 0000000..a40c76a
--- /dev/null
+++ b/linux/xtensa/arch_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+FUNC_GET_RT_SIGFRAME_ADDR
+{
+	unsigned long addr;
+
+	return upeek(tcp->pid, REG_A_BASE + 3, &addr) ? 0 : addr;
+}
diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h
index a130d6e..0d051bc 100644
--- a/linux/xtensa/syscallent.h
+++ b/linux/xtensa/syscallent.h
@@ -39,16 +39,16 @@
 [ 43] = { 2,	TF,		SEN(getcwd),			"getcwd"		},
 [ 44] = { 2,	TF,		SEN(chmod),			"chmod"			},
 [ 45] = { 3,	TF,		SEN(chown),			"chown"			},
-[ 46] = { 2,	TF,		SEN(stat),			"stat"			},
-[ 47] = { 2,	TF,		SEN(stat64),			"stat64"		},
+[ 46] = { 2,	TF|TST|TSTA,	SEN(stat),			"stat"			},
+[ 47] = { 2,	TF|TST|TSTA,	SEN(stat64),			"stat64"		},
 [ 48] = { 3,	TF,		SEN(chown),			"lchown"		},
-[ 49] = { 2,	TF,		SEN(lstat),			"lstat"			},
-[ 50] = { 2,	TF,		SEN(lstat64),			"lstat64"		},
+[ 49] = { 2,	TF|TLST|TSTA,	SEN(lstat),			"lstat"			},
+[ 50] = { 2,	TF|TLST|TSTA,	SEN(lstat64),			"lstat64"		},
 [ 51] = { },
 [ 52] = { 2,	TD,		SEN(fchmod),			"fchmod"		},
 [ 53] = { 3,	TD,		SEN(fchown),			"fchown"		},
-[ 54] = { 2,	TD,		SEN(fstat),			"fstat"			},
-[ 55] = { 2,	TD,		SEN(fstat64),			"fstat64"		},
+[ 54] = { 2,	TD|TFST|TSTA,	SEN(fstat),			"fstat"			},
+[ 55] = { 2,	TD|TFST|TSTA,	SEN(fstat64),			"fstat64"		},
 [ 56] = { 2,	TD,		SEN(flock),			"flock"			},
 [ 57] = { 2,	TF,		SEN(access),			"access"		},
 [ 58] = { 1,	NF,		SEN(umask),			"umask"			},
@@ -175,11 +175,11 @@
 [180] = { 1,	NF,		SEN(setfsuid),			"setfsuid"		},
 [181] = { 1,	NF,		SEN(setfsgid),			"setfsgid"		},
 [182] = { 3,	0,		SEN(sysfs),			"sysfs"			},
-[183] = { 2,	0,		SEN(ustat),			"ustat"			},
-[184] = { 2,	TF,		SEN(statfs),			"statfs"		},
-[185] = { 2,	TD,		SEN(fstatfs),			"fstatfs"		},
-[186] = { 3,	TF,		SEN(statfs64),			"statfs64"		},
-[187] = { 3,	TD,		SEN(fstatfs64),			"fstatfs64"		},
+[183] = { 2,	TSFA,		SEN(ustat),			"ustat"			},
+[184] = { 2,	TF|TSF|TSFA,	SEN(statfs),			"statfs"		},
+[185] = { 2,	TD|TFSF|TSFA,	SEN(fstatfs),			"fstatfs"		},
+[186] = { 3,	TF|TSF|TSFA,	SEN(statfs64),			"statfs64"		},
+[187] = { 3,	TD|TFSF|TSFA,	SEN(fstatfs64),			"fstatfs64"		},
 [188] = { 2,	0,		SEN(setrlimit),			"setrlimit"		},
 [189] = { 2,	0,		SEN(getrlimit),			"getrlimit"		},
 [190] = { 2,	0,		SEN(getrusage),			"getrusage"		},
@@ -288,7 +288,7 @@
 [296] = { 4,	TD|TF,		SEN(utimensat),			"utimensat"		},
 [297] = { 5,	TD|TF,		SEN(fchownat),			"fchownat"		},
 [298] = { 3,	TD|TF,		SEN(futimesat),			"futimesat"		},
-[299] = { 4,	TD|TF,		SEN(fstatat64),			"fstatat64"		},
+[299] = { 4,	TD|TF|TFST|TSTA,SEN(fstatat64),			"fstatat64"		},
 [300] = { 3,	TD|TF,		SEN(fchmodat),			"fchmodat"		},
 [301] = { 3,	TD|TF,		SEN(faccessat),			"faccessat"		},
 [302 ... 303] = { },
@@ -336,3 +336,7 @@
 [345] = { 6,	TD,		SEN(copy_file_range),		"copy_file_range"	},
 [346] = { 6,	TD,		SEN(preadv2),			"preadv2"		},
 [347] = { 6,	TD,		SEN(pwritev2),			"pwritev2"		},
+[348] = { 4,	TM|SI,		SEN(pkey_mprotect),		"pkey_mprotect"		},
+[249] = { 2,	0,		SEN(pkey_alloc),		"pkey_alloc"		},
+[350] = { 1,	0,		SEN(pkey_free),			"pkey_free"		},
+[351] = { 5,	TD|TF|TSTA,	SEN(statx),			"statx"			},
diff --git a/lookup_dcookie.c b/lookup_dcookie.c
index 279694f..4e21d5f 100644
--- a/lookup_dcookie.c
+++ b/lookup_dcookie.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/loop.c b/loop.c
index f19ad92..df12520 100644
--- a/loop.c
+++ b/loop.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012 The Chromium OS Authors.
+ * Copyright (c) 2012-2017 The strace developers.
  * Written by Mike Frysinger <vapier@gentoo.org>.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/m32_funcs.h b/m32_funcs.h
index 9c4a53a..e96342b 100644
--- a/m32_funcs.h
+++ b/m32_funcs.h
@@ -8,6 +8,8 @@
 #define sys_shmctl m32_sys_shmctl
 #undef sys_time
 #define sys_time m32_sys_time
+#undef sys_rt_sigreturn
+#define sys_rt_sigreturn m32_sys_rt_sigreturn
 #undef sys_sigaltstack
 #define sys_sigaltstack m32_sys_sigaltstack
 #undef sys_sysinfo
diff --git a/m32_printer_decls.h b/m32_printer_decls.h
index c06f197..100c365 100644
--- a/m32_printer_decls.h
+++ b/m32_printer_decls.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 extern int m32_block_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
 extern int m32_btrfs_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
 extern int m32_evdev_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
@@ -25,7 +25,7 @@
 extern void m32_print_itimerspec(struct tcb *const tcp, const kernel_ulong_t addr);
 extern void m32_print_struct_timeval(const void *arg);
 extern void m32_print_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
-extern void m32_print_timeval_pair(struct tcb *const tcp, const kernel_ulong_t addr);
+extern void m32_print_timeval_utimes(struct tcb *const tcp, const kernel_ulong_t addr);
 extern const char * m32_sprint_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
 extern void m32_print_itimerval(struct tcb *const tcp, const kernel_ulong_t addr);
 extern int m32_print_timex(struct tcb *const tcp, const kernel_ulong_t addr);
diff --git a/m32_printer_defs.h b/m32_printer_defs.h
index 3d2122c..1d533a2 100644
--- a/m32_printer_defs.h
+++ b/m32_printer_defs.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 .block_ioctl = m32_block_ioctl,
 .btrfs_ioctl = m32_btrfs_ioctl,
 .evdev_ioctl = m32_evdev_ioctl,
@@ -25,7 +25,7 @@
 .print_itimerspec = m32_print_itimerspec,
 .print_struct_timeval = m32_print_struct_timeval,
 .print_timeval = m32_print_timeval,
-.print_timeval_pair = m32_print_timeval_pair,
+.print_timeval_utimes = m32_print_timeval_utimes,
 .sprint_timeval = m32_sprint_timeval,
 .print_itimerval = m32_print_itimerval,
 .print_timex = m32_print_timex,
diff --git a/m32_type_defs.h b/m32_type_defs.h
index e8bc1bf..a03f4ce 100644
--- a/m32_type_defs.h
+++ b/m32_type_defs.h
@@ -97,6 +97,9 @@
 #ifdef MPERS_m32_siginfo_t
 # define siginfo_t MPERS_m32_siginfo_t
 #endif
+#ifdef MPERS_m32_struct_rt_sigframe
+# define struct_rt_sigframe MPERS_m32_struct_rt_sigframe
+#endif
 #ifdef MPERS_m32_struct_rtc_pll_info
 # define struct_rtc_pll_info MPERS_m32_struct_rtc_pll_info
 #endif
@@ -127,6 +130,9 @@
 #ifdef MPERS_m32_struct_v4l2_buffer
 # define struct_v4l2_buffer MPERS_m32_struct_v4l2_buffer
 #endif
+#ifdef MPERS_m32_struct_v4l2_clip
+# define struct_v4l2_clip MPERS_m32_struct_v4l2_clip
+#endif
 #ifdef MPERS_m32_struct_v4l2_create_buffers
 # define struct_v4l2_create_buffers MPERS_m32_struct_v4l2_create_buffers
 #endif
diff --git a/m4/ax_prog_cc_for_build.m4 b/m4/ax_prog_cc_for_build.m4
index 9fddbf6..0572e25 100644
--- a/m4/ax_prog_cc_for_build.m4
+++ b/m4/ax_prog_cc_for_build.m4
@@ -26,6 +26,7 @@
 # LICENSE
 #
 #   Copyright (c) 2008 Paolo Bonzini <bonzini@gnu.org>
+#   Copyright (c) 2008-2017 The strace developers.
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
diff --git a/maint/ioctls_gen.sh b/maint/ioctls_gen.sh
deleted file mode 100755
index b20a0bd..0000000
--- a/maint/ioctls_gen.sh
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2004-2015 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-set -efu
-
-me="${0##*/}"
-mydir="${0%/*}"
-msg()
-{
-	printf >&2 '%s\n' "$me: $*"
-}
-
-case $# in
-	1)
-		inc_dir="$1"
-		arch_dir=
-		;;
-	2)
-		inc_dir="$1"
-		arch_dir="$2"
-		;;
-	*)
-	        echo >&2 "usage: $me include-directory [arch-include-directory]"
-	        exit 1
-		;;
-esac
-
-# Check and canonicalize include-directory and arch-include-directory.
-abs_inc_dir="$(cd "$inc_dir" && pwd -P)"
-INCLUDES_inc="-I$abs_inc_dir/uapi -I$abs_inc_dir"
-abs_arch_dir=
-INCLUDES_arch=
-[ -z "$arch_dir" ] || {
-	abs_arch_dir="$(cd "$arch_dir" && pwd -P)"
-	INCLUDES_arch="-I$abs_arch_dir/uapi -I$abs_arch_dir"
-}
-
-cleanup()
-{
-	trap - EXIT
-	rm -f ioctls_hex.h ioctls_sym.h
-	exit "$@"
-}
-trap 'cleanup $?' EXIT
-trap 'cleanup 1' HUP PIPE INT QUIT TERM
-
-# Fetch ioctl commands defined in hex form.
-{
-	"$mydir"/ioctls_hex.sh "$inc_dir" 03 linux/hdreg.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 22 scsi/sg.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 46 linux/fb.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 4B linux/kd.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 4C linux/loop.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 53 linux/cdrom.h scsi/scsi.h scsi/scsi_ioctl.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" '\(46\|54\|66\|74\)' asm/ioctls.h asm-generic/ioctls.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 56 linux/vt.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" '7[12]' linux/videotext.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 89 asm/sockios.h asm-generic/sockios.h linux/sockios.h
-	"$mydir"/ioctls_hex.sh "$inc_dir" 8B linux/wireless.h
-} > ioctls_hex.h
-msg "generated $(grep -c '^{' ioctls_hex.h) hex ioctls from $inc_dir"
-
-# Fetch ioctl commands defined in symbolic form.
-INCLUDES="$INCLUDES_arch ${INCLUDES-}" \
-	"$mydir"/ioctls_sym.sh "$inc_dir" > ioctls_sym.h
-
-# Move KVM_* constants from ioctls_inc.h to ioctls_arch.h.
-grep -F 'linux/kvm.h' < ioctls_sym.h > ioctls_kvm.h ||:
-grep -Fv 'linux/kvm.h' < ioctls_sym.h > ioctls_unkvm.h
-mv ioctls_unkvm.h ioctls_sym.h
-
-# Part of android ioctl commands are defined elsewhere.
-android_dir="$inc_dir/../drivers/staging/android"
-if [ -d "$android_dir/uapi" ]; then
-	INCLUDES="$INCLUDES_inc $INCLUDES_arch ${INCLUDES-}" \
-	"$mydir"/ioctls_sym.sh "$android_dir" staging/android >> ioctls_sym.h
-fi
-msg "generated $(grep -c '^{' ioctls_sym.h) symbolic ioctls from $inc_dir"
-
-# Output all ioctl definitions fetched from include-directory.
-echo "/* Generated by $me from definitions found in ${inc_dir%%/}/ tree. */" > ioctls_inc.h
-LC_COLLATE=C sort -u ioctls_hex.h ioctls_sym.h >> ioctls_inc.h
-msg "generated $(grep -c '^{' ioctls_inc.h) ioctls from $inc_dir"
-
-[ -n "$arch_dir" ] || exit 0
-
-# Fetch ioctl commands defined in hex form.
-{
-	"$mydir"/ioctls_hex.sh "$arch_dir" 54 asm/ioctls.h
-	"$mydir"/ioctls_hex.sh "$arch_dir" '\(46\|54\|66\|74\)' asm/ioctls.h
-	"$mydir"/ioctls_hex.sh "$arch_dir" 89 asm/sockios.h
-} > ioctls_hex.h
-msg "generated $(grep -c '^{' ioctls_hex.h) hex ioctls from $arch_dir"
-
-# Fetch ioctl commands defined in symbolic form.
-INCLUDES="$INCLUDES_inc ${INCLUDES-}" \
-	"$mydir"/ioctls_sym.sh "$arch_dir" > ioctls_sym.h
-msg "generated $(grep -c '^{' ioctls_sym.h) symbolic ioctls from $arch_dir"
-
-# Output all ioctl definitions fetched from arch-include-directory.
-echo "/* Generated by $me from definitions found in ${arch_dir%%/}/ tree. */" > ioctls_arch.h
-LC_COLLATE=C sort -u ioctls_hex.h ioctls_kvm.h ioctls_sym.h >> ioctls_arch.h
-msg "generated $(grep -c '^{' ioctls_arch.h) ioctls from $arch_dir"
diff --git a/maint/ioctls_hex.sh b/maint/ioctls_hex.sh
deleted file mode 100755
index a798733..0000000
--- a/maint/ioctls_hex.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2001 Wichert Akkerman <wichert@cistron.nl>
-# Copyright (c) 2004-2015 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-set -efu
-
-me="${0##*/}"
-
-[ $# -ge 2 ] || {
-	echo >&2 "usage: $me include-directory type [files...]"
-	exit 1
-}
-
-dir="$1"; shift # dir must exist
-type="$1"; shift # type might be a regexp
-
-cd "$dir"
-
-regexp='[[:space:]]*#[[:space:]]*define[[:space:]]\+\([A-Z][A-Z0-9_]*\)[[:space:]]\+\(0x'"$type"'..\)\>'
-
-for f; do
-	grep "^$regexp" "$f" "uapi/$f" 2>/dev/null ||:;
-done |
-	sed 's|^uapi/||' |
-	sed -n 's/^\([^:]*\):'"$regexp"'.*/{ "\1", "\2", 0, \3, 0 },/p' |
-	LC_COLLATE=C sort -u
diff --git a/maint/ioctls_sym.sh b/maint/ioctls_sym.sh
deleted file mode 100755
index 14d53c6..0000000
--- a/maint/ioctls_sym.sh
+++ /dev/null
@@ -1,435 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-set -efu
-
-# This script processes header files containing ioctl command definitions in
-# symbolic form, assuming that these definitions match the following regular
-# expressions:
-
-r_define='^[[:space:]]*#[[:space:]]*define[[:space:]]\+'
-r_cmd_name='[A-Z][A-Z0-9_]*'
-r_io='\([A-Z]\+\)\?_S\?\(IO\|IOW\|IOR\|IOWR\|IOC\)'
-r_value='[[:space:]]\+'"$r_io"'[[:space:]]*([^)]'
-regexp="${r_define}${r_cmd_name}${r_value}"
-
-uname_m="$(uname -m)"
-me="${0##*/}"
-msg()
-{
-	printf >&2 '%s\n' "$me: $*"
-}
-
-prefix=
-case $# in
-	1)	inc_dir="$1"; shift
-		;;
-	2)	inc_dir="$1"; shift
-		prefix="$1"; shift
-		;;
-	*)	echo >&2 "usage: $me include-directory [prefix]"
-		exit 1
-		;;
-esac
-
-[ -z "$prefix" ] ||
-	prefix="${prefix%%/}/"
-
-tmpdir=
-cleanup()
-{
-	trap - EXIT
-	[ -z "$tmpdir" ] ||
-		rm -rf -- "$tmpdir"
-	exit "$@"
-}
-
-trap 'cleanup $?' EXIT
-trap 'cleanup 1' HUP PIPE INT QUIT TERM
-tmpdir="$(mktemp -dt "$me.XXXXXX")"
-
-# list interesting files in $inc_dir.
-cd "$inc_dir"
-inc_dir="$(pwd -P)"
-find . -type f -name '*.h' -print0 |
-	xargs -r0 grep -l "$r_value" -- > "$tmpdir"/headers1.list ||
-		exit 0
-cd - > /dev/null
-sed 's|^\./\(uapi/\)\?||' < "$tmpdir"/headers1.list > "$tmpdir"/headers.list
-LC_COLLATE=C sort -u -o "$tmpdir"/headers.list "$tmpdir"/headers.list
-
-msg "processing $(wc -l < "$tmpdir"/headers.list) header files from $inc_dir"
-failed=0
-
-CC="${CC:-gcc}"
-CPP="${CPP:-cpp}"
-CPPFLAGS="${CPPFLAGS-} -D__EXPORTED_HEADERS__"
-CFLAGS="${CFLAGS:--Wall -O2} -D__EXPORTED_HEADERS__"
-LDFLAGS="${LDFLAGS-}"
-INCLUDES="-I$inc_dir/uapi -I$inc_dir ${INCLUDES-}"
-
-$CC $INCLUDES $CFLAGS -c -o "$tmpdir"/print_ioctlent.o "${0%/*}"/print_ioctlent.c
-
-# Hook onto <asm-generic/ioctl.h> and <asm/ioctl.h>
-for d in asm-generic asm; do
-	mkdir "$tmpdir/$d"
-	cat > "$tmpdir/$d"/ioctl.h <<__EOF__
-#include_next <$d/ioctl.h>
-#undef _IOC
-#define _IOC(dir,type,nr,size) dir, type, nr, size
-__EOF__
-done
-
-INCLUDES="-I$tmpdir $INCLUDES"
-
-process_file()
-{
-	local f="$1"; shift
-
-	# Common code for every processed file.
-	cat > "$tmpdir"/printents.c <<__EOF__
-#include <asm/termbits.h>
-#include <asm/ioctl.h>
-#include <linux/types.h>
-#include <linux/limits.h>
-#include <linux/major.h>
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifndef NULL
-# define NULL ((void*)0)
-#endif
-#ifndef __user
-# define __user
-#endif
-#ifndef __iomem
-# define __iomem
-#endif
-#ifndef __noreturn
-# define __noreturn __attribute__((noreturn))
-#endif
-#ifndef __packed
-# define __packed __attribute__((packed))
-#endif
-
-typedef signed char s8;
-typedef unsigned char u8;
-typedef signed short s16;
-typedef unsigned short u16;
-typedef signed int s32;
-typedef unsigned int u32;
-typedef signed long long s64;
-typedef unsigned long long u64;
-
-#include "fixes.h"
-
-#include <asm/bitsperlong.h>
-#ifndef BITS_PER_LONG
-# define BITS_PER_LONG __BITS_PER_LONG
-#endif
-
-#include "$f"
-
-void print_ioctlent(const char *, const char *, unsigned short, unsigned short, unsigned short, unsigned short);
-
-int main(void)
-{
-
-#include "defs.h"
-
-return 0;
-}
-__EOF__
-
-	# Soft pre-include workarounds for some processed files.  Fragile.
-	case "$f" in
-		*asm/amigayle.h)
-			return 0 # false positive
-			;;
-		*asm/cmb.h)
-			echo '#include <asm/dasd.h>'
-			;;
-		*asm/core_*.h)
-			return 0 # false positives
-			;;
-		*asm/ioctls.h)
-			cat <<'__EOF__'
-#include <asm/termios.h>
-#include <linux/serial.h>
-__EOF__
-			;;
-		drm/sis_drm.h)
-			echo '#include <drm/drm.h>'
-			;;
-		*drm/*_drm.h)
-			echo '#include <drm/drm.h>' > "$tmpdir/drm.h"
-			;;
-		fbio.h|*/fbio.h)
-			cat <<'__EOF__'
-#include <linux/fb.h>
-#undef FBIOGETCMAP
-#undef FBIOPUTCMAP
-__EOF__
-			;;
-		*linux/atm_zatm.h)
-			cat <<'__EOF__'
-#include <linux/atm.h>
-#ifndef _LINUX_TIME_H
-# define _LINUX_TIME_H
-#endif
-#ifndef _UAPI_LINUX_TIME_H
-# define _UAPI_LINUX_TIME_H
-#endif
-__EOF__
-			;;
-		*linux/atm?*.h)
-			echo '#include <linux/atm.h>'
-			;;
-		*linux/auto_fs*.h)
-			echo 'typedef u32 compat_ulong_t;'
-			;;
-		*linux/coda.h|*android_alarm.h)
-			cat <<'__EOF__'
-#ifndef _LINUX_TIME_H
-# define _LINUX_TIME_H
-#endif
-#ifndef _UAPI_LINUX_TIME_H
-# define _UAPI_LINUX_TIME_H
-#endif
-__EOF__
-			;;
-		*linux/fs.h|*linux/ncp_fs.h)
-			cat <<'__EOF__'
-#include <linux/blktrace_api.h>
-#include <linux/fiemap.h>
-__EOF__
-			;;
-		*linux/if_pppox.h)
-			echo '#include <netinet/in.h>'
-			;;
-		*linux/if_tun.h|*linux/ppp-ioctl.h)
-			echo '#include <linux/filter.h>'
-			;;
-		*linux/isdn_ppp.h|*linux/gsmmux.h)
-			echo '#include <linux/if.h>'
-			;;
-		*media*/saa6588.h)
-			echo 'typedef struct poll_table_struct poll_table;'
-			;;
-		*linux/ivtvfb.h|*linux/meye.h|*media/*.h)
-			echo '#include <linux/videodev2.h>'
-			;;
-		*linux/kvm.h)
-			case "$uname_m" in
-				i?86|x86_64|arm*|ppc*|s390*) ;;
-				*) return 0 ;; # not applicable
-			esac
-			;;
-		*linux/sonet.h)
-			echo '#include <linux/atmioc.h>'
-			;;
-		*linux/usbdevice_fs.h)
-			cat <<'__EOF__'
-struct usbdevfs_ctrltransfer32 { __u32 unused[4]; };
-struct usbdevfs_bulktransfer32 { __u32 unused[4]; };
-struct usbdevfs_disconnectsignal32 { __u32 unused[2]; };
-struct usbdevfs_urb32 { __u8 unused[42]; };
-struct usbdevfs_ioctl32 { __u32 unused[3]; };
-__EOF__
-			;;
-		logger.h|*/logger.h)
-			echo 'typedef __u32 kuid_t;'
-			;;
-		*sound/asequencer.h)
-			cat <<'__EOF__'
-#include <sound/asound.h>
-struct snd_seq_queue_owner { __u32 unused[0]; };
-__EOF__
-			;;
-		*sound/emu10k1.h)
-			cat <<'__EOF__'
-#include <sound/asound.h>
-#ifndef DECLARE_BITMAP
-# define DIV_ROUND_UP(x,y) (((x) + ((y) - 1)) / (y))
-# define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, 8 * sizeof(long))
-# define DECLARE_BITMAP(name,bits) unsigned long name[BITS_TO_LONGS(bits)]
-#endif
-__EOF__
-			;;
-		*video/sstfb.h)
-			echo 'struct fb_info;'
-			;;
-		*xen/evtchn.h|*xen/gntdev.h)
-			cat <<'__EOF__'
-typedef uint32_t grant_ref_t;
-typedef uint16_t domid_t;
-__EOF__
-			;;
-		*xen/interface/*.h)
-			return 0 # false positives
-			;;
-		*xen/privcmd.h)
-			return 0 # too much work to make it compileable
-			;;
-	esac > "$tmpdir"/fixes.h
-
-	cat > "$tmpdir"/header.in <<__EOF__
-#include <asm/bitsperlong.h>
-#ifndef BITS_PER_LONG
-# define BITS_PER_LONG __BITS_PER_LONG
-#endif
-#include "$f"
-__EOF__
-
-	if [ -f "$inc_dir/uapi/$f" ]; then
-		s="$inc_dir/uapi/$f"
-	elif [ -f "$inc_dir/$f" ]; then
-		s="$inc_dir/$f"
-	else
-		msg "$f: file not found"
-		return 1
-	fi
-
-	[ -n "${f##*/*}" ] ||
-		mkdir -p "$tmpdir/${f%/*}"
-	# Hard workarounds for some processed files.  Very fragile.
-	case "$f" in
-		*asm-generic/ioctls.h)
-			# Filter out macros defined using unavailable types.
-			case "$uname_m" in
-				alpha*|ppc*)
-					grep -Fv 'struct termios2' < "$s" > "$tmpdir/$f"
-					;;
-			esac
-			;;
-		*acpi/*|*linux/i2o.h|*media*/exynos-fimc.h|*media/v4l2-subdev.h|*net/bluetooth/*|net/nfc/nci_core.h)
-			# Fetch macros only.
-			grep "${r_define}${r_cmd_name}" < "$s" > "$tmpdir/$f"
-			;;
-		binder.h|*/binder.h)
-			# Convert enums to macros.
-			sed '/^enum binder/,/^};/d' < "$s" > "$tmpdir/$f"
-			sed -n '/^enum binder/,/^};/ s/^[[:space:]].*/&/p' < "$s" |
-			sed -e '
-s/^[[:space:]]*\([A-Z][A-Z_0-9]*\)[[:space:]]*=[[:space:]]*_\(IO\|IOW\|IOR\|IOWR\|IOC\)[[:space:]]*(/#define \1 _\2(/
-s/^\(#define .*)\),$/\1/
-s/^\(#define .*,\)$/\1 \\/
-s/^\([[:space:]]\+[^),]\+)\),$/\1/' >> "$tmpdir/$f"
-			;;
-		*drm/r128_drm.h)
-			# Filter out the code that references unknown types.
-			sed '/drm_r128_clear2_t/d' < "$s" > "$tmpdir/$f"
-			;;
-		*drm/sis_drm.h)
-			# Filter out the code that references unknown types.
-			sed '/^struct sis_file_private/,/^}/d' < "$s" > "$tmpdir/$f"
-			;;
-		*drm/via_drm.h)
-			# Create the file it attempts to include.
-			touch "$tmpdir/via_drmclient.h"
-			# Filter out the code that references unknown types.
-			sed '/^struct via_file_private/,/^}/d' < "$s" > "$tmpdir/$f"
-			;;
-		*linux/nilfs2_fs.h)
-			# Create the file it attempts to include.
-			touch "$tmpdir/asm/bug.h"
-			;;
-		*linux/vmw_vmci_defs.h)
-			# Fetch ioctl macros only.
-			grep "${r_define}I" < "$s" > "$tmpdir/$f"
-			;;
-		*media/v4l2-common.h)
-			# Fetch one piece of code containing ioctls definitions.
-			sed -n '/ remaining ioctls/,/ ---/p' < "$s" > "$tmpdir/$f"
-			;;
-		openpromio.h|*/openpromio.h|fbio.h|*/fbio.h)
-			# Create the file it attempts to include.
-			mkdir -p "$tmpdir/linux"
-			touch "$tmpdir/linux/compiler.h"
-	esac
-	if [ -f "$tmpdir/$f" ]; then
-		s="$tmpdir/$f"
-	fi
-
-	# This may fail if the file includes unavailable headers.
-	# In case of success it outputs both the #define directives
-	# and the result of preprocessing.
-	$CPP $CPPFLAGS -dD $INCLUDES < "$tmpdir"/header.in > "$tmpdir"/header.out
-
-	# Soft post-preprocess workarounds.  Fragile.
-	case "$f" in
-		*linux/kvm.h)
-			arm_list='KVM_ARM_PREFERRED_TARGET|KVM_ARM_VCPU_INIT'
-			ppc_list='KVM_ALLOCATE_RMA|KVM_CREATE_SPAPR_TCE|KVM_CREATE_SPAPR_TCE_64|KVM_PPC_GET_HTAB_FD|KVM_PPC_RTAS_DEFINE_TOKEN'
-			x86_list='KVM_GET_CPUID2|KVM_GET_DEBUGREGS|KVM_GET_EMULATED_CPUID|KVM_GET_LAPIC|KVM_GET_MSRS|KVM_GET_MSR_INDEX_LIST|KVM_GET_PIT|KVM_GET_PIT2|KVM_GET_SUPPORTED_CPUID|KVM_GET_VCPU_EVENTS|KVM_GET_XCRS|KVM_GET_XSAVE|KVM_SET_CPUID|KVM_SET_CPUID2|KVM_SET_DEBUGREGS|KVM_SET_LAPIC|KVM_SET_MEMORY_ALIAS|KVM_SET_MSRS|KVM_SET_PIT|KVM_SET_PIT2|KVM_SET_VCPU_EVENTS|KVM_SET_XCRS|KVM_SET_XSAVE|KVM_X86_SET_MCE|KVM_XEN_HVM_CONFIG'
-			case "$uname_m" in
-				arm*) list="$ppc_list|$x86_list" ;;
-				ppc*) list="$arm_list|$x86_list" ;;
-				i?86|x86_64*) list="$arm_list|$ppc_list" ;;
-				*) list="$arm_list|$ppc_list|$x86_list" ;;
-			esac
-			sed -r -i "/[[:space:]]($list)[[:space:]]/d" "$tmpdir"/header.out
-			;;
-	esac
-
-	# Need to exclude ioctl commands defined elsewhere.
-	local_defines='^[[:space:]]*#[[:space:]]*define[[:space:]]\+\('"$r_cmd_name"'\)[[:space:]]'
-	sed -n 's/'"$local_defines"'.*/\1\\/p' "$s" > "$tmpdir"/local_names
-	r_local_names="$(tr '\n' '|' < "$tmpdir"/local_names)"
-	r_local_names="${r_local_names%%|}"
-	r_local_names="${r_local_names%%\\}"
-
-	# Keep this in sync with $regexp by replacing $r_cmd_name with $r_local_names.
-	defs_regexp="${r_define}\($r_local_names\)${r_value}"
-
-	qf="$(echo "$prefix$f" | sed 's/[&\/]/\\&/g')"
-	# This outputs lines in the following format:
-	# print_ioctlent("filename.h", "IOCTL_CMD_NAME", IOCTL_CMD_NAME);
-	sed -n 's/'"$defs_regexp"'.*/print_ioctlent("'"$qf"'", "\1", \1);/p' \
-		< "$tmpdir"/header.out > "$tmpdir"/defs.h
-
-	# If something is wrong with the file, this will fail.
-	$CC $INCLUDES $CFLAGS -c -o "$tmpdir"/printents.o "$tmpdir"/printents.c
-	$CC $LDFLAGS -o "$tmpdir"/print_ioctlents \
-		"$tmpdir"/printents.o "$tmpdir"/print_ioctlent.o
-	"$tmpdir"/print_ioctlents > "$tmpdir"/ioctlents
-	cat "$tmpdir"/ioctlents
-	msg "$f: fetched $(grep -c '^{' "$tmpdir"/ioctlents) ioctl entries"
-}
-
-while read f; do
-	(process_file "$f" < /dev/null)
-	[ $? -eq 0 ] || {
-		msg "$f: failed to process"
-		failed=$((1 + $failed))
-	}
-done < "$tmpdir"/headers.list
-
-[ $failed -eq 0 ] ||
-	msg "failed to process $failed file(s)"
diff --git a/maint/print_ioctlent.c b/maint/print_ioctlent.c
deleted file mode 100644
index d15aa35..0000000
--- a/maint/print_ioctlent.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) 2015 Dmitry V. Levin <ldv@altlinux.org>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <stdio.h>
-#include <asm/ioctl.h>
-
-typedef unsigned short u16;
-
-static const char *
-dir2str(const char *name, u16 dir)
-{
-	switch (dir) {
-#define CASE(x) case x: return #x
-		CASE(_IOC_NONE);
-		CASE(_IOC_READ);
-		CASE(_IOC_WRITE);
-		CASE(_IOC_READ|_IOC_WRITE);
-	}
-
-	static char buf[3 + sizeof(dir) * 2];
-	fprintf(stderr,
-		"print_ioctlents: WARNING: invalid dir 0x%02x in %s\n",
-		dir, name);
-	snprintf(buf, sizeof(buf), "0x%02x", dir);
-	return buf;
-}
-
-void
-print_ioctlent(const char *info, const char *name,
-	       u16 dir, u16 type, u16 nr, u16 size)
-{
-	unsigned int type_nr =
-		((unsigned) type << _IOC_TYPESHIFT) |
-		((unsigned) nr << _IOC_NRSHIFT);
-
-	if (dir & ~_IOC_DIRMASK)
-		fprintf(stderr,
-			"print_ioctlents: WARNING: dir 0x%02x is out of mask 0x%02x in %s\n",
-			dir, _IOC_DIRMASK, name);
-	if (type & ~_IOC_TYPEMASK)
-		fprintf(stderr,
-			"print_ioctlents: WARNING: type 0x%02x is out of mask 0x%02x in %s\n",
-			type, _IOC_TYPEMASK, name);
-	if (nr & ~_IOC_NRMASK)
-		fprintf(stderr,
-			"print_ioctlents: WARNING: nr 0x%02x is out of mask 0x%02x in %s\n",
-			nr, _IOC_NRMASK, name);
-	if (size & ~_IOC_SIZEMASK)
-		fprintf(stderr,
-			"print_ioctlents: WARNING: size 0x%02x is out of mask 0x%02x in %s\n",
-			size, _IOC_SIZEMASK, name);
-
-	printf("{ \"%s\", \"%s\", %s, 0x%04x, 0x%02x },\n",
-		info, name, dir2str(name, dir), type_nr, size);
-}
diff --git a/mem.c b/mem.c
index 40ed707..fb29ec1 100644
--- a/mem.c
+++ b/mem.c
@@ -5,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/membarrier.c b/membarrier.c
index 759b76f..1c064c2 100644
--- a/membarrier.c
+++ b/membarrier.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/memfd_create.c b/memfd_create.c
index 0101f06..1691352 100644
--- a/memfd_create.c
+++ b/memfd_create.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/mknod.c b/mknod.c
index 3edcd84..0a4e342 100644
--- a/mknod.c
+++ b/mknod.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2006 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mount.c b/mount.c
index 997452c..7df0e68 100644
--- a/mount.c
+++ b/mount.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2007-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/kernel_dirent.c b/mpers-m32/kernel_dirent.c
index 77ca7e6..9ad17aa 100644
--- a/mpers-m32/kernel_dirent.c
+++ b/mpers-m32/kernel_dirent.c
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/kernel_dirent.d1 b/mpers-m32/kernel_dirent.d1
deleted file mode 100644
index d8b207d..0000000
--- a/mpers-m32/kernel_dirent.d1
+++ /dev/null
@@ -1,207 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1a8 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xa2): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x183): mpers-m32/kernel_dirent.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0xea): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1b5): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x179): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x165): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x64): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x6): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x121): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x44): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1ac): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x72): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x15c): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x13c): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_array_type)
-    <7d>   DW_AT_type        : <0x6a>	
-    <81>   DW_AT_sibling     : <0x8c>	
- <2><85>: Abbrev Number: 7 (DW_TAG_subrange_type)
-    <86>   DW_AT_type        : <0x63>	
-    <8a>   DW_AT_upper_bound : 0	
- <2><8b>: Abbrev Number: 0
- <1><8c>: Abbrev Number: 8 (DW_TAG_typedef)
-    <8d>   DW_AT_name        : (indirect string, offset: 0x141): __kernel_ulong_t	
-    <91>   DW_AT_decl_file   : 1	
-    <92>   DW_AT_decl_line   : 15	
-    <93>   DW_AT_type        : <0x5c>	
- <1><97>: Abbrev Number: 8 (DW_TAG_typedef)
-    <98>   DW_AT_name        : (indirect string, offset: 0x19d): kernel_ulong_t	
-    <9c>   DW_AT_decl_file   : 2	
-    <9d>   DW_AT_decl_line   : 36	
-    <9e>   DW_AT_type        : <0x8c>	
- <1><a2>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a3>   DW_AT_byte_size   : 12	
-    <a4>   DW_AT_decl_file   : 2	
-    <a5>   DW_AT_decl_line   : 50	
-    <a6>   DW_AT_sibling     : <0xe3>	
- <2><aa>: Abbrev Number: 10 (DW_TAG_member)
-    <ab>   DW_AT_name        : (indirect string, offset: 0x173): d_ino	
-    <af>   DW_AT_decl_file   : 2	
-    <b0>   DW_AT_decl_line   : 51	
-    <b1>   DW_AT_type        : <0x97>	
-    <b5>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b8>: Abbrev Number: 10 (DW_TAG_member)
-    <b9>   DW_AT_name        : (indirect string, offset: 0x11b): d_off	
-    <bd>   DW_AT_decl_file   : 2	
-    <be>   DW_AT_decl_line   : 52	
-    <bf>   DW_AT_type        : <0x97>	
-    <c3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c6>: Abbrev Number: 10 (DW_TAG_member)
-    <c7>   DW_AT_name        : (indirect string, offset: 0x5b): d_reclen	
-    <cb>   DW_AT_decl_file   : 2	
-    <cc>   DW_AT_decl_line   : 53	
-    <cd>   DW_AT_type        : <0x40>	
-    <d1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d4>: Abbrev Number: 10 (DW_TAG_member)
-    <d5>   DW_AT_name        : (indirect string, offset: 0x22): d_name	
-    <d9>   DW_AT_decl_file   : 2	
-    <da>   DW_AT_decl_line   : 54	
-    <db>   DW_AT_type        : <0x7c>	
-    <df>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><e2>: Abbrev Number: 0
- <1><e3>: Abbrev Number: 8 (DW_TAG_typedef)
-    <e4>   DW_AT_name        : (indirect string, offset: 0x1c1): kernel_dirent	
-    <e8>   DW_AT_decl_file   : 2	
-    <e9>   DW_AT_decl_line   : 55	
-    <ea>   DW_AT_type        : <0xa2>	
- <1><ee>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <ef>   DW_AT_name        : (indirect string, offset: 0x84): sysent	
-    <f3>   DW_AT_byte_size   : 20	
-    <f4>   DW_AT_decl_file   : 3	
-    <f5>   DW_AT_decl_line   : 4	
-    <f6>   DW_AT_sibling     : <0x141>	
- <2><fa>: Abbrev Number: 10 (DW_TAG_member)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x9c): nargs	
-    <ff>   DW_AT_decl_file   : 3	
-    <100>   DW_AT_decl_line   : 5	
-    <101>   DW_AT_type        : <0x47>	
-    <105>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><108>: Abbrev Number: 10 (DW_TAG_member)
-    <109>   DW_AT_name        : (indirect string, offset: 0x3a): sys_flags	
-    <10d>   DW_AT_decl_file   : 3	
-    <10e>   DW_AT_decl_line   : 6	
-    <10f>   DW_AT_type        : <0x2b>	
-    <113>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><116>: Abbrev Number: 12 (DW_TAG_member)
-    <117>   DW_AT_name        : sen	
-    <11b>   DW_AT_decl_file   : 3	
-    <11c>   DW_AT_decl_line   : 7	
-    <11d>   DW_AT_type        : <0x2b>	
-    <121>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><124>: Abbrev Number: 10 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x1cf): sys_func	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 8	
-    <12b>   DW_AT_type        : <0x14c>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><132>: Abbrev Number: 10 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x19): sys_name	
-    <137>   DW_AT_decl_file   : 3	
-    <138>   DW_AT_decl_line   : 9	
-    <139>   DW_AT_type        : <0x71>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><140>: Abbrev Number: 0
- <1><141>: Abbrev Number: 13 (DW_TAG_subroutine_type)
-    <142>   DW_AT_type        : <0x2b>	
-    <146>   DW_AT_sibling     : <0x14c>	
- <2><14a>: Abbrev Number: 14 (DW_TAG_unspecified_parameters)
- <2><14b>: Abbrev Number: 0
- <1><14c>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <14d>   DW_AT_byte_size   : 4	
-    <14e>   DW_AT_type        : <0x141>	
- <1><152>: Abbrev Number: 8 (DW_TAG_typedef)
-    <153>   DW_AT_name        : (indirect string, offset: 0x12e): struct_sysent	
-    <157>   DW_AT_decl_file   : 3	
-    <158>   DW_AT_decl_line   : 10	
-    <159>   DW_AT_type        : <0xee>	
- <1><15d>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <15e>   DW_AT_byte_size   : 4	
-    <15f>   DW_AT_type        : <0x163>	
- <1><163>: Abbrev Number: 5 (DW_TAG_const_type)
-    <164>   DW_AT_type        : <0x152>	
- <1><168>: Abbrev Number: 2 (DW_TAG_base_type)
-    <169>   DW_AT_byte_size   : 1	
-    <16a>   DW_AT_encoding    : 2	(boolean)
-    <16b>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><16f>: Abbrev Number: 15 (DW_TAG_variable)
-    <170>   DW_AT_name        : (indirect string, offset: 0x8b): current_wordsize	
-    <174>   DW_AT_decl_file   : 4	
-    <175>   DW_AT_decl_line   : 757	
-    <177>   DW_AT_type        : <0x47>	
-    <17b>   DW_AT_external    : 1	
-    <17c>   DW_AT_declaration : 1	
- <1><17d>: Abbrev Number: 15 (DW_TAG_variable)
-    <17e>   DW_AT_name        : (indirect string, offset: 0x84): sysent	
-    <182>   DW_AT_decl_file   : 4	
-    <183>   DW_AT_decl_line   : 892	
-    <185>   DW_AT_type        : <0x15d>	
-    <189>   DW_AT_external    : 1	
-    <18a>   DW_AT_declaration : 1	
- <1><18b>: Abbrev Number: 15 (DW_TAG_variable)
-    <18c>   DW_AT_name        : (indirect string, offset: 0x152): nsyscalls	
-    <190>   DW_AT_decl_file   : 4	
-    <191>   DW_AT_decl_line   : 903	
-    <193>   DW_AT_type        : <0x47>	
-    <197>   DW_AT_external    : 1	
-    <198>   DW_AT_declaration : 1	
- <1><199>: Abbrev Number: 16 (DW_TAG_variable)
-    <19a>   DW_AT_name        : (indirect string, offset: 0x29): mpers_target_var	
-    <19e>   DW_AT_decl_file   : 5	
-    <19f>   DW_AT_decl_line   : 35	
-    <1a0>   DW_AT_type        : <0xe3>	
-    <1a4>   DW_AT_external    : 1	
-    <1a5>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><1ab>: Abbrev Number: 0
-
diff --git a/mpers-m32/kernel_dirent.d2 b/mpers-m32/kernel_dirent.d2
deleted file mode 100644
index 2e4efc9..0000000
--- a/mpers-m32/kernel_dirent.d2
+++ /dev/null
@@ -1,229 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b5): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x179): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x165): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x64): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x121): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x44): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ac): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x72): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x15c): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x13c): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x8c>
-<2><85>
-Abbrev Number: 7 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 0
-<1><8c>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x141): __kernel_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 15
-DW_AT_type        : <0x5c>
-<1><97>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x19d): kernel_ulong_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x8c>
-<1><a2>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 50
-DW_AT_sibling     : <0xe3>
-<2><aa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x173): d_ino
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b8>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11b): d_off
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5b): d_reclen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d4>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22): d_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<1><e3>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c1): kernel_dirent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 55
-DW_AT_type        : <0xa2>
-<1><ee>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x84): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x141>
-<2><fa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9c): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><108>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><116>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><124>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cf): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x14c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><132>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><141>
-Abbrev Number: 13 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x14c>
-<2><14a>
-Abbrev Number: 14 (DW_TAG_unspecified_parameters)
-<1><14c>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x141>
-<1><152>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x12e): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xee>
-<1><15d>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x163>
-<1><163>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x152>
-<1><168>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><16f>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x8b): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17d>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x84): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x15d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18b>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x152): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><199>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x29): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xe3>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/mq_attr_t.c b/mpers-m32/mq_attr_t.c
index 2c31495..9f0ec7a 100644
--- a/mpers-m32/mq_attr_t.c
+++ b/mpers-m32/mq_attr_t.c
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/mq_attr_t.d1 b/mpers-m32/mq_attr_t.d1
deleted file mode 100644
index f225e6c..0000000
--- a/mpers-m32/mq_attr_t.d1
+++ /dev/null
@@ -1,209 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1af (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xb8): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x13c): mpers-m32/mq_attr_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x191): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x185): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x168): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x152): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x7a): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x27): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x100): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x63): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x172): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x88): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x133): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0x1cb): __syscall_slong_t	
-    <6f>   DW_AT_decl_file   : 2	
-    <70>   DW_AT_decl_line   : 175	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 2 (DW_TAG_base_type)
-    <76>   DW_AT_byte_size   : 1	
-    <77>   DW_AT_encoding    : 6	(signed char)
-    <78>   DW_AT_name        : (indirect string, offset: 0x11b): char	
- <1><7c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <7d>   DW_AT_byte_size   : 4	
-    <7e>   DW_AT_type        : <0x82>	
- <1><82>: Abbrev Number: 6 (DW_TAG_const_type)
-    <83>   DW_AT_type        : <0x75>	
- <1><87>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <88>   DW_AT_name        : (indirect string, offset: 0x9a): sysent	
-    <8c>   DW_AT_byte_size   : 20	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 4	
-    <8f>   DW_AT_sibling     : <0xda>	
- <2><93>: Abbrev Number: 8 (DW_TAG_member)
-    <94>   DW_AT_name        : (indirect string, offset: 0xb2): nargs	
-    <98>   DW_AT_decl_file   : 1	
-    <99>   DW_AT_decl_line   : 5	
-    <9a>   DW_AT_type        : <0x47>	
-    <9e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a1>: Abbrev Number: 8 (DW_TAG_member)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x59): sys_flags	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 6	
-    <a8>   DW_AT_type        : <0x2b>	
-    <ac>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><af>: Abbrev Number: 9 (DW_TAG_member)
-    <b0>   DW_AT_name        : sen	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 7	
-    <b6>   DW_AT_type        : <0x2b>	
-    <ba>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><bd>: Abbrev Number: 8 (DW_TAG_member)
-    <be>   DW_AT_name        : (indirect string, offset: 0x1c2): sys_func	
-    <c2>   DW_AT_decl_file   : 1	
-    <c3>   DW_AT_decl_line   : 8	
-    <c4>   DW_AT_type        : <0xe5>	
-    <c8>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><cb>: Abbrev Number: 8 (DW_TAG_member)
-    <cc>   DW_AT_name        : (indirect string, offset: 0x45): sys_name	
-    <d0>   DW_AT_decl_file   : 1	
-    <d1>   DW_AT_decl_line   : 9	
-    <d2>   DW_AT_type        : <0x7c>	
-    <d6>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <db>   DW_AT_type        : <0x2b>	
-    <df>   DW_AT_sibling     : <0xe5>	
- <2><e3>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <e6>   DW_AT_byte_size   : 4	
-    <e7>   DW_AT_type        : <0xda>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_typedef)
-    <ec>   DW_AT_name        : (indirect string, offset: 0x10d): struct_sysent	
-    <f0>   DW_AT_decl_file   : 1	
-    <f1>   DW_AT_decl_line   : 10	
-    <f2>   DW_AT_type        : <0x87>	
- <1><f6>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f7>   DW_AT_byte_size   : 4	
-    <f8>   DW_AT_type        : <0xfc>	
- <1><fc>: Abbrev Number: 6 (DW_TAG_const_type)
-    <fd>   DW_AT_type        : <0xeb>	
- <1><101>: Abbrev Number: 2 (DW_TAG_base_type)
-    <102>   DW_AT_byte_size   : 1	
-    <103>   DW_AT_encoding    : 2	(boolean)
-    <104>   DW_AT_name        : (indirect string, offset: 0x17): _Bool	
- <1><108>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <109>   DW_AT_name        : (indirect string, offset: 0x160): mq_attr	
-    <10d>   DW_AT_byte_size   : 32	
-    <10e>   DW_AT_decl_file   : 3	
-    <10f>   DW_AT_decl_line   : 26	
-    <110>   DW_AT_sibling     : <0x15b>	
- <2><114>: Abbrev Number: 8 (DW_TAG_member)
-    <115>   DW_AT_name        : (indirect string, offset: 0x120): mq_flags	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 28	
-    <11b>   DW_AT_type        : <0x6a>	
-    <11f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><122>: Abbrev Number: 8 (DW_TAG_member)
-    <123>   DW_AT_name        : (indirect string, offset: 0x17b): mq_maxmsg	
-    <127>   DW_AT_decl_file   : 3	
-    <128>   DW_AT_decl_line   : 29	
-    <129>   DW_AT_type        : <0x6a>	
-    <12d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><130>: Abbrev Number: 8 (DW_TAG_member)
-    <131>   DW_AT_name        : (indirect string, offset: 0x3a): mq_msgsize	
-    <135>   DW_AT_decl_file   : 3	
-    <136>   DW_AT_decl_line   : 30	
-    <137>   DW_AT_type        : <0x6a>	
-    <13b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13e>: Abbrev Number: 8 (DW_TAG_member)
-    <13f>   DW_AT_name        : (indirect string, offset: 0x4e): mq_curmsgs	
-    <143>   DW_AT_decl_file   : 3	
-    <144>   DW_AT_decl_line   : 31	
-    <145>   DW_AT_type        : <0x6a>	
-    <149>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><14c>: Abbrev Number: 8 (DW_TAG_member)
-    <14d>   DW_AT_name        : (indirect string, offset: 0x0): __pad	
-    <151>   DW_AT_decl_file   : 3	
-    <152>   DW_AT_decl_line   : 32	
-    <153>   DW_AT_type        : <0x15b>	
-    <157>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><15a>: Abbrev Number: 0
- <1><15b>: Abbrev Number: 12 (DW_TAG_array_type)
-    <15c>   DW_AT_type        : <0x6a>	
-    <160>   DW_AT_sibling     : <0x16b>	
- <2><164>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <165>   DW_AT_type        : <0x63>	
-    <169>   DW_AT_upper_bound : 3	
- <2><16a>: Abbrev Number: 0
- <1><16b>: Abbrev Number: 4 (DW_TAG_typedef)
-    <16c>   DW_AT_name        : (indirect string, offset: 0x1d): mq_attr_t	
-    <170>   DW_AT_decl_file   : 4	
-    <171>   DW_AT_decl_line   : 34	
-    <172>   DW_AT_type        : <0x108>	
- <1><176>: Abbrev Number: 14 (DW_TAG_variable)
-    <177>   DW_AT_name        : (indirect string, offset: 0xa1): current_wordsize	
-    <17b>   DW_AT_decl_file   : 5	
-    <17c>   DW_AT_decl_line   : 757	
-    <17e>   DW_AT_type        : <0x47>	
-    <182>   DW_AT_external    : 1	
-    <183>   DW_AT_declaration : 1	
- <1><184>: Abbrev Number: 14 (DW_TAG_variable)
-    <185>   DW_AT_name        : (indirect string, offset: 0x9a): sysent	
-    <189>   DW_AT_decl_file   : 5	
-    <18a>   DW_AT_decl_line   : 892	
-    <18c>   DW_AT_type        : <0xf6>	
-    <190>   DW_AT_external    : 1	
-    <191>   DW_AT_declaration : 1	
- <1><192>: Abbrev Number: 14 (DW_TAG_variable)
-    <193>   DW_AT_name        : (indirect string, offset: 0x129): nsyscalls	
-    <197>   DW_AT_decl_file   : 5	
-    <198>   DW_AT_decl_line   : 903	
-    <19a>   DW_AT_type        : <0x47>	
-    <19e>   DW_AT_external    : 1	
-    <19f>   DW_AT_declaration : 1	
- <1><1a0>: Abbrev Number: 15 (DW_TAG_variable)
-    <1a1>   DW_AT_name        : (indirect string, offset: 0x6): mpers_target_var	
-    <1a5>   DW_AT_decl_file   : 4	
-    <1a6>   DW_AT_decl_line   : 42	
-    <1a7>   DW_AT_type        : <0x16b>	
-    <1ab>   DW_AT_external    : 1	
-    <1ac>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1b2>: Abbrev Number: 0
-
diff --git a/mpers-m32/mq_attr_t.d2 b/mpers-m32/mq_attr_t.d2
deleted file mode 100644
index 8097c3f..0000000
--- a/mpers-m32/mq_attr_t.d2
+++ /dev/null
@@ -1,231 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x185): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x168): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x152): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x7a): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x27): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x100): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x63): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x172): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x88): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x133): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1cb): __syscall_slong_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x11b): char
-<1><7c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x82>
-<1><82>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x75>
-<1><87>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x9a): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xda>
-<2><93>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb2): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x59): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><af>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><bd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c2): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe5>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><cb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x45): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><da>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe5>
-<2><e3>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><e5>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xda>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x10d): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x87>
-<1><f6>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfc>
-<1><fc>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xeb>
-<1><101>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x17): _Bool
-<1><108>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x160): mq_attr
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_sibling     : <0x15b>
-<2><114>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x120): mq_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><122>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17b): mq_maxmsg
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><130>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a): mq_msgsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><13e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4e): mq_curmsgs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><14c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): __pad
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x15b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><15b>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x16b>
-<2><164>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><16b>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d): mq_attr_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x108>
-<1><176>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa1): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><184>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9a): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf6>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><192>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x129): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a0>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x6): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x16b>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/msgbuf_t.c b/mpers-m32/msgbuf_t.c
index 4b0d5a9..a345637 100644
--- a/mpers-m32/msgbuf_t.c
+++ b/mpers-m32/msgbuf_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/mpers-m32/msgbuf_t.d1 b/mpers-m32/msgbuf_t.d1
deleted file mode 100644
index 6a3db5f..0000000
--- a/mpers-m32/msgbuf_t.d1
+++ /dev/null
@@ -1,191 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x185 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xb4): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x5b): mpers-m32/msgbuf_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x11c): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x18a): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x177): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x160): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x70): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0xd): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0xfc): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x44): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x181): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x84): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x157): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0x1a5): __syscall_slong_t	
-    <6f>   DW_AT_decl_file   : 2	
-    <70>   DW_AT_decl_line   : 175	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 2 (DW_TAG_base_type)
-    <76>   DW_AT_byte_size   : 1	
-    <77>   DW_AT_encoding    : 6	(signed char)
-    <78>   DW_AT_name        : (indirect string, offset: 0x117): char	
- <1><7c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <7d>   DW_AT_byte_size   : 4	
-    <7e>   DW_AT_type        : <0x82>	
- <1><82>: Abbrev Number: 6 (DW_TAG_const_type)
-    <83>   DW_AT_type        : <0x75>	
- <1><87>: Abbrev Number: 7 (DW_TAG_array_type)
-    <88>   DW_AT_type        : <0x75>	
-    <8c>   DW_AT_sibling     : <0x97>	
- <2><90>: Abbrev Number: 8 (DW_TAG_subrange_type)
-    <91>   DW_AT_type        : <0x63>	
-    <95>   DW_AT_upper_bound : 0	
- <2><96>: Abbrev Number: 0
- <1><97>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <98>   DW_AT_name        : (indirect string, offset: 0x96): sysent	
-    <9c>   DW_AT_byte_size   : 20	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 4	
-    <9f>   DW_AT_sibling     : <0xea>	
- <2><a3>: Abbrev Number: 10 (DW_TAG_member)
-    <a4>   DW_AT_name        : (indirect string, offset: 0xae): nargs	
-    <a8>   DW_AT_decl_file   : 1	
-    <a9>   DW_AT_decl_line   : 5	
-    <aa>   DW_AT_type        : <0x47>	
-    <ae>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b1>: Abbrev Number: 10 (DW_TAG_member)
-    <b2>   DW_AT_name        : (indirect string, offset: 0x3a): sys_flags	
-    <b6>   DW_AT_decl_file   : 1	
-    <b7>   DW_AT_decl_line   : 6	
-    <b8>   DW_AT_type        : <0x2b>	
-    <bc>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><bf>: Abbrev Number: 11 (DW_TAG_member)
-    <c0>   DW_AT_name        : sen	
-    <c4>   DW_AT_decl_file   : 1	
-    <c5>   DW_AT_decl_line   : 7	
-    <c6>   DW_AT_type        : <0x2b>	
-    <ca>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><cd>: Abbrev Number: 10 (DW_TAG_member)
-    <ce>   DW_AT_name        : (indirect string, offset: 0x19c): sys_func	
-    <d2>   DW_AT_decl_file   : 1	
-    <d3>   DW_AT_decl_line   : 8	
-    <d4>   DW_AT_type        : <0xf5>	
-    <d8>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><db>: Abbrev Number: 10 (DW_TAG_member)
-    <dc>   DW_AT_name        : (indirect string, offset: 0x20): sys_name	
-    <e0>   DW_AT_decl_file   : 1	
-    <e1>   DW_AT_decl_line   : 9	
-    <e2>   DW_AT_type        : <0x7c>	
-    <e6>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e9>: Abbrev Number: 0
- <1><ea>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <eb>   DW_AT_type        : <0x2b>	
-    <ef>   DW_AT_sibling     : <0xf5>	
- <2><f3>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><f4>: Abbrev Number: 0
- <1><f5>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f6>   DW_AT_byte_size   : 4	
-    <f7>   DW_AT_type        : <0xea>	
- <1><fb>: Abbrev Number: 4 (DW_TAG_typedef)
-    <fc>   DW_AT_name        : (indirect string, offset: 0x109): struct_sysent	
-    <100>   DW_AT_decl_file   : 1	
-    <101>   DW_AT_decl_line   : 10	
-    <102>   DW_AT_type        : <0x97>	
- <1><106>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <107>   DW_AT_byte_size   : 4	
-    <108>   DW_AT_type        : <0x10c>	
- <1><10c>: Abbrev Number: 6 (DW_TAG_const_type)
-    <10d>   DW_AT_type        : <0xfb>	
- <1><111>: Abbrev Number: 2 (DW_TAG_base_type)
-    <112>   DW_AT_byte_size   : 1	
-    <113>   DW_AT_encoding    : 2	(boolean)
-    <114>   DW_AT_name        : (indirect string, offset: 0x7): _Bool	
- <1><118>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <119>   DW_AT_name        : (indirect string, offset: 0x0): msgbuf	
-    <11d>   DW_AT_byte_size   : 8	
-    <11e>   DW_AT_decl_file   : 3	
-    <11f>   DW_AT_decl_line   : 51	
-    <120>   DW_AT_sibling     : <0x141>	
- <2><124>: Abbrev Number: 10 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x196): mtype	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 53	
-    <12b>   DW_AT_type        : <0x6a>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><132>: Abbrev Number: 10 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x7e): mtext	
-    <137>   DW_AT_decl_file   : 3	
-    <138>   DW_AT_decl_line   : 54	
-    <139>   DW_AT_type        : <0x87>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><140>: Abbrev Number: 0
- <1><141>: Abbrev Number: 4 (DW_TAG_typedef)
-    <142>   DW_AT_name        : (indirect string, offset: 0x16e): msgbuf_t	
-    <146>   DW_AT_decl_file   : 4	
-    <147>   DW_AT_decl_line   : 37	
-    <148>   DW_AT_type        : <0x118>	
- <1><14c>: Abbrev Number: 14 (DW_TAG_variable)
-    <14d>   DW_AT_name        : (indirect string, offset: 0x9d): current_wordsize	
-    <151>   DW_AT_decl_file   : 5	
-    <152>   DW_AT_decl_line   : 757	
-    <154>   DW_AT_type        : <0x47>	
-    <158>   DW_AT_external    : 1	
-    <159>   DW_AT_declaration : 1	
- <1><15a>: Abbrev Number: 14 (DW_TAG_variable)
-    <15b>   DW_AT_name        : (indirect string, offset: 0x96): sysent	
-    <15f>   DW_AT_decl_file   : 5	
-    <160>   DW_AT_decl_line   : 892	
-    <162>   DW_AT_type        : <0x106>	
-    <166>   DW_AT_external    : 1	
-    <167>   DW_AT_declaration : 1	
- <1><168>: Abbrev Number: 14 (DW_TAG_variable)
-    <169>   DW_AT_name        : (indirect string, offset: 0x14d): nsyscalls	
-    <16d>   DW_AT_decl_file   : 5	
-    <16e>   DW_AT_decl_line   : 903	
-    <170>   DW_AT_type        : <0x47>	
-    <174>   DW_AT_external    : 1	
-    <175>   DW_AT_declaration : 1	
- <1><176>: Abbrev Number: 15 (DW_TAG_variable)
-    <177>   DW_AT_name        : (indirect string, offset: 0x29): mpers_target_var	
-    <17b>   DW_AT_decl_file   : 4	
-    <17c>   DW_AT_decl_line   : 38	
-    <17d>   DW_AT_type        : <0x141>	
-    <181>   DW_AT_external    : 1	
-    <182>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><188>: Abbrev Number: 0
-
diff --git a/mpers-m32/msgbuf_t.d2 b/mpers-m32/msgbuf_t.d2
deleted file mode 100644
index feffd7c..0000000
--- a/mpers-m32/msgbuf_t.d2
+++ /dev/null
@@ -1,210 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x18a): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x177): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x160): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x70): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xfc): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x44): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x181): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x84): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x157): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1a5): __syscall_slong_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x117): char
-<1><7c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x82>
-<1><82>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x75>
-<1><87>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0x75>
-DW_AT_sibling     : <0x97>
-<2><90>
-Abbrev Number: 8 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 0
-<1><97>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x96): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xea>
-<2><a3>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xae): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><bf>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><cd>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19c): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf5>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><db>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><ea>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf5>
-<2><f3>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><f5>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xea>
-<1><fb>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x109): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x97>
-<1><106>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x10c>
-<1><10c>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xfb>
-<1><111>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x7): _Bool
-<1><118>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): msgbuf
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_sibling     : <0x141>
-<2><124>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x196): mtype
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><132>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7e): mtext
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><141>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x16e): msgbuf_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x118>
-<1><14c>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9d): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><15a>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x96): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x106>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><168>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x14d): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><176>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x29): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x141>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/msqid_ds_t.c b/mpers-m32/msqid_ds_t.c
index 8e70ecb..2e2b96e 100644
--- a/mpers-m32/msqid_ds_t.c
+++ b/mpers-m32/msqid_ds_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/mpers-m32/msqid_ds_t.d1 b/mpers-m32/msqid_ds_t.d1
deleted file mode 100644
index 4e8fb3f..0000000
--- a/mpers-m32/msqid_ds_t.d1
+++ /dev/null
@@ -1,364 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x311 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x10a): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1f1): mpers-m32/msqid_ds_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x287): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x269): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x208): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1e3): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x9d): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x35): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x170): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x86): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x258): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xab): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x2d): __uid_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 125	
-    <6a>   DW_AT_type        : <0x47>	
- <1><6e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x1c7): __gid_t	
-    <73>   DW_AT_decl_file   : 1	
-    <74>   DW_AT_decl_line   : 126	
-    <75>   DW_AT_type        : <0x47>	
- <1><79>: Abbrev Number: 4 (DW_TAG_typedef)
-    <7a>   DW_AT_name        : (indirect string, offset: 0x261): __pid_t	
-    <7e>   DW_AT_decl_file   : 1	
-    <7f>   DW_AT_decl_line   : 133	
-    <80>   DW_AT_type        : <0x2b>	
- <1><84>: Abbrev Number: 2 (DW_TAG_base_type)
-    <85>   DW_AT_byte_size   : 4	
-    <86>   DW_AT_encoding    : 7	(unsigned)
-    <87>   DW_AT_name        : (indirect string, offset: 0x1cf): sizetype	
- <1><8b>: Abbrev Number: 4 (DW_TAG_typedef)
-    <8c>   DW_AT_name        : (indirect string, offset: 0xf1): __time_t	
-    <90>   DW_AT_decl_file   : 1	
-    <91>   DW_AT_decl_line   : 139	
-    <92>   DW_AT_type        : <0x55>	
- <1><96>: Abbrev Number: 4 (DW_TAG_typedef)
-    <97>   DW_AT_name        : (indirect string, offset: 0x19e): __key_t	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 144	
-    <9d>   DW_AT_type        : <0x2b>	
- <1><a1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x48): __syscall_ulong_t	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 177	
-    <a8>   DW_AT_type        : <0x5c>	
- <1><ac>: Abbrev Number: 2 (DW_TAG_base_type)
-    <ad>   DW_AT_byte_size   : 1	
-    <ae>   DW_AT_encoding    : 6	(signed char)
-    <af>   DW_AT_name        : (indirect string, offset: 0x194): char	
- <1><b3>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <b4>   DW_AT_byte_size   : 4	
-    <b5>   DW_AT_type        : <0xb9>	
- <1><b9>: Abbrev Number: 6 (DW_TAG_const_type)
-    <ba>   DW_AT_type        : <0xac>	
- <1><be>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <bf>   DW_AT_name        : (indirect string, offset: 0xc2): sysent	
-    <c3>   DW_AT_byte_size   : 20	
-    <c4>   DW_AT_decl_file   : 2	
-    <c5>   DW_AT_decl_line   : 4	
-    <c6>   DW_AT_sibling     : <0x111>	
- <2><ca>: Abbrev Number: 8 (DW_TAG_member)
-    <cb>   DW_AT_name        : (indirect string, offset: 0xfa): nargs	
-    <cf>   DW_AT_decl_file   : 2	
-    <d0>   DW_AT_decl_line   : 5	
-    <d1>   DW_AT_type        : <0x47>	
-    <d5>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><d8>: Abbrev Number: 8 (DW_TAG_member)
-    <d9>   DW_AT_name        : (indirect string, offset: 0x7c): sys_flags	
-    <dd>   DW_AT_decl_file   : 2	
-    <de>   DW_AT_decl_line   : 6	
-    <df>   DW_AT_type        : <0x2b>	
-    <e3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><e6>: Abbrev Number: 9 (DW_TAG_member)
-    <e7>   DW_AT_name        : sen	
-    <eb>   DW_AT_decl_file   : 2	
-    <ec>   DW_AT_decl_line   : 7	
-    <ed>   DW_AT_type        : <0x2b>	
-    <f1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><f4>: Abbrev Number: 8 (DW_TAG_member)
-    <f5>   DW_AT_name        : (indirect string, offset: 0x2b8): sys_func	
-    <f9>   DW_AT_decl_file   : 2	
-    <fa>   DW_AT_decl_line   : 8	
-    <fb>   DW_AT_type        : <0x11c>	
-    <ff>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><102>: Abbrev Number: 8 (DW_TAG_member)
-    <103>   DW_AT_name        : (indirect string, offset: 0x64): sys_name	
-    <107>   DW_AT_decl_file   : 2	
-    <108>   DW_AT_decl_line   : 9	
-    <109>   DW_AT_type        : <0xb3>	
-    <10d>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><110>: Abbrev Number: 0
- <1><111>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <112>   DW_AT_type        : <0x2b>	
-    <116>   DW_AT_sibling     : <0x11c>	
- <2><11a>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><11b>: Abbrev Number: 0
- <1><11c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <11d>   DW_AT_byte_size   : 4	
-    <11e>   DW_AT_type        : <0x111>	
- <1><122>: Abbrev Number: 4 (DW_TAG_typedef)
-    <123>   DW_AT_name        : (indirect string, offset: 0x186): struct_sysent	
-    <127>   DW_AT_decl_file   : 2	
-    <128>   DW_AT_decl_line   : 10	
-    <129>   DW_AT_type        : <0xbe>	
- <1><12d>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <12e>   DW_AT_byte_size   : 4	
-    <12f>   DW_AT_type        : <0x133>	
- <1><133>: Abbrev Number: 6 (DW_TAG_const_type)
-    <134>   DW_AT_type        : <0x122>	
- <1><138>: Abbrev Number: 2 (DW_TAG_base_type)
-    <139>   DW_AT_byte_size   : 1	
-    <13a>   DW_AT_encoding    : 2	(boolean)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x20): _Bool	
- <1><13f>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <140>   DW_AT_name        : (indirect string, offset: 0x224): ipc_perm	
-    <144>   DW_AT_byte_size   : 36	
-    <145>   DW_AT_decl_file   : 3	
-    <146>   DW_AT_decl_line   : 42	
-    <147>   DW_AT_sibling     : <0x1e6>	
- <2><14b>: Abbrev Number: 8 (DW_TAG_member)
-    <14c>   DW_AT_name        : (indirect string, offset: 0x9): __key	
-    <150>   DW_AT_decl_file   : 3	
-    <151>   DW_AT_decl_line   : 44	
-    <152>   DW_AT_type        : <0x96>	
-    <156>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><159>: Abbrev Number: 9 (DW_TAG_member)
-    <15a>   DW_AT_name        : uid	
-    <15e>   DW_AT_decl_file   : 3	
-    <15f>   DW_AT_decl_line   : 45	
-    <160>   DW_AT_type        : <0x63>	
-    <164>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><167>: Abbrev Number: 9 (DW_TAG_member)
-    <168>   DW_AT_name        : gid	
-    <16c>   DW_AT_decl_file   : 3	
-    <16d>   DW_AT_decl_line   : 46	
-    <16e>   DW_AT_type        : <0x6e>	
-    <172>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><175>: Abbrev Number: 8 (DW_TAG_member)
-    <176>   DW_AT_name        : (indirect string, offset: 0xc9): cuid	
-    <17a>   DW_AT_decl_file   : 3	
-    <17b>   DW_AT_decl_line   : 47	
-    <17c>   DW_AT_type        : <0x63>	
-    <180>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><183>: Abbrev Number: 8 (DW_TAG_member)
-    <184>   DW_AT_name        : (indirect string, offset: 0xbd): cgid	
-    <188>   DW_AT_decl_file   : 3	
-    <189>   DW_AT_decl_line   : 48	
-    <18a>   DW_AT_type        : <0x6e>	
-    <18e>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><191>: Abbrev Number: 8 (DW_TAG_member)
-    <192>   DW_AT_name        : (indirect string, offset: 0x199): mode	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 49	
-    <198>   DW_AT_type        : <0x40>	
-    <19c>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><19f>: Abbrev Number: 8 (DW_TAG_member)
-    <1a0>   DW_AT_name        : (indirect string, offset: 0x251): __pad1	
-    <1a4>   DW_AT_decl_file   : 3	
-    <1a5>   DW_AT_decl_line   : 50	
-    <1a6>   DW_AT_type        : <0x40>	
-    <1aa>   DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
- <2><1ad>: Abbrev Number: 8 (DW_TAG_member)
-    <1ae>   DW_AT_name        : (indirect string, offset: 0x76): __seq	
-    <1b2>   DW_AT_decl_file   : 3	
-    <1b3>   DW_AT_decl_line   : 51	
-    <1b4>   DW_AT_type        : <0x40>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1bb>: Abbrev Number: 8 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x26): __pad2	
-    <1c0>   DW_AT_decl_file   : 3	
-    <1c1>   DW_AT_decl_line   : 52	
-    <1c2>   DW_AT_type        : <0x40>	
-    <1c6>   DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
- <2><1c9>: Abbrev Number: 8 (DW_TAG_member)
-    <1ca>   DW_AT_name        : (indirect string, offset: 0xce): __glibc_reserved1	
-    <1ce>   DW_AT_decl_file   : 3	
-    <1cf>   DW_AT_decl_line   : 53	
-    <1d0>   DW_AT_type        : <0xa1>	
-    <1d4>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1d7>: Abbrev Number: 8 (DW_TAG_member)
-    <1d8>   DW_AT_name        : (indirect string, offset: 0x212): __glibc_reserved2	
-    <1dc>   DW_AT_decl_file   : 3	
-    <1dd>   DW_AT_decl_line   : 54	
-    <1de>   DW_AT_type        : <0xa1>	
-    <1e2>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1e5>: Abbrev Number: 0
- <1><1e6>: Abbrev Number: 4 (DW_TAG_typedef)
-    <1e7>   DW_AT_name        : (indirect string, offset: 0x15d): msgqnum_t	
-    <1eb>   DW_AT_decl_file   : 4	
-    <1ec>   DW_AT_decl_line   : 32	
-    <1ed>   DW_AT_type        : <0xa1>	
- <1><1f1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <1f2>   DW_AT_name        : (indirect string, offset: 0x167): msglen_t	
-    <1f6>   DW_AT_decl_file   : 4	
-    <1f7>   DW_AT_decl_line   : 33	
-    <1f8>   DW_AT_type        : <0xa1>	
- <1><1fc>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <1fd>   DW_AT_name        : (indirect string, offset: 0x0): msqid_ds	
-    <201>   DW_AT_byte_size   : 88	
-    <202>   DW_AT_decl_file   : 4	
-    <203>   DW_AT_decl_line   : 37	
-    <204>   DW_AT_sibling     : <0x2cd>	
- <2><208>: Abbrev Number: 8 (DW_TAG_member)
-    <209>   DW_AT_name        : (indirect string, offset: 0x17d): msg_perm	
-    <20d>   DW_AT_decl_file   : 4	
-    <20e>   DW_AT_decl_line   : 39	
-    <20f>   DW_AT_type        : <0x13f>	
-    <213>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><216>: Abbrev Number: 8 (DW_TAG_member)
-    <217>   DW_AT_name        : (indirect string, offset: 0x2c1): msg_stime	
-    <21b>   DW_AT_decl_file   : 4	
-    <21c>   DW_AT_decl_line   : 40	
-    <21d>   DW_AT_type        : <0x8b>	
-    <221>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><224>: Abbrev Number: 8 (DW_TAG_member)
-    <225>   DW_AT_name        : (indirect string, offset: 0xce): __glibc_reserved1	
-    <229>   DW_AT_decl_file   : 4	
-    <22a>   DW_AT_decl_line   : 42	
-    <22b>   DW_AT_type        : <0x5c>	
-    <22f>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><232>: Abbrev Number: 8 (DW_TAG_member)
-    <233>   DW_AT_name        : (indirect string, offset: 0x1b3): msg_rtime	
-    <237>   DW_AT_decl_file   : 4	
-    <238>   DW_AT_decl_line   : 44	
-    <239>   DW_AT_type        : <0x8b>	
-    <23d>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><240>: Abbrev Number: 8 (DW_TAG_member)
-    <241>   DW_AT_name        : (indirect string, offset: 0x212): __glibc_reserved2	
-    <245>   DW_AT_decl_file   : 4	
-    <246>   DW_AT_decl_line   : 46	
-    <247>   DW_AT_type        : <0x5c>	
-    <24b>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><24e>: Abbrev Number: 8 (DW_TAG_member)
-    <24f>   DW_AT_name        : (indirect string, offset: 0x100): msg_ctime	
-    <253>   DW_AT_decl_file   : 4	
-    <254>   DW_AT_decl_line   : 48	
-    <255>   DW_AT_type        : <0x8b>	
-    <259>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><25c>: Abbrev Number: 8 (DW_TAG_member)
-    <25d>   DW_AT_name        : (indirect string, offset: 0x275): __glibc_reserved3	
-    <261>   DW_AT_decl_file   : 4	
-    <262>   DW_AT_decl_line   : 50	
-    <263>   DW_AT_type        : <0x5c>	
-    <267>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><26a>: Abbrev Number: 8 (DW_TAG_member)
-    <26b>   DW_AT_name        : (indirect string, offset: 0x1a6): __msg_cbytes	
-    <26f>   DW_AT_decl_file   : 4	
-    <270>   DW_AT_decl_line   : 52	
-    <271>   DW_AT_type        : <0xa1>	
-    <275>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><278>: Abbrev Number: 8 (DW_TAG_member)
-    <279>   DW_AT_name        : (indirect string, offset: 0x6d): msg_qnum	
-    <27d>   DW_AT_decl_file   : 4	
-    <27e>   DW_AT_decl_line   : 53	
-    <27f>   DW_AT_type        : <0x1e6>	
-    <283>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><286>: Abbrev Number: 8 (DW_TAG_member)
-    <287>   DW_AT_name        : (indirect string, offset: 0x152): msg_qbytes	
-    <28b>   DW_AT_decl_file   : 4	
-    <28c>   DW_AT_decl_line   : 54	
-    <28d>   DW_AT_type        : <0x1f1>	
-    <291>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><294>: Abbrev Number: 8 (DW_TAG_member)
-    <295>   DW_AT_name        : (indirect string, offset: 0x5a): msg_lspid	
-    <299>   DW_AT_decl_file   : 4	
-    <29a>   DW_AT_decl_line   : 55	
-    <29b>   DW_AT_type        : <0x79>	
-    <29f>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><2a2>: Abbrev Number: 8 (DW_TAG_member)
-    <2a3>   DW_AT_name        : (indirect string, offset: 0x2cb): msg_lrpid	
-    <2a7>   DW_AT_decl_file   : 4	
-    <2a8>   DW_AT_decl_line   : 56	
-    <2a9>   DW_AT_type        : <0x79>	
-    <2ad>   DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
- <2><2b0>: Abbrev Number: 8 (DW_TAG_member)
-    <2b1>   DW_AT_name        : (indirect string, offset: 0x22d): __glibc_reserved4	
-    <2b5>   DW_AT_decl_file   : 4	
-    <2b6>   DW_AT_decl_line   : 57	
-    <2b7>   DW_AT_type        : <0xa1>	
-    <2bb>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><2be>: Abbrev Number: 8 (DW_TAG_member)
-    <2bf>   DW_AT_name        : (indirect string, offset: 0x23f): __glibc_reserved5	
-    <2c3>   DW_AT_decl_file   : 4	
-    <2c4>   DW_AT_decl_line   : 58	
-    <2c5>   DW_AT_type        : <0xa1>	
-    <2c9>   DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
- <2><2cc>: Abbrev Number: 0
- <1><2cd>: Abbrev Number: 4 (DW_TAG_typedef)
-    <2ce>   DW_AT_name        : (indirect string, offset: 0x1d8): msqid_ds_t	
-    <2d2>   DW_AT_decl_file   : 5	
-    <2d3>   DW_AT_decl_line   : 41	
-    <2d4>   DW_AT_type        : <0x1fc>	
- <1><2d8>: Abbrev Number: 12 (DW_TAG_variable)
-    <2d9>   DW_AT_name        : (indirect string, offset: 0xe0): current_wordsize	
-    <2dd>   DW_AT_decl_file   : 6	
-    <2de>   DW_AT_decl_line   : 757	
-    <2e0>   DW_AT_type        : <0x47>	
-    <2e4>   DW_AT_external    : 1	
-    <2e5>   DW_AT_declaration : 1	
- <1><2e6>: Abbrev Number: 12 (DW_TAG_variable)
-    <2e7>   DW_AT_name        : (indirect string, offset: 0xc2): sysent	
-    <2eb>   DW_AT_decl_file   : 6	
-    <2ec>   DW_AT_decl_line   : 892	
-    <2ee>   DW_AT_type        : <0x12d>	
-    <2f2>   DW_AT_external    : 1	
-    <2f3>   DW_AT_declaration : 1	
- <1><2f4>: Abbrev Number: 12 (DW_TAG_variable)
-    <2f5>   DW_AT_name        : (indirect string, offset: 0x1bd): nsyscalls	
-    <2f9>   DW_AT_decl_file   : 6	
-    <2fa>   DW_AT_decl_line   : 903	
-    <2fc>   DW_AT_type        : <0x47>	
-    <300>   DW_AT_external    : 1	
-    <301>   DW_AT_declaration : 1	
- <1><302>: Abbrev Number: 13 (DW_TAG_variable)
-    <303>   DW_AT_name        : (indirect string, offset: 0xf): mpers_target_var	
-    <307>   DW_AT_decl_file   : 5	
-    <308>   DW_AT_decl_line   : 48	
-    <309>   DW_AT_type        : <0x2cd>	
-    <30d>   DW_AT_external    : 1	
-    <30e>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><314>: Abbrev Number: 0
-
diff --git a/mpers-m32/msqid_ds_t.d2 b/mpers-m32/msqid_ds_t.d2
deleted file mode 100644
index 904d5e8..0000000
--- a/mpers-m32/msqid_ds_t.d2
+++ /dev/null
@@ -1,412 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x269): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x208): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e3): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x9d): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x35): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x170): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x86): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x258): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xab): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2d): __uid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-<1><6e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c7): __gid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x47>
-<1><79>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x261): __pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x2b>
-<1><84>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1cf): sizetype
-<1><8b>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf1): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><96>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x19e): __key_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<1><a1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x48): __syscall_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 177
-DW_AT_type        : <0x5c>
-<1><ac>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x194): char
-<1><b3>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xb9>
-<1><b9>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xac>
-<1><be>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc2): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x111>
-<2><ca>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfa): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><d8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7c): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><e6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><f4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2b8): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x11c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><102>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x64): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xb3>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><111>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x11c>
-<2><11a>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><11c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x111>
-<1><122>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x186): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xbe>
-<1><12d>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x133>
-<1><133>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x122>
-<1><138>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x20): _Bool
-<1><13f>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x224): ipc_perm
-DW_AT_byte_size   : 36
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 42
-DW_AT_sibling     : <0x1e6>
-<2><14b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): __key
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x96>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><159>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><167>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : gid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><175>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc9): cuid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><183>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbd): cgid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><191>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x199): mode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><19f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x251): __pad1
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
-<2><1ad>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x76): __seq
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1bb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26): __pad2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
-<2><1c9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xce): __glibc_reserved1
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><1d7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x212): __glibc_reserved2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<1><1e6>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x15d): msgqnum_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0xa1>
-<1><1f1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x167): msglen_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0xa1>
-<1><1fc>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): msqid_ds
-DW_AT_byte_size   : 88
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_sibling     : <0x2cd>
-<2><208>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17d): msg_perm
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x13f>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><216>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c1): msg_stime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><224>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xce): __glibc_reserved1
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><232>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b3): msg_rtime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><240>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x212): __glibc_reserved2
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><24e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x100): msg_ctime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><25c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x275): __glibc_reserved3
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><26a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a6): __msg_cbytes
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 52
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><278>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6d): msg_qnum
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x1e6>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><286>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x152): msg_qbytes
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x1f1>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<2><294>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5a): msg_lspid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><2a2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2cb): msg_lrpid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
-<2><2b0>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22d): __glibc_reserved4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 57
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<2><2be>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23f): __glibc_reserved5
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 58
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
-<1><2cd>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d8): msqid_ds_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x1fc>
-<1><2d8>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe0): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2e6>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc2): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x12d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2f4>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1bd): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><302>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x2cd>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/rusage_t.c b/mpers-m32/rusage_t.c
index f69a7ee..cf3c244 100644
--- a/mpers-m32/rusage_t.c
+++ b/mpers-m32/rusage_t.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/rusage_t.d1 b/mpers-m32/rusage_t.d1
deleted file mode 100644
index 4452fc7..0000000
--- a/mpers-m32/rusage_t.d1
+++ /dev/null
@@ -1,479 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x3e2 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x0): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x313): mpers-m32/rusage_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x332): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x186): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x96): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x116): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x172): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x1e2): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1c1): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x1a3): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x124): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x266): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0xb0): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0x29a): __time_t	
-    <6f>   DW_AT_decl_file   : 1	
-    <70>   DW_AT_decl_line   : 139	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x305): __suseconds_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 141	
-    <7c>   DW_AT_type        : <0x55>	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0xd6): __syscall_slong_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 175	
-    <87>   DW_AT_type        : <0x55>	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x20e): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0x2a3): timeval	
-    <97>   DW_AT_byte_size   : 8	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 30	
-    <9a>   DW_AT_sibling     : <0xbb>	
- <2><9e>: Abbrev Number: 6 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x16b): tv_sec	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 32	
-    <a5>   DW_AT_type        : <0x6a>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 6 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x2c9): tv_usec	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 33	
-    <b3>   DW_AT_type        : <0x75>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 0
- <1><bb>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <bc>   DW_AT_byte_size   : 4	
-    <bd>   DW_AT_type        : <0xc1>	
- <1><c1>: Abbrev Number: 8 (DW_TAG_const_type)
-    <c2>   DW_AT_type        : <0x8b>	
- <1><c6>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <c7>   DW_AT_name        : (indirect string, offset: 0x2f5): sysent	
-    <cb>   DW_AT_byte_size   : 20	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 4	
-    <ce>   DW_AT_sibling     : <0x119>	
- <2><d2>: Abbrev Number: 6 (DW_TAG_member)
-    <d3>   DW_AT_name        : (indirect string, offset: 0x180): nargs	
-    <d7>   DW_AT_decl_file   : 3	
-    <d8>   DW_AT_decl_line   : 5	
-    <d9>   DW_AT_type        : <0x47>	
-    <dd>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><e0>: Abbrev Number: 6 (DW_TAG_member)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x1ce): sys_flags	
-    <e5>   DW_AT_decl_file   : 3	
-    <e6>   DW_AT_decl_line   : 6	
-    <e7>   DW_AT_type        : <0x2b>	
-    <eb>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ee>: Abbrev Number: 9 (DW_TAG_member)
-    <ef>   DW_AT_name        : sen	
-    <f3>   DW_AT_decl_file   : 3	
-    <f4>   DW_AT_decl_line   : 7	
-    <f5>   DW_AT_type        : <0x2b>	
-    <f9>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><fc>: Abbrev Number: 6 (DW_TAG_member)
-    <fd>   DW_AT_name        : (indirect string, offset: 0x74): sys_func	
-    <101>   DW_AT_decl_file   : 3	
-    <102>   DW_AT_decl_line   : 8	
-    <103>   DW_AT_type        : <0x124>	
-    <107>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><10a>: Abbrev Number: 6 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0xcd): sys_name	
-    <10f>   DW_AT_decl_file   : 3	
-    <110>   DW_AT_decl_line   : 9	
-    <111>   DW_AT_type        : <0xbb>	
-    <115>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><118>: Abbrev Number: 0
- <1><119>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <11a>   DW_AT_type        : <0x2b>	
-    <11e>   DW_AT_sibling     : <0x124>	
- <2><122>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><123>: Abbrev Number: 0
- <1><124>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <125>   DW_AT_byte_size   : 4	
-    <126>   DW_AT_type        : <0x119>	
- <1><12a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x2bb): struct_sysent	
-    <12f>   DW_AT_decl_file   : 3	
-    <130>   DW_AT_decl_line   : 10	
-    <131>   DW_AT_type        : <0xc6>	
- <1><135>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <136>   DW_AT_byte_size   : 4	
-    <137>   DW_AT_type        : <0x13b>	
- <1><13b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <13c>   DW_AT_type        : <0x12a>	
- <1><140>: Abbrev Number: 2 (DW_TAG_base_type)
-    <141>   DW_AT_byte_size   : 1	
-    <142>   DW_AT_encoding    : 2	(boolean)
-    <143>   DW_AT_name        : (indirect string, offset: 0x213): _Bool	
- <1><147>: Abbrev Number: 12 (DW_TAG_union_type)
-    <148>   DW_AT_byte_size   : 4	
-    <149>   DW_AT_decl_file   : 4	
-    <14a>   DW_AT_decl_line   : 194	
-    <14b>   DW_AT_sibling     : <0x166>	
- <2><14f>: Abbrev Number: 13 (DW_TAG_member)
-    <150>   DW_AT_name        : (indirect string, offset: 0xfb): ru_maxrss	
-    <154>   DW_AT_decl_file   : 4	
-    <155>   DW_AT_decl_line   : 196	
-    <156>   DW_AT_type        : <0x55>	
- <2><15a>: Abbrev Number: 13 (DW_TAG_member)
-    <15b>   DW_AT_name        : (indirect string, offset: 0x13e): __ru_maxrss_word	
-    <15f>   DW_AT_decl_file   : 4	
-    <160>   DW_AT_decl_line   : 197	
-    <161>   DW_AT_type        : <0x80>	
- <2><165>: Abbrev Number: 0
- <1><166>: Abbrev Number: 12 (DW_TAG_union_type)
-    <167>   DW_AT_byte_size   : 4	
-    <168>   DW_AT_decl_file   : 4	
-    <169>   DW_AT_decl_line   : 202	
-    <16a>   DW_AT_sibling     : <0x185>	
- <2><16e>: Abbrev Number: 13 (DW_TAG_member)
-    <16f>   DW_AT_name        : (indirect string, offset: 0x6b): ru_ixrss	
-    <173>   DW_AT_decl_file   : 4	
-    <174>   DW_AT_decl_line   : 204	
-    <175>   DW_AT_type        : <0x55>	
- <2><179>: Abbrev Number: 13 (DW_TAG_member)
-    <17a>   DW_AT_name        : (indirect string, offset: 0x2ab): __ru_ixrss_word	
-    <17e>   DW_AT_decl_file   : 4	
-    <17f>   DW_AT_decl_line   : 205	
-    <180>   DW_AT_type        : <0x80>	
- <2><184>: Abbrev Number: 0
- <1><185>: Abbrev Number: 12 (DW_TAG_union_type)
-    <186>   DW_AT_byte_size   : 4	
-    <187>   DW_AT_decl_file   : 4	
-    <188>   DW_AT_decl_line   : 208	
-    <189>   DW_AT_sibling     : <0x1a4>	
- <2><18d>: Abbrev Number: 13 (DW_TAG_member)
-    <18e>   DW_AT_name        : (indirect string, offset: 0x8d): ru_idrss	
-    <192>   DW_AT_decl_file   : 4	
-    <193>   DW_AT_decl_line   : 210	
-    <194>   DW_AT_type        : <0x55>	
- <2><198>: Abbrev Number: 13 (DW_TAG_member)
-    <199>   DW_AT_name        : (indirect string, offset: 0x7d): __ru_idrss_word	
-    <19d>   DW_AT_decl_file   : 4	
-    <19e>   DW_AT_decl_line   : 211	
-    <19f>   DW_AT_type        : <0x80>	
- <2><1a3>: Abbrev Number: 0
- <1><1a4>: Abbrev Number: 12 (DW_TAG_union_type)
-    <1a5>   DW_AT_byte_size   : 4	
-    <1a6>   DW_AT_decl_file   : 4	
-    <1a7>   DW_AT_decl_line   : 214	
-    <1a8>   DW_AT_sibling     : <0x1c3>	
- <2><1ac>: Abbrev Number: 13 (DW_TAG_member)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0xf2): ru_isrss	
-    <1b1>   DW_AT_decl_file   : 4	
-    <1b2>   DW_AT_decl_line   : 216	
-    <1b3>   DW_AT_type        : <0x55>	
- <2><1b7>: Abbrev Number: 13 (DW_TAG_member)
-    <1b8>   DW_AT_name        : (indirect string, offset: 0x1fe): __ru_isrss_word	
-    <1bc>   DW_AT_decl_file   : 4	
-    <1bd>   DW_AT_decl_line   : 217	
-    <1be>   DW_AT_type        : <0x80>	
- <2><1c2>: Abbrev Number: 0
- <1><1c3>: Abbrev Number: 12 (DW_TAG_union_type)
-    <1c4>   DW_AT_byte_size   : 4	
-    <1c5>   DW_AT_decl_file   : 4	
-    <1c6>   DW_AT_decl_line   : 221	
-    <1c7>   DW_AT_sibling     : <0x1e2>	
- <2><1cb>: Abbrev Number: 13 (DW_TAG_member)
-    <1cc>   DW_AT_name        : (indirect string, offset: 0x48): ru_minflt	
-    <1d0>   DW_AT_decl_file   : 4	
-    <1d1>   DW_AT_decl_line   : 223	
-    <1d2>   DW_AT_type        : <0x55>	
- <2><1d6>: Abbrev Number: 13 (DW_TAG_member)
-    <1d7>   DW_AT_name        : (indirect string, offset: 0x105): __ru_minflt_word	
-    <1db>   DW_AT_decl_file   : 4	
-    <1dc>   DW_AT_decl_line   : 224	
-    <1dd>   DW_AT_type        : <0x80>	
- <2><1e1>: Abbrev Number: 0
- <1><1e2>: Abbrev Number: 12 (DW_TAG_union_type)
-    <1e3>   DW_AT_byte_size   : 4	
-    <1e4>   DW_AT_decl_file   : 4	
-    <1e5>   DW_AT_decl_line   : 227	
-    <1e6>   DW_AT_sibling     : <0x201>	
- <2><1ea>: Abbrev Number: 13 (DW_TAG_member)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0xe8): ru_majflt	
-    <1ef>   DW_AT_decl_file   : 4	
-    <1f0>   DW_AT_decl_line   : 229	
-    <1f1>   DW_AT_type        : <0x55>	
- <2><1f5>: Abbrev Number: 13 (DW_TAG_member)
-    <1f6>   DW_AT_name        : (indirect string, offset: 0x15a): __ru_majflt_word	
-    <1fa>   DW_AT_decl_file   : 4	
-    <1fb>   DW_AT_decl_line   : 230	
-    <1fc>   DW_AT_type        : <0x80>	
- <2><200>: Abbrev Number: 0
- <1><201>: Abbrev Number: 12 (DW_TAG_union_type)
-    <202>   DW_AT_byte_size   : 4	
-    <203>   DW_AT_decl_file   : 4	
-    <204>   DW_AT_decl_line   : 233	
-    <205>   DW_AT_sibling     : <0x220>	
- <2><209>: Abbrev Number: 13 (DW_TAG_member)
-    <20a>   DW_AT_name        : (indirect string, offset: 0xb9): ru_nswap	
-    <20e>   DW_AT_decl_file   : 4	
-    <20f>   DW_AT_decl_line   : 235	
-    <210>   DW_AT_type        : <0x55>	
- <2><214>: Abbrev Number: 13 (DW_TAG_member)
-    <215>   DW_AT_name        : (indirect string, offset: 0xa0): __ru_nswap_word	
-    <219>   DW_AT_decl_file   : 4	
-    <21a>   DW_AT_decl_line   : 236	
-    <21b>   DW_AT_type        : <0x80>	
- <2><21f>: Abbrev Number: 0
- <1><220>: Abbrev Number: 12 (DW_TAG_union_type)
-    <221>   DW_AT_byte_size   : 4	
-    <222>   DW_AT_decl_file   : 4	
-    <223>   DW_AT_decl_line   : 240	
-    <224>   DW_AT_sibling     : <0x23f>	
- <2><228>: Abbrev Number: 13 (DW_TAG_member)
-    <229>   DW_AT_name        : (indirect string, offset: 0x14f): ru_inblock	
-    <22d>   DW_AT_decl_file   : 4	
-    <22e>   DW_AT_decl_line   : 242	
-    <22f>   DW_AT_type        : <0x55>	
- <2><233>: Abbrev Number: 13 (DW_TAG_member)
-    <234>   DW_AT_name        : (indirect string, offset: 0x22f): __ru_inblock_word	
-    <238>   DW_AT_decl_file   : 4	
-    <239>   DW_AT_decl_line   : 243	
-    <23a>   DW_AT_type        : <0x80>	
- <2><23e>: Abbrev Number: 0
- <1><23f>: Abbrev Number: 12 (DW_TAG_union_type)
-    <240>   DW_AT_byte_size   : 4	
-    <241>   DW_AT_decl_file   : 4	
-    <242>   DW_AT_decl_line   : 246	
-    <243>   DW_AT_sibling     : <0x25e>	
- <2><247>: Abbrev Number: 13 (DW_TAG_member)
-    <248>   DW_AT_name        : (indirect string, offset: 0xc2): ru_oublock	
-    <24c>   DW_AT_decl_file   : 4	
-    <24d>   DW_AT_decl_line   : 248	
-    <24e>   DW_AT_type        : <0x55>	
- <2><252>: Abbrev Number: 13 (DW_TAG_member)
-    <253>   DW_AT_name        : (indirect string, offset: 0x254): __ru_oublock_word	
-    <257>   DW_AT_decl_file   : 4	
-    <258>   DW_AT_decl_line   : 249	
-    <259>   DW_AT_type        : <0x80>	
- <2><25d>: Abbrev Number: 0
- <1><25e>: Abbrev Number: 12 (DW_TAG_union_type)
-    <25f>   DW_AT_byte_size   : 4	
-    <260>   DW_AT_decl_file   : 4	
-    <261>   DW_AT_decl_line   : 252	
-    <262>   DW_AT_sibling     : <0x27d>	
- <2><266>: Abbrev Number: 13 (DW_TAG_member)
-    <267>   DW_AT_name        : (indirect string, offset: 0x219): ru_msgsnd	
-    <26b>   DW_AT_decl_file   : 4	
-    <26c>   DW_AT_decl_line   : 254	
-    <26d>   DW_AT_type        : <0x55>	
- <2><271>: Abbrev Number: 13 (DW_TAG_member)
-    <272>   DW_AT_name        : (indirect string, offset: 0x278): __ru_msgsnd_word	
-    <276>   DW_AT_decl_file   : 4	
-    <277>   DW_AT_decl_line   : 255	
-    <278>   DW_AT_type        : <0x80>	
- <2><27c>: Abbrev Number: 0
- <1><27d>: Abbrev Number: 14 (DW_TAG_union_type)
-    <27e>   DW_AT_byte_size   : 4	
-    <27f>   DW_AT_decl_file   : 4	
-    <280>   DW_AT_decl_line   : 258	
-    <282>   DW_AT_sibling     : <0x29f>	
- <2><286>: Abbrev Number: 15 (DW_TAG_member)
-    <287>   DW_AT_name        : (indirect string, offset: 0x328): ru_msgrcv	
-    <28b>   DW_AT_decl_file   : 4	
-    <28c>   DW_AT_decl_line   : 260	
-    <28e>   DW_AT_type        : <0x55>	
- <2><292>: Abbrev Number: 15 (DW_TAG_member)
-    <293>   DW_AT_name        : (indirect string, offset: 0x2d1): __ru_msgrcv_word	
-    <297>   DW_AT_decl_file   : 4	
-    <298>   DW_AT_decl_line   : 261	
-    <29a>   DW_AT_type        : <0x80>	
- <2><29e>: Abbrev Number: 0
- <1><29f>: Abbrev Number: 14 (DW_TAG_union_type)
-    <2a0>   DW_AT_byte_size   : 4	
-    <2a1>   DW_AT_decl_file   : 4	
-    <2a2>   DW_AT_decl_line   : 264	
-    <2a4>   DW_AT_sibling     : <0x2c1>	
- <2><2a8>: Abbrev Number: 15 (DW_TAG_member)
-    <2a9>   DW_AT_name        : (indirect string, offset: 0x223): ru_nsignals	
-    <2ad>   DW_AT_decl_file   : 4	
-    <2ae>   DW_AT_decl_line   : 266	
-    <2b0>   DW_AT_type        : <0x55>	
- <2><2b4>: Abbrev Number: 15 (DW_TAG_member)
-    <2b5>   DW_AT_name        : (indirect string, offset: 0x241): __ru_nsignals_word	
-    <2b9>   DW_AT_decl_file   : 4	
-    <2ba>   DW_AT_decl_line   : 267	
-    <2bc>   DW_AT_type        : <0x80>	
- <2><2c0>: Abbrev Number: 0
- <1><2c1>: Abbrev Number: 14 (DW_TAG_union_type)
-    <2c2>   DW_AT_byte_size   : 4	
-    <2c3>   DW_AT_decl_file   : 4	
-    <2c4>   DW_AT_decl_line   : 272	
-    <2c6>   DW_AT_sibling     : <0x2e3>	
- <2><2ca>: Abbrev Number: 15 (DW_TAG_member)
-    <2cb>   DW_AT_name        : (indirect string, offset: 0x52): ru_nvcsw	
-    <2cf>   DW_AT_decl_file   : 4	
-    <2d0>   DW_AT_decl_line   : 274	
-    <2d2>   DW_AT_type        : <0x55>	
- <2><2d6>: Abbrev Number: 15 (DW_TAG_member)
-    <2d7>   DW_AT_name        : (indirect string, offset: 0x5b): __ru_nvcsw_word	
-    <2db>   DW_AT_decl_file   : 4	
-    <2dc>   DW_AT_decl_line   : 275	
-    <2de>   DW_AT_type        : <0x80>	
- <2><2e2>: Abbrev Number: 0
- <1><2e3>: Abbrev Number: 14 (DW_TAG_union_type)
-    <2e4>   DW_AT_byte_size   : 4	
-    <2e5>   DW_AT_decl_file   : 4	
-    <2e6>   DW_AT_decl_line   : 279	
-    <2e8>   DW_AT_sibling     : <0x305>	
- <2><2ec>: Abbrev Number: 15 (DW_TAG_member)
-    <2ed>   DW_AT_name        : (indirect string, offset: 0x2e2): ru_nivcsw	
-    <2f1>   DW_AT_decl_file   : 4	
-    <2f2>   DW_AT_decl_line   : 281	
-    <2f4>   DW_AT_type        : <0x55>	
- <2><2f8>: Abbrev Number: 15 (DW_TAG_member)
-    <2f9>   DW_AT_name        : (indirect string, offset: 0x289): __ru_nivcsw_word	
-    <2fd>   DW_AT_decl_file   : 4	
-    <2fe>   DW_AT_decl_line   : 282	
-    <300>   DW_AT_type        : <0x80>	
- <2><304>: Abbrev Number: 0
- <1><305>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <306>   DW_AT_name        : (indirect string, offset: 0x1ba): rusage	
-    <30a>   DW_AT_byte_size   : 72	
-    <30b>   DW_AT_decl_file   : 4	
-    <30c>   DW_AT_decl_line   : 187	
-    <30d>   DW_AT_sibling     : <0x39e>	
- <2><311>: Abbrev Number: 6 (DW_TAG_member)
-    <312>   DW_AT_name        : (indirect string, offset: 0x1f5): ru_utime	
-    <316>   DW_AT_decl_file   : 4	
-    <317>   DW_AT_decl_line   : 190	
-    <318>   DW_AT_type        : <0x92>	
-    <31c>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><31f>: Abbrev Number: 6 (DW_TAG_member)
-    <320>   DW_AT_name        : (indirect string, offset: 0x2fc): ru_stime	
-    <324>   DW_AT_decl_file   : 4	
-    <325>   DW_AT_decl_line   : 192	
-    <326>   DW_AT_type        : <0x92>	
-    <32a>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><32d>: Abbrev Number: 16 (DW_TAG_member)
-    <32e>   DW_AT_type        : <0x147>	
-    <332>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><335>: Abbrev Number: 16 (DW_TAG_member)
-    <336>   DW_AT_type        : <0x166>	
-    <33a>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><33d>: Abbrev Number: 16 (DW_TAG_member)
-    <33e>   DW_AT_type        : <0x185>	
-    <342>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><345>: Abbrev Number: 16 (DW_TAG_member)
-    <346>   DW_AT_type        : <0x1a4>	
-    <34a>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><34d>: Abbrev Number: 16 (DW_TAG_member)
-    <34e>   DW_AT_type        : <0x1c3>	
-    <352>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><355>: Abbrev Number: 16 (DW_TAG_member)
-    <356>   DW_AT_type        : <0x1e2>	
-    <35a>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><35d>: Abbrev Number: 16 (DW_TAG_member)
-    <35e>   DW_AT_type        : <0x201>	
-    <362>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><365>: Abbrev Number: 16 (DW_TAG_member)
-    <366>   DW_AT_type        : <0x220>	
-    <36a>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><36d>: Abbrev Number: 16 (DW_TAG_member)
-    <36e>   DW_AT_type        : <0x23f>	
-    <372>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><375>: Abbrev Number: 16 (DW_TAG_member)
-    <376>   DW_AT_type        : <0x25e>	
-    <37a>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><37d>: Abbrev Number: 16 (DW_TAG_member)
-    <37e>   DW_AT_type        : <0x27d>	
-    <382>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><385>: Abbrev Number: 16 (DW_TAG_member)
-    <386>   DW_AT_type        : <0x29f>	
-    <38a>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><38d>: Abbrev Number: 16 (DW_TAG_member)
-    <38e>   DW_AT_type        : <0x2c1>	
-    <392>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><395>: Abbrev Number: 16 (DW_TAG_member)
-    <396>   DW_AT_type        : <0x2e3>	
-    <39a>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><39d>: Abbrev Number: 0
- <1><39e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <39f>   DW_AT_name        : (indirect string, offset: 0x2ec): rusage_t	
-    <3a3>   DW_AT_decl_file   : 5	
-    <3a4>   DW_AT_decl_line   : 35	
-    <3a5>   DW_AT_type        : <0x305>	
- <1><3a9>: Abbrev Number: 17 (DW_TAG_variable)
-    <3aa>   DW_AT_name        : (indirect string, offset: 0x192): current_wordsize	
-    <3ae>   DW_AT_decl_file   : 6	
-    <3af>   DW_AT_decl_line   : 757	
-    <3b1>   DW_AT_type        : <0x47>	
-    <3b5>   DW_AT_external    : 1	
-    <3b6>   DW_AT_declaration : 1	
- <1><3b7>: Abbrev Number: 17 (DW_TAG_variable)
-    <3b8>   DW_AT_name        : (indirect string, offset: 0x2f5): sysent	
-    <3bc>   DW_AT_decl_file   : 6	
-    <3bd>   DW_AT_decl_line   : 892	
-    <3bf>   DW_AT_type        : <0x135>	
-    <3c3>   DW_AT_external    : 1	
-    <3c4>   DW_AT_declaration : 1	
- <1><3c5>: Abbrev Number: 17 (DW_TAG_variable)
-    <3c6>   DW_AT_name        : (indirect string, offset: 0x1d8): nsyscalls	
-    <3ca>   DW_AT_decl_file   : 6	
-    <3cb>   DW_AT_decl_line   : 903	
-    <3cd>   DW_AT_type        : <0x47>	
-    <3d1>   DW_AT_external    : 1	
-    <3d2>   DW_AT_declaration : 1	
- <1><3d3>: Abbrev Number: 18 (DW_TAG_variable)
-    <3d4>   DW_AT_name        : (indirect string, offset: 0x12d): mpers_target_var	
-    <3d8>   DW_AT_decl_file   : 5	
-    <3d9>   DW_AT_decl_line   : 37	
-    <3da>   DW_AT_type        : <0x39e>	
-    <3de>   DW_AT_external    : 1	
-    <3df>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><3e5>: Abbrev Number: 0
-
diff --git a/mpers-m32/rusage_t.d2 b/mpers-m32/rusage_t.d2
deleted file mode 100644
index 12e140b..0000000
--- a/mpers-m32/rusage_t.d2
+++ /dev/null
@@ -1,543 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x186): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x96): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x116): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x172): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1e2): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c1): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1a3): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x124): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x266): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb0): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x29a): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x305): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x55>
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xd6): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x55>
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x20e): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2a3): timeval
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xbb>
-<2><9e>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16b): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c9): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><bb>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xc1>
-<1><c1>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><c6>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2f5): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x119>
-<2><d2>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x180): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><e0>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ce): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ee>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><fc>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x74): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x124>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><10a>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcd): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xbb>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><119>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x124>
-<2><122>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><124>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x119>
-<1><12a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2bb): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xc6>
-<1><135>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x13b>
-<1><13b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x12a>
-<1><140>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x213): _Bool
-<1><147>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 194
-DW_AT_sibling     : <0x166>
-<2><14f>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfb): ru_maxrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 196
-DW_AT_type        : <0x55>
-<2><15a>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13e): __ru_maxrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 197
-DW_AT_type        : <0x80>
-<1><166>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 202
-DW_AT_sibling     : <0x185>
-<2><16e>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6b): ru_ixrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 204
-DW_AT_type        : <0x55>
-<2><179>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ab): __ru_ixrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 205
-DW_AT_type        : <0x80>
-<1><185>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 208
-DW_AT_sibling     : <0x1a4>
-<2><18d>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8d): ru_idrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 210
-DW_AT_type        : <0x55>
-<2><198>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7d): __ru_idrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 211
-DW_AT_type        : <0x80>
-<1><1a4>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 214
-DW_AT_sibling     : <0x1c3>
-<2><1ac>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf2): ru_isrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 216
-DW_AT_type        : <0x55>
-<2><1b7>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fe): __ru_isrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 217
-DW_AT_type        : <0x80>
-<1><1c3>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 221
-DW_AT_sibling     : <0x1e2>
-<2><1cb>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x48): ru_minflt
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 223
-DW_AT_type        : <0x55>
-<2><1d6>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x105): __ru_minflt_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 224
-DW_AT_type        : <0x80>
-<1><1e2>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 227
-DW_AT_sibling     : <0x201>
-<2><1ea>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe8): ru_majflt
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 229
-DW_AT_type        : <0x55>
-<2><1f5>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15a): __ru_majflt_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 230
-DW_AT_type        : <0x80>
-<1><201>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 233
-DW_AT_sibling     : <0x220>
-<2><209>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb9): ru_nswap
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 235
-DW_AT_type        : <0x55>
-<2><214>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa0): __ru_nswap_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 236
-DW_AT_type        : <0x80>
-<1><220>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 240
-DW_AT_sibling     : <0x23f>
-<2><228>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14f): ru_inblock
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 242
-DW_AT_type        : <0x55>
-<2><233>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22f): __ru_inblock_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 243
-DW_AT_type        : <0x80>
-<1><23f>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 246
-DW_AT_sibling     : <0x25e>
-<2><247>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc2): ru_oublock
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 248
-DW_AT_type        : <0x55>
-<2><252>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x254): __ru_oublock_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 249
-DW_AT_type        : <0x80>
-<1><25e>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 252
-DW_AT_sibling     : <0x27d>
-<2><266>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x219): ru_msgsnd
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 254
-DW_AT_type        : <0x55>
-<2><271>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x278): __ru_msgsnd_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 255
-DW_AT_type        : <0x80>
-<1><27d>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 258
-DW_AT_sibling     : <0x29f>
-<2><286>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x328): ru_msgrcv
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 260
-DW_AT_type        : <0x55>
-<2><292>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d1): __ru_msgrcv_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 261
-DW_AT_type        : <0x80>
-<1><29f>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 264
-DW_AT_sibling     : <0x2c1>
-<2><2a8>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x223): ru_nsignals
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 266
-DW_AT_type        : <0x55>
-<2><2b4>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x241): __ru_nsignals_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 267
-DW_AT_type        : <0x80>
-<1><2c1>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 272
-DW_AT_sibling     : <0x2e3>
-<2><2ca>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x52): ru_nvcsw
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 274
-DW_AT_type        : <0x55>
-<2><2d6>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5b): __ru_nvcsw_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 275
-DW_AT_type        : <0x80>
-<1><2e3>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 279
-DW_AT_sibling     : <0x305>
-<2><2ec>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e2): ru_nivcsw
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 281
-DW_AT_type        : <0x55>
-<2><2f8>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x289): __ru_nivcsw_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 282
-DW_AT_type        : <0x80>
-<1><305>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1ba): rusage
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 187
-DW_AT_sibling     : <0x39e>
-<2><311>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f5): ru_utime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 190
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><31f>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2fc): ru_stime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 192
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><32d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x147>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><335>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x166>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><33d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x185>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><345>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1a4>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><34d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1c3>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><355>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1e2>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><35d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x201>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><365>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x220>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><36d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x23f>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><375>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x25e>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><37d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x27d>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><385>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x29f>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><38d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x2c1>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><395>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x2e3>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<1><39e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2ec): rusage_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x305>
-<1><3a9>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x192): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3b7>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x2f5): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x135>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3c5>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1d8): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3d3>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12d): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x39e>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/sample.c b/mpers-m32/sample.c
index 4c65608..1eedf1c 100644
--- a/mpers-m32/sample.c
+++ b/mpers-m32/sample.c
@@ -16,7 +16,7 @@
 		long long sll __attribute__((__aligned__(8)));
 		unsigned long long ull;
 		unsigned long ul;
-		long asl[3];
+		long asl[3][5][7];
 		char f;
 		/* unsigned char mpers_end_filler_4[7]; */
 	} s;
@@ -28,11 +28,11 @@
 		unsigned long ul;
 		int si;
 		unsigned ui;
-		short ss;
-		unsigned short us;
+		short ss[7][9];
+		unsigned short us[4];
 		char sc;
 		unsigned char uc;
-	} u[3];
+	} u[3][2];
 	short f[0];
 } sample_struct;
 #include MPERS_DEFS
diff --git a/mpers-m32/sample.expected b/mpers-m32/sample.expected
index 4c83984..f7a21ac 100644
--- a/mpers-m32/sample.expected
+++ b/mpers-m32/sample.expected
@@ -17,7 +17,7 @@
 int64_t sll;
 uint64_t ull;
 uint32_t ul;
-int32_t asl[3];
+int32_t asl[3][5][7];
 char f;
 unsigned char mpers_end_filler_4[7];
 } ATTRIBUTE_PACKED s;
@@ -29,11 +29,11 @@
 uint32_t ul;
 int32_t si;
 uint32_t ui;
-int16_t ss;
-uint16_t us;
+int16_t ss[7][9];
+uint16_t us[4];
 char sc;
 unsigned char uc;
-} u[3];
+} u[3][2];
 int16_t f[0];
 } ATTRIBUTE_PACKED m32_sample_struct;
 #define MPERS_m32_sample_struct m32_sample_struct
diff --git a/mpers-m32/sample_struct.c b/mpers-m32/sample_struct.c
index 6ebddcc..b9f6d05 100644
--- a/mpers-m32/sample_struct.c
+++ b/mpers-m32/sample_struct.c
@@ -15,7 +15,7 @@
 		long long sll __attribute__((__aligned__(8)));
 		unsigned long long ull;
 		unsigned long ul;
-		long asl[3];
+		long asl[3][5][7];
 		char f;
 		/* unsigned char mpers_end_filler_4[7]; */
 	} s;
@@ -27,11 +27,11 @@
 		unsigned long ul;
 		int si;
 		unsigned ui;
-		short ss;
-		unsigned short us;
+		short ss[7][9];
+		unsigned short us[4];
 		char sc;
 		unsigned char uc;
-	} u[3];
+	} u[3][2];
 	short f[0];
 } sample_struct;
 sample_struct mpers_target_var;
diff --git a/mpers-m32/sample_struct.d1 b/mpers-m32/sample_struct.d1
deleted file mode 100644
index 72955d6..0000000
--- a/mpers-m32/sample_struct.d1
+++ /dev/null
@@ -1,262 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x20d (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xde): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x2c): mpers-m32/sample_struct.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x46): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_structure_type)
-    <1e>   DW_AT_byte_size   : 72	
-    <1f>   DW_AT_decl_file   : 1	
-    <20>   DW_AT_decl_line   : 3	
-    <21>   DW_AT_sibling     : <0xd0>	
- <2><25>: Abbrev Number: 3 (DW_TAG_member)
-    <26>   DW_AT_name        : p	
-    <28>   DW_AT_decl_file   : 1	
-    <29>   DW_AT_decl_line   : 4	
-    <2a>   DW_AT_type        : <0xd0>	
-    <2e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><31>: Abbrev Number: 3 (DW_TAG_member)
-    <32>   DW_AT_name        : sc	
-    <35>   DW_AT_decl_file   : 1	
-    <36>   DW_AT_decl_line   : 5	
-    <37>   DW_AT_type        : <0xd2>	
-    <3b>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3e>: Abbrev Number: 3 (DW_TAG_member)
-    <3f>   DW_AT_name        : ss	
-    <42>   DW_AT_decl_file   : 1	
-    <43>   DW_AT_decl_line   : 7	
-    <44>   DW_AT_type        : <0xd9>	
-    <48>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><4b>: Abbrev Number: 3 (DW_TAG_member)
-    <4c>   DW_AT_name        : uc	
-    <4f>   DW_AT_decl_file   : 1	
-    <50>   DW_AT_decl_line   : 8	
-    <51>   DW_AT_type        : <0xe0>	
-    <55>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><58>: Abbrev Number: 3 (DW_TAG_member)
-    <59>   DW_AT_name        : si	
-    <5c>   DW_AT_decl_file   : 1	
-    <5d>   DW_AT_decl_line   : 10	
-    <5e>   DW_AT_type        : <0xe7>	
-    <62>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><65>: Abbrev Number: 3 (DW_TAG_member)
-    <66>   DW_AT_name        : ui	
-    <69>   DW_AT_decl_file   : 1	
-    <6a>   DW_AT_decl_line   : 11	
-    <6b>   DW_AT_type        : <0xee>	
-    <6f>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><72>: Abbrev Number: 3 (DW_TAG_member)
-    <73>   DW_AT_name        : sl	
-    <76>   DW_AT_decl_file   : 1	
-    <77>   DW_AT_decl_line   : 12	
-    <78>   DW_AT_type        : <0xf5>	
-    <7c>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><7f>: Abbrev Number: 3 (DW_TAG_member)
-    <80>   DW_AT_name        : us	
-    <83>   DW_AT_decl_file   : 1	
-    <84>   DW_AT_decl_line   : 13	
-    <85>   DW_AT_type        : <0xfc>	
-    <89>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><8c>: Abbrev Number: 3 (DW_TAG_member)
-    <8d>   DW_AT_name        : sll	
-    <91>   DW_AT_decl_file   : 1	
-    <92>   DW_AT_decl_line   : 15	
-    <93>   DW_AT_type        : <0x103>	
-    <97>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><9a>: Abbrev Number: 3 (DW_TAG_member)
-    <9b>   DW_AT_name        : ull	
-    <9f>   DW_AT_decl_file   : 1	
-    <a0>   DW_AT_decl_line   : 16	
-    <a1>   DW_AT_type        : <0x10a>	
-    <a5>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><a8>: Abbrev Number: 3 (DW_TAG_member)
-    <a9>   DW_AT_name        : ul	
-    <ac>   DW_AT_decl_file   : 1	
-    <ad>   DW_AT_decl_line   : 17	
-    <ae>   DW_AT_type        : <0x111>	
-    <b2>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><b5>: Abbrev Number: 3 (DW_TAG_member)
-    <b6>   DW_AT_name        : asl	
-    <ba>   DW_AT_decl_file   : 1	
-    <bb>   DW_AT_decl_line   : 18	
-    <bc>   DW_AT_type        : <0x118>	
-    <c0>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><c3>: Abbrev Number: 3 (DW_TAG_member)
-    <c4>   DW_AT_name        : f	
-    <c6>   DW_AT_decl_file   : 1	
-    <c7>   DW_AT_decl_line   : 19	
-    <c8>   DW_AT_type        : <0xd2>	
-    <cc>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><cf>: Abbrev Number: 0
- <1><d0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <d1>   DW_AT_byte_size   : 4	
- <1><d2>: Abbrev Number: 5 (DW_TAG_base_type)
-    <d3>   DW_AT_byte_size   : 1	
-    <d4>   DW_AT_encoding    : 6	(signed char)
-    <d5>   DW_AT_name        : (indirect string, offset: 0x85): char	
- <1><d9>: Abbrev Number: 5 (DW_TAG_base_type)
-    <da>   DW_AT_byte_size   : 2	
-    <db>   DW_AT_encoding    : 5	(signed)
-    <dc>   DW_AT_name        : (indirect string, offset: 0xd4): short int	
- <1><e0>: Abbrev Number: 5 (DW_TAG_base_type)
-    <e1>   DW_AT_byte_size   : 1	
-    <e2>   DW_AT_encoding    : 8	(unsigned char)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x77): unsigned char	
- <1><e7>: Abbrev Number: 6 (DW_TAG_base_type)
-    <e8>   DW_AT_byte_size   : 4	
-    <e9>   DW_AT_encoding    : 5	(signed)
-    <ea>   DW_AT_name        : int	
- <1><ee>: Abbrev Number: 5 (DW_TAG_base_type)
-    <ef>   DW_AT_byte_size   : 4	
-    <f0>   DW_AT_encoding    : 7	(unsigned)
-    <f1>   DW_AT_name        : (indirect string, offset: 0xe): unsigned int	
- <1><f5>: Abbrev Number: 5 (DW_TAG_base_type)
-    <f6>   DW_AT_byte_size   : 4	
-    <f7>   DW_AT_encoding    : 5	(signed)
-    <f8>   DW_AT_name        : (indirect string, offset: 0x8a): long int	
- <1><fc>: Abbrev Number: 5 (DW_TAG_base_type)
-    <fd>   DW_AT_byte_size   : 2	
-    <fe>   DW_AT_encoding    : 7	(unsigned)
-    <ff>   DW_AT_name        : (indirect string, offset: 0xb8): short unsigned int	
- <1><103>: Abbrev Number: 5 (DW_TAG_base_type)
-    <104>   DW_AT_byte_size   : 8	
-    <105>   DW_AT_encoding    : 5	(signed)
-    <106>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><10a>: Abbrev Number: 5 (DW_TAG_base_type)
-    <10b>   DW_AT_byte_size   : 8	
-    <10c>   DW_AT_encoding    : 7	(unsigned)
-    <10d>   DW_AT_name        : (indirect string, offset: 0x93): long long unsigned int	
- <1><111>: Abbrev Number: 5 (DW_TAG_base_type)
-    <112>   DW_AT_byte_size   : 4	
-    <113>   DW_AT_encoding    : 7	(unsigned)
-    <114>   DW_AT_name        : (indirect string, offset: 0x126): long unsigned int	
- <1><118>: Abbrev Number: 7 (DW_TAG_array_type)
-    <119>   DW_AT_type        : <0xf5>	
-    <11d>   DW_AT_sibling     : <0x128>	
- <2><121>: Abbrev Number: 8 (DW_TAG_subrange_type)
-    <122>   DW_AT_type        : <0x128>	
-    <126>   DW_AT_upper_bound : 2	
- <2><127>: Abbrev Number: 0
- <1><128>: Abbrev Number: 5 (DW_TAG_base_type)
-    <129>   DW_AT_byte_size   : 4	
-    <12a>   DW_AT_encoding    : 7	(unsigned)
-    <12b>   DW_AT_name        : (indirect string, offset: 0xcb): sizetype	
- <1><12f>: Abbrev Number: 9 (DW_TAG_union_type)
-    <130>   DW_AT_byte_size   : 8	
-    <131>   DW_AT_decl_file   : 1	
-    <132>   DW_AT_decl_line   : 22	
-    <133>   DW_AT_sibling     : <0x1a7>	
- <2><137>: Abbrev Number: 10 (DW_TAG_member)
-    <138>   DW_AT_name        : sll	
-    <13c>   DW_AT_decl_file   : 1	
-    <13d>   DW_AT_decl_line   : 23	
-    <13e>   DW_AT_type        : <0x103>	
- <2><142>: Abbrev Number: 10 (DW_TAG_member)
-    <143>   DW_AT_name        : ull	
-    <147>   DW_AT_decl_file   : 1	
-    <148>   DW_AT_decl_line   : 24	
-    <149>   DW_AT_type        : <0x10a>	
- <2><14d>: Abbrev Number: 10 (DW_TAG_member)
-    <14e>   DW_AT_name        : p	
-    <150>   DW_AT_decl_file   : 1	
-    <151>   DW_AT_decl_line   : 25	
-    <152>   DW_AT_type        : <0xd0>	
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : sl	
-    <15a>   DW_AT_decl_file   : 1	
-    <15b>   DW_AT_decl_line   : 26	
-    <15c>   DW_AT_type        : <0xf5>	
- <2><160>: Abbrev Number: 10 (DW_TAG_member)
-    <161>   DW_AT_name        : ul	
-    <164>   DW_AT_decl_file   : 1	
-    <165>   DW_AT_decl_line   : 27	
-    <166>   DW_AT_type        : <0x111>	
- <2><16a>: Abbrev Number: 10 (DW_TAG_member)
-    <16b>   DW_AT_name        : si	
-    <16e>   DW_AT_decl_file   : 1	
-    <16f>   DW_AT_decl_line   : 28	
-    <170>   DW_AT_type        : <0xe7>	
- <2><174>: Abbrev Number: 10 (DW_TAG_member)
-    <175>   DW_AT_name        : ui	
-    <178>   DW_AT_decl_file   : 1	
-    <179>   DW_AT_decl_line   : 29	
-    <17a>   DW_AT_type        : <0xee>	
- <2><17e>: Abbrev Number: 10 (DW_TAG_member)
-    <17f>   DW_AT_name        : ss	
-    <182>   DW_AT_decl_file   : 1	
-    <183>   DW_AT_decl_line   : 30	
-    <184>   DW_AT_type        : <0xd9>	
- <2><188>: Abbrev Number: 10 (DW_TAG_member)
-    <189>   DW_AT_name        : us	
-    <18c>   DW_AT_decl_file   : 1	
-    <18d>   DW_AT_decl_line   : 31	
-    <18e>   DW_AT_type        : <0xfc>	
- <2><192>: Abbrev Number: 10 (DW_TAG_member)
-    <193>   DW_AT_name        : sc	
-    <196>   DW_AT_decl_file   : 1	
-    <197>   DW_AT_decl_line   : 32	
-    <198>   DW_AT_type        : <0xd2>	
- <2><19c>: Abbrev Number: 10 (DW_TAG_member)
-    <19d>   DW_AT_name        : uc	
-    <1a0>   DW_AT_decl_file   : 1	
-    <1a1>   DW_AT_decl_line   : 33	
-    <1a2>   DW_AT_type        : <0xe0>	
- <2><1a6>: Abbrev Number: 0
- <1><1a7>: Abbrev Number: 2 (DW_TAG_structure_type)
-    <1a8>   DW_AT_byte_size   : 96	
-    <1a9>   DW_AT_decl_file   : 1	
-    <1aa>   DW_AT_decl_line   : 2	
-    <1ab>   DW_AT_sibling     : <0x1d4>	
- <2><1af>: Abbrev Number: 3 (DW_TAG_member)
-    <1b0>   DW_AT_name        : s	
-    <1b2>   DW_AT_decl_file   : 1	
-    <1b3>   DW_AT_decl_line   : 21	
-    <1b4>   DW_AT_type        : <0x1d>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1bb>: Abbrev Number: 3 (DW_TAG_member)
-    <1bc>   DW_AT_name        : u	
-    <1be>   DW_AT_decl_file   : 1	
-    <1bf>   DW_AT_decl_line   : 34	
-    <1c0>   DW_AT_type        : <0x1d4>	
-    <1c4>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1c7>: Abbrev Number: 3 (DW_TAG_member)
-    <1c8>   DW_AT_name        : f	
-    <1ca>   DW_AT_decl_file   : 1	
-    <1cb>   DW_AT_decl_line   : 35	
-    <1cc>   DW_AT_type        : <0x1e4>	
-    <1d0>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><1d3>: Abbrev Number: 0
- <1><1d4>: Abbrev Number: 7 (DW_TAG_array_type)
-    <1d5>   DW_AT_type        : <0x12f>	
-    <1d9>   DW_AT_sibling     : <0x1e4>	
- <2><1dd>: Abbrev Number: 8 (DW_TAG_subrange_type)
-    <1de>   DW_AT_type        : <0x128>	
-    <1e2>   DW_AT_upper_bound : 2	
- <2><1e3>: Abbrev Number: 0
- <1><1e4>: Abbrev Number: 7 (DW_TAG_array_type)
-    <1e5>   DW_AT_type        : <0xd9>	
-    <1e9>   DW_AT_sibling     : <0x1f3>	
- <2><1ed>: Abbrev Number: 11 (DW_TAG_subrange_type)
-    <1ee>   DW_AT_type        : <0x128>	
- <2><1f2>: Abbrev Number: 0
- <1><1f3>: Abbrev Number: 12 (DW_TAG_typedef)
-    <1f4>   DW_AT_name        : (indirect string, offset: 0xaa): sample_struct	
-    <1f8>   DW_AT_decl_file   : 1	
-    <1f9>   DW_AT_decl_line   : 36	
-    <1fa>   DW_AT_type        : <0x1a7>	
- <1><1fe>: Abbrev Number: 13 (DW_TAG_variable)
-    <1ff>   DW_AT_name        : (indirect string, offset: 0x1b): mpers_target_var	
-    <203>   DW_AT_decl_file   : 1	
-    <204>   DW_AT_decl_line   : 37	
-    <205>   DW_AT_type        : <0x1f3>	
-    <209>   DW_AT_external    : 1	
-    <20a>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><210>: Abbrev Number: 0
-
diff --git a/mpers-m32/sample_struct.d2 b/mpers-m32/sample_struct.d2
deleted file mode 100644
index 8b088b6..0000000
--- a/mpers-m32/sample_struct.d2
+++ /dev/null
@@ -1,291 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_structure_type)
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 3
-DW_AT_sibling     : <0xd0>
-<2><25>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : p
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_type        : <0xd0>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><31>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : sc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0xd2>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3e>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ss
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0xd9>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><4b>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : uc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe0>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><58>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : si
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xe7>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><65>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ui
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 11
-DW_AT_type        : <0xee>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><72>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : sl
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 12
-DW_AT_type        : <0xf5>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><7f>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : us
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 13
-DW_AT_type        : <0xfc>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><8c>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : sll
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 15
-DW_AT_type        : <0x103>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><9a>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ull
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 16
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><a8>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ul
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 17
-DW_AT_type        : <0x111>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><b5>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : asl
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 18
-DW_AT_type        : <0x118>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><c3>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : f
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 19
-DW_AT_type        : <0xd2>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<1><d0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><d2>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x85): char
-<1><d9>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xd4): short int
-<1><e0>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x77): unsigned char
-<1><e7>
-Abbrev Number: 6 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><ee>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe): unsigned int
-<1><f5>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x8a): long int
-<1><fc>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb8): short unsigned int
-<1><103>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><10a>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x93): long long unsigned int
-<1><111>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x126): long unsigned int
-<1><118>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0xf5>
-DW_AT_sibling     : <0x128>
-<2><121>
-Abbrev Number: 8 (DW_TAG_subrange_type)
-DW_AT_type        : <0x128>
-DW_AT_upper_bound : 2
-<1><128>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xcb): sizetype
-<1><12f>
-Abbrev Number: 9 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 22
-DW_AT_sibling     : <0x1a7>
-<2><137>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sll
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x103>
-<2><142>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ull
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 24
-DW_AT_type        : <0x10a>
-<2><14d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : p
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 25
-DW_AT_type        : <0xd0>
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sl
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 26
-DW_AT_type        : <0xf5>
-<2><160>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ul
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x111>
-<2><16a>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : si
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 28
-DW_AT_type        : <0xe7>
-<2><174>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ui
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 29
-DW_AT_type        : <0xee>
-<2><17e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ss
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 30
-DW_AT_type        : <0xd9>
-<2><188>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : us
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 31
-DW_AT_type        : <0xfc>
-<2><192>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 32
-DW_AT_type        : <0xd2>
-<2><19c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : uc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 33
-DW_AT_type        : <0xe0>
-<1><1a7>
-Abbrev Number: 2 (DW_TAG_structure_type)
-DW_AT_byte_size   : 96
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 2
-DW_AT_sibling     : <0x1d4>
-<2><1af>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : s
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 21
-DW_AT_type        : <0x1d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1bb>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : u
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1d4>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><1c7>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : f
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x1e4>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<1><1d4>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0x12f>
-DW_AT_sibling     : <0x1e4>
-<2><1dd>
-Abbrev Number: 8 (DW_TAG_subrange_type)
-DW_AT_type        : <0x128>
-DW_AT_upper_bound : 2
-<1><1e4>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0xd9>
-DW_AT_sibling     : <0x1f3>
-<2><1ed>
-Abbrev Number: 11 (DW_TAG_subrange_type)
-DW_AT_type        : <0x128>
-<1><1f3>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xaa): sample_struct
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x1a7>
-<1><1fe>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b): mpers_target_var
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x1f3>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/sample_struct.h b/mpers-m32/sample_struct.h
index 4c83984..f7a21ac 100644
--- a/mpers-m32/sample_struct.h
+++ b/mpers-m32/sample_struct.h
@@ -17,7 +17,7 @@
 int64_t sll;
 uint64_t ull;
 uint32_t ul;
-int32_t asl[3];
+int32_t asl[3][5][7];
 char f;
 unsigned char mpers_end_filler_4[7];
 } ATTRIBUTE_PACKED s;
@@ -29,11 +29,11 @@
 uint32_t ul;
 int32_t si;
 uint32_t ui;
-int16_t ss;
-uint16_t us;
+int16_t ss[7][9];
+uint16_t us[4];
 char sc;
 unsigned char uc;
-} u[3];
+} u[3][2];
 int16_t f[0];
 } ATTRIBUTE_PACKED m32_sample_struct;
 #define MPERS_m32_sample_struct m32_sample_struct
diff --git a/mpers-m32/seccomp_fprog_t.c b/mpers-m32/seccomp_fprog_t.c
index 7f2f131..f26c70c 100644
--- a/mpers-m32/seccomp_fprog_t.c
+++ b/mpers-m32/seccomp_fprog_t.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/mpers-m32/seccomp_fprog_t.d1 b/mpers-m32/seccomp_fprog_t.d1
deleted file mode 100644
index ed12ff3..0000000
--- a/mpers-m32/seccomp_fprog_t.d1
+++ /dev/null
@@ -1,179 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x16a (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x16d): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xd4): mpers-m32/seccomp_fprog_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x80): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x141): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x156): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x109): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xb8): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x12e): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x160): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x69): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0xcb): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x57): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x14d): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0xc6): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x117): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x51): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xf9): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0xf0): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x1f): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x11): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x103): _Bool	
- <1><fd>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x28): seccomp_fprog	
-    <102>   DW_AT_byte_size   : 8	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 4	
-    <105>   DW_AT_sibling     : <0x126>	
- <2><109>: Abbrev Number: 8 (DW_TAG_member)
-    <10a>   DW_AT_name        : len	
-    <10e>   DW_AT_decl_file   : 2	
-    <10f>   DW_AT_decl_line   : 5	
-    <110>   DW_AT_type        : <0x40>	
-    <114>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><117>: Abbrev Number: 7 (DW_TAG_member)
-    <118>   DW_AT_name        : (indirect string, offset: 0xb1): filter	
-    <11c>   DW_AT_decl_file   : 2	
-    <11d>   DW_AT_decl_line   : 6	
-    <11e>   DW_AT_type        : <0x5c>	
-    <122>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><125>: Abbrev Number: 0
- <1><126>: Abbrev Number: 11 (DW_TAG_typedef)
-    <127>   DW_AT_name        : (indirect string, offset: 0x11e): seccomp_fprog_t	
-    <12b>   DW_AT_decl_file   : 3	
-    <12c>   DW_AT_decl_line   : 32	
-    <12d>   DW_AT_type        : <0xfd>	
- <1><131>: Abbrev Number: 12 (DW_TAG_variable)
-    <132>   DW_AT_name        : (indirect string, offset: 0x0): current_wordsize	
-    <136>   DW_AT_decl_file   : 4	
-    <137>   DW_AT_decl_line   : 757	
-    <139>   DW_AT_type        : <0x47>	
-    <13d>   DW_AT_external    : 1	
-    <13e>   DW_AT_declaration : 1	
- <1><13f>: Abbrev Number: 12 (DW_TAG_variable)
-    <140>   DW_AT_name        : (indirect string, offset: 0x117): sysent	
-    <144>   DW_AT_decl_file   : 4	
-    <145>   DW_AT_decl_line   : 892	
-    <147>   DW_AT_type        : <0xeb>	
-    <14b>   DW_AT_external    : 1	
-    <14c>   DW_AT_declaration : 1	
- <1><14d>: Abbrev Number: 12 (DW_TAG_variable)
-    <14e>   DW_AT_name        : (indirect string, offset: 0x36): nsyscalls	
-    <152>   DW_AT_decl_file   : 4	
-    <153>   DW_AT_decl_line   : 903	
-    <155>   DW_AT_type        : <0x47>	
-    <159>   DW_AT_external    : 1	
-    <15a>   DW_AT_declaration : 1	
- <1><15b>: Abbrev Number: 13 (DW_TAG_variable)
-    <15c>   DW_AT_name        : (indirect string, offset: 0x40): mpers_target_var	
-    <160>   DW_AT_decl_file   : 3	
-    <161>   DW_AT_decl_line   : 34	
-    <162>   DW_AT_type        : <0x126>	
-    <166>   DW_AT_external    : 1	
-    <167>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><16d>: Abbrev Number: 0
-
diff --git a/mpers-m32/seccomp_fprog_t.d2 b/mpers-m32/seccomp_fprog_t.d2
deleted file mode 100644
index d3ce1e2..0000000
--- a/mpers-m32/seccomp_fprog_t.d2
+++ /dev/null
@@ -1,196 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x141): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x156): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x109): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xb8): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12e): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x160): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x69): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xcb): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x57): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14d): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0xc6): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x117): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x51): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf9): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf0): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x103): _Bool
-<1><fd>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x28): seccomp_fprog
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x126>
-<2><109>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><117>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb1): filter
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><126>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11e): seccomp_fprog_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0xfd>
-<1><131>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x0): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><13f>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x117): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><14d>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x36): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><15b>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x40): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x126>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/shmid_ds_t.c b/mpers-m32/shmid_ds_t.c
index 0d77b84..af4a7d2 100644
--- a/mpers-m32/shmid_ds_t.c
+++ b/mpers-m32/shmid_ds_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/mpers-m32/shmid_ds_t.d1 b/mpers-m32/shmid_ds_t.d1
deleted file mode 100644
index e01ede7..0000000
--- a/mpers-m32/shmid_ds_t.d1
+++ /dev/null
@@ -1,358 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x303 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x11b): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xa4): mpers-m32/shmid_ds_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x19f): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x282): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x215): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1eb): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x96): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x41): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x172): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x7f): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x271): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xbb): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x39): __uid_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 125	
-    <6a>   DW_AT_type        : <0x47>	
- <1><6e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x1da): __gid_t	
-    <73>   DW_AT_decl_file   : 1	
-    <74>   DW_AT_decl_line   : 126	
-    <75>   DW_AT_type        : <0x47>	
- <1><79>: Abbrev Number: 4 (DW_TAG_typedef)
-    <7a>   DW_AT_name        : (indirect string, offset: 0x27a): __pid_t	
-    <7e>   DW_AT_decl_file   : 1	
-    <7f>   DW_AT_decl_line   : 133	
-    <80>   DW_AT_type        : <0x2b>	
- <1><84>: Abbrev Number: 2 (DW_TAG_base_type)
-    <85>   DW_AT_byte_size   : 4	
-    <86>   DW_AT_encoding    : 7	(unsigned)
-    <87>   DW_AT_name        : (indirect string, offset: 0x1e2): sizetype	
- <1><8b>: Abbrev Number: 4 (DW_TAG_typedef)
-    <8c>   DW_AT_name        : (indirect string, offset: 0x10c): __time_t	
-    <90>   DW_AT_decl_file   : 1	
-    <91>   DW_AT_decl_line   : 139	
-    <92>   DW_AT_type        : <0x55>	
- <1><96>: Abbrev Number: 4 (DW_TAG_typedef)
-    <97>   DW_AT_name        : (indirect string, offset: 0x197): __key_t	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 144	
-    <9d>   DW_AT_type        : <0x2b>	
- <1><a1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x54): __syscall_ulong_t	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 177	
-    <a8>   DW_AT_type        : <0x5c>	
- <1><ac>: Abbrev Number: 2 (DW_TAG_base_type)
-    <ad>   DW_AT_byte_size   : 1	
-    <ae>   DW_AT_encoding    : 6	(signed char)
-    <af>   DW_AT_name        : (indirect string, offset: 0x18d): char	
- <1><b3>: Abbrev Number: 4 (DW_TAG_typedef)
-    <b4>   DW_AT_name        : (indirect string, offset: 0x0): size_t	
-    <b8>   DW_AT_decl_file   : 2	
-    <b9>   DW_AT_decl_line   : 212	
-    <ba>   DW_AT_type        : <0x47>	
- <1><be>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <bf>   DW_AT_byte_size   : 4	
-    <c0>   DW_AT_type        : <0xc4>	
- <1><c4>: Abbrev Number: 6 (DW_TAG_const_type)
-    <c5>   DW_AT_type        : <0xac>	
- <1><c9>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <ca>   DW_AT_name        : (indirect string, offset: 0xd2): sysent	
-    <ce>   DW_AT_byte_size   : 20	
-    <cf>   DW_AT_decl_file   : 3	
-    <d0>   DW_AT_decl_line   : 4	
-    <d1>   DW_AT_sibling     : <0x11c>	
- <2><d5>: Abbrev Number: 8 (DW_TAG_member)
-    <d6>   DW_AT_name        : (indirect string, offset: 0x115): nargs	
-    <da>   DW_AT_decl_file   : 3	
-    <db>   DW_AT_decl_line   : 5	
-    <dc>   DW_AT_type        : <0x47>	
-    <e0>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><e3>: Abbrev Number: 8 (DW_TAG_member)
-    <e4>   DW_AT_name        : (indirect string, offset: 0x75): sys_flags	
-    <e8>   DW_AT_decl_file   : 3	
-    <e9>   DW_AT_decl_line   : 6	
-    <ea>   DW_AT_type        : <0x2b>	
-    <ee>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><f1>: Abbrev Number: 9 (DW_TAG_member)
-    <f2>   DW_AT_name        : sen	
-    <f6>   DW_AT_decl_file   : 3	
-    <f7>   DW_AT_decl_line   : 7	
-    <f8>   DW_AT_type        : <0x2b>	
-    <fc>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><ff>: Abbrev Number: 8 (DW_TAG_member)
-    <100>   DW_AT_name        : (indirect string, offset: 0x2bb): sys_func	
-    <104>   DW_AT_decl_file   : 3	
-    <105>   DW_AT_decl_line   : 8	
-    <106>   DW_AT_type        : <0x127>	
-    <10a>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><10d>: Abbrev Number: 8 (DW_TAG_member)
-    <10e>   DW_AT_name        : (indirect string, offset: 0x66): sys_name	
-    <112>   DW_AT_decl_file   : 3	
-    <113>   DW_AT_decl_line   : 9	
-    <114>   DW_AT_type        : <0xbe>	
-    <118>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><11b>: Abbrev Number: 0
- <1><11c>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <11d>   DW_AT_type        : <0x2b>	
-    <121>   DW_AT_sibling     : <0x127>	
- <2><125>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><126>: Abbrev Number: 0
- <1><127>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <128>   DW_AT_byte_size   : 4	
-    <129>   DW_AT_type        : <0x11c>	
- <1><12d>: Abbrev Number: 4 (DW_TAG_typedef)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x17f): struct_sysent	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 10	
-    <134>   DW_AT_type        : <0xc9>	
- <1><138>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <139>   DW_AT_byte_size   : 4	
-    <13a>   DW_AT_type        : <0x13e>	
- <1><13e>: Abbrev Number: 6 (DW_TAG_const_type)
-    <13f>   DW_AT_type        : <0x12d>	
- <1><143>: Abbrev Number: 2 (DW_TAG_base_type)
-    <144>   DW_AT_byte_size   : 1	
-    <145>   DW_AT_encoding    : 2	(boolean)
-    <146>   DW_AT_name        : (indirect string, offset: 0x2c): _Bool	
- <1><14a>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x231): ipc_perm	
-    <14f>   DW_AT_byte_size   : 36	
-    <150>   DW_AT_decl_file   : 4	
-    <151>   DW_AT_decl_line   : 42	
-    <152>   DW_AT_sibling     : <0x1f1>	
- <2><156>: Abbrev Number: 8 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x16c): __key	
-    <15b>   DW_AT_decl_file   : 4	
-    <15c>   DW_AT_decl_line   : 44	
-    <15d>   DW_AT_type        : <0x96>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><164>: Abbrev Number: 9 (DW_TAG_member)
-    <165>   DW_AT_name        : uid	
-    <169>   DW_AT_decl_file   : 4	
-    <16a>   DW_AT_decl_line   : 45	
-    <16b>   DW_AT_type        : <0x63>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><172>: Abbrev Number: 9 (DW_TAG_member)
-    <173>   DW_AT_name        : gid	
-    <177>   DW_AT_decl_file   : 4	
-    <178>   DW_AT_decl_line   : 46	
-    <179>   DW_AT_type        : <0x6e>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 8 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0xe4): cuid	
-    <185>   DW_AT_decl_file   : 4	
-    <186>   DW_AT_decl_line   : 47	
-    <187>   DW_AT_type        : <0x63>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18e>: Abbrev Number: 8 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0xcd): cgid	
-    <193>   DW_AT_decl_file   : 4	
-    <194>   DW_AT_decl_line   : 48	
-    <195>   DW_AT_type        : <0x6e>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 8 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x192): mode	
-    <1a1>   DW_AT_decl_file   : 4	
-    <1a2>   DW_AT_decl_line   : 49	
-    <1a3>   DW_AT_type        : <0x40>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1aa>: Abbrev Number: 8 (DW_TAG_member)
-    <1ab>   DW_AT_name        : (indirect string, offset: 0x26a): __pad1	
-    <1af>   DW_AT_decl_file   : 4	
-    <1b0>   DW_AT_decl_line   : 50	
-    <1b1>   DW_AT_type        : <0x40>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
- <2><1b8>: Abbrev Number: 8 (DW_TAG_member)
-    <1b9>   DW_AT_name        : (indirect string, offset: 0x6f): __seq	
-    <1bd>   DW_AT_decl_file   : 4	
-    <1be>   DW_AT_decl_line   : 51	
-    <1bf>   DW_AT_type        : <0x40>	
-    <1c3>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1c6>: Abbrev Number: 8 (DW_TAG_member)
-    <1c7>   DW_AT_name        : (indirect string, offset: 0x32): __pad2	
-    <1cb>   DW_AT_decl_file   : 4	
-    <1cc>   DW_AT_decl_line   : 52	
-    <1cd>   DW_AT_type        : <0x40>	
-    <1d1>   DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
- <2><1d4>: Abbrev Number: 8 (DW_TAG_member)
-    <1d5>   DW_AT_name        : (indirect string, offset: 0xe9): __glibc_reserved1	
-    <1d9>   DW_AT_decl_file   : 4	
-    <1da>   DW_AT_decl_line   : 53	
-    <1db>   DW_AT_type        : <0xa1>	
-    <1df>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1e2>: Abbrev Number: 8 (DW_TAG_member)
-    <1e3>   DW_AT_name        : (indirect string, offset: 0x21f): __glibc_reserved2	
-    <1e7>   DW_AT_decl_file   : 4	
-    <1e8>   DW_AT_decl_line   : 54	
-    <1e9>   DW_AT_type        : <0xa1>	
-    <1ed>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1f0>: Abbrev Number: 0
- <1><1f1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <1f2>   DW_AT_name        : (indirect string, offset: 0x2a0): shmatt_t	
-    <1f6>   DW_AT_decl_file   : 5	
-    <1f7>   DW_AT_decl_line   : 46	
-    <1f8>   DW_AT_type        : <0xa1>	
- <1><1fc>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <1fd>   DW_AT_name        : (indirect string, offset: 0x256): shmid_ds	
-    <201>   DW_AT_byte_size   : 84	
-    <202>   DW_AT_decl_file   : 5	
-    <203>   DW_AT_decl_line   : 49	
-    <204>   DW_AT_sibling     : <0x2bf>	
- <2><208>: Abbrev Number: 8 (DW_TAG_member)
-    <209>   DW_AT_name        : (indirect string, offset: 0x1f9): shm_perm	
-    <20d>   DW_AT_decl_file   : 5	
-    <20e>   DW_AT_decl_line   : 51	
-    <20f>   DW_AT_type        : <0x14a>	
-    <213>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><216>: Abbrev Number: 8 (DW_TAG_member)
-    <217>   DW_AT_name        : (indirect string, offset: 0x18): shm_segsz	
-    <21b>   DW_AT_decl_file   : 5	
-    <21c>   DW_AT_decl_line   : 52	
-    <21d>   DW_AT_type        : <0xb3>	
-    <221>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><224>: Abbrev Number: 8 (DW_TAG_member)
-    <225>   DW_AT_name        : (indirect string, offset: 0x202): shm_atime	
-    <229>   DW_AT_decl_file   : 5	
-    <22a>   DW_AT_decl_line   : 53	
-    <22b>   DW_AT_type        : <0x8b>	
-    <22f>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><232>: Abbrev Number: 8 (DW_TAG_member)
-    <233>   DW_AT_name        : (indirect string, offset: 0xe9): __glibc_reserved1	
-    <237>   DW_AT_decl_file   : 5	
-    <238>   DW_AT_decl_line   : 55	
-    <239>   DW_AT_type        : <0x5c>	
-    <23d>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><240>: Abbrev Number: 8 (DW_TAG_member)
-    <241>   DW_AT_name        : (indirect string, offset: 0x22): shm_dtime	
-    <245>   DW_AT_decl_file   : 5	
-    <246>   DW_AT_decl_line   : 57	
-    <247>   DW_AT_type        : <0x8b>	
-    <24b>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><24e>: Abbrev Number: 8 (DW_TAG_member)
-    <24f>   DW_AT_name        : (indirect string, offset: 0x21f): __glibc_reserved2	
-    <253>   DW_AT_decl_file   : 5	
-    <254>   DW_AT_decl_line   : 59	
-    <255>   DW_AT_type        : <0x5c>	
-    <259>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><25c>: Abbrev Number: 8 (DW_TAG_member)
-    <25d>   DW_AT_name        : (indirect string, offset: 0x23a): shm_ctime	
-    <261>   DW_AT_decl_file   : 5	
-    <262>   DW_AT_decl_line   : 61	
-    <263>   DW_AT_type        : <0x8b>	
-    <267>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><26a>: Abbrev Number: 8 (DW_TAG_member)
-    <26b>   DW_AT_name        : (indirect string, offset: 0x28e): __glibc_reserved3	
-    <26f>   DW_AT_decl_file   : 5	
-    <270>   DW_AT_decl_line   : 63	
-    <271>   DW_AT_type        : <0x5c>	
-    <275>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><278>: Abbrev Number: 8 (DW_TAG_member)
-    <279>   DW_AT_name        : (indirect string, offset: 0x20c): shm_cpid	
-    <27d>   DW_AT_decl_file   : 5	
-    <27e>   DW_AT_decl_line   : 65	
-    <27f>   DW_AT_type        : <0x79>	
-    <283>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><286>: Abbrev Number: 8 (DW_TAG_member)
-    <287>   DW_AT_name        : (indirect string, offset: 0x163): shm_lpid	
-    <28b>   DW_AT_decl_file   : 5	
-    <28c>   DW_AT_decl_line   : 66	
-    <28d>   DW_AT_type        : <0x79>	
-    <291>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><294>: Abbrev Number: 8 (DW_TAG_member)
-    <295>   DW_AT_name        : (indirect string, offset: 0x25f): shm_nattch	
-    <299>   DW_AT_decl_file   : 5	
-    <29a>   DW_AT_decl_line   : 67	
-    <29b>   DW_AT_type        : <0x1f1>	
-    <29f>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><2a2>: Abbrev Number: 8 (DW_TAG_member)
-    <2a3>   DW_AT_name        : (indirect string, offset: 0x2a9): __glibc_reserved4	
-    <2a7>   DW_AT_decl_file   : 5	
-    <2a8>   DW_AT_decl_line   : 68	
-    <2a9>   DW_AT_type        : <0xa1>	
-    <2ad>   DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
- <2><2b0>: Abbrev Number: 8 (DW_TAG_member)
-    <2b1>   DW_AT_name        : (indirect string, offset: 0x244): __glibc_reserved5	
-    <2b5>   DW_AT_decl_file   : 5	
-    <2b6>   DW_AT_decl_line   : 69	
-    <2b7>   DW_AT_type        : <0xa1>	
-    <2bb>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><2be>: Abbrev Number: 0
- <1><2bf>: Abbrev Number: 4 (DW_TAG_typedef)
-    <2c0>   DW_AT_name        : (indirect string, offset: 0xd9): shmid_ds_t	
-    <2c4>   DW_AT_decl_file   : 6	
-    <2c5>   DW_AT_decl_line   : 41	
-    <2c6>   DW_AT_type        : <0x1fc>	
- <1><2ca>: Abbrev Number: 12 (DW_TAG_variable)
-    <2cb>   DW_AT_name        : (indirect string, offset: 0xfb): current_wordsize	
-    <2cf>   DW_AT_decl_file   : 7	
-    <2d0>   DW_AT_decl_line   : 757	
-    <2d2>   DW_AT_type        : <0x47>	
-    <2d6>   DW_AT_external    : 1	
-    <2d7>   DW_AT_declaration : 1	
- <1><2d8>: Abbrev Number: 12 (DW_TAG_variable)
-    <2d9>   DW_AT_name        : (indirect string, offset: 0xd2): sysent	
-    <2dd>   DW_AT_decl_file   : 7	
-    <2de>   DW_AT_decl_line   : 892	
-    <2e0>   DW_AT_type        : <0x138>	
-    <2e4>   DW_AT_external    : 1	
-    <2e5>   DW_AT_declaration : 1	
- <1><2e6>: Abbrev Number: 12 (DW_TAG_variable)
-    <2e7>   DW_AT_name        : (indirect string, offset: 0x1d0): nsyscalls	
-    <2eb>   DW_AT_decl_file   : 7	
-    <2ec>   DW_AT_decl_line   : 903	
-    <2ee>   DW_AT_type        : <0x47>	
-    <2f2>   DW_AT_external    : 1	
-    <2f3>   DW_AT_declaration : 1	
- <1><2f4>: Abbrev Number: 13 (DW_TAG_variable)
-    <2f5>   DW_AT_name        : (indirect string, offset: 0x7): mpers_target_var	
-    <2f9>   DW_AT_decl_file   : 6	
-    <2fa>   DW_AT_decl_line   : 48	
-    <2fb>   DW_AT_type        : <0x2bf>	
-    <2ff>   DW_AT_external    : 1	
-    <300>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><306>: Abbrev Number: 0
-
diff --git a/mpers-m32/shmid_ds_t.d2 b/mpers-m32/shmid_ds_t.d2
deleted file mode 100644
index ee44b07..0000000
--- a/mpers-m32/shmid_ds_t.d2
+++ /dev/null
@@ -1,405 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x282): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x215): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1eb): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x96): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x41): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x172): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7f): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x271): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbb): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x39): __uid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-<1><6e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1da): __gid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x47>
-<1><79>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x27a): __pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x2b>
-<1><84>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1e2): sizetype
-<1><8b>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x10c): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><96>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x197): __key_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<1><a1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x54): __syscall_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 177
-DW_AT_type        : <0x5c>
-<1><ac>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x18d): char
-<1><b3>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><be>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xc4>
-<1><c4>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xac>
-<1><c9>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd2): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x11c>
-<2><d5>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x115): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><e3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x75): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><f1>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><ff>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2bb): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x127>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><10d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x66): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xbe>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><11c>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x127>
-<2><125>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><127>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x11c>
-<1><12d>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17f): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xc9>
-<1><138>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x13e>
-<1><13e>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x12d>
-<1><143>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2c): _Bool
-<1><14a>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x231): ipc_perm
-DW_AT_byte_size   : 36
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_sibling     : <0x1f1>
-<2><156>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16c): __key
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x96>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><164>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : uid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><172>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : gid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe4): cuid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><18e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcd): cgid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x192): mode
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26a): __pad1
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
-<2><1b8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6f): __seq
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1c6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x32): __pad2
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
-<2><1d4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe9): __glibc_reserved1
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 53
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><1e2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21f): __glibc_reserved2
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 54
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<1><1f1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2a0): shmatt_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 46
-DW_AT_type        : <0xa1>
-<1><1fc>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x256): shmid_ds
-DW_AT_byte_size   : 84
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 49
-DW_AT_sibling     : <0x2bf>
-<2><208>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f9): shm_perm
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x14a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><216>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18): shm_segsz
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 52
-DW_AT_type        : <0xb3>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><224>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x202): shm_atime
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><232>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe9): __glibc_reserved1
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><240>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22): shm_dtime
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><24e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21f): __glibc_reserved2
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><25c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23a): shm_ctime
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><26a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28e): __glibc_reserved3
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 63
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><278>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20c): shm_cpid
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 65
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><286>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x163): shm_lpid
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 66
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<2><294>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25f): shm_nattch
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 67
-DW_AT_type        : <0x1f1>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><2a2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2a9): __glibc_reserved4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 68
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
-<2><2b0>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x244): __glibc_reserved5
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 69
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<1><2bf>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xd9): shmid_ds_t
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x1fc>
-<1><2ca>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xfb): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2d8>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd2): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x138>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2e6>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1d0): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2f4>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x7): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x2bf>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/siginfo_t.c b/mpers-m32/siginfo_t.c
index b00fa38..fbd003c 100644
--- a/mpers-m32/siginfo_t.c
+++ b/mpers-m32/siginfo_t.c
@@ -7,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/siginfo_t.d1 b/mpers-m32/siginfo_t.d1
deleted file mode 100644
index c46c3c5..0000000
--- a/mpers-m32/siginfo_t.d1
+++ /dev/null
@@ -1,449 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x3a6 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x126): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x19e): mpers-m32/siginfo_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x254): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x240): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x213): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x9f): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xad): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x3b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x59): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x297): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x22f): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xcc): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x33): __uid_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 125	
-    <6a>   DW_AT_type        : <0x47>	
- <1><6e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x238): __pid_t	
-    <73>   DW_AT_decl_file   : 1	
-    <74>   DW_AT_decl_line   : 133	
-    <75>   DW_AT_type        : <0x2b>	
- <1><79>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7a>   DW_AT_byte_size   : 4	
-    <7b>   DW_AT_encoding    : 7	(unsigned)
-    <7c>   DW_AT_name        : (indirect string, offset: 0x1d6): sizetype	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0x1ff): __clock_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 135	
-    <87>   DW_AT_type        : <0x55>	
- <1><8b>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <8c>   DW_AT_byte_size   : 4	
- <1><8d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8e>   DW_AT_byte_size   : 1	
-    <8f>   DW_AT_encoding    : 6	(signed char)
-    <90>   DW_AT_name        : (indirect string, offset: 0x199): char	
- <1><94>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <95>   DW_AT_byte_size   : 4	
-    <96>   DW_AT_type        : <0x9a>	
- <1><9a>: Abbrev Number: 7 (DW_TAG_const_type)
-    <9b>   DW_AT_type        : <0x8d>	
- <1><9f>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <a0>   DW_AT_name        : (indirect string, offset: 0xde): sysent	
-    <a4>   DW_AT_byte_size   : 20	
-    <a5>   DW_AT_decl_file   : 2	
-    <a6>   DW_AT_decl_line   : 4	
-    <a7>   DW_AT_sibling     : <0xf2>	
- <2><ab>: Abbrev Number: 9 (DW_TAG_member)
-    <ac>   DW_AT_name        : (indirect string, offset: 0x10d): nargs	
-    <b0>   DW_AT_decl_file   : 2	
-    <b1>   DW_AT_decl_line   : 5	
-    <b2>   DW_AT_type        : <0x47>	
-    <b6>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b9>: Abbrev Number: 9 (DW_TAG_member)
-    <ba>   DW_AT_name        : (indirect string, offset: 0x95): sys_flags	
-    <be>   DW_AT_decl_file   : 2	
-    <bf>   DW_AT_decl_line   : 6	
-    <c0>   DW_AT_type        : <0x2b>	
-    <c4>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c7>: Abbrev Number: 10 (DW_TAG_member)
-    <c8>   DW_AT_name        : sen	
-    <cc>   DW_AT_decl_file   : 2	
-    <cd>   DW_AT_decl_line   : 7	
-    <ce>   DW_AT_type        : <0x2b>	
-    <d2>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d5>: Abbrev Number: 9 (DW_TAG_member)
-    <d6>   DW_AT_name        : (indirect string, offset: 0x28e): sys_func	
-    <da>   DW_AT_decl_file   : 2	
-    <db>   DW_AT_decl_line   : 8	
-    <dc>   DW_AT_type        : <0xfd>	
-    <e0>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e3>: Abbrev Number: 9 (DW_TAG_member)
-    <e4>   DW_AT_name        : (indirect string, offset: 0x6e): sys_name	
-    <e8>   DW_AT_decl_file   : 2	
-    <e9>   DW_AT_decl_line   : 9	
-    <ea>   DW_AT_type        : <0x94>	
-    <ee>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><f1>: Abbrev Number: 0
- <1><f2>: Abbrev Number: 11 (DW_TAG_subroutine_type)
-    <f3>   DW_AT_type        : <0x2b>	
-    <f7>   DW_AT_sibling     : <0xfd>	
- <2><fb>: Abbrev Number: 12 (DW_TAG_unspecified_parameters)
- <2><fc>: Abbrev Number: 0
- <1><fd>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <fe>   DW_AT_byte_size   : 4	
-    <ff>   DW_AT_type        : <0xf2>	
- <1><103>: Abbrev Number: 4 (DW_TAG_typedef)
-    <104>   DW_AT_name        : (indirect string, offset: 0x181): struct_sysent	
-    <108>   DW_AT_decl_file   : 2	
-    <109>   DW_AT_decl_line   : 10	
-    <10a>   DW_AT_type        : <0x9f>	
- <1><10e>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <10f>   DW_AT_byte_size   : 4	
-    <110>   DW_AT_type        : <0x114>	
- <1><114>: Abbrev Number: 7 (DW_TAG_const_type)
-    <115>   DW_AT_type        : <0x103>	
- <1><119>: Abbrev Number: 2 (DW_TAG_base_type)
-    <11a>   DW_AT_byte_size   : 1	
-    <11b>   DW_AT_encoding    : 2	(boolean)
-    <11c>   DW_AT_name        : (indirect string, offset: 0x26): _Bool	
- <1><120>: Abbrev Number: 13 (DW_TAG_union_type)
-    <121>   DW_AT_name        : (indirect string, offset: 0x1f8): sigval	
-    <125>   DW_AT_byte_size   : 4	
-    <126>   DW_AT_decl_file   : 3	
-    <127>   DW_AT_decl_line   : 32	
-    <128>   DW_AT_sibling     : <0x143>	
- <2><12c>: Abbrev Number: 14 (DW_TAG_member)
-    <12d>   DW_AT_name        : (indirect string, offset: 0xbb): sival_int	
-    <131>   DW_AT_decl_file   : 3	
-    <132>   DW_AT_decl_line   : 34	
-    <133>   DW_AT_type        : <0x2b>	
- <2><137>: Abbrev Number: 14 (DW_TAG_member)
-    <138>   DW_AT_name        : (indirect string, offset: 0x2b6): sival_ptr	
-    <13c>   DW_AT_decl_file   : 3	
-    <13d>   DW_AT_decl_line   : 35	
-    <13e>   DW_AT_type        : <0x8b>	
- <2><142>: Abbrev Number: 0
- <1><143>: Abbrev Number: 4 (DW_TAG_typedef)
-    <144>   DW_AT_name        : (indirect string, offset: 0x113): sigval_t	
-    <148>   DW_AT_decl_file   : 3	
-    <149>   DW_AT_decl_line   : 36	
-    <14a>   DW_AT_type        : <0x120>	
- <1><14e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <14f>   DW_AT_name        : (indirect string, offset: 0x1c4): __sigchld_clock_t	
-    <153>   DW_AT_decl_file   : 3	
-    <154>   DW_AT_decl_line   : 58	
-    <155>   DW_AT_type        : <0x80>	
- <1><159>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <15a>   DW_AT_byte_size   : 8	
-    <15b>   DW_AT_decl_file   : 3	
-    <15c>   DW_AT_decl_line   : 74	
-    <15d>   DW_AT_sibling     : <0x17e>	
- <2><161>: Abbrev Number: 9 (DW_TAG_member)
-    <162>   DW_AT_name        : (indirect string, offset: 0x7d): si_pid	
-    <166>   DW_AT_decl_file   : 3	
-    <167>   DW_AT_decl_line   : 76	
-    <168>   DW_AT_type        : <0x6e>	
-    <16c>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><16f>: Abbrev Number: 9 (DW_TAG_member)
-    <170>   DW_AT_name        : (indirect string, offset: 0xc5): si_uid	
-    <174>   DW_AT_decl_file   : 3	
-    <175>   DW_AT_decl_line   : 77	
-    <176>   DW_AT_type        : <0x63>	
-    <17a>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><17d>: Abbrev Number: 0
- <1><17e>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <17f>   DW_AT_byte_size   : 12	
-    <180>   DW_AT_decl_file   : 3	
-    <181>   DW_AT_decl_line   : 81	
-    <182>   DW_AT_sibling     : <0x1b1>	
- <2><186>: Abbrev Number: 9 (DW_TAG_member)
-    <187>   DW_AT_name        : (indirect string, offset: 0x2c): si_tid	
-    <18b>   DW_AT_decl_file   : 3	
-    <18c>   DW_AT_decl_line   : 83	
-    <18d>   DW_AT_type        : <0x2b>	
-    <191>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><194>: Abbrev Number: 9 (DW_TAG_member)
-    <195>   DW_AT_name        : (indirect string, offset: 0x4e): si_overrun	
-    <199>   DW_AT_decl_file   : 3	
-    <19a>   DW_AT_decl_line   : 84	
-    <19b>   DW_AT_type        : <0x2b>	
-    <19f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1a2>: Abbrev Number: 9 (DW_TAG_member)
-    <1a3>   DW_AT_name        : (indirect string, offset: 0x18f): si_sigval	
-    <1a7>   DW_AT_decl_file   : 3	
-    <1a8>   DW_AT_decl_line   : 85	
-    <1a9>   DW_AT_type        : <0x143>	
-    <1ad>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1b0>: Abbrev Number: 0
- <1><1b1>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <1b2>   DW_AT_byte_size   : 12	
-    <1b3>   DW_AT_decl_file   : 3	
-    <1b4>   DW_AT_decl_line   : 89	
-    <1b5>   DW_AT_sibling     : <0x1e4>	
- <2><1b9>: Abbrev Number: 9 (DW_TAG_member)
-    <1ba>   DW_AT_name        : (indirect string, offset: 0x7d): si_pid	
-    <1be>   DW_AT_decl_file   : 3	
-    <1bf>   DW_AT_decl_line   : 91	
-    <1c0>   DW_AT_type        : <0x6e>	
-    <1c4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1c7>: Abbrev Number: 9 (DW_TAG_member)
-    <1c8>   DW_AT_name        : (indirect string, offset: 0xc5): si_uid	
-    <1cc>   DW_AT_decl_file   : 3	
-    <1cd>   DW_AT_decl_line   : 92	
-    <1ce>   DW_AT_type        : <0x63>	
-    <1d2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1d5>: Abbrev Number: 9 (DW_TAG_member)
-    <1d6>   DW_AT_name        : (indirect string, offset: 0x18f): si_sigval	
-    <1da>   DW_AT_decl_file   : 3	
-    <1db>   DW_AT_decl_line   : 93	
-    <1dc>   DW_AT_type        : <0x143>	
-    <1e0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1e3>: Abbrev Number: 0
- <1><1e4>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <1e5>   DW_AT_byte_size   : 20	
-    <1e6>   DW_AT_decl_file   : 3	
-    <1e7>   DW_AT_decl_line   : 97	
-    <1e8>   DW_AT_sibling     : <0x233>	
- <2><1ec>: Abbrev Number: 9 (DW_TAG_member)
-    <1ed>   DW_AT_name        : (indirect string, offset: 0x7d): si_pid	
-    <1f1>   DW_AT_decl_file   : 3	
-    <1f2>   DW_AT_decl_line   : 99	
-    <1f3>   DW_AT_type        : <0x6e>	
-    <1f7>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1fa>: Abbrev Number: 9 (DW_TAG_member)
-    <1fb>   DW_AT_name        : (indirect string, offset: 0xc5): si_uid	
-    <1ff>   DW_AT_decl_file   : 3	
-    <200>   DW_AT_decl_line   : 100	
-    <201>   DW_AT_type        : <0x63>	
-    <205>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><208>: Abbrev Number: 9 (DW_TAG_member)
-    <209>   DW_AT_name        : (indirect string, offset: 0x1e6): si_status	
-    <20d>   DW_AT_decl_file   : 3	
-    <20e>   DW_AT_decl_line   : 101	
-    <20f>   DW_AT_type        : <0x2b>	
-    <213>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><216>: Abbrev Number: 9 (DW_TAG_member)
-    <217>   DW_AT_name        : (indirect string, offset: 0x226): si_utime	
-    <21b>   DW_AT_decl_file   : 3	
-    <21c>   DW_AT_decl_line   : 102	
-    <21d>   DW_AT_type        : <0x14e>	
-    <221>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><224>: Abbrev Number: 9 (DW_TAG_member)
-    <225>   DW_AT_name        : (indirect string, offset: 0xfb): si_stime	
-    <229>   DW_AT_decl_file   : 3	
-    <22a>   DW_AT_decl_line   : 103	
-    <22b>   DW_AT_type        : <0x14e>	
-    <22f>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><232>: Abbrev Number: 0
- <1><233>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <234>   DW_AT_byte_size   : 8	
-    <235>   DW_AT_decl_file   : 3	
-    <236>   DW_AT_decl_line   : 107	
-    <237>   DW_AT_sibling     : <0x258>	
- <2><23b>: Abbrev Number: 9 (DW_TAG_member)
-    <23c>   DW_AT_name        : (indirect string, offset: 0x66): si_addr	
-    <240>   DW_AT_decl_file   : 3	
-    <241>   DW_AT_decl_line   : 109	
-    <242>   DW_AT_type        : <0x8b>	
-    <246>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><249>: Abbrev Number: 9 (DW_TAG_member)
-    <24a>   DW_AT_name        : (indirect string, offset: 0xf): si_addr_lsb	
-    <24e>   DW_AT_decl_file   : 3	
-    <24f>   DW_AT_decl_line   : 110	
-    <250>   DW_AT_type        : <0x24>	
-    <254>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><257>: Abbrev Number: 0
- <1><258>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <259>   DW_AT_byte_size   : 8	
-    <25a>   DW_AT_decl_file   : 3	
-    <25b>   DW_AT_decl_line   : 114	
-    <25c>   DW_AT_sibling     : <0x27d>	
- <2><260>: Abbrev Number: 9 (DW_TAG_member)
-    <261>   DW_AT_name        : (indirect string, offset: 0x24c): si_band	
-    <265>   DW_AT_decl_file   : 3	
-    <266>   DW_AT_decl_line   : 116	
-    <267>   DW_AT_type        : <0x55>	
-    <26b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><26e>: Abbrev Number: 9 (DW_TAG_member)
-    <26f>   DW_AT_name        : (indirect string, offset: 0x1b4): si_fd	
-    <273>   DW_AT_decl_file   : 3	
-    <274>   DW_AT_decl_line   : 117	
-    <275>   DW_AT_type        : <0x2b>	
-    <279>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><27c>: Abbrev Number: 0
- <1><27d>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <27e>   DW_AT_byte_size   : 12	
-    <27f>   DW_AT_decl_file   : 3	
-    <280>   DW_AT_decl_line   : 121	
-    <281>   DW_AT_sibling     : <0x2b0>	
- <2><285>: Abbrev Number: 9 (DW_TAG_member)
-    <286>   DW_AT_name        : (indirect string, offset: 0x1b): _call_addr	
-    <28a>   DW_AT_decl_file   : 3	
-    <28b>   DW_AT_decl_line   : 123	
-    <28c>   DW_AT_type        : <0x8b>	
-    <290>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><293>: Abbrev Number: 9 (DW_TAG_member)
-    <294>   DW_AT_name        : (indirect string, offset: 0x104): _syscall	
-    <298>   DW_AT_decl_file   : 3	
-    <299>   DW_AT_decl_line   : 124	
-    <29a>   DW_AT_type        : <0x2b>	
-    <29e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2a1>: Abbrev Number: 9 (DW_TAG_member)
-    <2a2>   DW_AT_name        : (indirect string, offset: 0x77): _arch	
-    <2a6>   DW_AT_decl_file   : 3	
-    <2a7>   DW_AT_decl_line   : 125	
-    <2a8>   DW_AT_type        : <0x47>	
-    <2ac>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><2af>: Abbrev Number: 0
- <1><2b0>: Abbrev Number: 16 (DW_TAG_union_type)
-    <2b1>   DW_AT_byte_size   : 116	
-    <2b2>   DW_AT_decl_file   : 3	
-    <2b3>   DW_AT_decl_line   : 69	
-    <2b4>   DW_AT_sibling     : <0x311>	
- <2><2b8>: Abbrev Number: 14 (DW_TAG_member)
-    <2b9>   DW_AT_name        : (indirect string, offset: 0xe5): _pad	
-    <2bd>   DW_AT_decl_file   : 3	
-    <2be>   DW_AT_decl_line   : 71	
-    <2bf>   DW_AT_type        : <0x311>	
- <2><2c3>: Abbrev Number: 14 (DW_TAG_member)
-    <2c4>   DW_AT_name        : (indirect string, offset: 0x9): _kill	
-    <2c8>   DW_AT_decl_file   : 3	
-    <2c9>   DW_AT_decl_line   : 78	
-    <2ca>   DW_AT_type        : <0x159>	
- <2><2ce>: Abbrev Number: 14 (DW_TAG_member)
-    <2cf>   DW_AT_name        : (indirect string, offset: 0x1df): _timer	
-    <2d3>   DW_AT_decl_file   : 3	
-    <2d4>   DW_AT_decl_line   : 86	
-    <2d5>   DW_AT_type        : <0x17e>	
- <2><2d9>: Abbrev Number: 17 (DW_TAG_member)
-    <2da>   DW_AT_name        : _rt	
-    <2de>   DW_AT_decl_file   : 3	
-    <2df>   DW_AT_decl_line   : 94	
-    <2e0>   DW_AT_type        : <0x1b1>	
- <2><2e4>: Abbrev Number: 14 (DW_TAG_member)
-    <2e5>   DW_AT_name        : (indirect string, offset: 0x21d): _sigchld	
-    <2e9>   DW_AT_decl_file   : 3	
-    <2ea>   DW_AT_decl_line   : 104	
-    <2eb>   DW_AT_type        : <0x1e4>	
- <2><2ef>: Abbrev Number: 14 (DW_TAG_member)
-    <2f0>   DW_AT_name        : (indirect string, offset: 0x1ba): _sigfault	
-    <2f4>   DW_AT_decl_file   : 3	
-    <2f5>   DW_AT_decl_line   : 111	
-    <2f6>   DW_AT_type        : <0x233>	
- <2><2fa>: Abbrev Number: 14 (DW_TAG_member)
-    <2fb>   DW_AT_name        : (indirect string, offset: 0x285): _sigpoll	
-    <2ff>   DW_AT_decl_file   : 3	
-    <300>   DW_AT_decl_line   : 118	
-    <301>   DW_AT_type        : <0x258>	
- <2><305>: Abbrev Number: 14 (DW_TAG_member)
-    <306>   DW_AT_name        : (indirect string, offset: 0x2ae): _sigsys	
-    <30a>   DW_AT_decl_file   : 3	
-    <30b>   DW_AT_decl_line   : 126	
-    <30c>   DW_AT_type        : <0x27d>	
- <2><310>: Abbrev Number: 0
- <1><311>: Abbrev Number: 18 (DW_TAG_array_type)
-    <312>   DW_AT_type        : <0x2b>	
-    <316>   DW_AT_sibling     : <0x321>	
- <2><31a>: Abbrev Number: 19 (DW_TAG_subrange_type)
-    <31b>   DW_AT_type        : <0x79>	
-    <31f>   DW_AT_upper_bound : 28	
- <2><320>: Abbrev Number: 0
- <1><321>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <322>   DW_AT_byte_size   : 128	
-    <323>   DW_AT_decl_file   : 3	
-    <324>   DW_AT_decl_line   : 62	
-    <325>   DW_AT_sibling     : <0x362>	
- <2><329>: Abbrev Number: 9 (DW_TAG_member)
-    <32a>   DW_AT_name        : (indirect string, offset: 0x0): si_signo	
-    <32e>   DW_AT_decl_file   : 3	
-    <32f>   DW_AT_decl_line   : 64	
-    <330>   DW_AT_type        : <0x2b>	
-    <334>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><337>: Abbrev Number: 9 (DW_TAG_member)
-    <338>   DW_AT_name        : (indirect string, offset: 0x178): si_errno	
-    <33c>   DW_AT_decl_file   : 3	
-    <33d>   DW_AT_decl_line   : 65	
-    <33e>   DW_AT_type        : <0x2b>	
-    <342>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><345>: Abbrev Number: 9 (DW_TAG_member)
-    <346>   DW_AT_name        : (indirect string, offset: 0x1f0): si_code	
-    <34a>   DW_AT_decl_file   : 3	
-    <34b>   DW_AT_decl_line   : 67	
-    <34c>   DW_AT_type        : <0x2b>	
-    <350>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><353>: Abbrev Number: 9 (DW_TAG_member)
-    <354>   DW_AT_name        : (indirect string, offset: 0x11c): _sifields	
-    <358>   DW_AT_decl_file   : 3	
-    <359>   DW_AT_decl_line   : 127	
-    <35a>   DW_AT_type        : <0x2b0>	
-    <35e>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><361>: Abbrev Number: 0
- <1><362>: Abbrev Number: 4 (DW_TAG_typedef)
-    <363>   DW_AT_name        : (indirect string, offset: 0x209): siginfo_t	
-    <367>   DW_AT_decl_file   : 3	
-    <368>   DW_AT_decl_line   : 128	
-    <369>   DW_AT_type        : <0x321>	
- <1><36d>: Abbrev Number: 20 (DW_TAG_variable)
-    <36e>   DW_AT_name        : (indirect string, offset: 0xea): current_wordsize	
-    <372>   DW_AT_decl_file   : 4	
-    <373>   DW_AT_decl_line   : 757	
-    <375>   DW_AT_type        : <0x47>	
-    <379>   DW_AT_external    : 1	
-    <37a>   DW_AT_declaration : 1	
- <1><37b>: Abbrev Number: 20 (DW_TAG_variable)
-    <37c>   DW_AT_name        : (indirect string, offset: 0xde): sysent	
-    <380>   DW_AT_decl_file   : 4	
-    <381>   DW_AT_decl_line   : 892	
-    <383>   DW_AT_type        : <0x10e>	
-    <387>   DW_AT_external    : 1	
-    <388>   DW_AT_declaration : 1	
- <1><389>: Abbrev Number: 20 (DW_TAG_variable)
-    <38a>   DW_AT_name        : (indirect string, offset: 0x16e): nsyscalls	
-    <38e>   DW_AT_decl_file   : 4	
-    <38f>   DW_AT_decl_line   : 903	
-    <391>   DW_AT_type        : <0x47>	
-    <395>   DW_AT_external    : 1	
-    <396>   DW_AT_declaration : 1	
- <1><397>: Abbrev Number: 21 (DW_TAG_variable)
-    <398>   DW_AT_name        : (indirect string, offset: 0x84): mpers_target_var	
-    <39c>   DW_AT_decl_file   : 5	
-    <39d>   DW_AT_decl_line   : 41	
-    <39e>   DW_AT_type        : <0x362>	
-    <3a2>   DW_AT_external    : 1	
-    <3a3>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><3a9>: Abbrev Number: 0
-
diff --git a/mpers-m32/siginfo_t.d2 b/mpers-m32/siginfo_t.d2
deleted file mode 100644
index 5ccaa89..0000000
--- a/mpers-m32/siginfo_t.d2
+++ /dev/null
@@ -1,505 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x240): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x213): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x9f): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xad): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x3b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x59): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x297): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x22f): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xcc): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x33): __uid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-<1><6e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x238): __pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x2b>
-<1><79>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d6): sizetype
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1ff): __clock_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 135
-DW_AT_type        : <0x55>
-<1><8b>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><8d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x199): char
-<1><94>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x9a>
-<1><9a>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x8d>
-<1><9f>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xde): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf2>
-<2><ab>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10d): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b9>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x95): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c7>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28e): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e3>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6e): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x94>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f2>
-Abbrev Number: 11 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfd>
-<2><fb>
-Abbrev Number: 12 (DW_TAG_unspecified_parameters)
-<1><fd>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf2>
-<1><103>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x181): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x9f>
-<1><10e>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x114>
-<1><114>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x103>
-<1><119>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x26): _Bool
-<1><120>
-Abbrev Number: 13 (DW_TAG_union_type)
-DW_AT_name        : (indirect string, offset: 0x1f8): sigval
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_sibling     : <0x143>
-<2><12c>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbb): sival_int
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x2b>
-<2><137>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2b6): sival_ptr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x8b>
-<1><143>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x113): sigval_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x120>
-<1><14e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c4): __sigchld_clock_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x80>
-<1><159>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 74
-DW_AT_sibling     : <0x17e>
-<2><161>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7d): si_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 76
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><16f>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc5): si_uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 77
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><17e>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 81
-DW_AT_sibling     : <0x1b1>
-<2><186>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c): si_tid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 83
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><194>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4e): si_overrun
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 84
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1a2>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18f): si_sigval
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 85
-DW_AT_type        : <0x143>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><1b1>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 89
-DW_AT_sibling     : <0x1e4>
-<2><1b9>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7d): si_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 91
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1c7>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc5): si_uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 92
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1d5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18f): si_sigval
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 93
-DW_AT_type        : <0x143>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><1e4>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 97
-DW_AT_sibling     : <0x233>
-<2><1ec>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7d): si_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 99
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1fa>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc5): si_uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 100
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><208>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e6): si_status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 101
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><216>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x226): si_utime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 102
-DW_AT_type        : <0x14e>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><224>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfb): si_stime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 103
-DW_AT_type        : <0x14e>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><233>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 107
-DW_AT_sibling     : <0x258>
-<2><23b>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x66): si_addr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 109
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><249>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf): si_addr_lsb
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 110
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><258>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 114
-DW_AT_sibling     : <0x27d>
-<2><260>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x24c): si_band
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 116
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><26e>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b4): si_fd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 117
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><27d>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 121
-DW_AT_sibling     : <0x2b0>
-<2><285>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b): _call_addr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 123
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><293>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x104): _syscall
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 124
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><2a1>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x77): _arch
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><2b0>
-Abbrev Number: 16 (DW_TAG_union_type)
-DW_AT_byte_size   : 116
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 69
-DW_AT_sibling     : <0x311>
-<2><2b8>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe5): _pad
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 71
-DW_AT_type        : <0x311>
-<2><2c3>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): _kill
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 78
-DW_AT_type        : <0x159>
-<2><2ce>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1df): _timer
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 86
-DW_AT_type        : <0x17e>
-<2><2d9>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : _rt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 94
-DW_AT_type        : <0x1b1>
-<2><2e4>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21d): _sigchld
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 104
-DW_AT_type        : <0x1e4>
-<2><2ef>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ba): _sigfault
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 111
-DW_AT_type        : <0x233>
-<2><2fa>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x285): _sigpoll
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 118
-DW_AT_type        : <0x258>
-<2><305>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ae): _sigsys
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x27d>
-<1><311>
-Abbrev Number: 18 (DW_TAG_array_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x321>
-<2><31a>
-Abbrev Number: 19 (DW_TAG_subrange_type)
-DW_AT_type        : <0x79>
-DW_AT_upper_bound : 28
-<1><321>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 128
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 62
-DW_AT_sibling     : <0x362>
-<2><329>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): si_signo
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><337>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x178): si_errno
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 65
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><345>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f0): si_code
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 67
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><353>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11c): _sifields
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 127
-DW_AT_type        : <0x2b0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><362>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x209): siginfo_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 128
-DW_AT_type        : <0x321>
-<1><36d>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xea): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><37b>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xde): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10e>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><389>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x16e): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><397>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x84): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x362>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/stack_t.c b/mpers-m32/stack_t.c
index 2146a66..a958819 100644
--- a/mpers-m32/stack_t.c
+++ b/mpers-m32/stack_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/stack_t.d1 b/mpers-m32/stack_t.d1
deleted file mode 100644
index 7ce31c6..0000000
--- a/mpers-m32/stack_t.d1
+++ /dev/null
@@ -1,192 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x185 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xb9): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xd): mpers-m32/stack_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x121): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1a5): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x182): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x16e): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x6f): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x21): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x101): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x58): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x19c): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x89): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x165): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x11c): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_typedef)
-    <74>   DW_AT_name        : (indirect string, offset: 0x0): size_t	
-    <78>   DW_AT_decl_file   : 2	
-    <79>   DW_AT_decl_line   : 212	
-    <7a>   DW_AT_type        : <0x47>	
- <1><7e>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <7f>   DW_AT_byte_size   : 4	
-    <80>   DW_AT_type        : <0x84>	
- <1><84>: Abbrev Number: 7 (DW_TAG_const_type)
-    <85>   DW_AT_type        : <0x6c>	
- <1><89>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <8a>   DW_AT_name        : (indirect string, offset: 0x9b): sysent	
-    <8e>   DW_AT_byte_size   : 20	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 4	
-    <91>   DW_AT_sibling     : <0xdc>	
- <2><95>: Abbrev Number: 9 (DW_TAG_member)
-    <96>   DW_AT_name        : (indirect string, offset: 0xb3): nargs	
-    <9a>   DW_AT_decl_file   : 1	
-    <9b>   DW_AT_decl_line   : 5	
-    <9c>   DW_AT_type        : <0x47>	
-    <a0>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a3>: Abbrev Number: 9 (DW_TAG_member)
-    <a4>   DW_AT_name        : (indirect string, offset: 0x4e): sys_flags	
-    <a8>   DW_AT_decl_file   : 1	
-    <a9>   DW_AT_decl_line   : 6	
-    <aa>   DW_AT_type        : <0x2b>	
-    <ae>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><b1>: Abbrev Number: 10 (DW_TAG_member)
-    <b2>   DW_AT_name        : sen	
-    <b6>   DW_AT_decl_file   : 1	
-    <b7>   DW_AT_decl_line   : 7	
-    <b8>   DW_AT_type        : <0x2b>	
-    <bc>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><bf>: Abbrev Number: 9 (DW_TAG_member)
-    <c0>   DW_AT_name        : (indirect string, offset: 0x1b1): sys_func	
-    <c4>   DW_AT_decl_file   : 1	
-    <c5>   DW_AT_decl_line   : 8	
-    <c6>   DW_AT_type        : <0xe7>	
-    <ca>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><cd>: Abbrev Number: 9 (DW_TAG_member)
-    <ce>   DW_AT_name        : (indirect string, offset: 0x34): sys_name	
-    <d2>   DW_AT_decl_file   : 1	
-    <d3>   DW_AT_decl_line   : 9	
-    <d4>   DW_AT_type        : <0x7e>	
-    <d8>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 11 (DW_TAG_subroutine_type)
-    <dd>   DW_AT_type        : <0x2b>	
-    <e1>   DW_AT_sibling     : <0xe7>	
- <2><e5>: Abbrev Number: 12 (DW_TAG_unspecified_parameters)
- <2><e6>: Abbrev Number: 0
- <1><e7>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <e8>   DW_AT_byte_size   : 4	
-    <e9>   DW_AT_type        : <0xdc>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_typedef)
-    <ee>   DW_AT_name        : (indirect string, offset: 0x10e): struct_sysent	
-    <f2>   DW_AT_decl_file   : 1	
-    <f3>   DW_AT_decl_line   : 10	
-    <f4>   DW_AT_type        : <0x89>	
- <1><f8>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <f9>   DW_AT_byte_size   : 4	
-    <fa>   DW_AT_type        : <0xfe>	
- <1><fe>: Abbrev Number: 7 (DW_TAG_const_type)
-    <ff>   DW_AT_type        : <0xed>	
- <1><103>: Abbrev Number: 2 (DW_TAG_base_type)
-    <104>   DW_AT_byte_size   : 1	
-    <105>   DW_AT_encoding    : 2	(boolean)
-    <106>   DW_AT_name        : (indirect string, offset: 0x7): _Bool	
- <1><10a>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x7d): sigaltstack	
-    <10f>   DW_AT_byte_size   : 12	
-    <110>   DW_AT_decl_file   : 3	
-    <111>   DW_AT_decl_line   : 49	
-    <112>   DW_AT_sibling     : <0x141>	
- <2><116>: Abbrev Number: 9 (DW_TAG_member)
-    <117>   DW_AT_name        : (indirect string, offset: 0x17c): ss_sp	
-    <11b>   DW_AT_decl_file   : 3	
-    <11c>   DW_AT_decl_line   : 51	
-    <11d>   DW_AT_type        : <0x6a>	
-    <121>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><124>: Abbrev Number: 9 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x15c): ss_flags	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 52	
-    <12b>   DW_AT_type        : <0x2b>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><132>: Abbrev Number: 9 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x18c): ss_size	
-    <137>   DW_AT_decl_file   : 3	
-    <138>   DW_AT_decl_line   : 53	
-    <139>   DW_AT_type        : <0x73>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><140>: Abbrev Number: 0
- <1><141>: Abbrev Number: 5 (DW_TAG_typedef)
-    <142>   DW_AT_name        : (indirect string, offset: 0x194): stack_t	
-    <146>   DW_AT_decl_file   : 3	
-    <147>   DW_AT_decl_line   : 54	
-    <148>   DW_AT_type        : <0x10a>	
- <1><14c>: Abbrev Number: 13 (DW_TAG_variable)
-    <14d>   DW_AT_name        : (indirect string, offset: 0xa2): current_wordsize	
-    <151>   DW_AT_decl_file   : 4	
-    <152>   DW_AT_decl_line   : 757	
-    <154>   DW_AT_type        : <0x47>	
-    <158>   DW_AT_external    : 1	
-    <159>   DW_AT_declaration : 1	
- <1><15a>: Abbrev Number: 13 (DW_TAG_variable)
-    <15b>   DW_AT_name        : (indirect string, offset: 0x9b): sysent	
-    <15f>   DW_AT_decl_file   : 4	
-    <160>   DW_AT_decl_line   : 892	
-    <162>   DW_AT_type        : <0xf8>	
-    <166>   DW_AT_external    : 1	
-    <167>   DW_AT_declaration : 1	
- <1><168>: Abbrev Number: 13 (DW_TAG_variable)
-    <169>   DW_AT_name        : (indirect string, offset: 0x152): nsyscalls	
-    <16d>   DW_AT_decl_file   : 4	
-    <16e>   DW_AT_decl_line   : 903	
-    <170>   DW_AT_type        : <0x47>	
-    <174>   DW_AT_external    : 1	
-    <175>   DW_AT_declaration : 1	
- <1><176>: Abbrev Number: 14 (DW_TAG_variable)
-    <177>   DW_AT_name        : (indirect string, offset: 0x3d): mpers_target_var	
-    <17b>   DW_AT_decl_file   : 5	
-    <17c>   DW_AT_decl_line   : 38	
-    <17d>   DW_AT_type        : <0x141>	
-    <181>   DW_AT_external    : 1	
-    <182>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><188>: Abbrev Number: 0
-
diff --git a/mpers-m32/stack_t.d2 b/mpers-m32/stack_t.d2
deleted file mode 100644
index 79bab58..0000000
--- a/mpers-m32/stack_t.d2
+++ /dev/null
@@ -1,212 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a5): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x182): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x16e): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x6f): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x21): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x101): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x58): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19c): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x89): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x165): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x11c): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><7e>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x84>
-<1><84>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><89>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x9b): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xdc>
-<2><95>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb3): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a3>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4e): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><b1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><bf>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b1): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe7>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><cd>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x34): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><dc>
-Abbrev Number: 11 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe7>
-<2><e5>
-Abbrev Number: 12 (DW_TAG_unspecified_parameters)
-<1><e7>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xdc>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x10e): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x89>
-<1><f8>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfe>
-<1><fe>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0xed>
-<1><103>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x7): _Bool
-<1><10a>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x7d): sigaltstack
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 49
-DW_AT_sibling     : <0x141>
-<2><116>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17c): ss_sp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><124>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15c): ss_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><132>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18c): ss_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><141>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x194): stack_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x10a>
-<1><14c>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa2): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><15a>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9b): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf8>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><168>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x152): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><176>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x3d): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x141>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_blk_user_trace_setup.d1 b/mpers-m32/struct_blk_user_trace_setup.d1
deleted file mode 100644
index f4f3f5c..0000000
--- a/mpers-m32/struct_blk_user_trace_setup.d1
+++ /dev/null
@@ -1,231 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1e1 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xf0): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x25): mpers-m32/struct_blk_user_trace_setup.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x158): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e3): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1b8): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x19c): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x9c): unsigned char	
- <1><40>: Abbrev Number: 4 (DW_TAG_typedef)
-    <41>   DW_AT_name        : (indirect string, offset: 0x1c8): uint16_t	
-    <45>   DW_AT_decl_file   : 1	
-    <46>   DW_AT_decl_line   : 49	
-    <47>   DW_AT_type        : <0x4b>	
- <1><4b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4c>   DW_AT_byte_size   : 2	
-    <4d>   DW_AT_encoding    : 7	(unsigned)
-    <4e>   DW_AT_name        : (indirect string, offset: 0x54): short unsigned int	
- <1><52>: Abbrev Number: 4 (DW_TAG_typedef)
-    <53>   DW_AT_name        : (indirect string, offset: 0x1d1): uint32_t	
-    <57>   DW_AT_decl_file   : 1	
-    <58>   DW_AT_decl_line   : 51	
-    <59>   DW_AT_type        : <0x5d>	
- <1><5d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5e>   DW_AT_byte_size   : 4	
-    <5f>   DW_AT_encoding    : 7	(unsigned)
-    <60>   DW_AT_name        : (indirect string, offset: 0x138): unsigned int	
- <1><64>: Abbrev Number: 4 (DW_TAG_typedef)
-    <65>   DW_AT_name        : (indirect string, offset: 0x67): uint64_t	
-    <69>   DW_AT_decl_file   : 1	
-    <6a>   DW_AT_decl_line   : 58	
-    <6b>   DW_AT_type        : <0x6f>	
- <1><6f>: Abbrev Number: 2 (DW_TAG_base_type)
-    <70>   DW_AT_byte_size   : 8	
-    <71>   DW_AT_encoding    : 7	(unsigned)
-    <72>   DW_AT_name        : (indirect string, offset: 0x1f8): long long unsigned int	
- <1><76>: Abbrev Number: 2 (DW_TAG_base_type)
-    <77>   DW_AT_byte_size   : 4	
-    <78>   DW_AT_encoding    : 5	(signed)
-    <79>   DW_AT_name        : (indirect string, offset: 0x1da): long int	
- <1><7d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7e>   DW_AT_byte_size   : 4	
-    <7f>   DW_AT_encoding    : 7	(unsigned)
-    <80>   DW_AT_name        : (indirect string, offset: 0xaa): long unsigned int	
- <1><84>: Abbrev Number: 2 (DW_TAG_base_type)
-    <85>   DW_AT_byte_size   : 4	
-    <86>   DW_AT_encoding    : 7	(unsigned)
-    <87>   DW_AT_name        : (indirect string, offset: 0x193): sizetype	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x153): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_array_type)
-    <93>   DW_AT_type        : <0x8b>	
-    <97>   DW_AT_sibling     : <0xa2>	
- <2><9b>: Abbrev Number: 6 (DW_TAG_subrange_type)
-    <9c>   DW_AT_type        : <0x84>	
-    <a0>   DW_AT_upper_bound : 31	
- <2><a1>: Abbrev Number: 0
- <1><a2>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <a3>   DW_AT_byte_size   : 4	
-    <a4>   DW_AT_type        : <0xa8>	
- <1><a8>: Abbrev Number: 8 (DW_TAG_const_type)
-    <a9>   DW_AT_type        : <0x8b>	
- <1><ad>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <ae>   DW_AT_name        : (indirect string, offset: 0xbc): sysent	
-    <b2>   DW_AT_byte_size   : 20	
-    <b3>   DW_AT_decl_file   : 2	
-    <b4>   DW_AT_decl_line   : 4	
-    <b5>   DW_AT_sibling     : <0x100>	
- <2><b9>: Abbrev Number: 10 (DW_TAG_member)
-    <ba>   DW_AT_name        : (indirect string, offset: 0x1c2): nargs	
-    <be>   DW_AT_decl_file   : 2	
-    <bf>   DW_AT_decl_line   : 5	
-    <c0>   DW_AT_type        : <0x5d>	
-    <c4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c7>: Abbrev Number: 10 (DW_TAG_member)
-    <c8>   DW_AT_name        : (indirect string, offset: 0x8a): sys_flags	
-    <cc>   DW_AT_decl_file   : 2	
-    <cd>   DW_AT_decl_line   : 6	
-    <ce>   DW_AT_type        : <0x2b>	
-    <d2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d5>: Abbrev Number: 11 (DW_TAG_member)
-    <d6>   DW_AT_name        : sen	
-    <da>   DW_AT_decl_file   : 2	
-    <db>   DW_AT_decl_line   : 7	
-    <dc>   DW_AT_type        : <0x2b>	
-    <e0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><e3>: Abbrev Number: 10 (DW_TAG_member)
-    <e4>   DW_AT_name        : (indirect string, offset: 0x1ef): sys_func	
-    <e8>   DW_AT_decl_file   : 2	
-    <e9>   DW_AT_decl_line   : 8	
-    <ea>   DW_AT_type        : <0x10b>	
-    <ee>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><f1>: Abbrev Number: 10 (DW_TAG_member)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x70): sys_name	
-    <f6>   DW_AT_decl_file   : 2	
-    <f7>   DW_AT_decl_line   : 9	
-    <f8>   DW_AT_type        : <0xa2>	
-    <fc>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ff>: Abbrev Number: 0
- <1><100>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <101>   DW_AT_type        : <0x2b>	
-    <105>   DW_AT_sibling     : <0x10b>	
- <2><109>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><10a>: Abbrev Number: 0
- <1><10b>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <10c>   DW_AT_byte_size   : 4	
-    <10d>   DW_AT_type        : <0x100>	
- <1><111>: Abbrev Number: 4 (DW_TAG_typedef)
-    <112>   DW_AT_name        : (indirect string, offset: 0x145): struct_sysent	
-    <116>   DW_AT_decl_file   : 2	
-    <117>   DW_AT_decl_line   : 10	
-    <118>   DW_AT_type        : <0xad>	
- <1><11c>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <11d>   DW_AT_byte_size   : 4	
-    <11e>   DW_AT_type        : <0x122>	
- <1><122>: Abbrev Number: 8 (DW_TAG_const_type)
-    <123>   DW_AT_type        : <0x111>	
- <1><127>: Abbrev Number: 2 (DW_TAG_base_type)
-    <128>   DW_AT_byte_size   : 1	
-    <129>   DW_AT_encoding    : 2	(boolean)
-    <12a>   DW_AT_name        : (indirect string, offset: 0x1f): _Bool	
- <1><12e>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <12f>   DW_AT_name        : (indirect string, offset: 0x0): blk_user_trace_setup	
-    <133>   DW_AT_byte_size   : 64	
-    <134>   DW_AT_decl_file   : 3	
-    <135>   DW_AT_decl_line   : 54	
-    <136>   DW_AT_sibling     : <0x19d>	
- <2><13a>: Abbrev Number: 10 (DW_TAG_member)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x1aa): name	
-    <13f>   DW_AT_decl_file   : 3	
-    <140>   DW_AT_decl_line   : 55	
-    <141>   DW_AT_type        : <0x92>	
-    <145>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><148>: Abbrev Number: 10 (DW_TAG_member)
-    <149>   DW_AT_name        : (indirect string, offset: 0x20f): act_mask	
-    <14d>   DW_AT_decl_file   : 3	
-    <14e>   DW_AT_decl_line   : 56	
-    <14f>   DW_AT_type        : <0x40>	
-    <153>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x1af): buf_size	
-    <15b>   DW_AT_decl_file   : 3	
-    <15c>   DW_AT_decl_line   : 57	
-    <15d>   DW_AT_type        : <0x52>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><164>: Abbrev Number: 10 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x4d): buf_nr	
-    <169>   DW_AT_decl_file   : 3	
-    <16a>   DW_AT_decl_line   : 58	
-    <16b>   DW_AT_type        : <0x52>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><172>: Abbrev Number: 10 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x15): start_lba	
-    <177>   DW_AT_decl_file   : 3	
-    <178>   DW_AT_decl_line   : 59	
-    <179>   DW_AT_type        : <0x64>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><180>: Abbrev Number: 10 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x94): end_lba	
-    <185>   DW_AT_decl_file   : 3	
-    <186>   DW_AT_decl_line   : 60	
-    <187>   DW_AT_type        : <0x64>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><18e>: Abbrev Number: 11 (DW_TAG_member)
-    <18f>   DW_AT_name        : pid	
-    <193>   DW_AT_decl_file   : 3	
-    <194>   DW_AT_decl_line   : 61	
-    <195>   DW_AT_type        : <0x52>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><19c>: Abbrev Number: 0
- <1><19d>: Abbrev Number: 4 (DW_TAG_typedef)
-    <19e>   DW_AT_name        : (indirect string, offset: 0xd4): struct_blk_user_trace_setup	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 62	
-    <1a4>   DW_AT_type        : <0x12e>	
- <1><1a8>: Abbrev Number: 14 (DW_TAG_variable)
-    <1a9>   DW_AT_name        : (indirect string, offset: 0xc3): current_wordsize	
-    <1ad>   DW_AT_decl_file   : 4	
-    <1ae>   DW_AT_decl_line   : 757	
-    <1b0>   DW_AT_type        : <0x5d>	
-    <1b4>   DW_AT_external    : 1	
-    <1b5>   DW_AT_declaration : 1	
- <1><1b6>: Abbrev Number: 14 (DW_TAG_variable)
-    <1b7>   DW_AT_name        : (indirect string, offset: 0xbc): sysent	
-    <1bb>   DW_AT_decl_file   : 4	
-    <1bc>   DW_AT_decl_line   : 892	
-    <1be>   DW_AT_type        : <0x11c>	
-    <1c2>   DW_AT_external    : 1	
-    <1c3>   DW_AT_declaration : 1	
- <1><1c4>: Abbrev Number: 14 (DW_TAG_variable)
-    <1c5>   DW_AT_name        : (indirect string, offset: 0x189): nsyscalls	
-    <1c9>   DW_AT_decl_file   : 4	
-    <1ca>   DW_AT_decl_line   : 903	
-    <1cc>   DW_AT_type        : <0x5d>	
-    <1d0>   DW_AT_external    : 1	
-    <1d1>   DW_AT_declaration : 1	
- <1><1d2>: Abbrev Number: 15 (DW_TAG_variable)
-    <1d3>   DW_AT_name        : (indirect string, offset: 0x79): mpers_target_var	
-    <1d7>   DW_AT_decl_file   : 3	
-    <1d8>   DW_AT_decl_line   : 64	
-    <1d9>   DW_AT_type        : <0x19d>	
-    <1dd>   DW_AT_external    : 1	
-    <1de>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1e4>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_blk_user_trace_setup.d2 b/mpers-m32/struct_blk_user_trace_setup.d2
deleted file mode 100644
index 433a0fa..0000000
--- a/mpers-m32/struct_blk_user_trace_setup.d2
+++ /dev/null
@@ -1,257 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e3): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1b8): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19c): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x9c): unsigned char
-<1><40>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c8): uint16_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x4b>
-<1><4b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x54): short unsigned int
-<1><52>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d1): uint32_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x5d>
-<1><5d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x138): unsigned int
-<1><64>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x67): uint64_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x6f>
-<1><6f>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1f8): long long unsigned int
-<1><76>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1da): long int
-<1><7d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xaa): long unsigned int
-<1><84>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x193): sizetype
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x153): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_array_type)
-DW_AT_type        : <0x8b>
-DW_AT_sibling     : <0xa2>
-<2><9b>
-Abbrev Number: 6 (DW_TAG_subrange_type)
-DW_AT_type        : <0x84>
-DW_AT_upper_bound : 31
-<1><a2>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xa8>
-<1><a8>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><ad>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xbc): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x100>
-<2><b9>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c2): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x5d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c7>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8a): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d5>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><e3>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ef): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x10b>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><f1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x70): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xa2>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><100>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x10b>
-<2><109>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><10b>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x100>
-<1><111>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x145): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xad>
-<1><11c>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x122>
-<1><122>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x111>
-<1><127>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1f): _Bool
-<1><12e>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): blk_user_trace_setup
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_sibling     : <0x19d>
-<2><13a>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1aa): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><148>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20f): act_mask
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1af): buf_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><164>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4d): buf_nr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><172>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15): start_lba
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x64>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><180>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x94): end_lba
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 60
-DW_AT_type        : <0x64>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><18e>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<1><19d>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xd4): struct_blk_user_trace_setup
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 62
-DW_AT_type        : <0x12e>
-<1><1a8>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc3): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x5d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1b6>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xbc): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x11c>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1c4>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x189): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x5d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1d2>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x79): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x19d>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_blkpg_ioctl_arg.d1 b/mpers-m32/struct_blkpg_ioctl_arg.d1
deleted file mode 100644
index 29de052..0000000
--- a/mpers-m32/struct_blkpg_ioctl_arg.d1
+++ /dev/null
@@ -1,192 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x183 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xc2): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xe): mpers-m32/struct_blkpg_ioctl_arg.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x147): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ac): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x199): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x18b): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x84): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x31): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x121): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x6d): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1a3): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x92): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x182): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x142): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xa4): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0xbc): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x63): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x1b8): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x49): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x134): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><ff>: Abbrev Number: 13 (DW_TAG_structure_type)
-    <100>   DW_AT_byte_size   : 16	
-    <101>   DW_AT_decl_file   : 2	
-    <102>   DW_AT_decl_line   : 35	
-    <103>   DW_AT_sibling     : <0x13f>	
- <2><107>: Abbrev Number: 9 (DW_TAG_member)
-    <108>   DW_AT_name        : op	
-    <10b>   DW_AT_decl_file   : 2	
-    <10c>   DW_AT_decl_line   : 36	
-    <10d>   DW_AT_type        : <0x2b>	
-    <111>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><114>: Abbrev Number: 8 (DW_TAG_member)
-    <115>   DW_AT_name        : (indirect string, offset: 0x12e): flags	
-    <119>   DW_AT_decl_file   : 2	
-    <11a>   DW_AT_decl_line   : 37	
-    <11b>   DW_AT_type        : <0x2b>	
-    <11f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><122>: Abbrev Number: 8 (DW_TAG_member)
-    <123>   DW_AT_name        : (indirect string, offset: 0x6): datalen	
-    <127>   DW_AT_decl_file   : 2	
-    <128>   DW_AT_decl_line   : 38	
-    <129>   DW_AT_type        : <0x2b>	
-    <12d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><130>: Abbrev Number: 8 (DW_TAG_member)
-    <131>   DW_AT_name        : (indirect string, offset: 0x44): data	
-    <135>   DW_AT_decl_file   : 2	
-    <136>   DW_AT_decl_line   : 39	
-    <137>   DW_AT_type        : <0x6a>	
-    <13b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><13e>: Abbrev Number: 0
- <1><13f>: Abbrev Number: 12 (DW_TAG_typedef)
-    <140>   DW_AT_name        : (indirect string, offset: 0x10a): struct_blkpg_ioctl_arg	
-    <144>   DW_AT_decl_file   : 2	
-    <145>   DW_AT_decl_line   : 40	
-    <146>   DW_AT_type        : <0xff>	
- <1><14a>: Abbrev Number: 14 (DW_TAG_variable)
-    <14b>   DW_AT_name        : (indirect string, offset: 0xab): current_wordsize	
-    <14f>   DW_AT_decl_file   : 3	
-    <150>   DW_AT_decl_line   : 757	
-    <152>   DW_AT_type        : <0x47>	
-    <156>   DW_AT_external    : 1	
-    <157>   DW_AT_declaration : 1	
- <1><158>: Abbrev Number: 14 (DW_TAG_variable)
-    <159>   DW_AT_name        : (indirect string, offset: 0xa4): sysent	
-    <15d>   DW_AT_decl_file   : 3	
-    <15e>   DW_AT_decl_line   : 892	
-    <160>   DW_AT_type        : <0xed>	
-    <164>   DW_AT_external    : 1	
-    <165>   DW_AT_declaration : 1	
- <1><166>: Abbrev Number: 14 (DW_TAG_variable)
-    <167>   DW_AT_name        : (indirect string, offset: 0x178): nsyscalls	
-    <16b>   DW_AT_decl_file   : 3	
-    <16c>   DW_AT_decl_line   : 903	
-    <16e>   DW_AT_type        : <0x47>	
-    <172>   DW_AT_external    : 1	
-    <173>   DW_AT_declaration : 1	
- <1><174>: Abbrev Number: 15 (DW_TAG_variable)
-    <175>   DW_AT_name        : (indirect string, offset: 0x52): mpers_target_var	
-    <179>   DW_AT_decl_file   : 2	
-    <17a>   DW_AT_decl_line   : 64	
-    <17b>   DW_AT_type        : <0x13f>	
-    <17f>   DW_AT_external    : 1	
-    <180>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><186>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_blkpg_ioctl_arg.d2 b/mpers-m32/struct_blkpg_ioctl_arg.d2
deleted file mode 100644
index 161c1e3..0000000
--- a/mpers-m32/struct_blkpg_ioctl_arg.d2
+++ /dev/null
@@ -1,212 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ac): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x199): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18b): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x84): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x31): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x121): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6d): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a3): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x92): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x182): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x142): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xa4): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbc): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x63): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b8): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x49): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x134): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><ff>
-Abbrev Number: 13 (DW_TAG_structure_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 35
-DW_AT_sibling     : <0x13f>
-<2><107>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : op
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><114>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12e): flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><122>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): datalen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><130>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x44): data
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><13f>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x10a): struct_blkpg_ioctl_arg
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 40
-DW_AT_type        : <0xff>
-<1><14a>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xab): current_wordsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><158>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa4): sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><166>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x178): nsyscalls
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><174>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x52): mpers_target_var
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x13f>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_blkpg_partition.d1 b/mpers-m32/struct_blkpg_partition.d1
deleted file mode 100644
index de26ee9..0000000
--- a/mpers-m32/struct_blkpg_partition.d1
+++ /dev/null
@@ -1,208 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1ab (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xa8): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x162): mpers-m32/struct_blkpg_partition.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x110): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x198): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x185): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 4 (DW_TAG_typedef)
-    <33>   DW_AT_name        : (indirect string, offset: 0x0): int64_t	
-    <37>   DW_AT_decl_file   : 2	
-    <38>   DW_AT_decl_line   : 43	
-    <39>   DW_AT_type        : <0x3d>	
- <1><3d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3e>   DW_AT_byte_size   : 8	
-    <3f>   DW_AT_encoding    : 5	(signed)
-    <40>   DW_AT_name        : (indirect string, offset: 0x154): long long int	
- <1><44>: Abbrev Number: 2 (DW_TAG_base_type)
-    <45>   DW_AT_byte_size   : 1	
-    <46>   DW_AT_encoding    : 8	(unsigned char)
-    <47>   DW_AT_name        : (indirect string, offset: 0x6a): unsigned char	
- <1><4b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4c>   DW_AT_byte_size   : 2	
-    <4d>   DW_AT_encoding    : 7	(unsigned)
-    <4e>   DW_AT_name        : (indirect string, offset: 0x14): short unsigned int	
- <1><52>: Abbrev Number: 2 (DW_TAG_base_type)
-    <53>   DW_AT_byte_size   : 4	
-    <54>   DW_AT_encoding    : 7	(unsigned)
-    <55>   DW_AT_name        : (indirect string, offset: 0xf0): unsigned int	
- <1><59>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5a>   DW_AT_byte_size   : 8	
-    <5b>   DW_AT_encoding    : 7	(unsigned)
-    <5c>   DW_AT_name        : (indirect string, offset: 0x1b4): long long unsigned int	
- <1><60>: Abbrev Number: 2 (DW_TAG_base_type)
-    <61>   DW_AT_byte_size   : 4	
-    <62>   DW_AT_encoding    : 5	(signed)
-    <63>   DW_AT_name        : (indirect string, offset: 0x18f): long int	
- <1><67>: Abbrev Number: 2 (DW_TAG_base_type)
-    <68>   DW_AT_byte_size   : 4	
-    <69>   DW_AT_encoding    : 7	(unsigned)
-    <6a>   DW_AT_name        : (indirect string, offset: 0x78): long unsigned int	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x14b): sizetype	
- <1><75>: Abbrev Number: 2 (DW_TAG_base_type)
-    <76>   DW_AT_byte_size   : 1	
-    <77>   DW_AT_encoding    : 6	(signed char)
-    <78>   DW_AT_name        : (indirect string, offset: 0x10b): char	
- <1><7c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <7d>   DW_AT_byte_size   : 4	
-    <7e>   DW_AT_type        : <0x82>	
- <1><82>: Abbrev Number: 6 (DW_TAG_const_type)
-    <83>   DW_AT_type        : <0x75>	
- <1><87>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <88>   DW_AT_name        : (indirect string, offset: 0x8a): sysent	
-    <8c>   DW_AT_byte_size   : 20	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 4	
-    <8f>   DW_AT_sibling     : <0xda>	
- <2><93>: Abbrev Number: 8 (DW_TAG_member)
-    <94>   DW_AT_name        : (indirect string, offset: 0xa2): nargs	
-    <98>   DW_AT_decl_file   : 1	
-    <99>   DW_AT_decl_line   : 5	
-    <9a>   DW_AT_type        : <0x52>	
-    <9e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a1>: Abbrev Number: 8 (DW_TAG_member)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x58): sys_flags	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 6	
-    <a8>   DW_AT_type        : <0x2b>	
-    <ac>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><af>: Abbrev Number: 9 (DW_TAG_member)
-    <b0>   DW_AT_name        : sen	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 7	
-    <b6>   DW_AT_type        : <0x2b>	
-    <ba>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><bd>: Abbrev Number: 8 (DW_TAG_member)
-    <be>   DW_AT_name        : (indirect string, offset: 0x1a4): sys_func	
-    <c2>   DW_AT_decl_file   : 1	
-    <c3>   DW_AT_decl_line   : 8	
-    <c4>   DW_AT_type        : <0xe5>	
-    <c8>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><cb>: Abbrev Number: 8 (DW_TAG_member)
-    <cc>   DW_AT_name        : (indirect string, offset: 0x3e): sys_name	
-    <d0>   DW_AT_decl_file   : 1	
-    <d1>   DW_AT_decl_line   : 9	
-    <d2>   DW_AT_type        : <0x7c>	
-    <d6>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <db>   DW_AT_type        : <0x2b>	
-    <df>   DW_AT_sibling     : <0xe5>	
- <2><e3>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <e6>   DW_AT_byte_size   : 4	
-    <e7>   DW_AT_type        : <0xda>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_typedef)
-    <ec>   DW_AT_name        : (indirect string, offset: 0xfd): struct_sysent	
-    <f0>   DW_AT_decl_file   : 1	
-    <f1>   DW_AT_decl_line   : 10	
-    <f2>   DW_AT_type        : <0x87>	
- <1><f6>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f7>   DW_AT_byte_size   : 4	
-    <f8>   DW_AT_type        : <0xfc>	
- <1><fc>: Abbrev Number: 6 (DW_TAG_const_type)
-    <fd>   DW_AT_type        : <0xeb>	
- <1><101>: Abbrev Number: 2 (DW_TAG_base_type)
-    <102>   DW_AT_byte_size   : 1	
-    <103>   DW_AT_encoding    : 2	(boolean)
-    <104>   DW_AT_name        : (indirect string, offset: 0x8): _Bool	
- <1><108>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <109>   DW_AT_byte_size   : 148	
-    <10a>   DW_AT_decl_file   : 3	
-    <10b>   DW_AT_decl_line   : 44	
-    <10c>   DW_AT_sibling     : <0x157>	
- <2><110>: Abbrev Number: 8 (DW_TAG_member)
-    <111>   DW_AT_name        : (indirect string, offset: 0xe): start	
-    <115>   DW_AT_decl_file   : 3	
-    <116>   DW_AT_decl_line   : 45	
-    <117>   DW_AT_type        : <0x32>	
-    <11b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><11e>: Abbrev Number: 8 (DW_TAG_member)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x1ad): length	
-    <123>   DW_AT_decl_file   : 3	
-    <124>   DW_AT_decl_line   : 46	
-    <125>   DW_AT_type        : <0x32>	
-    <129>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><12c>: Abbrev Number: 9 (DW_TAG_member)
-    <12d>   DW_AT_name        : pno	
-    <131>   DW_AT_decl_file   : 3	
-    <132>   DW_AT_decl_line   : 47	
-    <133>   DW_AT_type        : <0x2b>	
-    <137>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><13a>: Abbrev Number: 8 (DW_TAG_member)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x1cb): devname	
-    <13f>   DW_AT_decl_file   : 3	
-    <140>   DW_AT_decl_line   : 48	
-    <141>   DW_AT_type        : <0x157>	
-    <145>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><148>: Abbrev Number: 8 (DW_TAG_member)
-    <149>   DW_AT_name        : (indirect string, offset: 0x62): volname	
-    <14d>   DW_AT_decl_file   : 3	
-    <14e>   DW_AT_decl_line   : 50	
-    <14f>   DW_AT_type        : <0x157>	
-    <153>   DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
- <2><156>: Abbrev Number: 0
- <1><157>: Abbrev Number: 13 (DW_TAG_array_type)
-    <158>   DW_AT_type        : <0x75>	
-    <15c>   DW_AT_sibling     : <0x167>	
- <2><160>: Abbrev Number: 14 (DW_TAG_subrange_type)
-    <161>   DW_AT_type        : <0x6e>	
-    <165>   DW_AT_upper_bound : 63	
- <2><166>: Abbrev Number: 0
- <1><167>: Abbrev Number: 4 (DW_TAG_typedef)
-    <168>   DW_AT_name        : (indirect string, offset: 0x27): struct_blkpg_partition	
-    <16c>   DW_AT_decl_file   : 3	
-    <16d>   DW_AT_decl_line   : 51	
-    <16e>   DW_AT_type        : <0x108>	
- <1><172>: Abbrev Number: 15 (DW_TAG_variable)
-    <173>   DW_AT_name        : (indirect string, offset: 0x91): current_wordsize	
-    <177>   DW_AT_decl_file   : 4	
-    <178>   DW_AT_decl_line   : 757	
-    <17a>   DW_AT_type        : <0x52>	
-    <17e>   DW_AT_external    : 1	
-    <17f>   DW_AT_declaration : 1	
- <1><180>: Abbrev Number: 15 (DW_TAG_variable)
-    <181>   DW_AT_name        : (indirect string, offset: 0x8a): sysent	
-    <185>   DW_AT_decl_file   : 4	
-    <186>   DW_AT_decl_line   : 892	
-    <188>   DW_AT_type        : <0xf6>	
-    <18c>   DW_AT_external    : 1	
-    <18d>   DW_AT_declaration : 1	
- <1><18e>: Abbrev Number: 15 (DW_TAG_variable)
-    <18f>   DW_AT_name        : (indirect string, offset: 0x141): nsyscalls	
-    <193>   DW_AT_decl_file   : 4	
-    <194>   DW_AT_decl_line   : 903	
-    <196>   DW_AT_type        : <0x52>	
-    <19a>   DW_AT_external    : 1	
-    <19b>   DW_AT_declaration : 1	
- <1><19c>: Abbrev Number: 16 (DW_TAG_variable)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x47): mpers_target_var	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 64	
-    <1a3>   DW_AT_type        : <0x167>	
-    <1a7>   DW_AT_external    : 1	
-    <1a8>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1ae>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_blkpg_partition.d2 b/mpers-m32/struct_blkpg_partition.d2
deleted file mode 100644
index b5f8e80..0000000
--- a/mpers-m32/struct_blkpg_partition.d2
+++ /dev/null
@@ -1,230 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x198): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x185): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): int64_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x3d>
-<1><3d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x154): long long int
-<1><44>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x6a): unsigned char
-<1><4b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14): short unsigned int
-<1><52>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf0): unsigned int
-<1><59>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1b4): long long unsigned int
-<1><60>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18f): long int
-<1><67>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x78): long unsigned int
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14b): sizetype
-<1><75>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x10b): char
-<1><7c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x82>
-<1><82>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x75>
-<1><87>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x8a): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xda>
-<2><93>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa2): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x58): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><af>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><bd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a4): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe5>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><cb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3e): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><da>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe5>
-<2><e3>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><e5>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xda>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xfd): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x87>
-<1><f6>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfc>
-<1><fc>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xeb>
-<1><101>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x8): _Bool
-<1><108>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_byte_size   : 148
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_sibling     : <0x157>
-<2><110>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x32>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><11e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ad): length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x32>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><12c>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : pno
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><13a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cb): devname
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x157>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><148>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x62): volname
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x157>
-DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
-<1><157>
-Abbrev Number: 13 (DW_TAG_array_type)
-DW_AT_type        : <0x75>
-DW_AT_sibling     : <0x167>
-<2><160>
-Abbrev Number: 14 (DW_TAG_subrange_type)
-DW_AT_type        : <0x6e>
-DW_AT_upper_bound : 63
-<1><167>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x27): struct_blkpg_partition
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x108>
-<1><172>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x91): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x52>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><180>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x8a): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf6>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18e>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x141): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x52>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><19c>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x47): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x167>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_btrfs_ioctl_dev_replace_args.c b/mpers-m32/struct_btrfs_ioctl_dev_replace_args.c
index c907ffb..6caef1a 100644
--- a/mpers-m32/struct_btrfs_ioctl_dev_replace_args.c
+++ b/mpers-m32/struct_btrfs_ioctl_dev_replace_args.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/struct_btrfs_ioctl_dev_replace_args.d1 b/mpers-m32/struct_btrfs_ioctl_dev_replace_args.d1
deleted file mode 100644
index dcd1744..0000000
--- a/mpers-m32/struct_btrfs_ioctl_dev_replace_args.d1
+++ /dev/null
@@ -1,327 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2b3 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x159): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xec): mpers-m32/struct_btrfs_ioctl_dev_replace_args.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x24b): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x362): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x324): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xde): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x38c): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x20e): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xb9): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x334): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x11c): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x2a6): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x229): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x12e): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x153): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xaf): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x39f): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x95): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x21b): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x36): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x2e2): __u8	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 20	
-    <104>   DW_AT_type        : <0x39>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x2a0): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x33d): btrfs_ioctl_dev_replace_start_params	
-    <118>   DW_AT_byte_size   : 2068	
-    <11a>   DW_AT_decl_file   : 3	
-    <11b>   DW_AT_decl_line   : 131	
-    <11c>   DW_AT_sibling     : <0x15a>	
- <2><120>: Abbrev Number: 7 (DW_TAG_member)
-    <121>   DW_AT_name        : (indirect string, offset: 0x56): srcdevid	
-    <125>   DW_AT_decl_file   : 3	
-    <126>   DW_AT_decl_line   : 132	
-    <127>   DW_AT_type        : <0x108>	
-    <12b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12e>: Abbrev Number: 7 (DW_TAG_member)
-    <12f>   DW_AT_name        : (indirect string, offset: 0x36e): cont_reading_from_srcdev_mode	
-    <133>   DW_AT_decl_file   : 3	
-    <134>   DW_AT_decl_line   : 133	
-    <135>   DW_AT_type        : <0x108>	
-    <139>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13c>: Abbrev Number: 7 (DW_TAG_member)
-    <13d>   DW_AT_name        : (indirect string, offset: 0x65): srcdev_name	
-    <141>   DW_AT_decl_file   : 3	
-    <142>   DW_AT_decl_line   : 135	
-    <143>   DW_AT_type        : <0x15a>	
-    <147>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><14a>: Abbrev Number: 7 (DW_TAG_member)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x3a8): tgtdev_name	
-    <14f>   DW_AT_decl_file   : 3	
-    <150>   DW_AT_decl_line   : 136	
-    <151>   DW_AT_type        : <0x15a>	
-    <155>   DW_AT_data_member_location: 3 byte block: 23 91 8 	(DW_OP_plus_uconst: 1041)
- <2><159>: Abbrev Number: 0
- <1><15a>: Abbrev Number: 13 (DW_TAG_array_type)
-    <15b>   DW_AT_type        : <0xfd>	
-    <15f>   DW_AT_sibling     : <0x16b>	
- <2><163>: Abbrev Number: 14 (DW_TAG_subrange_type)
-    <164>   DW_AT_type        : <0x63>	
-    <168>   DW_AT_upper_bound : 1024	
- <2><16a>: Abbrev Number: 0
- <1><16b>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <16c>   DW_AT_name        : (indirect string, offset: 0x1c0): btrfs_ioctl_dev_replace_status_params	
-    <170>   DW_AT_byte_size   : 48	
-    <171>   DW_AT_decl_file   : 3	
-    <172>   DW_AT_decl_line   : 144	
-    <173>   DW_AT_sibling     : <0x1cc>	
- <2><177>: Abbrev Number: 7 (DW_TAG_member)
-    <178>   DW_AT_name        : (indirect string, offset: 0xd0): replace_state	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 145	
-    <17e>   DW_AT_type        : <0x108>	
-    <182>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><185>: Abbrev Number: 7 (DW_TAG_member)
-    <186>   DW_AT_name        : (indirect string, offset: 0xe): progress_1000	
-    <18a>   DW_AT_decl_file   : 3	
-    <18b>   DW_AT_decl_line   : 146	
-    <18c>   DW_AT_type        : <0x108>	
-    <190>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><193>: Abbrev Number: 7 (DW_TAG_member)
-    <194>   DW_AT_name        : (indirect string, offset: 0x135): time_started	
-    <198>   DW_AT_decl_file   : 3	
-    <199>   DW_AT_decl_line   : 147	
-    <19a>   DW_AT_type        : <0x108>	
-    <19e>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1a1>: Abbrev Number: 7 (DW_TAG_member)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x2e7): time_stopped	
-    <1a6>   DW_AT_decl_file   : 3	
-    <1a7>   DW_AT_decl_line   : 148	
-    <1a8>   DW_AT_type        : <0x108>	
-    <1ac>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1af>: Abbrev Number: 7 (DW_TAG_member)
-    <1b0>   DW_AT_name        : (indirect string, offset: 0x313): num_write_errors	
-    <1b4>   DW_AT_decl_file   : 3	
-    <1b5>   DW_AT_decl_line   : 149	
-    <1b6>   DW_AT_type        : <0x108>	
-    <1ba>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1bd>: Abbrev Number: 7 (DW_TAG_member)
-    <1be>   DW_AT_name        : (indirect string, offset: 0x1f0): num_uncorrectable_read_errors	
-    <1c2>   DW_AT_decl_file   : 3	
-    <1c3>   DW_AT_decl_line   : 150	
-    <1c4>   DW_AT_type        : <0x108>	
-    <1c8>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1cb>: Abbrev Number: 0
- <1><1cc>: Abbrev Number: 15 (DW_TAG_union_type)
-    <1cd>   DW_AT_byte_size   : 2068	
-    <1cf>   DW_AT_decl_file   : 3	
-    <1d0>   DW_AT_decl_line   : 163	
-    <1d1>   DW_AT_sibling     : <0x1ec>	
- <2><1d5>: Abbrev Number: 16 (DW_TAG_member)
-    <1d6>   DW_AT_name        : (indirect string, offset: 0x5f): start	
-    <1da>   DW_AT_decl_file   : 3	
-    <1db>   DW_AT_decl_line   : 164	
-    <1dc>   DW_AT_type        : <0x113>	
- <2><1e0>: Abbrev Number: 16 (DW_TAG_member)
-    <1e1>   DW_AT_name        : (indirect string, offset: 0x8e): status	
-    <1e5>   DW_AT_decl_file   : 3	
-    <1e6>   DW_AT_decl_line   : 165	
-    <1e7>   DW_AT_type        : <0x16b>	
- <2><1eb>: Abbrev Number: 0
- <1><1ec>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <1ed>   DW_AT_name        : (indirect string, offset: 0x71): btrfs_ioctl_dev_replace_args	
-    <1f1>   DW_AT_byte_size   : 2596	
-    <1f3>   DW_AT_decl_file   : 3	
-    <1f4>   DW_AT_decl_line   : 159	
-    <1f5>   DW_AT_sibling     : <0x22d>	
- <2><1f9>: Abbrev Number: 8 (DW_TAG_member)
-    <1fa>   DW_AT_name        : cmd	
-    <1fe>   DW_AT_decl_file   : 3	
-    <1ff>   DW_AT_decl_line   : 160	
-    <200>   DW_AT_type        : <0x108>	
-    <204>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><207>: Abbrev Number: 7 (DW_TAG_member)
-    <208>   DW_AT_name        : (indirect string, offset: 0x244): result	
-    <20c>   DW_AT_decl_file   : 3	
-    <20d>   DW_AT_decl_line   : 161	
-    <20e>   DW_AT_type        : <0x108>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><215>: Abbrev Number: 17 (DW_TAG_member)
-    <216>   DW_AT_type        : <0x1cc>	
-    <21a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><21d>: Abbrev Number: 7 (DW_TAG_member)
-    <21e>   DW_AT_name        : (indirect string, offset: 0x32e): spare	
-    <222>   DW_AT_decl_file   : 3	
-    <223>   DW_AT_decl_line   : 168	
-    <224>   DW_AT_type        : <0x22d>	
-    <228>   DW_AT_data_member_location: 3 byte block: 23 a4 10 	(DW_OP_plus_uconst: 2084)
- <2><22c>: Abbrev Number: 0
- <1><22d>: Abbrev Number: 13 (DW_TAG_array_type)
-    <22e>   DW_AT_type        : <0x108>	
-    <232>   DW_AT_sibling     : <0x23d>	
- <2><236>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <237>   DW_AT_type        : <0x63>	
-    <23b>   DW_AT_upper_bound : 63	
- <2><23c>: Abbrev Number: 0
- <1><23d>: Abbrev Number: 19 (DW_TAG_enumeration_type)
-    <23e>   DW_AT_name        : (indirect string, offset: 0x22e): btrfs_dev_stat_values	
-    <242>   DW_AT_byte_size   : 4	
-    <243>   DW_AT_decl_file   : 3	
-    <244>   DW_AT_decl_line   : 369	
-    <246>   DW_AT_sibling     : <0x26f>	
- <2><24a>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <24b>   DW_AT_name        : (indirect string, offset: 0x3c): BTRFS_DEV_STAT_WRITE_ERRS	
-    <24f>   DW_AT_const_value : 0	
- <2><250>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <251>   DW_AT_name        : (indirect string, offset: 0x2c9): BTRFS_DEV_STAT_READ_ERRS	
-    <255>   DW_AT_const_value : 1	
- <2><256>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <257>   DW_AT_name        : (indirect string, offset: 0x2af): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <25b>   DW_AT_const_value : 2	
- <2><25c>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <25d>   DW_AT_name        : (indirect string, offset: 0x1a1): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <261>   DW_AT_const_value : 3	
- <2><262>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <263>   DW_AT_name        : (indirect string, offset: 0x2f4): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <267>   DW_AT_const_value : 4	
- <2><268>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <269>   DW_AT_name        : (indirect string, offset: 0x1c): BTRFS_DEV_STAT_VALUES_MAX	
-    <26d>   DW_AT_const_value : 5	
- <2><26e>: Abbrev Number: 0
- <1><26f>: Abbrev Number: 11 (DW_TAG_typedef)
-    <270>   DW_AT_name        : (indirect string, offset: 0x27c): struct_btrfs_ioctl_dev_replace_args	
-    <274>   DW_AT_decl_file   : 4	
-    <275>   DW_AT_decl_line   : 36	
-    <276>   DW_AT_type        : <0x1ec>	
- <1><27a>: Abbrev Number: 21 (DW_TAG_variable)
-    <27b>   DW_AT_name        : (indirect string, offset: 0x142): current_wordsize	
-    <27f>   DW_AT_decl_file   : 5	
-    <280>   DW_AT_decl_line   : 757	
-    <282>   DW_AT_type        : <0x47>	
-    <286>   DW_AT_external    : 1	
-    <287>   DW_AT_declaration : 1	
- <1><288>: Abbrev Number: 21 (DW_TAG_variable)
-    <289>   DW_AT_name        : (indirect string, offset: 0x12e): sysent	
-    <28d>   DW_AT_decl_file   : 5	
-    <28e>   DW_AT_decl_line   : 892	
-    <290>   DW_AT_type        : <0xeb>	
-    <294>   DW_AT_external    : 1	
-    <295>   DW_AT_declaration : 1	
- <1><296>: Abbrev Number: 21 (DW_TAG_variable)
-    <297>   DW_AT_name        : (indirect string, offset: 0x1e6): nsyscalls	
-    <29b>   DW_AT_decl_file   : 5	
-    <29c>   DW_AT_decl_line   : 903	
-    <29e>   DW_AT_type        : <0x47>	
-    <2a2>   DW_AT_external    : 1	
-    <2a3>   DW_AT_declaration : 1	
- <1><2a4>: Abbrev Number: 22 (DW_TAG_variable)
-    <2a5>   DW_AT_name        : (indirect string, offset: 0x9e): mpers_target_var	
-    <2a9>   DW_AT_decl_file   : 4	
-    <2aa>   DW_AT_decl_line   : 46	
-    <2ab>   DW_AT_type        : <0x26f>	
-    <2af>   DW_AT_external    : 1	
-    <2b0>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><2b6>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_btrfs_ioctl_dev_replace_args.d2 b/mpers-m32/struct_btrfs_ioctl_dev_replace_args.d2
deleted file mode 100644
index 1e9b5f0..0000000
--- a/mpers-m32/struct_btrfs_ioctl_dev_replace_args.d2
+++ /dev/null
@@ -1,368 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x362): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x324): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xde): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x38c): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x20e): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb9): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x334): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x11c): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2a6): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x229): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x12e): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x153): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xaf): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x39f): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x95): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x21b): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x36): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2e2): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2a0): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x33d): btrfs_ioctl_dev_replace_start_params
-DW_AT_byte_size   : 2068
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 131
-DW_AT_sibling     : <0x15a>
-<2><120>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x56): srcdevid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 132
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x36e): cont_reading_from_srcdev_mode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><13c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x65): srcdev_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 135
-DW_AT_type        : <0x15a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><14a>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a8): tgtdev_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 136
-DW_AT_type        : <0x15a>
-DW_AT_data_member_location: 3 byte block: 23 91 8 	(DW_OP_plus_uconst: 1041)
-<1><15a>
-Abbrev Number: 13 (DW_TAG_array_type)
-DW_AT_type        : <0xfd>
-DW_AT_sibling     : <0x16b>
-<2><163>
-Abbrev Number: 14 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1024
-<1><16b>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1c0): btrfs_ioctl_dev_replace_status_params
-DW_AT_byte_size   : 48
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 144
-DW_AT_sibling     : <0x1cc>
-<2><177>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd0): replace_state
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 145
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><185>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe): progress_1000
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 146
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><193>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x135): time_started
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 147
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1a1>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e7): time_stopped
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 148
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1af>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x313): num_write_errors
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 149
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1bd>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f0): num_uncorrectable_read_errors
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 150
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<1><1cc>
-Abbrev Number: 15 (DW_TAG_union_type)
-DW_AT_byte_size   : 2068
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 163
-DW_AT_sibling     : <0x1ec>
-<2><1d5>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5f): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 164
-DW_AT_type        : <0x113>
-<2><1e0>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8e): status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 165
-DW_AT_type        : <0x16b>
-<1><1ec>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x71): btrfs_ioctl_dev_replace_args
-DW_AT_byte_size   : 2596
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 159
-DW_AT_sibling     : <0x22d>
-<2><1f9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : cmd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 160
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><207>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x244): result
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 161
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><215>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_type        : <0x1cc>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><21d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x32e): spare
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 168
-DW_AT_type        : <0x22d>
-DW_AT_data_member_location: 3 byte block: 23 a4 10 	(DW_OP_plus_uconst: 2084)
-<1><22d>
-Abbrev Number: 13 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x23d>
-<2><236>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 63
-<1><23d>
-Abbrev Number: 19 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x22e): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x26f>
-<2><24a>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x3c): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><250>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2c9): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><256>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2af): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><25c>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1a1): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><262>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2f4): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><268>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1c): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><26f>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x27c): struct_btrfs_ioctl_dev_replace_args
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x1ec>
-<1><27a>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x142): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><288>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12e): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><296>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1e6): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2a4>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9e): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x26f>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_btrfs_ioctl_received_subvol_args.c b/mpers-m32/struct_btrfs_ioctl_received_subvol_args.c
index a62dfd3..4f54da8 100644
--- a/mpers-m32/struct_btrfs_ioctl_received_subvol_args.c
+++ b/mpers-m32/struct_btrfs_ioctl_received_subvol_args.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/struct_btrfs_ioctl_received_subvol_args.d1 b/mpers-m32/struct_btrfs_ioctl_received_subvol_args.d1
deleted file mode 100644
index c1b20ca..0000000
--- a/mpers-m32/struct_btrfs_ioctl_received_subvol_args.d1
+++ /dev/null
@@ -1,277 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x24c (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x154): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x270): mpers-m32/struct_btrfs_ioctl_received_subvol_args.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1ee): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x2dc): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x2c3): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe7): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x2e8): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1bb): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xc7): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x2cd): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x10a): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x22f): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x1d3): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x11c): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x14e): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xbd): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x2fb): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x82): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x6e): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x50): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x56): __u32	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 26	
-    <104>   DW_AT_type        : <0x47>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x229): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x1d8): btrfs_dev_stat_values	
-    <118>   DW_AT_byte_size   : 4	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 369	
-    <11c>   DW_AT_sibling     : <0x145>	
- <2><120>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <121>   DW_AT_name        : (indirect string, offset: 0x123): BTRFS_DEV_STAT_WRITE_ERRS	
-    <125>   DW_AT_const_value : 0	
- <2><126>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <127>   DW_AT_name        : (indirect string, offset: 0x252): BTRFS_DEV_STAT_READ_ERRS	
-    <12b>   DW_AT_const_value : 1	
- <2><12c>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <12d>   DW_AT_name        : (indirect string, offset: 0x238): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <131>   DW_AT_const_value : 2	
- <2><132>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <133>   DW_AT_name        : (indirect string, offset: 0x19c): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <137>   DW_AT_const_value : 3	
- <2><138>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <139>   DW_AT_name        : (indirect string, offset: 0x2a4): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <13d>   DW_AT_const_value : 4	
- <2><13e>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <13f>   DW_AT_name        : (indirect string, offset: 0xe): BTRFS_DEV_STAT_VALUES_MAX	
-    <143>   DW_AT_const_value : 5	
- <2><144>: Abbrev Number: 0
- <1><145>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <146>   DW_AT_name        : (indirect string, offset: 0xf5): btrfs_ioctl_timespec	
-    <14a>   DW_AT_byte_size   : 12	
-    <14b>   DW_AT_decl_file   : 3	
-    <14c>   DW_AT_decl_line   : 426	
-    <14e>   DW_AT_sibling     : <0x171>	
- <2><152>: Abbrev Number: 15 (DW_TAG_member)
-    <153>   DW_AT_name        : sec	
-    <157>   DW_AT_decl_file   : 3	
-    <158>   DW_AT_decl_line   : 427	
-    <15a>   DW_AT_type        : <0x108>	
-    <15e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><161>: Abbrev Number: 16 (DW_TAG_member)
-    <162>   DW_AT_name        : (indirect string, offset: 0x26b): nsec	
-    <166>   DW_AT_decl_file   : 3	
-    <167>   DW_AT_decl_line   : 428	
-    <169>   DW_AT_type        : <0xfd>	
-    <16d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><170>: Abbrev Number: 0
- <1><171>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <172>   DW_AT_name        : (indirect string, offset: 0x8b): btrfs_ioctl_received_subvol_args	
-    <176>   DW_AT_byte_size   : 192	
-    <177>   DW_AT_decl_file   : 3	
-    <178>   DW_AT_decl_line   : 431	
-    <17a>   DW_AT_sibling     : <0x1e8>	
- <2><17e>: Abbrev Number: 16 (DW_TAG_member)
-    <17f>   DW_AT_name        : (indirect string, offset: 0x1ce): uuid	
-    <183>   DW_AT_decl_file   : 3	
-    <184>   DW_AT_decl_line   : 432	
-    <186>   DW_AT_type        : <0x1e8>	
-    <18a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><18d>: Abbrev Number: 16 (DW_TAG_member)
-    <18e>   DW_AT_name        : (indirect string, offset: 0x65): stransid	
-    <192>   DW_AT_decl_file   : 3	
-    <193>   DW_AT_decl_line   : 433	
-    <195>   DW_AT_type        : <0x108>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 16 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0xde): rtransid	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 434	
-    <1a4>   DW_AT_type        : <0x108>	
-    <1a8>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1ab>: Abbrev Number: 16 (DW_TAG_member)
-    <1ac>   DW_AT_name        : (indirect string, offset: 0x7c): stime	
-    <1b0>   DW_AT_decl_file   : 3	
-    <1b1>   DW_AT_decl_line   : 435	
-    <1b3>   DW_AT_type        : <0x145>	
-    <1b7>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1ba>: Abbrev Number: 16 (DW_TAG_member)
-    <1bb>   DW_AT_name        : (indirect string, offset: 0x2d6): rtime	
-    <1bf>   DW_AT_decl_file   : 3	
-    <1c0>   DW_AT_decl_line   : 436	
-    <1c2>   DW_AT_type        : <0x145>	
-    <1c6>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1c9>: Abbrev Number: 16 (DW_TAG_member)
-    <1ca>   DW_AT_name        : (indirect string, offset: 0x1c8): flags	
-    <1ce>   DW_AT_decl_file   : 3	
-    <1cf>   DW_AT_decl_line   : 437	
-    <1d1>   DW_AT_type        : <0x108>	
-    <1d5>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1d8>: Abbrev Number: 16 (DW_TAG_member)
-    <1d9>   DW_AT_name        : (indirect string, offset: 0x5c): reserved	
-    <1dd>   DW_AT_decl_file   : 3	
-    <1de>   DW_AT_decl_line   : 438	
-    <1e0>   DW_AT_type        : <0x1f8>	
-    <1e4>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1e7>: Abbrev Number: 0
- <1><1e8>: Abbrev Number: 17 (DW_TAG_array_type)
-    <1e9>   DW_AT_type        : <0x6a>	
-    <1ed>   DW_AT_sibling     : <0x1f8>	
- <2><1f1>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <1f2>   DW_AT_type        : <0x63>	
-    <1f6>   DW_AT_upper_bound : 15	
- <2><1f7>: Abbrev Number: 0
- <1><1f8>: Abbrev Number: 17 (DW_TAG_array_type)
-    <1f9>   DW_AT_type        : <0x108>	
-    <1fd>   DW_AT_sibling     : <0x208>	
- <2><201>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <202>   DW_AT_type        : <0x63>	
-    <206>   DW_AT_upper_bound : 15	
- <2><207>: Abbrev Number: 0
- <1><208>: Abbrev Number: 11 (DW_TAG_typedef)
-    <209>   DW_AT_name        : (indirect string, offset: 0x28): struct_btrfs_ioctl_received_subvol_args	
-    <20d>   DW_AT_decl_file   : 4	
-    <20e>   DW_AT_decl_line   : 40	
-    <20f>   DW_AT_type        : <0x171>	
- <1><213>: Abbrev Number: 19 (DW_TAG_variable)
-    <214>   DW_AT_name        : (indirect string, offset: 0x13d): current_wordsize	
-    <218>   DW_AT_decl_file   : 5	
-    <219>   DW_AT_decl_line   : 757	
-    <21b>   DW_AT_type        : <0x47>	
-    <21f>   DW_AT_external    : 1	
-    <220>   DW_AT_declaration : 1	
- <1><221>: Abbrev Number: 19 (DW_TAG_variable)
-    <222>   DW_AT_name        : (indirect string, offset: 0x11c): sysent	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 892	
-    <229>   DW_AT_type        : <0xeb>	
-    <22d>   DW_AT_external    : 1	
-    <22e>   DW_AT_declaration : 1	
- <1><22f>: Abbrev Number: 19 (DW_TAG_variable)
-    <230>   DW_AT_name        : (indirect string, offset: 0x21f): nsyscalls	
-    <234>   DW_AT_decl_file   : 5	
-    <235>   DW_AT_decl_line   : 903	
-    <237>   DW_AT_type        : <0x47>	
-    <23b>   DW_AT_external    : 1	
-    <23c>   DW_AT_declaration : 1	
- <1><23d>: Abbrev Number: 20 (DW_TAG_variable)
-    <23e>   DW_AT_name        : (indirect string, offset: 0xac): mpers_target_var	
-    <242>   DW_AT_decl_file   : 4	
-    <243>   DW_AT_decl_line   : 46	
-    <244>   DW_AT_type        : <0x208>	
-    <248>   DW_AT_external    : 1	
-    <249>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><24f>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_btrfs_ioctl_received_subvol_args.d2 b/mpers-m32/struct_btrfs_ioctl_received_subvol_args.d2
deleted file mode 100644
index df06e8a..0000000
--- a/mpers-m32/struct_btrfs_ioctl_received_subvol_args.d2
+++ /dev/null
@@ -1,311 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x2dc): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2c3): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe7): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2e8): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1bb): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc7): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2cd): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x10a): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x22f): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1d3): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x11c): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14e): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbd): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2fb): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x82): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6e): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x50): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x56): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x229): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x1d8): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x145>
-<2><120>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x123): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><126>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x252): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><12c>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x238): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><132>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x19c): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><138>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2a4): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><13e>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xe): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><145>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf5): btrfs_ioctl_timespec
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 426
-DW_AT_sibling     : <0x171>
-<2><152>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : sec
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 427
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><161>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26b): nsec
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 428
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><171>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x8b): btrfs_ioctl_received_subvol_args
-DW_AT_byte_size   : 192
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 431
-DW_AT_sibling     : <0x1e8>
-<2><17e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ce): uuid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 432
-DW_AT_type        : <0x1e8>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><18d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x65): stransid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 433
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xde): rtransid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 434
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1ab>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7c): stime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 435
-DW_AT_type        : <0x145>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1ba>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d6): rtime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 436
-DW_AT_type        : <0x145>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1c9>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c8): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 437
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1d8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5c): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 438
-DW_AT_type        : <0x1f8>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<1><1e8>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x1f8>
-<2><1f1>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><1f8>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x208>
-<2><201>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><208>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x28): struct_btrfs_ioctl_received_subvol_args
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x171>
-<1><213>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x13d): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><221>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11c): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><22f>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x21f): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><23d>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xac): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x208>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_btrfs_ioctl_send_args.c b/mpers-m32/struct_btrfs_ioctl_send_args.c
index 6a8a43a..0e1d924 100644
--- a/mpers-m32/struct_btrfs_ioctl_send_args.c
+++ b/mpers-m32/struct_btrfs_ioctl_send_args.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/struct_btrfs_ioctl_send_args.d1 b/mpers-m32/struct_btrfs_ioctl_send_args.d1
deleted file mode 100644
index 907455a..0000000
--- a/mpers-m32/struct_btrfs_ioctl_send_args.d1
+++ /dev/null
@@ -1,248 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x207 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x138): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xf1): mpers-m32/struct_btrfs_ioctl_send_args.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1e9): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x2aa): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x62): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0xc3): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd1): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x4f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x19f): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x2bf): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x2a1): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xdf): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x22a): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x1c0): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x11a): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x132): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xb9): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x2b6): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x6c): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x1b2): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x26): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x2d6): __s64	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 29	
-    <104>   DW_AT_type        : <0x32>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x224): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 12 (DW_TAG_array_type)
-    <114>   DW_AT_type        : <0x108>	
-    <118>   DW_AT_sibling     : <0x123>	
- <2><11c>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <11d>   DW_AT_type        : <0x63>	
-    <121>   DW_AT_upper_bound : 3	
- <2><122>: Abbrev Number: 0
- <1><123>: Abbrev Number: 14 (DW_TAG_enumeration_type)
-    <124>   DW_AT_name        : (indirect string, offset: 0x1c5): btrfs_dev_stat_values	
-    <128>   DW_AT_byte_size   : 4	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 369	
-    <12c>   DW_AT_sibling     : <0x155>	
- <2><130>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <131>   DW_AT_name        : (indirect string, offset: 0x2c): BTRFS_DEV_STAT_WRITE_ERRS	
-    <135>   DW_AT_const_value : 0	
- <2><136>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <137>   DW_AT_name        : (indirect string, offset: 0x24d): BTRFS_DEV_STAT_READ_ERRS	
-    <13b>   DW_AT_const_value : 1	
- <2><13c>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <13d>   DW_AT_name        : (indirect string, offset: 0x233): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <141>   DW_AT_const_value : 2	
- <2><142>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <143>   DW_AT_name        : (indirect string, offset: 0x180): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <147>   DW_AT_const_value : 3	
- <2><148>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <149>   DW_AT_name        : (indirect string, offset: 0x266): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <14d>   DW_AT_const_value : 4	
- <2><14e>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <14f>   DW_AT_name        : (indirect string, offset: 0xc): BTRFS_DEV_STAT_VALUES_MAX	
-    <153>   DW_AT_const_value : 5	
- <2><154>: Abbrev Number: 0
- <1><155>: Abbrev Number: 16 (DW_TAG_structure_type)
-    <156>   DW_AT_name        : (indirect string, offset: 0x92): btrfs_ioctl_send_args	
-    <15a>   DW_AT_byte_size   : 68	
-    <15b>   DW_AT_decl_file   : 3	
-    <15c>   DW_AT_decl_line   : 466	
-    <15e>   DW_AT_sibling     : <0x1bd>	
- <2><162>: Abbrev Number: 17 (DW_TAG_member)
-    <163>   DW_AT_name        : (indirect string, offset: 0x299): send_fd	
-    <167>   DW_AT_decl_file   : 3	
-    <168>   DW_AT_decl_line   : 467	
-    <16a>   DW_AT_type        : <0xfd>	
-    <16e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><171>: Abbrev Number: 17 (DW_TAG_member)
-    <172>   DW_AT_name        : (indirect string, offset: 0x285): clone_sources_count	
-    <176>   DW_AT_decl_file   : 3	
-    <177>   DW_AT_decl_line   : 468	
-    <179>   DW_AT_type        : <0x108>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 17 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x1db): clone_sources	
-    <185>   DW_AT_decl_file   : 3	
-    <186>   DW_AT_decl_line   : 469	
-    <188>   DW_AT_type        : <0x1bd>	
-    <18c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><18f>: Abbrev Number: 17 (DW_TAG_member)
-    <190>   DW_AT_name        : (indirect string, offset: 0x0): parent_root	
-    <194>   DW_AT_decl_file   : 3	
-    <195>   DW_AT_decl_line   : 470	
-    <197>   DW_AT_type        : <0x108>	
-    <19b>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><19e>: Abbrev Number: 17 (DW_TAG_member)
-    <19f>   DW_AT_name        : (indirect string, offset: 0x1ac): flags	
-    <1a3>   DW_AT_decl_file   : 3	
-    <1a4>   DW_AT_decl_line   : 471	
-    <1a6>   DW_AT_type        : <0x108>	
-    <1aa>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1ad>: Abbrev Number: 17 (DW_TAG_member)
-    <1ae>   DW_AT_name        : (indirect string, offset: 0x46): reserved	
-    <1b2>   DW_AT_decl_file   : 3	
-    <1b3>   DW_AT_decl_line   : 472	
-    <1b5>   DW_AT_type        : <0x113>	
-    <1b9>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1bc>: Abbrev Number: 0
- <1><1bd>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <1be>   DW_AT_byte_size   : 4	
-    <1bf>   DW_AT_type        : <0x108>	
- <1><1c3>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1c4>   DW_AT_name        : (indirect string, offset: 0x75): struct_btrfs_ioctl_send_args	
-    <1c8>   DW_AT_decl_file   : 4	
-    <1c9>   DW_AT_decl_line   : 38	
-    <1ca>   DW_AT_type        : <0x155>	
- <1><1ce>: Abbrev Number: 18 (DW_TAG_variable)
-    <1cf>   DW_AT_name        : (indirect string, offset: 0x121): current_wordsize	
-    <1d3>   DW_AT_decl_file   : 5	
-    <1d4>   DW_AT_decl_line   : 757	
-    <1d6>   DW_AT_type        : <0x47>	
-    <1da>   DW_AT_external    : 1	
-    <1db>   DW_AT_declaration : 1	
- <1><1dc>: Abbrev Number: 18 (DW_TAG_variable)
-    <1dd>   DW_AT_name        : (indirect string, offset: 0x11a): sysent	
-    <1e1>   DW_AT_decl_file   : 5	
-    <1e2>   DW_AT_decl_line   : 892	
-    <1e4>   DW_AT_type        : <0xeb>	
-    <1e8>   DW_AT_external    : 1	
-    <1e9>   DW_AT_declaration : 1	
- <1><1ea>: Abbrev Number: 18 (DW_TAG_variable)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0x21a): nsyscalls	
-    <1ef>   DW_AT_decl_file   : 5	
-    <1f0>   DW_AT_decl_line   : 903	
-    <1f2>   DW_AT_type        : <0x47>	
-    <1f6>   DW_AT_external    : 1	
-    <1f7>   DW_AT_declaration : 1	
- <1><1f8>: Abbrev Number: 19 (DW_TAG_variable)
-    <1f9>   DW_AT_name        : (indirect string, offset: 0xa8): mpers_target_var	
-    <1fd>   DW_AT_decl_file   : 4	
-    <1fe>   DW_AT_decl_line   : 46	
-    <1ff>   DW_AT_type        : <0x1c3>	
-    <203>   DW_AT_external    : 1	
-    <204>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><20a>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_btrfs_ioctl_send_args.d2 b/mpers-m32/struct_btrfs_ioctl_send_args.d2
deleted file mode 100644
index 7733f61..0000000
--- a/mpers-m32/struct_btrfs_ioctl_send_args.d2
+++ /dev/null
@@ -1,279 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x2aa): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x62): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xc3): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd1): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x4f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x19f): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2bf): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2a1): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xdf): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x22a): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1c0): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x11a): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x132): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb9): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2b6): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6c): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b2): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x26): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2d6): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x224): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x123>
-<2><11c>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><123>
-Abbrev Number: 14 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x1c5): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x155>
-<2><130>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2c): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><136>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x24d): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><13c>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x233): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><142>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x180): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><148>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x266): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><14e>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xc): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><155>
-Abbrev Number: 16 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x92): btrfs_ioctl_send_args
-DW_AT_byte_size   : 68
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 466
-DW_AT_sibling     : <0x1bd>
-<2><162>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x299): send_fd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 467
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><171>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x285): clone_sources_count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 468
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1db): clone_sources
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 469
-DW_AT_type        : <0x1bd>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><18f>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): parent_root
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 470
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><19e>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ac): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 471
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><1ad>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x46): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 472
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><1bd>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x108>
-<1><1c3>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x75): struct_btrfs_ioctl_send_args
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x155>
-<1><1ce>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x121): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1dc>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11a): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1ea>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x21a): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1f8>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa8): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x1c3>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_btrfs_ioctl_vol_args_v2.c b/mpers-m32/struct_btrfs_ioctl_vol_args_v2.c
index 0229a3b..977a309 100644
--- a/mpers-m32/struct_btrfs_ioctl_vol_args_v2.c
+++ b/mpers-m32/struct_btrfs_ioctl_vol_args_v2.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/struct_btrfs_ioctl_vol_args_v2.d1 b/mpers-m32/struct_btrfs_ioctl_vol_args_v2.d1
deleted file mode 100644
index 9d444e2..0000000
--- a/mpers-m32/struct_btrfs_ioctl_vol_args_v2.d1
+++ /dev/null
@@ -1,363 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2fe (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x145): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x6b): mpers-m32/struct_btrfs_ioctl_vol_args_v2.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x200): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x32a): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x2ce): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe4): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x96): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1c4): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xcd): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x302): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xfb): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x250): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x1e5): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x10d): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x2e4): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xc3): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x33b): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0xa9): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x1d7): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x4b): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x344): __s64	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 29	
-    <104>   DW_AT_type        : <0x32>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x24a): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x38): btrfs_qgroup_limit	
-    <118>   DW_AT_byte_size   : 40	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 44	
-    <11b>   DW_AT_sibling     : <0x166>	
- <2><11f>: Abbrev Number: 7 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0x1d1): flags	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 45	
-    <126>   DW_AT_type        : <0x108>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 7 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0xf2): max_rfer	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 46	
-    <134>   DW_AT_type        : <0x108>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13b>: Abbrev Number: 7 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x1ac): max_excl	
-    <140>   DW_AT_decl_file   : 3	
-    <141>   DW_AT_decl_line   : 47	
-    <142>   DW_AT_type        : <0x108>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><149>: Abbrev Number: 7 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x2c5): rsv_rfer	
-    <14e>   DW_AT_decl_file   : 3	
-    <14f>   DW_AT_decl_line   : 48	
-    <150>   DW_AT_type        : <0x108>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><157>: Abbrev Number: 7 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x114): rsv_excl	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 49	
-    <15e>   DW_AT_type        : <0x108>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><165>: Abbrev Number: 0
- <1><166>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <167>   DW_AT_name        : (indirect string, offset: 0x28c): btrfs_qgroup_inherit	
-    <16b>   DW_AT_byte_size   : 72	
-    <16c>   DW_AT_decl_file   : 3	
-    <16d>   DW_AT_decl_line   : 52	
-    <16e>   DW_AT_sibling     : <0x1c7>	
- <2><172>: Abbrev Number: 7 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x1d1): flags	
-    <177>   DW_AT_decl_file   : 3	
-    <178>   DW_AT_decl_line   : 53	
-    <179>   DW_AT_type        : <0x108>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><180>: Abbrev Number: 7 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x2d8): num_qgroups	
-    <185>   DW_AT_decl_file   : 3	
-    <186>   DW_AT_decl_line   : 54	
-    <187>   DW_AT_type        : <0x108>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><18e>: Abbrev Number: 7 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0x12e): num_ref_copies	
-    <193>   DW_AT_decl_file   : 3	
-    <194>   DW_AT_decl_line   : 55	
-    <195>   DW_AT_type        : <0x108>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 7 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0xe): num_excl_copies	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 56	
-    <1a3>   DW_AT_type        : <0x108>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1aa>: Abbrev Number: 8 (DW_TAG_member)
-    <1ab>   DW_AT_name        : lim	
-    <1af>   DW_AT_decl_file   : 3	
-    <1b0>   DW_AT_decl_line   : 57	
-    <1b1>   DW_AT_type        : <0x113>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1b8>: Abbrev Number: 7 (DW_TAG_member)
-    <1b9>   DW_AT_name        : (indirect string, offset: 0x231): qgroups	
-    <1bd>   DW_AT_decl_file   : 3	
-    <1be>   DW_AT_decl_line   : 58	
-    <1bf>   DW_AT_type        : <0x1c7>	
-    <1c3>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1c6>: Abbrev Number: 0
- <1><1c7>: Abbrev Number: 12 (DW_TAG_array_type)
-    <1c8>   DW_AT_type        : <0x108>	
-    <1cc>   DW_AT_sibling     : <0x1d6>	
- <2><1d0>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <1d1>   DW_AT_type        : <0x63>	
- <2><1d5>: Abbrev Number: 0
- <1><1d6>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <1d7>   DW_AT_byte_size   : 12	
-    <1d8>   DW_AT_decl_file   : 3	
-    <1d9>   DW_AT_decl_line   : 72	
-    <1da>   DW_AT_sibling     : <0x1fb>	
- <2><1de>: Abbrev Number: 7 (DW_TAG_member)
-    <1df>   DW_AT_name        : (indirect string, offset: 0x336): size	
-    <1e3>   DW_AT_decl_file   : 3	
-    <1e4>   DW_AT_decl_line   : 73	
-    <1e5>   DW_AT_type        : <0x108>	
-    <1e9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1ec>: Abbrev Number: 7 (DW_TAG_member)
-    <1ed>   DW_AT_name        : (indirect string, offset: 0x1b5): qgroup_inherit	
-    <1f1>   DW_AT_decl_file   : 3	
-    <1f2>   DW_AT_decl_line   : 74	
-    <1f3>   DW_AT_type        : <0x1fb>	
-    <1f7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1fa>: Abbrev Number: 0
- <1><1fb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <1fc>   DW_AT_byte_size   : 4	
-    <1fd>   DW_AT_type        : <0x166>	
- <1><201>: Abbrev Number: 15 (DW_TAG_union_type)
-    <202>   DW_AT_byte_size   : 32	
-    <203>   DW_AT_decl_file   : 3	
-    <204>   DW_AT_decl_line   : 71	
-    <205>   DW_AT_sibling     : <0x21a>	
- <2><209>: Abbrev Number: 16 (DW_TAG_member)
-    <20a>   DW_AT_type        : <0x1d6>	
- <2><20e>: Abbrev Number: 17 (DW_TAG_member)
-    <20f>   DW_AT_name        : (indirect string, offset: 0x243): unused	
-    <213>   DW_AT_decl_file   : 3	
-    <214>   DW_AT_decl_line   : 76	
-    <215>   DW_AT_type        : <0x21a>	
- <2><219>: Abbrev Number: 0
- <1><21a>: Abbrev Number: 12 (DW_TAG_array_type)
-    <21b>   DW_AT_type        : <0x108>	
-    <21f>   DW_AT_sibling     : <0x22a>	
- <2><223>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <224>   DW_AT_type        : <0x63>	
-    <228>   DW_AT_upper_bound : 3	
- <2><229>: Abbrev Number: 0
- <1><22a>: Abbrev Number: 19 (DW_TAG_structure_type)
-    <22b>   DW_AT_name        : (indirect string, offset: 0x2ea): btrfs_ioctl_vol_args_v2	
-    <22f>   DW_AT_byte_size   : 4096	
-    <231>   DW_AT_decl_file   : 3	
-    <232>   DW_AT_decl_line   : 67	
-    <233>   DW_AT_sibling     : <0x277>	
- <2><237>: Abbrev Number: 8 (DW_TAG_member)
-    <238>   DW_AT_name        : fd	
-    <23b>   DW_AT_decl_file   : 3	
-    <23c>   DW_AT_decl_line   : 68	
-    <23d>   DW_AT_type        : <0xfd>	
-    <241>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><244>: Abbrev Number: 7 (DW_TAG_member)
-    <245>   DW_AT_name        : (indirect string, offset: 0x13d): transid	
-    <249>   DW_AT_decl_file   : 3	
-    <24a>   DW_AT_decl_line   : 69	
-    <24b>   DW_AT_type        : <0x108>	
-    <24f>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><252>: Abbrev Number: 7 (DW_TAG_member)
-    <253>   DW_AT_name        : (indirect string, offset: 0x1d1): flags	
-    <257>   DW_AT_decl_file   : 3	
-    <258>   DW_AT_decl_line   : 70	
-    <259>   DW_AT_type        : <0x108>	
-    <25d>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><260>: Abbrev Number: 20 (DW_TAG_member)
-    <261>   DW_AT_type        : <0x201>	
-    <265>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><268>: Abbrev Number: 7 (DW_TAG_member)
-    <269>   DW_AT_name        : (indirect string, offset: 0x2a1): name	
-    <26d>   DW_AT_decl_file   : 3	
-    <26e>   DW_AT_decl_line   : 78	
-    <26f>   DW_AT_type        : <0x277>	
-    <273>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><276>: Abbrev Number: 0
- <1><277>: Abbrev Number: 12 (DW_TAG_array_type)
-    <278>   DW_AT_type        : <0x6a>	
-    <27c>   DW_AT_sibling     : <0x288>	
- <2><280>: Abbrev Number: 21 (DW_TAG_subrange_type)
-    <281>   DW_AT_type        : <0x63>	
-    <285>   DW_AT_upper_bound : 4039	
- <2><287>: Abbrev Number: 0
- <1><288>: Abbrev Number: 22 (DW_TAG_enumeration_type)
-    <289>   DW_AT_name        : (indirect string, offset: 0x1ea): btrfs_dev_stat_values	
-    <28d>   DW_AT_byte_size   : 4	
-    <28e>   DW_AT_decl_file   : 3	
-    <28f>   DW_AT_decl_line   : 369	
-    <291>   DW_AT_sibling     : <0x2ba>	
- <2><295>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <296>   DW_AT_name        : (indirect string, offset: 0x51): BTRFS_DEV_STAT_WRITE_ERRS	
-    <29a>   DW_AT_const_value : 0	
- <2><29b>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <29c>   DW_AT_name        : (indirect string, offset: 0x273): BTRFS_DEV_STAT_READ_ERRS	
-    <2a0>   DW_AT_const_value : 1	
- <2><2a1>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2a2>   DW_AT_name        : (indirect string, offset: 0x259): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <2a6>   DW_AT_const_value : 2	
- <2><2a7>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2a8>   DW_AT_name        : (indirect string, offset: 0x18d): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <2ac>   DW_AT_const_value : 3	
- <2><2ad>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2ae>   DW_AT_name        : (indirect string, offset: 0x2a6): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <2b2>   DW_AT_const_value : 4	
- <2><2b3>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2b4>   DW_AT_name        : (indirect string, offset: 0x1e): BTRFS_DEV_STAT_VALUES_MAX	
-    <2b8>   DW_AT_const_value : 5	
- <2><2b9>: Abbrev Number: 0
- <1><2ba>: Abbrev Number: 11 (DW_TAG_typedef)
-    <2bb>   DW_AT_name        : (indirect string, offset: 0x30b): struct_btrfs_ioctl_vol_args_v2	
-    <2bf>   DW_AT_decl_file   : 4	
-    <2c0>   DW_AT_decl_line   : 42	
-    <2c1>   DW_AT_type        : <0x22a>	
- <1><2c5>: Abbrev Number: 24 (DW_TAG_variable)
-    <2c6>   DW_AT_name        : (indirect string, offset: 0x11d): current_wordsize	
-    <2ca>   DW_AT_decl_file   : 5	
-    <2cb>   DW_AT_decl_line   : 757	
-    <2cd>   DW_AT_type        : <0x47>	
-    <2d1>   DW_AT_external    : 1	
-    <2d2>   DW_AT_declaration : 1	
- <1><2d3>: Abbrev Number: 24 (DW_TAG_variable)
-    <2d4>   DW_AT_name        : (indirect string, offset: 0x10d): sysent	
-    <2d8>   DW_AT_decl_file   : 5	
-    <2d9>   DW_AT_decl_line   : 892	
-    <2db>   DW_AT_type        : <0xeb>	
-    <2df>   DW_AT_external    : 1	
-    <2e0>   DW_AT_declaration : 1	
- <1><2e1>: Abbrev Number: 24 (DW_TAG_variable)
-    <2e2>   DW_AT_name        : (indirect string, offset: 0x239): nsyscalls	
-    <2e6>   DW_AT_decl_file   : 5	
-    <2e7>   DW_AT_decl_line   : 903	
-    <2e9>   DW_AT_type        : <0x47>	
-    <2ed>   DW_AT_external    : 1	
-    <2ee>   DW_AT_declaration : 1	
- <1><2ef>: Abbrev Number: 25 (DW_TAG_variable)
-    <2f0>   DW_AT_name        : (indirect string, offset: 0xb2): mpers_target_var	
-    <2f4>   DW_AT_decl_file   : 4	
-    <2f5>   DW_AT_decl_line   : 46	
-    <2f6>   DW_AT_type        : <0x2ba>	
-    <2fa>   DW_AT_external    : 1	
-    <2fb>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><301>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_btrfs_ioctl_vol_args_v2.d2 b/mpers-m32/struct_btrfs_ioctl_vol_args_v2.d2
deleted file mode 100644
index 61020c6..0000000
--- a/mpers-m32/struct_btrfs_ioctl_vol_args_v2.d2
+++ /dev/null
@@ -1,410 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x32a): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2ce): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe4): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x96): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c4): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xcd): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x302): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xfb): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x250): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e5): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x10d): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e4): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc3): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x33b): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa9): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d7): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x4b): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x344): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x24a): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x38): btrfs_qgroup_limit
-DW_AT_byte_size   : 40
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_sibling     : <0x166>
-<2><11f>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d1): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf2): max_rfer
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><13b>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ac): max_excl
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><149>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c5): rsv_rfer
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><157>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x114): rsv_excl
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<1><166>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x28c): btrfs_qgroup_inherit
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 52
-DW_AT_sibling     : <0x1c7>
-<2><172>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d1): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><180>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d8): num_qgroups
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><18e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12e): num_ref_copies
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe): num_excl_copies
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : lim
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1b8>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x231): qgroups
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x1c7>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<1><1c7>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x1d6>
-<2><1d0>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-<1><1d6>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 72
-DW_AT_sibling     : <0x1fb>
-<2><1de>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x336): size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 73
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1ec>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b5): qgroup_inherit
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 74
-DW_AT_type        : <0x1fb>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><1fb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x166>
-<1><201>
-Abbrev Number: 15 (DW_TAG_union_type)
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 71
-DW_AT_sibling     : <0x21a>
-<2><209>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1d6>
-<2><20e>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x243): unused
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 76
-DW_AT_type        : <0x21a>
-<1><21a>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x22a>
-<2><223>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><22a>
-Abbrev Number: 19 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2ea): btrfs_ioctl_vol_args_v2
-DW_AT_byte_size   : 4096
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 67
-DW_AT_sibling     : <0x277>
-<2><237>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : fd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 68
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><244>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13d): transid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 69
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><252>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d1): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 70
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><260>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_type        : <0x201>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><268>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2a1): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 78
-DW_AT_type        : <0x277>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<1><277>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x288>
-<2><280>
-Abbrev Number: 21 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 4039
-<1><288>
-Abbrev Number: 22 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x1ea): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x2ba>
-<2><295>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x51): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><29b>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x273): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><2a1>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x259): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><2a7>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x18d): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><2ad>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2a6): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><2b3>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1e): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><2ba>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x30b): struct_btrfs_ioctl_vol_args_v2
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x22a>
-<1><2c5>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11d): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2d3>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x10d): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2e1>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x239): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2ef>
-Abbrev Number: 25 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xb2): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x2ba>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_ff_effect.d1 b/mpers-m32/struct_ff_effect.d1
deleted file mode 100644
index bab888e..0000000
--- a/mpers-m32/struct_ff_effect.d1
+++ /dev/null
@@ -1,489 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x446 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xb): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xd5): mpers-m32/struct_ff_effect.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x35f): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ee): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x7b): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x140): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x1da): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x256): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x335): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x20b): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x166): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x2b0): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x85): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x27f): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x318): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x1e8): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x238): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x5f): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0xc6): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x2da): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x2a4): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x2c2): __s16	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 22	
-    <104>   DW_AT_type        : <0x24>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x2aa): __u16	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 23	
-    <10f>   DW_AT_type        : <0x40>	
- <1><113>: Abbrev Number: 11 (DW_TAG_typedef)
-    <114>   DW_AT_name        : (indirect string, offset: 0x11d): __u32	
-    <118>   DW_AT_decl_file   : 2	
-    <119>   DW_AT_decl_line   : 26	
-    <11a>   DW_AT_type        : <0x47>	
- <1><11e>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x32b): ff_replay	
-    <123>   DW_AT_byte_size   : 4	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 974	
-    <127>   DW_AT_sibling     : <0x14a>	
- <2><12b>: Abbrev Number: 13 (DW_TAG_member)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x1c8): length	
-    <130>   DW_AT_decl_file   : 3	
-    <131>   DW_AT_decl_line   : 975	
-    <133>   DW_AT_type        : <0x108>	
-    <137>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><13a>: Abbrev Number: 13 (DW_TAG_member)
-    <13b>   DW_AT_name        : (indirect string, offset: 0xcf): delay	
-    <13f>   DW_AT_decl_file   : 3	
-    <140>   DW_AT_decl_line   : 976	
-    <142>   DW_AT_type        : <0x108>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><149>: Abbrev Number: 0
- <1><14a>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0xf2): ff_trigger	
-    <14f>   DW_AT_byte_size   : 4	
-    <150>   DW_AT_decl_file   : 3	
-    <151>   DW_AT_decl_line   : 984	
-    <153>   DW_AT_sibling     : <0x176>	
- <2><157>: Abbrev Number: 13 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x193): button	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 985	
-    <15f>   DW_AT_type        : <0x108>	
-    <163>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><166>: Abbrev Number: 13 (DW_TAG_member)
-    <167>   DW_AT_name        : (indirect string, offset: 0x2d1): interval	
-    <16b>   DW_AT_decl_file   : 3	
-    <16c>   DW_AT_decl_line   : 986	
-    <16e>   DW_AT_type        : <0x108>	
-    <172>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><175>: Abbrev Number: 0
- <1><176>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <177>   DW_AT_name        : (indirect string, offset: 0x273): ff_envelope	
-    <17b>   DW_AT_byte_size   : 8	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 1001	
-    <17f>   DW_AT_sibling     : <0x1c0>	
- <2><183>: Abbrev Number: 13 (DW_TAG_member)
-    <184>   DW_AT_name        : (indirect string, offset: 0x123): attack_length	
-    <188>   DW_AT_decl_file   : 3	
-    <189>   DW_AT_decl_line   : 1002	
-    <18b>   DW_AT_type        : <0x108>	
-    <18f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><192>: Abbrev Number: 13 (DW_TAG_member)
-    <193>   DW_AT_name        : (indirect string, offset: 0xfd): attack_level	
-    <197>   DW_AT_decl_file   : 3	
-    <198>   DW_AT_decl_line   : 1003	
-    <19a>   DW_AT_type        : <0x108>	
-    <19e>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><1a1>: Abbrev Number: 13 (DW_TAG_member)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x111): fade_length	
-    <1a6>   DW_AT_decl_file   : 3	
-    <1a7>   DW_AT_decl_line   : 1004	
-    <1a9>   DW_AT_type        : <0x108>	
-    <1ad>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1b0>: Abbrev Number: 13 (DW_TAG_member)
-    <1b1>   DW_AT_name        : (indirect string, offset: 0x1cf): fade_level	
-    <1b5>   DW_AT_decl_file   : 3	
-    <1b6>   DW_AT_decl_line   : 1005	
-    <1b8>   DW_AT_type        : <0x108>	
-    <1bc>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><1bf>: Abbrev Number: 0
- <1><1c0>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <1c1>   DW_AT_name        : (indirect string, offset: 0x1a1): ff_constant_effect	
-    <1c5>   DW_AT_byte_size   : 10	
-    <1c6>   DW_AT_decl_file   : 3	
-    <1c7>   DW_AT_decl_line   : 1013	
-    <1c9>   DW_AT_sibling     : <0x1ec>	
- <2><1cd>: Abbrev Number: 13 (DW_TAG_member)
-    <1ce>   DW_AT_name        : (indirect string, offset: 0x2e8): level	
-    <1d2>   DW_AT_decl_file   : 3	
-    <1d3>   DW_AT_decl_line   : 1014	
-    <1d5>   DW_AT_type        : <0xfd>	
-    <1d9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1dc>: Abbrev Number: 13 (DW_TAG_member)
-    <1dd>   DW_AT_name        : (indirect string, offset: 0x30f): envelope	
-    <1e1>   DW_AT_decl_file   : 3	
-    <1e2>   DW_AT_decl_line   : 1015	
-    <1e4>   DW_AT_type        : <0x176>	
-    <1e8>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><1eb>: Abbrev Number: 0
- <1><1ec>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <1ed>   DW_AT_name        : (indirect string, offset: 0x131): ff_ramp_effect	
-    <1f1>   DW_AT_byte_size   : 12	
-    <1f2>   DW_AT_decl_file   : 3	
-    <1f3>   DW_AT_decl_line   : 1024	
-    <1f5>   DW_AT_sibling     : <0x227>	
- <2><1f9>: Abbrev Number: 13 (DW_TAG_member)
-    <1fa>   DW_AT_name        : (indirect string, offset: 0x16f): start_level	
-    <1fe>   DW_AT_decl_file   : 3	
-    <1ff>   DW_AT_decl_line   : 1025	
-    <201>   DW_AT_type        : <0xfd>	
-    <205>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><208>: Abbrev Number: 13 (DW_TAG_member)
-    <209>   DW_AT_name        : (indirect string, offset: 0x1be): end_level	
-    <20d>   DW_AT_decl_file   : 3	
-    <20e>   DW_AT_decl_line   : 1026	
-    <210>   DW_AT_type        : <0xfd>	
-    <214>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><217>: Abbrev Number: 13 (DW_TAG_member)
-    <218>   DW_AT_name        : (indirect string, offset: 0x30f): envelope	
-    <21c>   DW_AT_decl_file   : 3	
-    <21d>   DW_AT_decl_line   : 1027	
-    <21f>   DW_AT_type        : <0x176>	
-    <223>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><226>: Abbrev Number: 0
- <1><227>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <228>   DW_AT_name        : (indirect string, offset: 0x97): ff_condition_effect	
-    <22c>   DW_AT_byte_size   : 12	
-    <22d>   DW_AT_decl_file   : 3	
-    <22e>   DW_AT_decl_line   : 1040	
-    <230>   DW_AT_sibling     : <0x28f>	
- <2><234>: Abbrev Number: 13 (DW_TAG_member)
-    <235>   DW_AT_name        : (indirect string, offset: 0x2ee): right_saturation	
-    <239>   DW_AT_decl_file   : 3	
-    <23a>   DW_AT_decl_line   : 1041	
-    <23c>   DW_AT_type        : <0x108>	
-    <240>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><243>: Abbrev Number: 13 (DW_TAG_member)
-    <244>   DW_AT_name        : (indirect string, offset: 0x2ff): left_saturation	
-    <248>   DW_AT_decl_file   : 3	
-    <249>   DW_AT_decl_line   : 1042	
-    <24b>   DW_AT_type        : <0x108>	
-    <24f>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><252>: Abbrev Number: 13 (DW_TAG_member)
-    <253>   DW_AT_name        : (indirect string, offset: 0x342): right_coeff	
-    <257>   DW_AT_decl_file   : 3	
-    <258>   DW_AT_decl_line   : 1044	
-    <25a>   DW_AT_type        : <0xfd>	
-    <25e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><261>: Abbrev Number: 13 (DW_TAG_member)
-    <262>   DW_AT_name        : (indirect string, offset: 0x0): left_coeff	
-    <266>   DW_AT_decl_file   : 3	
-    <267>   DW_AT_decl_line   : 1045	
-    <269>   DW_AT_type        : <0xfd>	
-    <26d>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><270>: Abbrev Number: 13 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x390): deadband	
-    <275>   DW_AT_decl_file   : 3	
-    <276>   DW_AT_decl_line   : 1047	
-    <278>   DW_AT_type        : <0x108>	
-    <27c>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><27f>: Abbrev Number: 13 (DW_TAG_member)
-    <280>   DW_AT_name        : (indirect string, offset: 0x58): center	
-    <284>   DW_AT_decl_file   : 3	
-    <285>   DW_AT_decl_line   : 1048	
-    <287>   DW_AT_type        : <0xfd>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><28e>: Abbrev Number: 0
- <1><28f>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <290>   DW_AT_name        : (indirect string, offset: 0x68): ff_periodic_effect	
-    <294>   DW_AT_byte_size   : 28	
-    <295>   DW_AT_decl_file   : 3	
-    <296>   DW_AT_decl_line   : 1069	
-    <298>   DW_AT_sibling     : <0x315>	
- <2><29c>: Abbrev Number: 13 (DW_TAG_member)
-    <29d>   DW_AT_name        : (indirect string, offset: 0x2c8): waveform	
-    <2a1>   DW_AT_decl_file   : 3	
-    <2a2>   DW_AT_decl_line   : 1070	
-    <2a4>   DW_AT_type        : <0x108>	
-    <2a8>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2ab>: Abbrev Number: 13 (DW_TAG_member)
-    <2ac>   DW_AT_name        : (indirect string, offset: 0x19a): period	
-    <2b0>   DW_AT_decl_file   : 3	
-    <2b1>   DW_AT_decl_line   : 1071	
-    <2b3>   DW_AT_type        : <0x108>	
-    <2b7>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><2ba>: Abbrev Number: 13 (DW_TAG_member)
-    <2bb>   DW_AT_name        : (indirect string, offset: 0x1b4): magnitude	
-    <2bf>   DW_AT_decl_file   : 3	
-    <2c0>   DW_AT_decl_line   : 1072	
-    <2c2>   DW_AT_type        : <0xfd>	
-    <2c6>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2c9>: Abbrev Number: 13 (DW_TAG_member)
-    <2ca>   DW_AT_name        : (indirect string, offset: 0x18c): offset	
-    <2ce>   DW_AT_decl_file   : 3	
-    <2cf>   DW_AT_decl_line   : 1073	
-    <2d1>   DW_AT_type        : <0xfd>	
-    <2d5>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><2d8>: Abbrev Number: 13 (DW_TAG_member)
-    <2d9>   DW_AT_name        : (indirect string, offset: 0xb6): phase	
-    <2dd>   DW_AT_decl_file   : 3	
-    <2de>   DW_AT_decl_line   : 1074	
-    <2e0>   DW_AT_type        : <0x108>	
-    <2e4>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><2e7>: Abbrev Number: 13 (DW_TAG_member)
-    <2e8>   DW_AT_name        : (indirect string, offset: 0x30f): envelope	
-    <2ec>   DW_AT_decl_file   : 3	
-    <2ed>   DW_AT_decl_line   : 1076	
-    <2ef>   DW_AT_type        : <0x176>	
-    <2f3>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><2f6>: Abbrev Number: 13 (DW_TAG_member)
-    <2f7>   DW_AT_name        : (indirect string, offset: 0xab): custom_len	
-    <2fb>   DW_AT_decl_file   : 3	
-    <2fc>   DW_AT_decl_line   : 1078	
-    <2fe>   DW_AT_type        : <0x113>	
-    <302>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><305>: Abbrev Number: 13 (DW_TAG_member)
-    <306>   DW_AT_name        : (indirect string, offset: 0x31f): custom_data	
-    <30a>   DW_AT_decl_file   : 3	
-    <30b>   DW_AT_decl_line   : 1079	
-    <30d>   DW_AT_type        : <0x315>	
-    <311>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><314>: Abbrev Number: 0
- <1><315>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <316>   DW_AT_byte_size   : 4	
-    <317>   DW_AT_type        : <0xfd>	
- <1><31b>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <31c>   DW_AT_name        : (indirect string, offset: 0x227): ff_rumble_effect	
-    <320>   DW_AT_byte_size   : 4	
-    <321>   DW_AT_decl_file   : 3	
-    <322>   DW_AT_decl_line   : 1090	
-    <324>   DW_AT_sibling     : <0x347>	
- <2><328>: Abbrev Number: 13 (DW_TAG_member)
-    <329>   DW_AT_name        : (indirect string, offset: 0x14e): strong_magnitude	
-    <32d>   DW_AT_decl_file   : 3	
-    <32e>   DW_AT_decl_line   : 1091	
-    <330>   DW_AT_type        : <0x108>	
-    <334>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><337>: Abbrev Number: 13 (DW_TAG_member)
-    <338>   DW_AT_name        : (indirect string, offset: 0x28d): weak_magnitude	
-    <33c>   DW_AT_decl_file   : 3	
-    <33d>   DW_AT_decl_line   : 1092	
-    <33f>   DW_AT_type        : <0x108>	
-    <343>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><346>: Abbrev Number: 0
- <1><347>: Abbrev Number: 14 (DW_TAG_union_type)
-    <348>   DW_AT_byte_size   : 28	
-    <349>   DW_AT_decl_file   : 3	
-    <34a>   DW_AT_decl_line   : 1125	
-    <34c>   DW_AT_sibling     : <0x38d>	
- <2><350>: Abbrev Number: 15 (DW_TAG_member)
-    <351>   DW_AT_name        : (indirect string, offset: 0x284): constant	
-    <355>   DW_AT_decl_file   : 3	
-    <356>   DW_AT_decl_line   : 1126	
-    <358>   DW_AT_type        : <0x1c0>	
- <2><35c>: Abbrev Number: 15 (DW_TAG_member)
-    <35d>   DW_AT_name        : (indirect string, offset: 0x53): ramp	
-    <361>   DW_AT_decl_file   : 3	
-    <362>   DW_AT_decl_line   : 1127	
-    <364>   DW_AT_type        : <0x1ec>	
- <2><368>: Abbrev Number: 15 (DW_TAG_member)
-    <369>   DW_AT_name        : (indirect string, offset: 0x8e): periodic	
-    <36d>   DW_AT_decl_file   : 3	
-    <36e>   DW_AT_decl_line   : 1128	
-    <370>   DW_AT_type        : <0x28f>	
- <2><374>: Abbrev Number: 15 (DW_TAG_member)
-    <375>   DW_AT_name        : (indirect string, offset: 0x269): condition	
-    <379>   DW_AT_decl_file   : 3	
-    <37a>   DW_AT_decl_line   : 1129	
-    <37c>   DW_AT_type        : <0x38d>	
- <2><380>: Abbrev Number: 15 (DW_TAG_member)
-    <381>   DW_AT_name        : (indirect string, offset: 0x10a): rumble	
-    <385>   DW_AT_decl_file   : 3	
-    <386>   DW_AT_decl_line   : 1130	
-    <388>   DW_AT_type        : <0x31b>	
- <2><38c>: Abbrev Number: 0
- <1><38d>: Abbrev Number: 16 (DW_TAG_array_type)
-    <38e>   DW_AT_type        : <0x227>	
-    <392>   DW_AT_sibling     : <0x39d>	
- <2><396>: Abbrev Number: 17 (DW_TAG_subrange_type)
-    <397>   DW_AT_type        : <0x63>	
-    <39b>   DW_AT_upper_bound : 1	
- <2><39c>: Abbrev Number: 0
- <1><39d>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <39e>   DW_AT_name        : (indirect string, offset: 0x242): ff_effect	
-    <3a2>   DW_AT_byte_size   : 44	
-    <3a3>   DW_AT_decl_file   : 3	
-    <3a4>   DW_AT_decl_line   : 1118	
-    <3a6>   DW_AT_sibling     : <0x402>	
- <2><3aa>: Abbrev Number: 13 (DW_TAG_member)
-    <3ab>   DW_AT_name        : (indirect string, offset: 0x222): type	
-    <3af>   DW_AT_decl_file   : 3	
-    <3b0>   DW_AT_decl_line   : 1119	
-    <3b2>   DW_AT_type        : <0x108>	
-    <3b6>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><3b9>: Abbrev Number: 18 (DW_TAG_member)
-    <3ba>   DW_AT_name        : id	
-    <3bd>   DW_AT_decl_file   : 3	
-    <3be>   DW_AT_decl_line   : 1120	
-    <3c0>   DW_AT_type        : <0xfd>	
-    <3c4>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><3c7>: Abbrev Number: 13 (DW_TAG_member)
-    <3c8>   DW_AT_name        : (indirect string, offset: 0xbc): direction	
-    <3cc>   DW_AT_decl_file   : 3	
-    <3cd>   DW_AT_decl_line   : 1121	
-    <3cf>   DW_AT_type        : <0x108>	
-    <3d3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3d6>: Abbrev Number: 13 (DW_TAG_member)
-    <3d7>   DW_AT_name        : (indirect string, offset: 0x29c): trigger	
-    <3db>   DW_AT_decl_file   : 3	
-    <3dc>   DW_AT_decl_line   : 1122	
-    <3de>   DW_AT_type        : <0x14a>	
-    <3e2>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><3e5>: Abbrev Number: 13 (DW_TAG_member)
-    <3e6>   DW_AT_name        : (indirect string, offset: 0x15f): replay	
-    <3ea>   DW_AT_decl_file   : 3	
-    <3eb>   DW_AT_decl_line   : 1123	
-    <3ed>   DW_AT_type        : <0x11e>	
-    <3f1>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><3f4>: Abbrev Number: 18 (DW_TAG_member)
-    <3f5>   DW_AT_name        : u	
-    <3f7>   DW_AT_decl_file   : 3	
-    <3f8>   DW_AT_decl_line   : 1131	
-    <3fa>   DW_AT_type        : <0x347>	
-    <3fe>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><401>: Abbrev Number: 0
- <1><402>: Abbrev Number: 11 (DW_TAG_typedef)
-    <403>   DW_AT_name        : (indirect string, offset: 0x34e): struct_ff_effect	
-    <407>   DW_AT_decl_file   : 4	
-    <408>   DW_AT_decl_line   : 37	
-    <409>   DW_AT_type        : <0x39d>	
- <1><40d>: Abbrev Number: 19 (DW_TAG_variable)
-    <40e>   DW_AT_name        : (indirect string, offset: 0x1fa): current_wordsize	
-    <412>   DW_AT_decl_file   : 5	
-    <413>   DW_AT_decl_line   : 757	
-    <415>   DW_AT_type        : <0x47>	
-    <419>   DW_AT_external    : 1	
-    <41a>   DW_AT_declaration : 1	
- <1><41b>: Abbrev Number: 19 (DW_TAG_variable)
-    <41c>   DW_AT_name        : (indirect string, offset: 0x318): sysent	
-    <420>   DW_AT_decl_file   : 5	
-    <421>   DW_AT_decl_line   : 892	
-    <423>   DW_AT_type        : <0xeb>	
-    <427>   DW_AT_external    : 1	
-    <428>   DW_AT_declaration : 1	
- <1><429>: Abbrev Number: 19 (DW_TAG_variable)
-    <42a>   DW_AT_name        : (indirect string, offset: 0x24c): nsyscalls	
-    <42e>   DW_AT_decl_file   : 5	
-    <42f>   DW_AT_decl_line   : 903	
-    <431>   DW_AT_type        : <0x47>	
-    <435>   DW_AT_external    : 1	
-    <436>   DW_AT_declaration : 1	
- <1><437>: Abbrev Number: 20 (DW_TAG_variable)
-    <438>   DW_AT_name        : (indirect string, offset: 0x17b): mpers_target_var	
-    <43c>   DW_AT_decl_file   : 4	
-    <43d>   DW_AT_decl_line   : 41	
-    <43e>   DW_AT_type        : <0x402>	
-    <442>   DW_AT_external    : 1	
-    <443>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><449>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_ff_effect.d2 b/mpers-m32/struct_ff_effect.d2
deleted file mode 100644
index e988948..0000000
--- a/mpers-m32/struct_ff_effect.d2
+++ /dev/null
@@ -1,549 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ee): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x7b): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x140): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x1da): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x256): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x335): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x20b): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x166): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2b0): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x85): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x27f): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x318): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e8): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x238): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5f): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc6): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2da): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2a4): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2c2): __s16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 22
-DW_AT_type        : <0x24>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2aa): __u16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><113>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11d): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><11e>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x32b): ff_replay
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 974
-DW_AT_sibling     : <0x14a>
-<2><12b>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c8): length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 975
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><13a>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcf): delay
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 976
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><14a>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf2): ff_trigger
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 984
-DW_AT_sibling     : <0x176>
-<2><157>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x193): button
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 985
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><166>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d1): interval
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 986
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><176>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x273): ff_envelope
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1001
-DW_AT_sibling     : <0x1c0>
-<2><183>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x123): attack_length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1002
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><192>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfd): attack_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1003
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><1a1>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x111): fade_length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1004
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1b0>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cf): fade_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1005
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<1><1c0>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1a1): ff_constant_effect
-DW_AT_byte_size   : 10
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1013
-DW_AT_sibling     : <0x1ec>
-<2><1cd>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e8): level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1014
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1dc>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x30f): envelope
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1015
-DW_AT_type        : <0x176>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><1ec>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x131): ff_ramp_effect
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1024
-DW_AT_sibling     : <0x227>
-<2><1f9>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16f): start_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1025
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><208>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1be): end_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1026
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><217>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x30f): envelope
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1027
-DW_AT_type        : <0x176>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><227>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x97): ff_condition_effect
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1040
-DW_AT_sibling     : <0x28f>
-<2><234>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ee): right_saturation
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1041
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><243>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ff): left_saturation
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1042
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><252>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x342): right_coeff
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1044
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><261>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): left_coeff
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1045
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><270>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x390): deadband
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1047
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><27f>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x58): center
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1048
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<1><28f>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x68): ff_periodic_effect
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1069
-DW_AT_sibling     : <0x315>
-<2><29c>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c8): waveform
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1070
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2ab>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19a): period
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1071
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><2ba>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b4): magnitude
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1072
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><2c9>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18c): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1073
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><2d8>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb6): phase
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1074
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><2e7>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x30f): envelope
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1076
-DW_AT_type        : <0x176>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><2f6>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xab): custom_len
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1078
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><305>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x31f): custom_data
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1079
-DW_AT_type        : <0x315>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><315>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfd>
-<1><31b>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x227): ff_rumble_effect
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1090
-DW_AT_sibling     : <0x347>
-<2><328>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14e): strong_magnitude
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1091
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><337>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28d): weak_magnitude
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1092
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><347>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1125
-DW_AT_sibling     : <0x38d>
-<2><350>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x284): constant
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1126
-DW_AT_type        : <0x1c0>
-<2><35c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x53): ramp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1127
-DW_AT_type        : <0x1ec>
-<2><368>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8e): periodic
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1128
-DW_AT_type        : <0x28f>
-<2><374>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x269): condition
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1129
-DW_AT_type        : <0x38d>
-<2><380>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10a): rumble
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1130
-DW_AT_type        : <0x31b>
-<1><38d>
-Abbrev Number: 16 (DW_TAG_array_type)
-DW_AT_type        : <0x227>
-DW_AT_sibling     : <0x39d>
-<2><396>
-Abbrev Number: 17 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><39d>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x242): ff_effect
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1118
-DW_AT_sibling     : <0x402>
-<2><3aa>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x222): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1119
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><3b9>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1120
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><3c7>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbc): direction
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1121
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3d6>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29c): trigger
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1122
-DW_AT_type        : <0x14a>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><3e5>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15f): replay
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1123
-DW_AT_type        : <0x11e>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><3f4>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : u
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1131
-DW_AT_type        : <0x347>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><402>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x34e): struct_ff_effect
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x39d>
-<1><40d>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1fa): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><41b>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x318): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><429>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x24c): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><437>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17b): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x402>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_flock.c b/mpers-m32/struct_flock.c
index 4859b6e..5aa82c9 100644
--- a/mpers-m32/struct_flock.c
+++ b/mpers-m32/struct_flock.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/mpers-m32/struct_flock.d1 b/mpers-m32/struct_flock.d1
deleted file mode 100644
index 28c220a..0000000
--- a/mpers-m32/struct_flock.d1
+++ /dev/null
@@ -1,217 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1c0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xfb): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x9e): mpers-m32/struct_flock.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x163): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1eb): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1c2): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1a7): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xb7): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x3a): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x143): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x87): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1cc): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xc5): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x19e): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x15e): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x4d): __kernel_long_t	
-    <81>   DW_AT_decl_file   : 1	
-    <82>   DW_AT_decl_line   : 14	
-    <83>   DW_AT_type        : <0x55>	
- <1><87>: Abbrev Number: 6 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x17): __kernel_pid_t	
-    <8c>   DW_AT_decl_file   : 1	
-    <8d>   DW_AT_decl_line   : 27	
-    <8e>   DW_AT_type        : <0x2b>	
- <1><92>: Abbrev Number: 6 (DW_TAG_typedef)
-    <93>   DW_AT_name        : (indirect string, offset: 0x1dc): __kernel_off_t	
-    <97>   DW_AT_decl_file   : 1	
-    <98>   DW_AT_decl_line   : 86	
-    <99>   DW_AT_type        : <0x7c>	
- <1><9d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <9e>   DW_AT_name        : (indirect string, offset: 0xd7): sysent	
-    <a2>   DW_AT_byte_size   : 20	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 4	
-    <a5>   DW_AT_sibling     : <0xf0>	
- <2><a9>: Abbrev Number: 8 (DW_TAG_member)
-    <aa>   DW_AT_name        : (indirect string, offset: 0xf5): nargs	
-    <ae>   DW_AT_decl_file   : 2	
-    <af>   DW_AT_decl_line   : 5	
-    <b0>   DW_AT_type        : <0x47>	
-    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b7>: Abbrev Number: 8 (DW_TAG_member)
-    <b8>   DW_AT_name        : (indirect string, offset: 0x7d): sys_flags	
-    <bc>   DW_AT_decl_file   : 2	
-    <bd>   DW_AT_decl_line   : 6	
-    <be>   DW_AT_type        : <0x2b>	
-    <c2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c5>: Abbrev Number: 9 (DW_TAG_member)
-    <c6>   DW_AT_name        : sen	
-    <ca>   DW_AT_decl_file   : 2	
-    <cb>   DW_AT_decl_line   : 7	
-    <cc>   DW_AT_type        : <0x2b>	
-    <d0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d3>: Abbrev Number: 8 (DW_TAG_member)
-    <d4>   DW_AT_name        : (indirect string, offset: 0x1f7): sys_func	
-    <d8>   DW_AT_decl_file   : 2	
-    <d9>   DW_AT_decl_line   : 8	
-    <da>   DW_AT_type        : <0xfb>	
-    <de>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e1>: Abbrev Number: 8 (DW_TAG_member)
-    <e2>   DW_AT_name        : (indirect string, offset: 0x5d): sys_name	
-    <e6>   DW_AT_decl_file   : 2	
-    <e7>   DW_AT_decl_line   : 9	
-    <e8>   DW_AT_type        : <0x71>	
-    <ec>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <f1>   DW_AT_type        : <0x2b>	
-    <f5>   DW_AT_sibling     : <0xfb>	
- <2><f9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><fa>: Abbrev Number: 0
- <1><fb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <fc>   DW_AT_byte_size   : 4	
-    <fd>   DW_AT_type        : <0xf0>	
- <1><101>: Abbrev Number: 6 (DW_TAG_typedef)
-    <102>   DW_AT_name        : (indirect string, offset: 0x150): struct_sysent	
-    <106>   DW_AT_decl_file   : 2	
-    <107>   DW_AT_decl_line   : 10	
-    <108>   DW_AT_type        : <0x9d>	
- <1><10c>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x112>	
- <1><112>: Abbrev Number: 5 (DW_TAG_const_type)
-    <113>   DW_AT_type        : <0x101>	
- <1><117>: Abbrev Number: 2 (DW_TAG_base_type)
-    <118>   DW_AT_byte_size   : 1	
-    <119>   DW_AT_encoding    : 2	(boolean)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x11): _Bool	
- <1><11e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x66): flock	
-    <123>   DW_AT_byte_size   : 16	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 179	
-    <126>   DW_AT_sibling     : <0x171>	
- <2><12a>: Abbrev Number: 8 (DW_TAG_member)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x1d5): l_type	
-    <12f>   DW_AT_decl_file   : 3	
-    <130>   DW_AT_decl_line   : 180	
-    <131>   DW_AT_type        : <0x24>	
-    <135>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><138>: Abbrev Number: 8 (DW_TAG_member)
-    <139>   DW_AT_name        : (indirect string, offset: 0x0): l_whence	
-    <13d>   DW_AT_decl_file   : 3	
-    <13e>   DW_AT_decl_line   : 181	
-    <13f>   DW_AT_type        : <0x24>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><146>: Abbrev Number: 8 (DW_TAG_member)
-    <147>   DW_AT_name        : (indirect string, offset: 0x9): l_start	
-    <14b>   DW_AT_decl_file   : 3	
-    <14c>   DW_AT_decl_line   : 182	
-    <14d>   DW_AT_type        : <0x92>	
-    <151>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><154>: Abbrev Number: 8 (DW_TAG_member)
-    <155>   DW_AT_name        : (indirect string, offset: 0x200): l_len	
-    <159>   DW_AT_decl_file   : 3	
-    <15a>   DW_AT_decl_line   : 183	
-    <15b>   DW_AT_type        : <0x92>	
-    <15f>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><162>: Abbrev Number: 8 (DW_TAG_member)
-    <163>   DW_AT_name        : (indirect string, offset: 0xde): l_pid	
-    <167>   DW_AT_decl_file   : 3	
-    <168>   DW_AT_decl_line   : 184	
-    <169>   DW_AT_type        : <0x87>	
-    <16d>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><170>: Abbrev Number: 0
- <1><171>: Abbrev Number: 6 (DW_TAG_typedef)
-    <172>   DW_AT_name        : (indirect string, offset: 0x26): struct_kernel_flock	
-    <176>   DW_AT_decl_file   : 4	
-    <177>   DW_AT_decl_line   : 34	
-    <178>   DW_AT_type        : <0x11e>	
- <1><17c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <17d>   DW_AT_name        : (indirect string, offset: 0x1b5): struct_flock	
-    <181>   DW_AT_decl_file   : 5	
-    <182>   DW_AT_decl_line   : 32	
-    <183>   DW_AT_type        : <0x171>	
- <1><187>: Abbrev Number: 12 (DW_TAG_variable)
-    <188>   DW_AT_name        : (indirect string, offset: 0xe4): current_wordsize	
-    <18c>   DW_AT_decl_file   : 6	
-    <18d>   DW_AT_decl_line   : 757	
-    <18f>   DW_AT_type        : <0x47>	
-    <193>   DW_AT_external    : 1	
-    <194>   DW_AT_declaration : 1	
- <1><195>: Abbrev Number: 12 (DW_TAG_variable)
-    <196>   DW_AT_name        : (indirect string, offset: 0xd7): sysent	
-    <19a>   DW_AT_decl_file   : 6	
-    <19b>   DW_AT_decl_line   : 892	
-    <19d>   DW_AT_type        : <0x10c>	
-    <1a1>   DW_AT_external    : 1	
-    <1a2>   DW_AT_declaration : 1	
- <1><1a3>: Abbrev Number: 12 (DW_TAG_variable)
-    <1a4>   DW_AT_name        : (indirect string, offset: 0x194): nsyscalls	
-    <1a8>   DW_AT_decl_file   : 6	
-    <1a9>   DW_AT_decl_line   : 903	
-    <1ab>   DW_AT_type        : <0x47>	
-    <1af>   DW_AT_external    : 1	
-    <1b0>   DW_AT_declaration : 1	
- <1><1b1>: Abbrev Number: 13 (DW_TAG_variable)
-    <1b2>   DW_AT_name        : (indirect string, offset: 0x6c): mpers_target_var	
-    <1b6>   DW_AT_decl_file   : 5	
-    <1b7>   DW_AT_decl_line   : 35	
-    <1b8>   DW_AT_type        : <0x17c>	
-    <1bc>   DW_AT_external    : 1	
-    <1bd>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><1c3>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_flock.d2 b/mpers-m32/struct_flock.d2
deleted file mode 100644
index c08b053..0000000
--- a/mpers-m32/struct_flock.d2
+++ /dev/null
@@ -1,241 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1eb): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c2): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a7): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xb7): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x3a): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x143): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x87): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1cc): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc5): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x19e): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x15e): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x4d): __kernel_long_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x55>
-<1><87>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17): __kernel_pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x2b>
-<1><92>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1dc): __kernel_off_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 86
-DW_AT_type        : <0x7c>
-<1><9d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd7): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf0>
-<2><a9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf5): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7d): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f7): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5d): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfb>
-<2><f9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><fb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf0>
-<1><101>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x150): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x9d>
-<1><10c>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x112>
-<1><112>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x101>
-<1><117>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x11): _Bool
-<1><11e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x66): flock
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 179
-DW_AT_sibling     : <0x171>
-<2><12a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d5): l_type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 180
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><138>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): l_whence
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 181
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><146>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): l_start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 182
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><154>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x200): l_len
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><162>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xde): l_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 184
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><171>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x26): struct_kernel_flock
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x11e>
-<1><17c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b5): struct_flock
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x171>
-<1><187>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe4): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><195>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd7): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10c>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a3>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x194): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1b1>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x6c): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x17c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_flock64.c b/mpers-m32/struct_flock64.c
index 75f6189..3535de1 100644
--- a/mpers-m32/struct_flock64.c
+++ b/mpers-m32/struct_flock64.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/mpers-m32/struct_flock64.d1 b/mpers-m32/struct_flock64.d1
deleted file mode 100644
index 3eb88fc..0000000
--- a/mpers-m32/struct_flock64.d1
+++ /dev/null
@@ -1,212 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1b5 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xfa): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x11): mpers-m32/struct_flock64.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x162): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e4): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1ca): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1a6): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xae): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x41): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x142): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x97): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1d4): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xbc): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x19d): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x15d): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x32): __kernel_pid_t	
-    <81>   DW_AT_decl_file   : 1	
-    <82>   DW_AT_decl_line   : 27	
-    <83>   DW_AT_type        : <0x2b>	
- <1><87>: Abbrev Number: 6 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x54): __kernel_loff_t	
-    <8c>   DW_AT_decl_file   : 1	
-    <8d>   DW_AT_decl_line   : 87	
-    <8e>   DW_AT_type        : <0x32>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0xce): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0xf4): nargs	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x8d): sys_flags	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 2	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x1f0): sys_func	
-    <cd>   DW_AT_decl_file   : 2	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x73): sys_name	
-    <db>   DW_AT_decl_file   : 2	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x71>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 6 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0x14f): struct_sysent	
-    <fb>   DW_AT_decl_file   : 2	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 5 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x2c): _Bool	
- <1><113>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0xdb): flock64	
-    <118>   DW_AT_byte_size   : 24	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 196	
-    <11b>   DW_AT_sibling     : <0x166>	
- <2><11f>: Abbrev Number: 8 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0x1dd): l_type	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 197	
-    <126>   DW_AT_type        : <0x24>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 8 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x0): l_whence	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 198	
-    <134>   DW_AT_type        : <0x24>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><13b>: Abbrev Number: 8 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x9): l_start	
-    <140>   DW_AT_decl_file   : 3	
-    <141>   DW_AT_decl_line   : 199	
-    <142>   DW_AT_type        : <0x87>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><149>: Abbrev Number: 8 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x1f9): l_len	
-    <14e>   DW_AT_decl_file   : 3	
-    <14f>   DW_AT_decl_line   : 200	
-    <150>   DW_AT_type        : <0x87>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><157>: Abbrev Number: 8 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0xd5): l_pid	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 201	
-    <15e>   DW_AT_type        : <0x7c>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><165>: Abbrev Number: 0
- <1><166>: Abbrev Number: 6 (DW_TAG_typedef)
-    <167>   DW_AT_name        : (indirect string, offset: 0x1b4): struct_kernel_flock64	
-    <16b>   DW_AT_decl_file   : 4	
-    <16c>   DW_AT_decl_line   : 42	
-    <16d>   DW_AT_type        : <0x113>	
- <1><171>: Abbrev Number: 6 (DW_TAG_typedef)
-    <172>   DW_AT_name        : (indirect string, offset: 0x64): struct_flock64	
-    <176>   DW_AT_decl_file   : 5	
-    <177>   DW_AT_decl_line   : 33	
-    <178>   DW_AT_type        : <0x166>	
- <1><17c>: Abbrev Number: 12 (DW_TAG_variable)
-    <17d>   DW_AT_name        : (indirect string, offset: 0xe3): current_wordsize	
-    <181>   DW_AT_decl_file   : 6	
-    <182>   DW_AT_decl_line   : 757	
-    <184>   DW_AT_type        : <0x47>	
-    <188>   DW_AT_external    : 1	
-    <189>   DW_AT_declaration : 1	
- <1><18a>: Abbrev Number: 12 (DW_TAG_variable)
-    <18b>   DW_AT_name        : (indirect string, offset: 0xce): sysent	
-    <18f>   DW_AT_decl_file   : 6	
-    <190>   DW_AT_decl_line   : 892	
-    <192>   DW_AT_type        : <0x101>	
-    <196>   DW_AT_external    : 1	
-    <197>   DW_AT_declaration : 1	
- <1><198>: Abbrev Number: 12 (DW_TAG_variable)
-    <199>   DW_AT_name        : (indirect string, offset: 0x193): nsyscalls	
-    <19d>   DW_AT_decl_file   : 6	
-    <19e>   DW_AT_decl_line   : 903	
-    <1a0>   DW_AT_type        : <0x47>	
-    <1a4>   DW_AT_external    : 1	
-    <1a5>   DW_AT_declaration : 1	
- <1><1a6>: Abbrev Number: 13 (DW_TAG_variable)
-    <1a7>   DW_AT_name        : (indirect string, offset: 0x7c): mpers_target_var	
-    <1ab>   DW_AT_decl_file   : 5	
-    <1ac>   DW_AT_decl_line   : 35	
-    <1ad>   DW_AT_type        : <0x171>	
-    <1b1>   DW_AT_external    : 1	
-    <1b2>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><1b8>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_flock64.d2 b/mpers-m32/struct_flock64.d2
deleted file mode 100644
index 5e6f2a4..0000000
--- a/mpers-m32/struct_flock64.d2
+++ /dev/null
@@ -1,235 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e4): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ca): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a6): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xae): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x41): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x142): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x97): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d4): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbc): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x19d): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x15d): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x32): __kernel_pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x2b>
-<1><87>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x54): __kernel_loff_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 87
-DW_AT_type        : <0x32>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xce): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf4): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8d): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f0): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x73): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x14f): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2c): _Bool
-<1><113>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xdb): flock64
-DW_AT_byte_size   : 24
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 196
-DW_AT_sibling     : <0x166>
-<2><11f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1dd): l_type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 197
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): l_whence
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 198
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><13b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): l_start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 199
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><149>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f9): l_len
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 200
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><157>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd5): l_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 201
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<1><166>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b4): struct_kernel_flock64
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x113>
-<1><171>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x64): struct_flock64
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x166>
-<1><17c>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe3): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18a>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xce): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><198>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x193): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a6>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x7c): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x171>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_hd_geometry.d1 b/mpers-m32/struct_hd_geometry.d1
deleted file mode 100644
index 024c40a..0000000
--- a/mpers-m32/struct_hd_geometry.d1
+++ /dev/null
@@ -1,191 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x18b (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xc1): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x183): mpers-m32/struct_hd_geometry.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x131): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1b5): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1a2): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x175): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x70): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x22): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x111): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x59): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1ac): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x7e): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x16c): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x12c): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x90): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xa8): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x4f): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1c1): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x35): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x11e): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x16): _Bool	
- <1><fd>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x0): hd_geometry	
-    <102>   DW_AT_byte_size   : 8	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 313	
-    <106>   DW_AT_sibling     : <0x147>	
- <2><10a>: Abbrev Number: 13 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x1ca): heads	
-    <10f>   DW_AT_decl_file   : 2	
-    <110>   DW_AT_decl_line   : 314	
-    <112>   DW_AT_type        : <0x39>	
-    <116>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><119>: Abbrev Number: 13 (DW_TAG_member)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x109): sectors	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 315	
-    <121>   DW_AT_type        : <0x39>	
-    <125>   DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
- <2><128>: Abbrev Number: 13 (DW_TAG_member)
-    <129>   DW_AT_name        : (indirect string, offset: 0xc): cylinders	
-    <12d>   DW_AT_decl_file   : 2	
-    <12e>   DW_AT_decl_line   : 316	
-    <130>   DW_AT_type        : <0x40>	
-    <134>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><137>: Abbrev Number: 13 (DW_TAG_member)
-    <138>   DW_AT_name        : (indirect string, offset: 0x1c): start	
-    <13c>   DW_AT_decl_file   : 2	
-    <13d>   DW_AT_decl_line   : 317	
-    <13f>   DW_AT_type        : <0x5c>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><146>: Abbrev Number: 0
- <1><147>: Abbrev Number: 11 (DW_TAG_typedef)
-    <148>   DW_AT_name        : (indirect string, offset: 0xae): struct_hd_geometry	
-    <14c>   DW_AT_decl_file   : 3	
-    <14d>   DW_AT_decl_line   : 34	
-    <14e>   DW_AT_type        : <0xfd>	
- <1><152>: Abbrev Number: 14 (DW_TAG_variable)
-    <153>   DW_AT_name        : (indirect string, offset: 0x97): current_wordsize	
-    <157>   DW_AT_decl_file   : 4	
-    <158>   DW_AT_decl_line   : 757	
-    <15a>   DW_AT_type        : <0x47>	
-    <15e>   DW_AT_external    : 1	
-    <15f>   DW_AT_declaration : 1	
- <1><160>: Abbrev Number: 14 (DW_TAG_variable)
-    <161>   DW_AT_name        : (indirect string, offset: 0x90): sysent	
-    <165>   DW_AT_decl_file   : 4	
-    <166>   DW_AT_decl_line   : 892	
-    <168>   DW_AT_type        : <0xeb>	
-    <16c>   DW_AT_external    : 1	
-    <16d>   DW_AT_declaration : 1	
- <1><16e>: Abbrev Number: 14 (DW_TAG_variable)
-    <16f>   DW_AT_name        : (indirect string, offset: 0x162): nsyscalls	
-    <173>   DW_AT_decl_file   : 4	
-    <174>   DW_AT_decl_line   : 903	
-    <176>   DW_AT_type        : <0x47>	
-    <17a>   DW_AT_external    : 1	
-    <17b>   DW_AT_declaration : 1	
- <1><17c>: Abbrev Number: 15 (DW_TAG_variable)
-    <17d>   DW_AT_name        : (indirect string, offset: 0x3e): mpers_target_var	
-    <181>   DW_AT_decl_file   : 3	
-    <182>   DW_AT_decl_line   : 36	
-    <183>   DW_AT_type        : <0x147>	
-    <187>   DW_AT_external    : 1	
-    <188>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><18e>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_hd_geometry.d2 b/mpers-m32/struct_hd_geometry.d2
deleted file mode 100644
index 11df87d..0000000
--- a/mpers-m32/struct_hd_geometry.d2
+++ /dev/null
@@ -1,210 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b5): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a2): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x175): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x70): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x22): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x111): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x59): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ac): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7e): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x16c): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x12c): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x90): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa8): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4f): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c1): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x35): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11e): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x16): _Bool
-<1><fd>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): hd_geometry
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 313
-DW_AT_sibling     : <0x147>
-<2><10a>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ca): heads
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 314
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><119>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x109): sectors
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 315
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
-<2><128>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc): cylinders
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 316
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><137>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c): start
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 317
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><147>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xae): struct_hd_geometry
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0xfd>
-<1><152>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x97): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><160>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x90): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><16e>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x162): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17c>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x3e): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x147>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_ifconf.c b/mpers-m32/struct_ifconf.c
index ef821f8..10d0006 100644
--- a/mpers-m32/struct_ifconf.c
+++ b/mpers-m32/struct_ifconf.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/struct_ifconf.d1 b/mpers-m32/struct_ifconf.d1
deleted file mode 100644
index 8d3d487..0000000
--- a/mpers-m32/struct_ifconf.d1
+++ /dev/null
@@ -1,383 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x31f (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x118): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x2b0): mpers-m32/struct_ifconf.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1b5): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x278): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x22f): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x212): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xf7): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x2e): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x184): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x8c): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x25e): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xc1): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x209): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0x6f): __caddr_t	
-    <6f>   DW_AT_decl_file   : 2	
-    <70>   DW_AT_decl_line   : 183	
-    <71>   DW_AT_type        : <0x75>	
- <1><75>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <76>   DW_AT_byte_size   : 4	
-    <77>   DW_AT_type        : <0x7b>	
- <1><7b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7c>   DW_AT_byte_size   : 1	
-    <7d>   DW_AT_encoding    : 6	(signed char)
-    <7e>   DW_AT_name        : (indirect string, offset: 0x19f): char	
- <1><82>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <83>   DW_AT_byte_size   : 4	
-    <84>   DW_AT_type        : <0x88>	
- <1><88>: Abbrev Number: 6 (DW_TAG_const_type)
-    <89>   DW_AT_type        : <0x7b>	
- <1><8d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <8e>   DW_AT_name        : (indirect string, offset: 0xd3): sysent	
-    <92>   DW_AT_byte_size   : 20	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 4	
-    <95>   DW_AT_sibling     : <0xe0>	
- <2><99>: Abbrev Number: 8 (DW_TAG_member)
-    <9a>   DW_AT_name        : (indirect string, offset: 0x239): nargs	
-    <9e>   DW_AT_decl_file   : 1	
-    <9f>   DW_AT_decl_line   : 5	
-    <a0>   DW_AT_type        : <0x47>	
-    <a4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a7>: Abbrev Number: 8 (DW_TAG_member)
-    <a8>   DW_AT_name        : (indirect string, offset: 0x82): sys_flags	
-    <ac>   DW_AT_decl_file   : 1	
-    <ad>   DW_AT_decl_line   : 6	
-    <ae>   DW_AT_type        : <0x2b>	
-    <b2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><b5>: Abbrev Number: 9 (DW_TAG_member)
-    <b6>   DW_AT_name        : sen	
-    <ba>   DW_AT_decl_file   : 1	
-    <bb>   DW_AT_decl_line   : 7	
-    <bc>   DW_AT_type        : <0x2b>	
-    <c0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c3>: Abbrev Number: 8 (DW_TAG_member)
-    <c4>   DW_AT_name        : (indirect string, offset: 0x2a7): sys_func	
-    <c8>   DW_AT_decl_file   : 1	
-    <c9>   DW_AT_decl_line   : 8	
-    <ca>   DW_AT_type        : <0xeb>	
-    <ce>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d1>: Abbrev Number: 8 (DW_TAG_member)
-    <d2>   DW_AT_name        : (indirect string, offset: 0x4e): sys_name	
-    <d6>   DW_AT_decl_file   : 1	
-    <d7>   DW_AT_decl_line   : 9	
-    <d8>   DW_AT_type        : <0x82>	
-    <dc>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e1>   DW_AT_type        : <0x2b>	
-    <e5>   DW_AT_sibling     : <0xeb>	
- <2><e9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ea>: Abbrev Number: 0
- <1><eb>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xe0>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x191): struct_sysent	
-    <f6>   DW_AT_decl_file   : 1	
-    <f7>   DW_AT_decl_line   : 10	
-    <f8>   DW_AT_type        : <0x8d>	
- <1><fc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <fd>   DW_AT_byte_size   : 4	
-    <fe>   DW_AT_type        : <0x102>	
- <1><102>: Abbrev Number: 6 (DW_TAG_const_type)
-    <103>   DW_AT_type        : <0xf1>	
- <1><107>: Abbrev Number: 2 (DW_TAG_base_type)
-    <108>   DW_AT_byte_size   : 1	
-    <109>   DW_AT_encoding    : 2	(boolean)
-    <10a>   DW_AT_name        : (indirect string, offset: 0x28): _Bool	
- <1><10e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0xeb): sa_family_t	
-    <113>   DW_AT_decl_file   : 3	
-    <114>   DW_AT_decl_line   : 28	
-    <115>   DW_AT_type        : <0x40>	
- <1><119>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x267): sockaddr	
-    <11e>   DW_AT_byte_size   : 16	
-    <11f>   DW_AT_decl_file   : 4	
-    <120>   DW_AT_decl_line   : 149	
-    <121>   DW_AT_sibling     : <0x142>	
- <2><125>: Abbrev Number: 8 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0x220): sa_family	
-    <12a>   DW_AT_decl_file   : 4	
-    <12b>   DW_AT_decl_line   : 151	
-    <12c>   DW_AT_type        : <0x10e>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><133>: Abbrev Number: 8 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0x270): sa_data	
-    <138>   DW_AT_decl_file   : 4	
-    <139>   DW_AT_decl_line   : 152	
-    <13a>   DW_AT_type        : <0x142>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><141>: Abbrev Number: 0
- <1><142>: Abbrev Number: 12 (DW_TAG_array_type)
-    <143>   DW_AT_type        : <0x7b>	
-    <147>   DW_AT_sibling     : <0x152>	
- <2><14b>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <14c>   DW_AT_type        : <0x63>	
-    <150>   DW_AT_upper_bound : 13	
- <2><151>: Abbrev Number: 0
- <1><152>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <153>   DW_AT_name        : (indirect string, offset: 0x0): ifmap	
-    <157>   DW_AT_byte_size   : 16	
-    <158>   DW_AT_decl_file   : 5	
-    <159>   DW_AT_decl_line   : 111	
-    <15a>   DW_AT_sibling     : <0x1b3>	
- <2><15e>: Abbrev Number: 8 (DW_TAG_member)
-    <15f>   DW_AT_name        : (indirect string, offset: 0x284): mem_start	
-    <163>   DW_AT_decl_file   : 5	
-    <164>   DW_AT_decl_line   : 113	
-    <165>   DW_AT_type        : <0x5c>	
-    <169>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><16c>: Abbrev Number: 8 (DW_TAG_member)
-    <16d>   DW_AT_name        : (indirect string, offset: 0xf): mem_end	
-    <171>   DW_AT_decl_file   : 5	
-    <172>   DW_AT_decl_line   : 114	
-    <173>   DW_AT_type        : <0x5c>	
-    <177>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><17a>: Abbrev Number: 8 (DW_TAG_member)
-    <17b>   DW_AT_name        : (indirect string, offset: 0x171): base_addr	
-    <17f>   DW_AT_decl_file   : 5	
-    <180>   DW_AT_decl_line   : 115	
-    <181>   DW_AT_type        : <0x40>	
-    <185>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><188>: Abbrev Number: 9 (DW_TAG_member)
-    <189>   DW_AT_name        : irq	
-    <18d>   DW_AT_decl_file   : 5	
-    <18e>   DW_AT_decl_line   : 116	
-    <18f>   DW_AT_type        : <0x39>	
-    <193>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><196>: Abbrev Number: 9 (DW_TAG_member)
-    <197>   DW_AT_name        : dma	
-    <19b>   DW_AT_decl_file   : 5	
-    <19c>   DW_AT_decl_line   : 117	
-    <19d>   DW_AT_type        : <0x39>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
- <2><1a4>: Abbrev Number: 8 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x22a): port	
-    <1a9>   DW_AT_decl_file   : 5	
-    <1aa>   DW_AT_decl_line   : 118	
-    <1ab>   DW_AT_type        : <0x39>	
-    <1af>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1b2>: Abbrev Number: 0
- <1><1b3>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1b4>   DW_AT_byte_size   : 16	
-    <1b5>   DW_AT_decl_file   : 5	
-    <1b6>   DW_AT_decl_line   : 130	
-    <1b7>   DW_AT_sibling     : <0x1c7>	
- <2><1bb>: Abbrev Number: 15 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x105): ifrn_name	
-    <1c0>   DW_AT_decl_file   : 5	
-    <1c1>   DW_AT_decl_line   : 132	
-    <1c2>   DW_AT_type        : <0x1c7>	
- <2><1c6>: Abbrev Number: 0
- <1><1c7>: Abbrev Number: 12 (DW_TAG_array_type)
-    <1c8>   DW_AT_type        : <0x7b>	
-    <1cc>   DW_AT_sibling     : <0x1d7>	
- <2><1d0>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <1d1>   DW_AT_type        : <0x63>	
-    <1d5>   DW_AT_upper_bound : 15	
- <2><1d6>: Abbrev Number: 0
- <1><1d7>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1d8>   DW_AT_byte_size   : 16	
-    <1d9>   DW_AT_decl_file   : 5	
-    <1da>   DW_AT_decl_line   : 135	
-    <1db>   DW_AT_sibling     : <0x264>	
- <2><1df>: Abbrev Number: 15 (DW_TAG_member)
-    <1e0>   DW_AT_name        : (indirect string, offset: 0xa3): ifru_addr	
-    <1e4>   DW_AT_decl_file   : 5	
-    <1e5>   DW_AT_decl_line   : 137	
-    <1e6>   DW_AT_type        : <0x119>	
- <2><1ea>: Abbrev Number: 15 (DW_TAG_member)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0x41): ifru_dstaddr	
-    <1ef>   DW_AT_decl_file   : 5	
-    <1f0>   DW_AT_decl_line   : 138	
-    <1f1>   DW_AT_type        : <0x119>	
- <2><1f5>: Abbrev Number: 15 (DW_TAG_member)
-    <1f6>   DW_AT_name        : (indirect string, offset: 0x57): ifru_broadaddr	
-    <1fa>   DW_AT_decl_file   : 5	
-    <1fb>   DW_AT_decl_line   : 139	
-    <1fc>   DW_AT_type        : <0x119>	
- <2><200>: Abbrev Number: 15 (DW_TAG_member)
-    <201>   DW_AT_name        : (indirect string, offset: 0x29a): ifru_netmask	
-    <205>   DW_AT_decl_file   : 5	
-    <206>   DW_AT_decl_line   : 140	
-    <207>   DW_AT_type        : <0x119>	
- <2><20b>: Abbrev Number: 15 (DW_TAG_member)
-    <20c>   DW_AT_name        : (indirect string, offset: 0x28e): ifru_hwaddr	
-    <210>   DW_AT_decl_file   : 5	
-    <211>   DW_AT_decl_line   : 141	
-    <212>   DW_AT_type        : <0x119>	
- <2><216>: Abbrev Number: 15 (DW_TAG_member)
-    <217>   DW_AT_name        : (indirect string, offset: 0xad): ifru_flags	
-    <21b>   DW_AT_decl_file   : 5	
-    <21c>   DW_AT_decl_line   : 142	
-    <21d>   DW_AT_type        : <0x24>	
- <2><221>: Abbrev Number: 15 (DW_TAG_member)
-    <222>   DW_AT_name        : (indirect string, offset: 0x1fd): ifru_ivalue	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 143	
-    <228>   DW_AT_type        : <0x2b>	
- <2><22c>: Abbrev Number: 15 (DW_TAG_member)
-    <22d>   DW_AT_name        : (indirect string, offset: 0xb8): ifru_mtu	
-    <231>   DW_AT_decl_file   : 5	
-    <232>   DW_AT_decl_line   : 144	
-    <233>   DW_AT_type        : <0x2b>	
- <2><237>: Abbrev Number: 15 (DW_TAG_member)
-    <238>   DW_AT_name        : (indirect string, offset: 0x79): ifru_map	
-    <23c>   DW_AT_decl_file   : 5	
-    <23d>   DW_AT_decl_line   : 145	
-    <23e>   DW_AT_type        : <0x152>	
- <2><242>: Abbrev Number: 15 (DW_TAG_member)
-    <243>   DW_AT_name        : (indirect string, offset: 0x23f): ifru_slave	
-    <247>   DW_AT_decl_file   : 5	
-    <248>   DW_AT_decl_line   : 146	
-    <249>   DW_AT_type        : <0x1c7>	
- <2><24d>: Abbrev Number: 15 (DW_TAG_member)
-    <24e>   DW_AT_name        : (indirect string, offset: 0x1f0): ifru_newname	
-    <252>   DW_AT_decl_file   : 5	
-    <253>   DW_AT_decl_line   : 147	
-    <254>   DW_AT_type        : <0x1c7>	
- <2><258>: Abbrev Number: 15 (DW_TAG_member)
-    <259>   DW_AT_name        : (indirect string, offset: 0x160): ifru_data	
-    <25d>   DW_AT_decl_file   : 5	
-    <25e>   DW_AT_decl_line   : 148	
-    <25f>   DW_AT_type        : <0x6a>	
- <2><263>: Abbrev Number: 0
- <1><264>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <265>   DW_AT_name        : (indirect string, offset: 0x24a): ifreq	
-    <269>   DW_AT_byte_size   : 32	
-    <26a>   DW_AT_decl_file   : 5	
-    <26b>   DW_AT_decl_line   : 126	
-    <26c>   DW_AT_sibling     : <0x28d>	
- <2><270>: Abbrev Number: 8 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x17b): ifr_ifrn	
-    <275>   DW_AT_decl_file   : 5	
-    <276>   DW_AT_decl_line   : 133	
-    <277>   DW_AT_type        : <0x1b3>	
-    <27b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><27e>: Abbrev Number: 8 (DW_TAG_member)
-    <27f>   DW_AT_name        : (indirect string, offset: 0x1a4): ifr_ifru	
-    <283>   DW_AT_decl_file   : 5	
-    <284>   DW_AT_decl_line   : 149	
-    <285>   DW_AT_type        : <0x1d7>	
-    <289>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><28c>: Abbrev Number: 0
- <1><28d>: Abbrev Number: 14 (DW_TAG_union_type)
-    <28e>   DW_AT_byte_size   : 4	
-    <28f>   DW_AT_decl_file   : 5	
-    <290>   DW_AT_decl_line   : 179	
-    <291>   DW_AT_sibling     : <0x2ac>	
- <2><295>: Abbrev Number: 15 (DW_TAG_member)
-    <296>   DW_AT_name        : (indirect string, offset: 0x66): ifcu_buf	
-    <29a>   DW_AT_decl_file   : 5	
-    <29b>   DW_AT_decl_line   : 181	
-    <29c>   DW_AT_type        : <0x6a>	
- <2><2a0>: Abbrev Number: 15 (DW_TAG_member)
-    <2a1>   DW_AT_name        : (indirect string, offset: 0x10f): ifcu_req	
-    <2a5>   DW_AT_decl_file   : 5	
-    <2a6>   DW_AT_decl_line   : 182	
-    <2a7>   DW_AT_type        : <0x2ac>	
- <2><2ab>: Abbrev Number: 0
- <1><2ac>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <2ad>   DW_AT_byte_size   : 4	
-    <2ae>   DW_AT_type        : <0x264>	
- <1><2b2>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <2b3>   DW_AT_name        : (indirect string, offset: 0x16a): ifconf	
-    <2b7>   DW_AT_byte_size   : 8	
-    <2b8>   DW_AT_decl_file   : 5	
-    <2b9>   DW_AT_decl_line   : 176	
-    <2ba>   DW_AT_sibling     : <0x2db>	
- <2><2be>: Abbrev Number: 8 (DW_TAG_member)
-    <2bf>   DW_AT_name        : (indirect string, offset: 0x1ad): ifc_len	
-    <2c3>   DW_AT_decl_file   : 5	
-    <2c4>   DW_AT_decl_line   : 178	
-    <2c5>   DW_AT_type        : <0x2b>	
-    <2c9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2cc>: Abbrev Number: 8 (DW_TAG_member)
-    <2cd>   DW_AT_name        : (indirect string, offset: 0x6): ifc_ifcu	
-    <2d1>   DW_AT_decl_file   : 5	
-    <2d2>   DW_AT_decl_line   : 183	
-    <2d3>   DW_AT_type        : <0x28d>	
-    <2d7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2da>: Abbrev Number: 0
- <1><2db>: Abbrev Number: 4 (DW_TAG_typedef)
-    <2dc>   DW_AT_name        : (indirect string, offset: 0x250): struct_ifconf	
-    <2e0>   DW_AT_decl_file   : 6	
-    <2e1>   DW_AT_decl_line   : 39	
-    <2e2>   DW_AT_type        : <0x2b2>	
- <1><2e6>: Abbrev Number: 16 (DW_TAG_variable)
-    <2e7>   DW_AT_name        : (indirect string, offset: 0xda): current_wordsize	
-    <2eb>   DW_AT_decl_file   : 7	
-    <2ec>   DW_AT_decl_line   : 757	
-    <2ee>   DW_AT_type        : <0x47>	
-    <2f2>   DW_AT_external    : 1	
-    <2f3>   DW_AT_declaration : 1	
- <1><2f4>: Abbrev Number: 16 (DW_TAG_variable)
-    <2f5>   DW_AT_name        : (indirect string, offset: 0xd3): sysent	
-    <2f9>   DW_AT_decl_file   : 7	
-    <2fa>   DW_AT_decl_line   : 892	
-    <2fc>   DW_AT_type        : <0xfc>	
-    <300>   DW_AT_external    : 1	
-    <301>   DW_AT_declaration : 1	
- <1><302>: Abbrev Number: 16 (DW_TAG_variable)
-    <303>   DW_AT_name        : (indirect string, offset: 0x1e6): nsyscalls	
-    <307>   DW_AT_decl_file   : 7	
-    <308>   DW_AT_decl_line   : 903	
-    <30a>   DW_AT_type        : <0x47>	
-    <30e>   DW_AT_external    : 1	
-    <30f>   DW_AT_declaration : 1	
- <1><310>: Abbrev Number: 17 (DW_TAG_variable)
-    <311>   DW_AT_name        : (indirect string, offset: 0x17): mpers_target_var	
-    <315>   DW_AT_decl_file   : 6	
-    <316>   DW_AT_decl_line   : 42	
-    <317>   DW_AT_type        : <0x2db>	
-    <31b>   DW_AT_external    : 1	
-    <31c>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><322>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_ifconf.d2 b/mpers-m32/struct_ifconf.d2
deleted file mode 100644
index a099f7f..0000000
--- a/mpers-m32/struct_ifconf.d2
+++ /dev/null
@@ -1,431 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x278): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x22f): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x212): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xf7): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2e): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x184): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8c): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x25e): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc1): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x209): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6f): __caddr_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x75>
-<1><75>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7b>
-<1><7b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x19f): char
-<1><82>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x88>
-<1><88>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x7b>
-<1><8d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd3): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe0>
-<2><99>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x239): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x82): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><b5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2a7): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xeb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4e): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x82>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xeb>
-<2><e9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><eb>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe0>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x191): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x8d>
-<1><fc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x102>
-<1><102>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf1>
-<1><107>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x28): _Bool
-<1><10e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xeb): sa_family_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x40>
-<1><119>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x267): sockaddr
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 149
-DW_AT_sibling     : <0x142>
-<2><125>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): sa_family
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 151
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><133>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x270): sa_data
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 152
-DW_AT_type        : <0x142>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><142>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x152>
-<2><14b>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 13
-<1><152>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): ifmap
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 111
-DW_AT_sibling     : <0x1b3>
-<2><15e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x284): mem_start
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 113
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><16c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf): mem_end
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 114
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><17a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x171): base_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 115
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><188>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : irq
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 116
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><196>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : dma
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 117
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
-<2><1a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22a): port
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 118
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1b3>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 130
-DW_AT_sibling     : <0x1c7>
-<2><1bb>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x105): ifrn_name
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 132
-DW_AT_type        : <0x1c7>
-<1><1c7>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x1d7>
-<2><1d0>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><1d7>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 135
-DW_AT_sibling     : <0x264>
-<2><1df>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa3): ifru_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 137
-DW_AT_type        : <0x119>
-<2><1ea>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x41): ifru_dstaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 138
-DW_AT_type        : <0x119>
-<2><1f5>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x57): ifru_broadaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x119>
-<2><200>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29a): ifru_netmask
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 140
-DW_AT_type        : <0x119>
-<2><20b>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28e): ifru_hwaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x119>
-<2><216>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xad): ifru_flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 142
-DW_AT_type        : <0x24>
-<2><221>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fd): ifru_ivalue
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 143
-DW_AT_type        : <0x2b>
-<2><22c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb8): ifru_mtu
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<2><237>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x79): ifru_map
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 145
-DW_AT_type        : <0x152>
-<2><242>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23f): ifru_slave
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 146
-DW_AT_type        : <0x1c7>
-<2><24d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f0): ifru_newname
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 147
-DW_AT_type        : <0x1c7>
-<2><258>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x160): ifru_data
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 148
-DW_AT_type        : <0x6a>
-<1><264>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x24a): ifreq
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 126
-DW_AT_sibling     : <0x28d>
-<2><270>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17b): ifr_ifrn
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x1b3>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><27e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a4): ifr_ifru
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 149
-DW_AT_type        : <0x1d7>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><28d>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 179
-DW_AT_sibling     : <0x2ac>
-<2><295>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x66): ifcu_buf
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 181
-DW_AT_type        : <0x6a>
-<2><2a0>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10f): ifcu_req
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 182
-DW_AT_type        : <0x2ac>
-<1><2ac>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x264>
-<1><2b2>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x16a): ifconf
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 176
-DW_AT_sibling     : <0x2db>
-<2><2be>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ad): ifc_len
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 178
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2cc>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): ifc_ifcu
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x28d>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><2db>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x250): struct_ifconf
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x2b2>
-<1><2e6>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xda): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2f4>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd3): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xfc>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><302>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1e6): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><310>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x2db>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_ifreq.c b/mpers-m32/struct_ifreq.c
index 691cb13..31f73ea 100644
--- a/mpers-m32/struct_ifreq.c
+++ b/mpers-m32/struct_ifreq.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/struct_ifreq.d1 b/mpers-m32/struct_ifreq.d1
deleted file mode 100644
index 3c8135b..0000000
--- a/mpers-m32/struct_ifreq.d1
+++ /dev/null
@@ -1,345 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2d1 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xfb): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x27c): mpers-m32/struct_ifreq.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x189): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x24d): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x203): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1e6): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe3): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x25): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x160): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x6b): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x233): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xa0): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1dd): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0x4e): __caddr_t	
-    <6f>   DW_AT_decl_file   : 2	
-    <70>   DW_AT_decl_line   : 183	
-    <71>   DW_AT_type        : <0x75>	
- <1><75>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <76>   DW_AT_byte_size   : 4	
-    <77>   DW_AT_type        : <0x7b>	
- <1><7b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7c>   DW_AT_byte_size   : 1	
-    <7d>   DW_AT_encoding    : 6	(signed char)
-    <7e>   DW_AT_name        : (indirect string, offset: 0x17b): char	
- <1><82>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <83>   DW_AT_byte_size   : 4	
-    <84>   DW_AT_type        : <0x88>	
- <1><88>: Abbrev Number: 6 (DW_TAG_const_type)
-    <89>   DW_AT_type        : <0x7b>	
- <1><8d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <8e>   DW_AT_name        : (indirect string, offset: 0xbf): sysent	
-    <92>   DW_AT_byte_size   : 20	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 4	
-    <95>   DW_AT_sibling     : <0xe0>	
- <2><99>: Abbrev Number: 8 (DW_TAG_member)
-    <9a>   DW_AT_name        : (indirect string, offset: 0x20d): nargs	
-    <9e>   DW_AT_decl_file   : 1	
-    <9f>   DW_AT_decl_line   : 5	
-    <a0>   DW_AT_type        : <0x47>	
-    <a4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a7>: Abbrev Number: 8 (DW_TAG_member)
-    <a8>   DW_AT_name        : (indirect string, offset: 0x61): sys_flags	
-    <ac>   DW_AT_decl_file   : 1	
-    <ad>   DW_AT_decl_line   : 6	
-    <ae>   DW_AT_type        : <0x2b>	
-    <b2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><b5>: Abbrev Number: 9 (DW_TAG_member)
-    <b6>   DW_AT_name        : sen	
-    <ba>   DW_AT_decl_file   : 1	
-    <bb>   DW_AT_decl_line   : 7	
-    <bc>   DW_AT_type        : <0x2b>	
-    <c0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c3>: Abbrev Number: 8 (DW_TAG_member)
-    <c4>   DW_AT_name        : (indirect string, offset: 0x295): sys_func	
-    <c8>   DW_AT_decl_file   : 1	
-    <c9>   DW_AT_decl_line   : 8	
-    <ca>   DW_AT_type        : <0xeb>	
-    <ce>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d1>: Abbrev Number: 8 (DW_TAG_member)
-    <d2>   DW_AT_name        : (indirect string, offset: 0x45): sys_name	
-    <d6>   DW_AT_decl_file   : 1	
-    <d7>   DW_AT_decl_line   : 9	
-    <d8>   DW_AT_type        : <0x82>	
-    <dc>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e1>   DW_AT_type        : <0x2b>	
-    <e5>   DW_AT_sibling     : <0xeb>	
- <2><e9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ea>: Abbrev Number: 0
- <1><eb>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xe0>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x16d): struct_sysent	
-    <f6>   DW_AT_decl_file   : 1	
-    <f7>   DW_AT_decl_line   : 10	
-    <f8>   DW_AT_type        : <0x8d>	
- <1><fc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <fd>   DW_AT_byte_size   : 4	
-    <fe>   DW_AT_type        : <0x102>	
- <1><102>: Abbrev Number: 6 (DW_TAG_const_type)
-    <103>   DW_AT_type        : <0xf1>	
- <1><107>: Abbrev Number: 2 (DW_TAG_base_type)
-    <108>   DW_AT_byte_size   : 1	
-    <109>   DW_AT_encoding    : 2	(boolean)
-    <10a>   DW_AT_name        : (indirect string, offset: 0x1f): _Bool	
- <1><10e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0xd7): sa_family_t	
-    <113>   DW_AT_decl_file   : 3	
-    <114>   DW_AT_decl_line   : 28	
-    <115>   DW_AT_type        : <0x40>	
- <1><119>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x23c): sockaddr	
-    <11e>   DW_AT_byte_size   : 16	
-    <11f>   DW_AT_decl_file   : 4	
-    <120>   DW_AT_decl_line   : 149	
-    <121>   DW_AT_sibling     : <0x142>	
- <2><125>: Abbrev Number: 8 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0x1f4): sa_family	
-    <12a>   DW_AT_decl_file   : 4	
-    <12b>   DW_AT_decl_line   : 151	
-    <12c>   DW_AT_type        : <0x10e>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><133>: Abbrev Number: 8 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0x245): sa_data	
-    <138>   DW_AT_decl_file   : 4	
-    <139>   DW_AT_decl_line   : 152	
-    <13a>   DW_AT_type        : <0x142>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><141>: Abbrev Number: 0
- <1><142>: Abbrev Number: 12 (DW_TAG_array_type)
-    <143>   DW_AT_type        : <0x7b>	
-    <147>   DW_AT_sibling     : <0x152>	
- <2><14b>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <14c>   DW_AT_type        : <0x63>	
-    <150>   DW_AT_upper_bound : 13	
- <2><151>: Abbrev Number: 0
- <1><152>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <153>   DW_AT_name        : (indirect string, offset: 0x0): ifmap	
-    <157>   DW_AT_byte_size   : 16	
-    <158>   DW_AT_decl_file   : 5	
-    <159>   DW_AT_decl_line   : 111	
-    <15a>   DW_AT_sibling     : <0x1b3>	
- <2><15e>: Abbrev Number: 8 (DW_TAG_member)
-    <15f>   DW_AT_name        : (indirect string, offset: 0x259): mem_start	
-    <163>   DW_AT_decl_file   : 5	
-    <164>   DW_AT_decl_line   : 113	
-    <165>   DW_AT_type        : <0x5c>	
-    <169>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><16c>: Abbrev Number: 8 (DW_TAG_member)
-    <16d>   DW_AT_name        : (indirect string, offset: 0x6): mem_end	
-    <171>   DW_AT_decl_file   : 5	
-    <172>   DW_AT_decl_line   : 114	
-    <173>   DW_AT_type        : <0x5c>	
-    <177>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><17a>: Abbrev Number: 8 (DW_TAG_member)
-    <17b>   DW_AT_name        : (indirect string, offset: 0x14d): base_addr	
-    <17f>   DW_AT_decl_file   : 5	
-    <180>   DW_AT_decl_line   : 115	
-    <181>   DW_AT_type        : <0x40>	
-    <185>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><188>: Abbrev Number: 9 (DW_TAG_member)
-    <189>   DW_AT_name        : irq	
-    <18d>   DW_AT_decl_file   : 5	
-    <18e>   DW_AT_decl_line   : 116	
-    <18f>   DW_AT_type        : <0x39>	
-    <193>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><196>: Abbrev Number: 9 (DW_TAG_member)
-    <197>   DW_AT_name        : dma	
-    <19b>   DW_AT_decl_file   : 5	
-    <19c>   DW_AT_decl_line   : 117	
-    <19d>   DW_AT_type        : <0x39>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
- <2><1a4>: Abbrev Number: 8 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x1fe): port	
-    <1a9>   DW_AT_decl_file   : 5	
-    <1aa>   DW_AT_decl_line   : 118	
-    <1ab>   DW_AT_type        : <0x39>	
-    <1af>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1b2>: Abbrev Number: 0
- <1><1b3>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1b4>   DW_AT_byte_size   : 16	
-    <1b5>   DW_AT_decl_file   : 5	
-    <1b6>   DW_AT_decl_line   : 130	
-    <1b7>   DW_AT_sibling     : <0x1c7>	
- <2><1bb>: Abbrev Number: 15 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0xf1): ifrn_name	
-    <1c0>   DW_AT_decl_file   : 5	
-    <1c1>   DW_AT_decl_line   : 132	
-    <1c2>   DW_AT_type        : <0x1c7>	
- <2><1c6>: Abbrev Number: 0
- <1><1c7>: Abbrev Number: 12 (DW_TAG_array_type)
-    <1c8>   DW_AT_type        : <0x7b>	
-    <1cc>   DW_AT_sibling     : <0x1d7>	
- <2><1d0>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <1d1>   DW_AT_type        : <0x63>	
-    <1d5>   DW_AT_upper_bound : 15	
- <2><1d6>: Abbrev Number: 0
- <1><1d7>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1d8>   DW_AT_byte_size   : 16	
-    <1d9>   DW_AT_decl_file   : 5	
-    <1da>   DW_AT_decl_line   : 135	
-    <1db>   DW_AT_sibling     : <0x264>	
- <2><1df>: Abbrev Number: 15 (DW_TAG_member)
-    <1e0>   DW_AT_name        : (indirect string, offset: 0x82): ifru_addr	
-    <1e4>   DW_AT_decl_file   : 5	
-    <1e5>   DW_AT_decl_line   : 137	
-    <1e6>   DW_AT_type        : <0x119>	
- <2><1ea>: Abbrev Number: 15 (DW_TAG_member)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0x38): ifru_dstaddr	
-    <1ef>   DW_AT_decl_file   : 5	
-    <1f0>   DW_AT_decl_line   : 138	
-    <1f1>   DW_AT_type        : <0x119>	
- <2><1f5>: Abbrev Number: 15 (DW_TAG_member)
-    <1f6>   DW_AT_name        : (indirect string, offset: 0x224): ifru_broadaddr	
-    <1fa>   DW_AT_decl_file   : 5	
-    <1fb>   DW_AT_decl_line   : 139	
-    <1fc>   DW_AT_type        : <0x119>	
- <2><200>: Abbrev Number: 15 (DW_TAG_member)
-    <201>   DW_AT_name        : (indirect string, offset: 0x26f): ifru_netmask	
-    <205>   DW_AT_decl_file   : 5	
-    <206>   DW_AT_decl_line   : 140	
-    <207>   DW_AT_type        : <0x119>	
- <2><20b>: Abbrev Number: 15 (DW_TAG_member)
-    <20c>   DW_AT_name        : (indirect string, offset: 0x263): ifru_hwaddr	
-    <210>   DW_AT_decl_file   : 5	
-    <211>   DW_AT_decl_line   : 141	
-    <212>   DW_AT_type        : <0x119>	
- <2><216>: Abbrev Number: 15 (DW_TAG_member)
-    <217>   DW_AT_name        : (indirect string, offset: 0x8c): ifru_flags	
-    <21b>   DW_AT_decl_file   : 5	
-    <21c>   DW_AT_decl_line   : 142	
-    <21d>   DW_AT_type        : <0x24>	
- <2><221>: Abbrev Number: 15 (DW_TAG_member)
-    <222>   DW_AT_name        : (indirect string, offset: 0x1d1): ifru_ivalue	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 143	
-    <228>   DW_AT_type        : <0x2b>	
- <2><22c>: Abbrev Number: 15 (DW_TAG_member)
-    <22d>   DW_AT_name        : (indirect string, offset: 0x97): ifru_mtu	
-    <231>   DW_AT_decl_file   : 5	
-    <232>   DW_AT_decl_line   : 144	
-    <233>   DW_AT_type        : <0x2b>	
- <2><237>: Abbrev Number: 15 (DW_TAG_member)
-    <238>   DW_AT_name        : (indirect string, offset: 0x58): ifru_map	
-    <23c>   DW_AT_decl_file   : 5	
-    <23d>   DW_AT_decl_line   : 145	
-    <23e>   DW_AT_type        : <0x152>	
- <2><242>: Abbrev Number: 15 (DW_TAG_member)
-    <243>   DW_AT_name        : (indirect string, offset: 0x213): ifru_slave	
-    <247>   DW_AT_decl_file   : 5	
-    <248>   DW_AT_decl_line   : 146	
-    <249>   DW_AT_type        : <0x1c7>	
- <2><24d>: Abbrev Number: 15 (DW_TAG_member)
-    <24e>   DW_AT_name        : (indirect string, offset: 0x1c4): ifru_newname	
-    <252>   DW_AT_decl_file   : 5	
-    <253>   DW_AT_decl_line   : 147	
-    <254>   DW_AT_type        : <0x1c7>	
- <2><258>: Abbrev Number: 15 (DW_TAG_member)
-    <259>   DW_AT_name        : (indirect string, offset: 0x143): ifru_data	
-    <25d>   DW_AT_decl_file   : 5	
-    <25e>   DW_AT_decl_line   : 148	
-    <25f>   DW_AT_type        : <0x6a>	
- <2><263>: Abbrev Number: 0
- <1><264>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <265>   DW_AT_name        : (indirect string, offset: 0x21e): ifreq	
-    <269>   DW_AT_byte_size   : 32	
-    <26a>   DW_AT_decl_file   : 5	
-    <26b>   DW_AT_decl_line   : 126	
-    <26c>   DW_AT_sibling     : <0x28d>	
- <2><270>: Abbrev Number: 8 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x157): ifr_ifrn	
-    <275>   DW_AT_decl_file   : 5	
-    <276>   DW_AT_decl_line   : 133	
-    <277>   DW_AT_type        : <0x1b3>	
-    <27b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><27e>: Abbrev Number: 8 (DW_TAG_member)
-    <27f>   DW_AT_name        : (indirect string, offset: 0x180): ifr_ifru	
-    <283>   DW_AT_decl_file   : 5	
-    <284>   DW_AT_decl_line   : 149	
-    <285>   DW_AT_type        : <0x1d7>	
-    <289>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><28c>: Abbrev Number: 0
- <1><28d>: Abbrev Number: 4 (DW_TAG_typedef)
-    <28e>   DW_AT_name        : (indirect string, offset: 0xb2): struct_ifreq	
-    <292>   DW_AT_decl_file   : 6	
-    <293>   DW_AT_decl_line   : 40	
-    <294>   DW_AT_type        : <0x264>	
- <1><298>: Abbrev Number: 16 (DW_TAG_variable)
-    <299>   DW_AT_name        : (indirect string, offset: 0xc6): current_wordsize	
-    <29d>   DW_AT_decl_file   : 7	
-    <29e>   DW_AT_decl_line   : 757	
-    <2a0>   DW_AT_type        : <0x47>	
-    <2a4>   DW_AT_external    : 1	
-    <2a5>   DW_AT_declaration : 1	
- <1><2a6>: Abbrev Number: 16 (DW_TAG_variable)
-    <2a7>   DW_AT_name        : (indirect string, offset: 0xbf): sysent	
-    <2ab>   DW_AT_decl_file   : 7	
-    <2ac>   DW_AT_decl_line   : 892	
-    <2ae>   DW_AT_type        : <0xfc>	
-    <2b2>   DW_AT_external    : 1	
-    <2b3>   DW_AT_declaration : 1	
- <1><2b4>: Abbrev Number: 16 (DW_TAG_variable)
-    <2b5>   DW_AT_name        : (indirect string, offset: 0x1ba): nsyscalls	
-    <2b9>   DW_AT_decl_file   : 7	
-    <2ba>   DW_AT_decl_line   : 903	
-    <2bc>   DW_AT_type        : <0x47>	
-    <2c0>   DW_AT_external    : 1	
-    <2c1>   DW_AT_declaration : 1	
- <1><2c2>: Abbrev Number: 17 (DW_TAG_variable)
-    <2c3>   DW_AT_name        : (indirect string, offset: 0xe): mpers_target_var	
-    <2c7>   DW_AT_decl_file   : 6	
-    <2c8>   DW_AT_decl_line   : 42	
-    <2c9>   DW_AT_type        : <0x28d>	
-    <2cd>   DW_AT_external    : 1	
-    <2ce>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><2d4>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_ifreq.d2 b/mpers-m32/struct_ifreq.d2
deleted file mode 100644
index e8e6901..0000000
--- a/mpers-m32/struct_ifreq.d2
+++ /dev/null
@@ -1,388 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x24d): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x203): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e6): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe3): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x25): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x160): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6b): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x233): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa0): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1dd): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x4e): __caddr_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x75>
-<1><75>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7b>
-<1><7b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x17b): char
-<1><82>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x88>
-<1><88>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x7b>
-<1><8d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xbf): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe0>
-<2><99>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20d): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x61): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><b5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x295): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xeb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x45): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x82>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xeb>
-<2><e9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><eb>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe0>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x16d): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x8d>
-<1><fc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x102>
-<1><102>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf1>
-<1><107>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1f): _Bool
-<1><10e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xd7): sa_family_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x40>
-<1><119>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x23c): sockaddr
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 149
-DW_AT_sibling     : <0x142>
-<2><125>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f4): sa_family
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 151
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><133>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x245): sa_data
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 152
-DW_AT_type        : <0x142>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><142>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x152>
-<2><14b>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 13
-<1><152>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): ifmap
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 111
-DW_AT_sibling     : <0x1b3>
-<2><15e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x259): mem_start
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 113
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><16c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): mem_end
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 114
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><17a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14d): base_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 115
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><188>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : irq
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 116
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><196>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : dma
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 117
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
-<2><1a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fe): port
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 118
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1b3>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 130
-DW_AT_sibling     : <0x1c7>
-<2><1bb>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf1): ifrn_name
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 132
-DW_AT_type        : <0x1c7>
-<1><1c7>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x1d7>
-<2><1d0>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><1d7>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 135
-DW_AT_sibling     : <0x264>
-<2><1df>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x82): ifru_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 137
-DW_AT_type        : <0x119>
-<2><1ea>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x38): ifru_dstaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 138
-DW_AT_type        : <0x119>
-<2><1f5>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x224): ifru_broadaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x119>
-<2><200>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26f): ifru_netmask
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 140
-DW_AT_type        : <0x119>
-<2><20b>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x263): ifru_hwaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x119>
-<2><216>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8c): ifru_flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 142
-DW_AT_type        : <0x24>
-<2><221>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d1): ifru_ivalue
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 143
-DW_AT_type        : <0x2b>
-<2><22c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x97): ifru_mtu
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<2><237>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x58): ifru_map
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 145
-DW_AT_type        : <0x152>
-<2><242>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x213): ifru_slave
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 146
-DW_AT_type        : <0x1c7>
-<2><24d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c4): ifru_newname
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 147
-DW_AT_type        : <0x1c7>
-<2><258>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x143): ifru_data
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 148
-DW_AT_type        : <0x6a>
-<1><264>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x21e): ifreq
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 126
-DW_AT_sibling     : <0x28d>
-<2><270>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x157): ifr_ifrn
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x1b3>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><27e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x180): ifr_ifru
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 149
-DW_AT_type        : <0x1d7>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><28d>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xb2): struct_ifreq
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x264>
-<1><298>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc6): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2a6>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xbf): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xfc>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2b4>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1ba): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2c2>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x28d>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_loop_info.c b/mpers-m32/struct_loop_info.c
index 25d76e1..a7116a1 100644
--- a/mpers-m32/struct_loop_info.c
+++ b/mpers-m32/struct_loop_info.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012 The Chromium OS Authors.
+ * Copyright (c) 2012-2017 The strace developers.
  * Written by Mike Frysinger <vapier@gentoo.org>.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/struct_loop_info.d1 b/mpers-m32/struct_loop_info.d1
deleted file mode 100644
index 7213b1d..0000000
--- a/mpers-m32/struct_loop_info.d1
+++ /dev/null
@@ -1,272 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x243 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xf6): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x229): mpers-m32/struct_loop_info.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x18a): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x20b): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1f8): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1ce): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x95): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x23): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x14d): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x76): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x202): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xa3): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1c5): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x168): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_array_type)
-    <72>   DW_AT_type        : <0x6a>	
-    <76>   DW_AT_sibling     : <0x81>	
- <2><7a>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <7b>   DW_AT_type        : <0x63>	
-    <7f>   DW_AT_upper_bound : 3	
- <2><80>: Abbrev Number: 0
- <1><81>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <82>   DW_AT_byte_size   : 4	
-    <83>   DW_AT_type        : <0x87>	
- <1><87>: Abbrev Number: 7 (DW_TAG_const_type)
-    <88>   DW_AT_type        : <0x6a>	
- <1><8c>: Abbrev Number: 8 (DW_TAG_typedef)
-    <8d>   DW_AT_name        : (indirect string, offset: 0xbc): __kernel_old_dev_t	
-    <91>   DW_AT_decl_file   : 2	
-    <92>   DW_AT_decl_line   : 20	
-    <93>   DW_AT_type        : <0x40>	
- <1><97>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <98>   DW_AT_name        : (indirect string, offset: 0xb5): sysent	
-    <9c>   DW_AT_byte_size   : 20	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 4	
-    <9f>   DW_AT_sibling     : <0xea>	
- <2><a3>: Abbrev Number: 10 (DW_TAG_member)
-    <a4>   DW_AT_name        : (indirect string, offset: 0xf0): nargs	
-    <a8>   DW_AT_decl_file   : 1	
-    <a9>   DW_AT_decl_line   : 5	
-    <aa>   DW_AT_type        : <0x47>	
-    <ae>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b1>: Abbrev Number: 10 (DW_TAG_member)
-    <b2>   DW_AT_name        : (indirect string, offset: 0x6c): sys_flags	
-    <b6>   DW_AT_decl_file   : 1	
-    <b7>   DW_AT_decl_line   : 6	
-    <b8>   DW_AT_type        : <0x2b>	
-    <bc>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><bf>: Abbrev Number: 11 (DW_TAG_member)
-    <c0>   DW_AT_name        : sen	
-    <c4>   DW_AT_decl_file   : 1	
-    <c5>   DW_AT_decl_line   : 7	
-    <c6>   DW_AT_type        : <0x2b>	
-    <ca>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><cd>: Abbrev Number: 10 (DW_TAG_member)
-    <ce>   DW_AT_name        : (indirect string, offset: 0x220): sys_func	
-    <d2>   DW_AT_decl_file   : 1	
-    <d3>   DW_AT_decl_line   : 8	
-    <d4>   DW_AT_type        : <0xf5>	
-    <d8>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><db>: Abbrev Number: 10 (DW_TAG_member)
-    <dc>   DW_AT_name        : (indirect string, offset: 0x36): sys_name	
-    <e0>   DW_AT_decl_file   : 1	
-    <e1>   DW_AT_decl_line   : 9	
-    <e2>   DW_AT_type        : <0x81>	
-    <e6>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e9>: Abbrev Number: 0
- <1><ea>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <eb>   DW_AT_type        : <0x2b>	
-    <ef>   DW_AT_sibling     : <0xf5>	
- <2><f3>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><f4>: Abbrev Number: 0
- <1><f5>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <f6>   DW_AT_byte_size   : 4	
-    <f7>   DW_AT_type        : <0xea>	
- <1><fb>: Abbrev Number: 8 (DW_TAG_typedef)
-    <fc>   DW_AT_name        : (indirect string, offset: 0x15a): struct_sysent	
-    <100>   DW_AT_decl_file   : 1	
-    <101>   DW_AT_decl_line   : 10	
-    <102>   DW_AT_type        : <0x97>	
- <1><106>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <107>   DW_AT_byte_size   : 4	
-    <108>   DW_AT_type        : <0x10c>	
- <1><10c>: Abbrev Number: 7 (DW_TAG_const_type)
-    <10d>   DW_AT_type        : <0xfb>	
- <1><111>: Abbrev Number: 2 (DW_TAG_base_type)
-    <112>   DW_AT_byte_size   : 1	
-    <113>   DW_AT_encoding    : 2	(boolean)
-    <114>   DW_AT_name        : (indirect string, offset: 0x14): _Bool	
- <1><118>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <119>   DW_AT_name        : (indirect string, offset: 0xa): loop_info	
-    <11d>   DW_AT_byte_size   : 140	
-    <11e>   DW_AT_decl_file   : 3	
-    <11f>   DW_AT_decl_line   : 30	
-    <120>   DW_AT_sibling     : <0x1cf>	
- <2><124>: Abbrev Number: 10 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x1ee): lo_number	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 31	
-    <12b>   DW_AT_type        : <0x2b>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><132>: Abbrev Number: 10 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x1e4): lo_device	
-    <137>   DW_AT_decl_file   : 3	
-    <138>   DW_AT_decl_line   : 32	
-    <139>   DW_AT_type        : <0x8c>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><140>: Abbrev Number: 10 (DW_TAG_member)
-    <141>   DW_AT_name        : (indirect string, offset: 0x217): lo_inode	
-    <145>   DW_AT_decl_file   : 3	
-    <146>   DW_AT_decl_line   : 33	
-    <147>   DW_AT_type        : <0x5c>	
-    <14b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><14e>: Abbrev Number: 10 (DW_TAG_member)
-    <14f>   DW_AT_name        : (indirect string, offset: 0x3f): lo_rdevice	
-    <153>   DW_AT_decl_file   : 3	
-    <154>   DW_AT_decl_line   : 34	
-    <155>   DW_AT_type        : <0x8c>	
-    <159>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><15c>: Abbrev Number: 10 (DW_TAG_member)
-    <15d>   DW_AT_name        : (indirect string, offset: 0x0): lo_offset	
-    <161>   DW_AT_decl_file   : 3	
-    <162>   DW_AT_decl_line   : 35	
-    <163>   DW_AT_type        : <0x2b>	
-    <167>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><16a>: Abbrev Number: 10 (DW_TAG_member)
-    <16b>   DW_AT_name        : (indirect string, offset: 0xcf): lo_encrypt_type	
-    <16f>   DW_AT_decl_file   : 3	
-    <170>   DW_AT_decl_line   : 36	
-    <171>   DW_AT_type        : <0x2b>	
-    <175>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><178>: Abbrev Number: 10 (DW_TAG_member)
-    <179>   DW_AT_name        : (indirect string, offset: 0x176): lo_encrypt_key_size	
-    <17d>   DW_AT_decl_file   : 3	
-    <17e>   DW_AT_decl_line   : 37	
-    <17f>   DW_AT_type        : <0x2b>	
-    <183>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><186>: Abbrev Number: 10 (DW_TAG_member)
-    <187>   DW_AT_name        : (indirect string, offset: 0x16d): lo_flags	
-    <18b>   DW_AT_decl_file   : 3	
-    <18c>   DW_AT_decl_line   : 38	
-    <18d>   DW_AT_type        : <0x2b>	
-    <191>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><194>: Abbrev Number: 10 (DW_TAG_member)
-    <195>   DW_AT_name        : (indirect string, offset: 0x8d): lo_name	
-    <199>   DW_AT_decl_file   : 3	
-    <19a>   DW_AT_decl_line   : 39	
-    <19b>   DW_AT_type        : <0x1cf>	
-    <19f>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1a2>: Abbrev Number: 10 (DW_TAG_member)
-    <1a3>   DW_AT_name        : (indirect string, offset: 0x13e): lo_encrypt_key	
-    <1a7>   DW_AT_decl_file   : 3	
-    <1a8>   DW_AT_decl_line   : 40	
-    <1a9>   DW_AT_type        : <0x1df>	
-    <1ad>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><1b0>: Abbrev Number: 10 (DW_TAG_member)
-    <1b1>   DW_AT_name        : (indirect string, offset: 0x1dc): lo_init	
-    <1b5>   DW_AT_decl_file   : 3	
-    <1b6>   DW_AT_decl_line   : 41	
-    <1b7>   DW_AT_type        : <0x1ef>	
-    <1bb>   DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
- <2><1bf>: Abbrev Number: 10 (DW_TAG_member)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0x1a): reserved	
-    <1c4>   DW_AT_decl_file   : 3	
-    <1c5>   DW_AT_decl_line   : 42	
-    <1c6>   DW_AT_type        : <0x71>	
-    <1ca>   DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
- <2><1ce>: Abbrev Number: 0
- <1><1cf>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1d0>   DW_AT_type        : <0x6a>	
-    <1d4>   DW_AT_sibling     : <0x1df>	
- <2><1d8>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1d9>   DW_AT_type        : <0x63>	
-    <1dd>   DW_AT_upper_bound : 63	
- <2><1de>: Abbrev Number: 0
- <1><1df>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1e0>   DW_AT_type        : <0x39>	
-    <1e4>   DW_AT_sibling     : <0x1ef>	
- <2><1e8>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1e9>   DW_AT_type        : <0x63>	
-    <1ed>   DW_AT_upper_bound : 31	
- <2><1ee>: Abbrev Number: 0
- <1><1ef>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1f0>   DW_AT_type        : <0x5c>	
-    <1f4>   DW_AT_sibling     : <0x1ff>	
- <2><1f8>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1f9>   DW_AT_type        : <0x63>	
-    <1fd>   DW_AT_upper_bound : 1	
- <2><1fe>: Abbrev Number: 0
- <1><1ff>: Abbrev Number: 8 (DW_TAG_typedef)
-    <200>   DW_AT_name        : (indirect string, offset: 0x4a): struct_loop_info	
-    <204>   DW_AT_decl_file   : 4	
-    <205>   DW_AT_decl_line   : 32	
-    <206>   DW_AT_type        : <0x118>	
- <1><20a>: Abbrev Number: 14 (DW_TAG_variable)
-    <20b>   DW_AT_name        : (indirect string, offset: 0xdf): current_wordsize	
-    <20f>   DW_AT_decl_file   : 5	
-    <210>   DW_AT_decl_line   : 757	
-    <212>   DW_AT_type        : <0x47>	
-    <216>   DW_AT_external    : 1	
-    <217>   DW_AT_declaration : 1	
- <1><218>: Abbrev Number: 14 (DW_TAG_variable)
-    <219>   DW_AT_name        : (indirect string, offset: 0xb5): sysent	
-    <21d>   DW_AT_decl_file   : 5	
-    <21e>   DW_AT_decl_line   : 892	
-    <220>   DW_AT_type        : <0x106>	
-    <224>   DW_AT_external    : 1	
-    <225>   DW_AT_declaration : 1	
- <1><226>: Abbrev Number: 14 (DW_TAG_variable)
-    <227>   DW_AT_name        : (indirect string, offset: 0x1bb): nsyscalls	
-    <22b>   DW_AT_decl_file   : 5	
-    <22c>   DW_AT_decl_line   : 903	
-    <22e>   DW_AT_type        : <0x47>	
-    <232>   DW_AT_external    : 1	
-    <233>   DW_AT_declaration : 1	
- <1><234>: Abbrev Number: 15 (DW_TAG_variable)
-    <235>   DW_AT_name        : (indirect string, offset: 0x5b): mpers_target_var	
-    <239>   DW_AT_decl_file   : 4	
-    <23a>   DW_AT_decl_line   : 35	
-    <23b>   DW_AT_type        : <0x1ff>	
-    <23f>   DW_AT_external    : 1	
-    <240>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><246>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_loop_info.d2 b/mpers-m32/struct_loop_info.d2
deleted file mode 100644
index 00b3dd6..0000000
--- a/mpers-m32/struct_loop_info.d2
+++ /dev/null
@@ -1,304 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x20b): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f8): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ce): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x95): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x23): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14d): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x76): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x202): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa3): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c5): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x168): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x81>
-<2><7a>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><81>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x87>
-<1><87>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><8c>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xbc): __kernel_old_dev_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x40>
-<1><97>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xb5): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xea>
-<2><a3>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf0): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6c): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><bf>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><cd>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf5>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><db>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x36): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x81>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><ea>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf5>
-<2><f3>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><f5>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xea>
-<1><fb>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x15a): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x97>
-<1><106>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x10c>
-<1><10c>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0xfb>
-<1><111>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x14): _Bool
-<1><118>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xa): loop_info
-DW_AT_byte_size   : 140
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0x1cf>
-<2><124>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ee): lo_number
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><132>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e4): lo_device
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x8c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><140>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x217): lo_inode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><14e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3f): lo_rdevice
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x8c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><15c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): lo_offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><16a>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcf): lo_encrypt_type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><178>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x176): lo_encrypt_key_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><186>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16d): lo_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><194>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8d): lo_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x1cf>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1a2>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13e): lo_encrypt_key
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x1df>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><1b0>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1dc): lo_init
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x1ef>
-DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
-<2><1bf>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
-<1><1cf>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x1df>
-<2><1d8>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 63
-<1><1df>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x39>
-DW_AT_sibling     : <0x1ef>
-<2><1e8>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 31
-<1><1ef>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x5c>
-DW_AT_sibling     : <0x1ff>
-<2><1f8>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><1ff>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x4a): struct_loop_info
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x118>
-<1><20a>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xdf): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><218>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xb5): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x106>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><226>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1bb): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><234>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x5b): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x1ff>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_mmsghdr.d1 b/mpers-m32/struct_mmsghdr.d1
deleted file mode 100644
index a469e06..0000000
--- a/mpers-m32/struct_mmsghdr.d1
+++ /dev/null
@@ -1,267 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x22c (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xe4): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1d5): mpers-m32/struct_mmsghdr.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x16c): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x221): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1f0): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1bb): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x94): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x3f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x135): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x7d): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x202): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xa2): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1b2): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x150): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_typedef)
-    <74>   DW_AT_name        : (indirect string, offset: 0x215): __socklen_t	
-    <78>   DW_AT_decl_file   : 1	
-    <79>   DW_AT_decl_line   : 189	
-    <7a>   DW_AT_type        : <0x47>	
- <1><7e>: Abbrev Number: 5 (DW_TAG_typedef)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xf): size_t	
-    <83>   DW_AT_decl_file   : 2	
-    <84>   DW_AT_decl_line   : 212	
-    <85>   DW_AT_type        : <0x47>	
- <1><89>: Abbrev Number: 6 (DW_TAG_typedef)
-    <8a>   DW_AT_name        : (indirect string, offset: 0x20b): socklen_t	
-    <8e>   DW_AT_decl_file   : 3	
-    <8f>   DW_AT_decl_line   : 274	
-    <91>   DW_AT_type        : <0x73>	
- <1><95>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <96>   DW_AT_byte_size   : 4	
-    <97>   DW_AT_type        : <0x9b>	
- <1><9b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <9c>   DW_AT_type        : <0x6c>	
- <1><a0>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a1>   DW_AT_name        : (indirect string, offset: 0xb4): sysent	
-    <a5>   DW_AT_byte_size   : 20	
-    <a6>   DW_AT_decl_file   : 4	
-    <a7>   DW_AT_decl_line   : 4	
-    <a8>   DW_AT_sibling     : <0xf3>	
- <2><ac>: Abbrev Number: 10 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0xd8): nargs	
-    <b1>   DW_AT_decl_file   : 4	
-    <b2>   DW_AT_decl_line   : 5	
-    <b3>   DW_AT_type        : <0x47>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ba>: Abbrev Number: 10 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0x73): sys_flags	
-    <bf>   DW_AT_decl_file   : 4	
-    <c0>   DW_AT_decl_line   : 6	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c8>: Abbrev Number: 11 (DW_TAG_member)
-    <c9>   DW_AT_name        : sen	
-    <cd>   DW_AT_decl_file   : 4	
-    <ce>   DW_AT_decl_line   : 7	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d6>: Abbrev Number: 10 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x22d): sys_func	
-    <db>   DW_AT_decl_file   : 4	
-    <dc>   DW_AT_decl_line   : 8	
-    <dd>   DW_AT_type        : <0xfe>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e4>: Abbrev Number: 10 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0x52): sys_name	
-    <e9>   DW_AT_decl_file   : 4	
-    <ea>   DW_AT_decl_line   : 9	
-    <eb>   DW_AT_type        : <0x95>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><f2>: Abbrev Number: 0
- <1><f3>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <f4>   DW_AT_type        : <0x2b>	
-    <f8>   DW_AT_sibling     : <0xfe>	
- <2><fc>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><fd>: Abbrev Number: 0
- <1><fe>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <ff>   DW_AT_byte_size   : 4	
-    <100>   DW_AT_type        : <0xf3>	
- <1><104>: Abbrev Number: 5 (DW_TAG_typedef)
-    <105>   DW_AT_name        : (indirect string, offset: 0x142): struct_sysent	
-    <109>   DW_AT_decl_file   : 4	
-    <10a>   DW_AT_decl_line   : 10	
-    <10b>   DW_AT_type        : <0xa0>	
- <1><10f>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <110>   DW_AT_byte_size   : 4	
-    <111>   DW_AT_type        : <0x115>	
- <1><115>: Abbrev Number: 8 (DW_TAG_const_type)
-    <116>   DW_AT_type        : <0x104>	
- <1><11a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <11b>   DW_AT_byte_size   : 1	
-    <11c>   DW_AT_encoding    : 2	(boolean)
-    <11d>   DW_AT_name        : (indirect string, offset: 0x27): _Bool	
- <1><121>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <122>   DW_AT_name        : (indirect string, offset: 0xde): iovec	
-    <126>   DW_AT_byte_size   : 8	
-    <127>   DW_AT_decl_file   : 5	
-    <128>   DW_AT_decl_line   : 43	
-    <129>   DW_AT_sibling     : <0x14a>	
- <2><12d>: Abbrev Number: 10 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x12c): iov_base	
-    <132>   DW_AT_decl_file   : 5	
-    <133>   DW_AT_decl_line   : 45	
-    <134>   DW_AT_type        : <0x6a>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><13b>: Abbrev Number: 10 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x1f): iov_len	
-    <140>   DW_AT_decl_file   : 5	
-    <141>   DW_AT_decl_line   : 46	
-    <142>   DW_AT_type        : <0x7e>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><149>: Abbrev Number: 0
- <1><14a>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x5b): msghdr	
-    <14f>   DW_AT_byte_size   : 28	
-    <150>   DW_AT_decl_file   : 6	
-    <151>   DW_AT_decl_line   : 224	
-    <152>   DW_AT_sibling     : <0x1b9>	
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x16): msg_name	
-    <15b>   DW_AT_decl_file   : 6	
-    <15c>   DW_AT_decl_line   : 226	
-    <15d>   DW_AT_type        : <0x6a>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><164>: Abbrev Number: 10 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x1c9): msg_namelen	
-    <169>   DW_AT_decl_file   : 6	
-    <16a>   DW_AT_decl_line   : 227	
-    <16b>   DW_AT_type        : <0x89>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><172>: Abbrev Number: 10 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x155): msg_iov	
-    <177>   DW_AT_decl_file   : 6	
-    <178>   DW_AT_decl_line   : 229	
-    <179>   DW_AT_type        : <0x1b9>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 10 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x1a7): msg_iovlen	
-    <185>   DW_AT_decl_file   : 6	
-    <186>   DW_AT_decl_line   : 230	
-    <187>   DW_AT_type        : <0x7e>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18e>: Abbrev Number: 10 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0xcc): msg_control	
-    <193>   DW_AT_decl_file   : 6	
-    <194>   DW_AT_decl_line   : 232	
-    <195>   DW_AT_type        : <0x6a>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 10 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x0): msg_controllen	
-    <1a1>   DW_AT_decl_file   : 6	
-    <1a2>   DW_AT_decl_line   : 233	
-    <1a3>   DW_AT_type        : <0x7e>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1aa>: Abbrev Number: 10 (DW_TAG_member)
-    <1ab>   DW_AT_name        : (indirect string, offset: 0x35): msg_flags	
-    <1af>   DW_AT_decl_file   : 6	
-    <1b0>   DW_AT_decl_line   : 238	
-    <1b1>   DW_AT_type        : <0x2b>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1b8>: Abbrev Number: 0
- <1><1b9>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <1ba>   DW_AT_byte_size   : 4	
-    <1bb>   DW_AT_type        : <0x121>	
- <1><1bf>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0x1fa): mmsghdr	
-    <1c4>   DW_AT_byte_size   : 32	
-    <1c5>   DW_AT_decl_file   : 7	
-    <1c6>   DW_AT_decl_line   : 101	
-    <1c7>   DW_AT_sibling     : <0x1e8>	
- <2><1cb>: Abbrev Number: 10 (DW_TAG_member)
-    <1cc>   DW_AT_name        : (indirect string, offset: 0x2d): msg_hdr	
-    <1d0>   DW_AT_decl_file   : 7	
-    <1d1>   DW_AT_decl_line   : 103	
-    <1d2>   DW_AT_type        : <0x14a>	
-    <1d6>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1d9>: Abbrev Number: 10 (DW_TAG_member)
-    <1da>   DW_AT_name        : (indirect string, offset: 0x236): msg_len	
-    <1de>   DW_AT_decl_file   : 7	
-    <1df>   DW_AT_decl_line   : 104	
-    <1e0>   DW_AT_type        : <0x47>	
-    <1e4>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1e7>: Abbrev Number: 0
- <1><1e8>: Abbrev Number: 5 (DW_TAG_typedef)
-    <1e9>   DW_AT_name        : (indirect string, offset: 0x15d): struct_mmsghdr	
-    <1ed>   DW_AT_decl_file   : 8	
-    <1ee>   DW_AT_decl_line   : 32	
-    <1ef>   DW_AT_type        : <0x1bf>	
- <1><1f3>: Abbrev Number: 14 (DW_TAG_variable)
-    <1f4>   DW_AT_name        : (indirect string, offset: 0xbb): current_wordsize	
-    <1f8>   DW_AT_decl_file   : 9	
-    <1f9>   DW_AT_decl_line   : 757	
-    <1fb>   DW_AT_type        : <0x47>	
-    <1ff>   DW_AT_external    : 1	
-    <200>   DW_AT_declaration : 1	
- <1><201>: Abbrev Number: 14 (DW_TAG_variable)
-    <202>   DW_AT_name        : (indirect string, offset: 0xb4): sysent	
-    <206>   DW_AT_decl_file   : 9	
-    <207>   DW_AT_decl_line   : 892	
-    <209>   DW_AT_type        : <0x10f>	
-    <20d>   DW_AT_external    : 1	
-    <20e>   DW_AT_declaration : 1	
- <1><20f>: Abbrev Number: 14 (DW_TAG_variable)
-    <210>   DW_AT_name        : (indirect string, offset: 0x19d): nsyscalls	
-    <214>   DW_AT_decl_file   : 9	
-    <215>   DW_AT_decl_line   : 903	
-    <217>   DW_AT_type        : <0x47>	
-    <21b>   DW_AT_external    : 1	
-    <21c>   DW_AT_declaration : 1	
- <1><21d>: Abbrev Number: 15 (DW_TAG_variable)
-    <21e>   DW_AT_name        : (indirect string, offset: 0x62): mpers_target_var	
-    <222>   DW_AT_decl_file   : 8	
-    <223>   DW_AT_decl_line   : 34	
-    <224>   DW_AT_type        : <0x1e8>	
-    <228>   DW_AT_external    : 1	
-    <229>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><22f>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_mmsghdr.d2 b/mpers-m32/struct_mmsghdr.d2
deleted file mode 100644
index a082b70..0000000
--- a/mpers-m32/struct_mmsghdr.d2
+++ /dev/null
@@ -1,298 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x221): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f0): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1bb): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x94): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x3f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x135): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7d): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x202): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa2): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1b2): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x150): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x215): __socklen_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 189
-DW_AT_type        : <0x47>
-<1><7e>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><89>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x20b): socklen_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_type        : <0x73>
-<1><95>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x9b>
-<1><9b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><a0>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xb4): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf3>
-<2><ac>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd8): nargs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ba>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x73): sys_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c8>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22d): sys_func
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfe>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e4>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x52): sys_name
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x95>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f3>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfe>
-<2><fc>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><fe>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><104>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x142): struct_sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xa0>
-<1><10f>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x115>
-<1><115>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x104>
-<1><11a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x27): _Bool
-<1><121>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xde): iovec
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 43
-DW_AT_sibling     : <0x14a>
-<2><12d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12c): iov_base
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><13b>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): iov_len
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><14a>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x5b): msghdr
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 224
-DW_AT_sibling     : <0x1b9>
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16): msg_name
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 226
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><164>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c9): msg_namelen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 227
-DW_AT_type        : <0x89>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><172>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x155): msg_iov
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 229
-DW_AT_type        : <0x1b9>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a7): msg_iovlen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 230
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><18e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcc): msg_control
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 232
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): msg_controllen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 233
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1aa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x35): msg_flags
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 238
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><1b9>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x121>
-<1><1bf>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1fa): mmsghdr
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 101
-DW_AT_sibling     : <0x1e8>
-<2><1cb>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d): msg_hdr
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 103
-DW_AT_type        : <0x14a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1d9>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x236): msg_len
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 104
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><1e8>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x15d): struct_mmsghdr
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x1bf>
-<1><1f3>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xbb): current_wordsize
-DW_AT_decl_file   : 9
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><201>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xb4): sysent
-DW_AT_decl_file   : 9
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10f>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><20f>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x19d): nsyscalls
-DW_AT_decl_file   : 9
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><21d>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x62): mpers_target_var
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1e8>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_msghdr.d1 b/mpers-m32/struct_msghdr.d1
deleted file mode 100644
index b3a88be..0000000
--- a/mpers-m32/struct_msghdr.d1
+++ /dev/null
@@ -1,248 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x203 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x104): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x2d): mpers-m32/struct_msghdr.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x17d): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x20f): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1e6): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1cc): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa6): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x51): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x155): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x8f): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1f0): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb4): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1c3): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x170): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_typedef)
-    <74>   DW_AT_name        : (indirect string, offset: 0x203): __socklen_t	
-    <78>   DW_AT_decl_file   : 1	
-    <79>   DW_AT_decl_line   : 189	
-    <7a>   DW_AT_type        : <0x47>	
- <1><7e>: Abbrev Number: 5 (DW_TAG_typedef)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xf): size_t	
-    <83>   DW_AT_decl_file   : 2	
-    <84>   DW_AT_decl_line   : 212	
-    <85>   DW_AT_type        : <0x47>	
- <1><89>: Abbrev Number: 6 (DW_TAG_typedef)
-    <8a>   DW_AT_name        : (indirect string, offset: 0x1f9): socklen_t	
-    <8e>   DW_AT_decl_file   : 3	
-    <8f>   DW_AT_decl_line   : 274	
-    <91>   DW_AT_type        : <0x73>	
- <1><95>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <96>   DW_AT_byte_size   : 4	
-    <97>   DW_AT_type        : <0x9b>	
- <1><9b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <9c>   DW_AT_type        : <0x6c>	
- <1><a0>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a1>   DW_AT_name        : (indirect string, offset: 0xc6): sysent	
-    <a5>   DW_AT_byte_size   : 20	
-    <a6>   DW_AT_decl_file   : 4	
-    <a7>   DW_AT_decl_line   : 4	
-    <a8>   DW_AT_sibling     : <0xf3>	
- <2><ac>: Abbrev Number: 10 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0xf8): nargs	
-    <b1>   DW_AT_decl_file   : 4	
-    <b2>   DW_AT_decl_line   : 5	
-    <b3>   DW_AT_type        : <0x47>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ba>: Abbrev Number: 10 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0x85): sys_flags	
-    <bf>   DW_AT_decl_file   : 4	
-    <c0>   DW_AT_decl_line   : 6	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c8>: Abbrev Number: 11 (DW_TAG_member)
-    <c9>   DW_AT_name        : sen	
-    <cd>   DW_AT_decl_file   : 4	
-    <ce>   DW_AT_decl_line   : 7	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d6>: Abbrev Number: 10 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x21b): sys_func	
-    <db>   DW_AT_decl_file   : 4	
-    <dc>   DW_AT_decl_line   : 8	
-    <dd>   DW_AT_type        : <0xfe>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e4>: Abbrev Number: 10 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0x64): sys_name	
-    <e9>   DW_AT_decl_file   : 4	
-    <ea>   DW_AT_decl_line   : 9	
-    <eb>   DW_AT_type        : <0x95>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><f2>: Abbrev Number: 0
- <1><f3>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <f4>   DW_AT_type        : <0x2b>	
-    <f8>   DW_AT_sibling     : <0xfe>	
- <2><fc>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><fd>: Abbrev Number: 0
- <1><fe>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <ff>   DW_AT_byte_size   : 4	
-    <100>   DW_AT_type        : <0xf3>	
- <1><104>: Abbrev Number: 5 (DW_TAG_typedef)
-    <105>   DW_AT_name        : (indirect string, offset: 0x162): struct_sysent	
-    <109>   DW_AT_decl_file   : 4	
-    <10a>   DW_AT_decl_line   : 10	
-    <10b>   DW_AT_type        : <0xa0>	
- <1><10f>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <110>   DW_AT_byte_size   : 4	
-    <111>   DW_AT_type        : <0x115>	
- <1><115>: Abbrev Number: 8 (DW_TAG_const_type)
-    <116>   DW_AT_type        : <0x104>	
- <1><11a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <11b>   DW_AT_byte_size   : 1	
-    <11c>   DW_AT_encoding    : 2	(boolean)
-    <11d>   DW_AT_name        : (indirect string, offset: 0x1f): _Bool	
- <1><121>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <122>   DW_AT_name        : (indirect string, offset: 0xfe): iovec	
-    <126>   DW_AT_byte_size   : 8	
-    <127>   DW_AT_decl_file   : 5	
-    <128>   DW_AT_decl_line   : 43	
-    <129>   DW_AT_sibling     : <0x14a>	
- <2><12d>: Abbrev Number: 10 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x14c): iov_base	
-    <132>   DW_AT_decl_file   : 5	
-    <133>   DW_AT_decl_line   : 45	
-    <134>   DW_AT_type        : <0x6a>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><13b>: Abbrev Number: 10 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x25): iov_len	
-    <140>   DW_AT_decl_file   : 5	
-    <141>   DW_AT_decl_line   : 46	
-    <142>   DW_AT_type        : <0x7e>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><149>: Abbrev Number: 0
- <1><14a>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x6d): msghdr	
-    <14f>   DW_AT_byte_size   : 28	
-    <150>   DW_AT_decl_file   : 6	
-    <151>   DW_AT_decl_line   : 224	
-    <152>   DW_AT_sibling     : <0x1b9>	
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x16): msg_name	
-    <15b>   DW_AT_decl_file   : 6	
-    <15c>   DW_AT_decl_line   : 226	
-    <15d>   DW_AT_type        : <0x6a>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><164>: Abbrev Number: 10 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x1da): msg_namelen	
-    <169>   DW_AT_decl_file   : 6	
-    <16a>   DW_AT_decl_line   : 227	
-    <16b>   DW_AT_type        : <0x89>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><172>: Abbrev Number: 10 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x175): msg_iov	
-    <177>   DW_AT_decl_file   : 6	
-    <178>   DW_AT_decl_line   : 229	
-    <179>   DW_AT_type        : <0x1b9>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 10 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x1b8): msg_iovlen	
-    <185>   DW_AT_decl_file   : 6	
-    <186>   DW_AT_decl_line   : 230	
-    <187>   DW_AT_type        : <0x7e>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18e>: Abbrev Number: 10 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0xde): msg_control	
-    <193>   DW_AT_decl_file   : 6	
-    <194>   DW_AT_decl_line   : 232	
-    <195>   DW_AT_type        : <0x6a>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 10 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x0): msg_controllen	
-    <1a1>   DW_AT_decl_file   : 6	
-    <1a2>   DW_AT_decl_line   : 233	
-    <1a3>   DW_AT_type        : <0x7e>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1aa>: Abbrev Number: 10 (DW_TAG_member)
-    <1ab>   DW_AT_name        : (indirect string, offset: 0x47): msg_flags	
-    <1af>   DW_AT_decl_file   : 6	
-    <1b0>   DW_AT_decl_line   : 238	
-    <1b1>   DW_AT_type        : <0x2b>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1b8>: Abbrev Number: 0
- <1><1b9>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <1ba>   DW_AT_byte_size   : 4	
-    <1bb>   DW_AT_type        : <0x121>	
- <1><1bf>: Abbrev Number: 5 (DW_TAG_typedef)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0xea): struct_msghdr	
-    <1c4>   DW_AT_decl_file   : 7	
-    <1c5>   DW_AT_decl_line   : 32	
-    <1c6>   DW_AT_type        : <0x14a>	
- <1><1ca>: Abbrev Number: 14 (DW_TAG_variable)
-    <1cb>   DW_AT_name        : (indirect string, offset: 0xcd): current_wordsize	
-    <1cf>   DW_AT_decl_file   : 8	
-    <1d0>   DW_AT_decl_line   : 757	
-    <1d2>   DW_AT_type        : <0x47>	
-    <1d6>   DW_AT_external    : 1	
-    <1d7>   DW_AT_declaration : 1	
- <1><1d8>: Abbrev Number: 14 (DW_TAG_variable)
-    <1d9>   DW_AT_name        : (indirect string, offset: 0xc6): sysent	
-    <1dd>   DW_AT_decl_file   : 8	
-    <1de>   DW_AT_decl_line   : 892	
-    <1e0>   DW_AT_type        : <0x10f>	
-    <1e4>   DW_AT_external    : 1	
-    <1e5>   DW_AT_declaration : 1	
- <1><1e6>: Abbrev Number: 14 (DW_TAG_variable)
-    <1e7>   DW_AT_name        : (indirect string, offset: 0x1ae): nsyscalls	
-    <1eb>   DW_AT_decl_file   : 8	
-    <1ec>   DW_AT_decl_line   : 903	
-    <1ee>   DW_AT_type        : <0x47>	
-    <1f2>   DW_AT_external    : 1	
-    <1f3>   DW_AT_declaration : 1	
- <1><1f4>: Abbrev Number: 15 (DW_TAG_variable)
-    <1f5>   DW_AT_name        : (indirect string, offset: 0x74): mpers_target_var	
-    <1f9>   DW_AT_decl_file   : 7	
-    <1fa>   DW_AT_decl_line   : 34	
-    <1fb>   DW_AT_type        : <0x1bf>	
-    <1ff>   DW_AT_external    : 1	
-    <200>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><206>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_msghdr.d2 b/mpers-m32/struct_msghdr.d2
deleted file mode 100644
index 3f8f984..0000000
--- a/mpers-m32/struct_msghdr.d2
+++ /dev/null
@@ -1,277 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x20f): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e6): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1cc): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa6): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x51): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x155): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8f): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f0): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb4): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c3): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x170): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x203): __socklen_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 189
-DW_AT_type        : <0x47>
-<1><7e>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><89>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1f9): socklen_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_type        : <0x73>
-<1><95>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x9b>
-<1><9b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><a0>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc6): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf3>
-<2><ac>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf8): nargs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ba>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x85): sys_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c8>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21b): sys_func
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfe>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e4>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x64): sys_name
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x95>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f3>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfe>
-<2><fc>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><fe>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><104>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x162): struct_sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xa0>
-<1><10f>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x115>
-<1><115>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x104>
-<1><11a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1f): _Bool
-<1><121>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xfe): iovec
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 43
-DW_AT_sibling     : <0x14a>
-<2><12d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14c): iov_base
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><13b>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25): iov_len
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><14a>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x6d): msghdr
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 224
-DW_AT_sibling     : <0x1b9>
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16): msg_name
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 226
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><164>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1da): msg_namelen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 227
-DW_AT_type        : <0x89>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><172>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x175): msg_iov
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 229
-DW_AT_type        : <0x1b9>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b8): msg_iovlen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 230
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><18e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xde): msg_control
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 232
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): msg_controllen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 233
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1aa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x47): msg_flags
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 238
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><1b9>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x121>
-<1><1bf>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xea): struct_msghdr
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x14a>
-<1><1ca>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xcd): current_wordsize
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1d8>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc6): sysent
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10f>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1e6>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1ae): nsyscalls
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1f4>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x74): mpers_target_var
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1bf>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_mtd_oob_buf.c b/mpers-m32/struct_mtd_oob_buf.c
index f781ae5..48fc9ab 100644
--- a/mpers-m32/struct_mtd_oob_buf.c
+++ b/mpers-m32/struct_mtd_oob_buf.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012 Mike Frysinger <vapier@gentoo.org>
+ * 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
diff --git a/mpers-m32/struct_mtd_oob_buf.d1 b/mpers-m32/struct_mtd_oob_buf.d1
deleted file mode 100644
index 012c136..0000000
--- a/mpers-m32/struct_mtd_oob_buf.d1
+++ /dev/null
@@ -1,193 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x189 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xab): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xf3): mpers-m32/struct_mtd_oob_buf.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x132): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1a9): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x190): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x176): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x73): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x12): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x112): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x5c): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1a0): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x81): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x16d): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x12d): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x93): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x19a): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x52): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1b5): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x25): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x11f): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x6): __u32	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 26	
-    <104>   DW_AT_type        : <0x47>	
- <1><108>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <109>   DW_AT_name        : (indirect string, offset: 0x184): mtd_oob_buf	
-    <10d>   DW_AT_byte_size   : 12	
-    <10e>   DW_AT_decl_file   : 3	
-    <10f>   DW_AT_decl_line   : 35	
-    <110>   DW_AT_sibling     : <0x13f>	
- <2><114>: Abbrev Number: 7 (DW_TAG_member)
-    <115>   DW_AT_name        : (indirect string, offset: 0xc): start	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 36	
-    <11b>   DW_AT_type        : <0xfd>	
-    <11f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><122>: Abbrev Number: 7 (DW_TAG_member)
-    <123>   DW_AT_name        : (indirect string, offset: 0x1be): length	
-    <127>   DW_AT_decl_file   : 3	
-    <128>   DW_AT_decl_line   : 37	
-    <129>   DW_AT_type        : <0xfd>	
-    <12d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><130>: Abbrev Number: 8 (DW_TAG_member)
-    <131>   DW_AT_name        : ptr	
-    <135>   DW_AT_decl_file   : 3	
-    <136>   DW_AT_decl_line   : 38	
-    <137>   DW_AT_type        : <0x13f>	
-    <13b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13e>: Abbrev Number: 0
- <1><13f>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <140>   DW_AT_byte_size   : 4	
-    <141>   DW_AT_type        : <0x39>	
- <1><145>: Abbrev Number: 11 (DW_TAG_typedef)
-    <146>   DW_AT_name        : (indirect string, offset: 0x2e): struct_mtd_oob_buf	
-    <14a>   DW_AT_decl_file   : 4	
-    <14b>   DW_AT_decl_line   : 40	
-    <14c>   DW_AT_type        : <0x108>	
- <1><150>: Abbrev Number: 12 (DW_TAG_variable)
-    <151>   DW_AT_name        : (indirect string, offset: 0x9a): current_wordsize	
-    <155>   DW_AT_decl_file   : 5	
-    <156>   DW_AT_decl_line   : 757	
-    <158>   DW_AT_type        : <0x47>	
-    <15c>   DW_AT_external    : 1	
-    <15d>   DW_AT_declaration : 1	
- <1><15e>: Abbrev Number: 12 (DW_TAG_variable)
-    <15f>   DW_AT_name        : (indirect string, offset: 0x93): sysent	
-    <163>   DW_AT_decl_file   : 5	
-    <164>   DW_AT_decl_line   : 892	
-    <166>   DW_AT_type        : <0xeb>	
-    <16a>   DW_AT_external    : 1	
-    <16b>   DW_AT_declaration : 1	
- <1><16c>: Abbrev Number: 12 (DW_TAG_variable)
-    <16d>   DW_AT_name        : (indirect string, offset: 0x163): nsyscalls	
-    <171>   DW_AT_decl_file   : 5	
-    <172>   DW_AT_decl_line   : 903	
-    <174>   DW_AT_type        : <0x47>	
-    <178>   DW_AT_external    : 1	
-    <179>   DW_AT_declaration : 1	
- <1><17a>: Abbrev Number: 13 (DW_TAG_variable)
-    <17b>   DW_AT_name        : (indirect string, offset: 0x41): mpers_target_var	
-    <17f>   DW_AT_decl_file   : 4	
-    <180>   DW_AT_decl_line   : 42	
-    <181>   DW_AT_type        : <0x145>	
-    <185>   DW_AT_external    : 1	
-    <186>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><18c>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_mtd_oob_buf.d2 b/mpers-m32/struct_mtd_oob_buf.d2
deleted file mode 100644
index 45c4194..0000000
--- a/mpers-m32/struct_mtd_oob_buf.d2
+++ /dev/null
@@ -1,213 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a9): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x190): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x176): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x73): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x112): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5c): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a0): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x81): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x16d): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x12d): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x93): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19a): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x52): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b5): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11f): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><108>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x184): mtd_oob_buf
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_sibling     : <0x13f>
-<2><114>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><122>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1be): length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><130>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : ptr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x13f>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><13f>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x39>
-<1><145>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2e): struct_mtd_oob_buf
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x108>
-<1><150>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9a): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><15e>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x93): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><16c>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x163): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17a>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x41): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x145>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_rt_sigframe.c b/mpers-m32/struct_rt_sigframe.c
new file mode 100644
index 0000000..e5a0b48
--- /dev/null
+++ b/mpers-m32/struct_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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 "defs.h"
+
+
+#include "rt_sigframe.h"
+
+struct_rt_sigframe mpers_target_var;
diff --git a/mpers-m32/struct_rt_sigframe.h b/mpers-m32/struct_rt_sigframe.h
new file mode 100644
index 0000000..5b21882
--- /dev/null
+++ b/mpers-m32/struct_rt_sigframe.h
@@ -0,0 +1,91 @@
+#include <inttypes.h>
+typedef uint32_t mpers_ptr_t;
+typedef
+struct {
+uint32_t pretcode;
+int32_t sig;
+uint32_t pinfo;
+uint32_t puc;
+struct {
+int32_t si_signo;
+int32_t si_errno;
+int32_t si_code;
+union {
+int32_t _pad[29];
+struct {
+int32_t si_pid;
+uint32_t si_uid;
+} ATTRIBUTE_PACKED _kill;
+struct {
+int32_t si_tid;
+int32_t si_overrun;
+union {
+int32_t sival_int;
+mpers_ptr_t sival_ptr;
+} si_sigval;
+} ATTRIBUTE_PACKED _timer;
+struct {
+int32_t si_pid;
+uint32_t si_uid;
+union {
+int32_t sival_int;
+mpers_ptr_t sival_ptr;
+} si_sigval;
+} ATTRIBUTE_PACKED _rt;
+struct {
+int32_t si_pid;
+uint32_t si_uid;
+int32_t si_status;
+int32_t si_utime;
+int32_t si_stime;
+} ATTRIBUTE_PACKED _sigchld;
+struct {
+mpers_ptr_t si_addr;
+int16_t si_addr_lsb;
+unsigned char mpers_end_filler_1[2];
+} ATTRIBUTE_PACKED _sigfault;
+struct {
+int32_t si_band;
+int32_t si_fd;
+} ATTRIBUTE_PACKED _sigpoll;
+struct {
+mpers_ptr_t _call_addr;
+int32_t _syscall;
+uint32_t _arch;
+} ATTRIBUTE_PACKED _sigsys;
+} _sifields;
+} ATTRIBUTE_PACKED info;
+struct {
+uint32_t uc_flags;
+mpers_ptr_t uc_link;
+struct {
+mpers_ptr_t ss_sp;
+int32_t ss_flags;
+uint32_t ss_size;
+} ATTRIBUTE_PACKED uc_stack;
+struct {
+int32_t gregs[19];
+mpers_ptr_t fpregs;
+uint32_t oldmask;
+uint32_t cr2;
+} ATTRIBUTE_PACKED uc_mcontext;
+struct {
+uint32_t __val[32];
+} ATTRIBUTE_PACKED uc_sigmask;
+struct {
+uint32_t cw;
+uint32_t sw;
+uint32_t tag;
+uint32_t ipoff;
+uint32_t cssel;
+uint32_t dataoff;
+uint32_t datasel;
+struct {
+uint16_t significand[4];
+uint16_t exponent;
+} ATTRIBUTE_PACKED _st[8];
+uint32_t status;
+} ATTRIBUTE_PACKED __fpregs_mem;
+} ATTRIBUTE_PACKED uc;
+} ATTRIBUTE_PACKED m32_struct_rt_sigframe;
+#define MPERS_m32_struct_rt_sigframe m32_struct_rt_sigframe
diff --git a/mpers-m32/struct_rtc_pll_info.d1 b/mpers-m32/struct_rtc_pll_info.d1
deleted file mode 100644
index 1266d06..0000000
--- a/mpers-m32/struct_rtc_pll_info.d1
+++ /dev/null
@@ -1,209 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1b0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xc7): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x141): mpers-m32/struct_rtc_pll_info.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x161): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e5): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1bb): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1ad): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x80): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x26): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x121): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x69): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1d2): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x8e): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x19c): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x13c): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xa0): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xb8): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x5f): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1f1): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x45): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x12e): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x20): _Bool	
- <1><fd>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x1c5): rtc_pll_info	
-    <102>   DW_AT_byte_size   : 28	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 55	
-    <105>   DW_AT_sibling     : <0x16c>	
- <2><109>: Abbrev Number: 7 (DW_TAG_member)
-    <10a>   DW_AT_name        : (indirect string, offset: 0xbe): pll_ctrl	
-    <10e>   DW_AT_decl_file   : 2	
-    <10f>   DW_AT_decl_line   : 56	
-    <110>   DW_AT_type        : <0x2b>	
-    <114>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><117>: Abbrev Number: 7 (DW_TAG_member)
-    <118>   DW_AT_name        : (indirect string, offset: 0x117): pll_value	
-    <11c>   DW_AT_decl_file   : 2	
-    <11d>   DW_AT_decl_line   : 57	
-    <11e>   DW_AT_type        : <0x2b>	
-    <122>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><125>: Abbrev Number: 7 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0x10f): pll_max	
-    <12a>   DW_AT_decl_file   : 2	
-    <12b>   DW_AT_decl_line   : 58	
-    <12c>   DW_AT_type        : <0x2b>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><133>: Abbrev Number: 7 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0x1a5): pll_min	
-    <138>   DW_AT_decl_file   : 2	
-    <139>   DW_AT_decl_line   : 59	
-    <13a>   DW_AT_type        : <0x2b>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><141>: Abbrev Number: 7 (DW_TAG_member)
-    <142>   DW_AT_name        : (indirect string, offset: 0x39): pll_posmult	
-    <146>   DW_AT_decl_file   : 2	
-    <147>   DW_AT_decl_line   : 60	
-    <148>   DW_AT_type        : <0x2b>	
-    <14c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><14f>: Abbrev Number: 7 (DW_TAG_member)
-    <150>   DW_AT_name        : (indirect string, offset: 0x0): pll_negmult	
-    <154>   DW_AT_decl_file   : 2	
-    <155>   DW_AT_decl_line   : 61	
-    <156>   DW_AT_type        : <0x2b>	
-    <15a>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><15d>: Abbrev Number: 7 (DW_TAG_member)
-    <15e>   DW_AT_name        : (indirect string, offset: 0x1db): pll_clock	
-    <162>   DW_AT_decl_file   : 2	
-    <163>   DW_AT_decl_line   : 62	
-    <164>   DW_AT_type        : <0x55>	
-    <168>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><16b>: Abbrev Number: 0
- <1><16c>: Abbrev Number: 11 (DW_TAG_typedef)
-    <16d>   DW_AT_name        : (indirect string, offset: 0xc): struct_rtc_pll_info	
-    <171>   DW_AT_decl_file   : 3	
-    <172>   DW_AT_decl_line   : 35	
-    <173>   DW_AT_type        : <0xfd>	
- <1><177>: Abbrev Number: 12 (DW_TAG_variable)
-    <178>   DW_AT_name        : (indirect string, offset: 0xa7): current_wordsize	
-    <17c>   DW_AT_decl_file   : 4	
-    <17d>   DW_AT_decl_line   : 757	
-    <17f>   DW_AT_type        : <0x47>	
-    <183>   DW_AT_external    : 1	
-    <184>   DW_AT_declaration : 1	
- <1><185>: Abbrev Number: 12 (DW_TAG_variable)
-    <186>   DW_AT_name        : (indirect string, offset: 0xa0): sysent	
-    <18a>   DW_AT_decl_file   : 4	
-    <18b>   DW_AT_decl_line   : 892	
-    <18d>   DW_AT_type        : <0xeb>	
-    <191>   DW_AT_external    : 1	
-    <192>   DW_AT_declaration : 1	
- <1><193>: Abbrev Number: 12 (DW_TAG_variable)
-    <194>   DW_AT_name        : (indirect string, offset: 0x192): nsyscalls	
-    <198>   DW_AT_decl_file   : 4	
-    <199>   DW_AT_decl_line   : 903	
-    <19b>   DW_AT_type        : <0x47>	
-    <19f>   DW_AT_external    : 1	
-    <1a0>   DW_AT_declaration : 1	
- <1><1a1>: Abbrev Number: 13 (DW_TAG_variable)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x4e): mpers_target_var	
-    <1a6>   DW_AT_decl_file   : 3	
-    <1a7>   DW_AT_decl_line   : 37	
-    <1a8>   DW_AT_type        : <0x16c>	
-    <1ac>   DW_AT_external    : 1	
-    <1ad>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><1b3>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_rtc_pll_info.d2 b/mpers-m32/struct_rtc_pll_info.d2
deleted file mode 100644
index 0b5079b..0000000
--- a/mpers-m32/struct_rtc_pll_info.d2
+++ /dev/null
@@ -1,231 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e5): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1bb): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ad): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x80): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x26): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x121): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x69): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d2): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8e): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x19c): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x13c): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xa0): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb8): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5f): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f1): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x45): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x12e): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x20): _Bool
-<1><fd>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1c5): rtc_pll_info
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 55
-DW_AT_sibling     : <0x16c>
-<2><109>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbe): pll_ctrl
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><117>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x117): pll_value
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><125>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10f): pll_max
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><133>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a5): pll_min
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><141>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x39): pll_posmult
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 60
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><14f>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): pll_negmult
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><15d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1db): pll_clock
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 62
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><16c>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xc): struct_rtc_pll_info
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xfd>
-<1><177>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa7): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><185>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa0): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><193>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x192): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a1>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x4e): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x16c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_sg_io_hdr.d1 b/mpers-m32/struct_sg_io_hdr.d1
deleted file mode 100644
index 2703ada..0000000
--- a/mpers-m32/struct_sg_io_hdr.d1
+++ /dev/null
@@ -1,304 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x28a (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xea): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x14b): mpers-m32/struct_sg_io_hdr.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x181): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x7b): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x20b): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1d9): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x87): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x1d): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x30): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x25c): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x232): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xab): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1c6): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x17c): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xbd): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x215): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x71): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x253): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x49): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x16e): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x6): _Bool	
- <1><ff>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <100>   DW_AT_name        : (indirect string, offset: 0x95): sg_io_hdr	
-    <104>   DW_AT_byte_size   : 64	
-    <105>   DW_AT_decl_file   : 2	
-    <106>   DW_AT_decl_line   : 44	
-    <107>   DW_AT_sibling     : <0x240>	
- <2><10b>: Abbrev Number: 8 (DW_TAG_member)
-    <10c>   DW_AT_name        : (indirect string, offset: 0x1e7): interface_id	
-    <110>   DW_AT_decl_file   : 2	
-    <111>   DW_AT_decl_line   : 46	
-    <112>   DW_AT_type        : <0x2b>	
-    <116>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><119>: Abbrev Number: 8 (DW_TAG_member)
-    <11a>   DW_AT_name        : (indirect string, offset: 0xc4): dxfer_direction	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 47	
-    <120>   DW_AT_type        : <0x2b>	
-    <124>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><127>: Abbrev Number: 8 (DW_TAG_member)
-    <128>   DW_AT_name        : (indirect string, offset: 0x143): cmd_len	
-    <12c>   DW_AT_decl_file   : 2	
-    <12d>   DW_AT_decl_line   : 48	
-    <12e>   DW_AT_type        : <0x39>	
-    <132>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><135>: Abbrev Number: 8 (DW_TAG_member)
-    <136>   DW_AT_name        : (indirect string, offset: 0x1bc): mx_sb_len	
-    <13a>   DW_AT_decl_file   : 2	
-    <13b>   DW_AT_decl_line   : 49	
-    <13c>   DW_AT_type        : <0x39>	
-    <140>   DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
- <2><143>: Abbrev Number: 8 (DW_TAG_member)
-    <144>   DW_AT_name        : (indirect string, offset: 0x9f): iovec_count	
-    <148>   DW_AT_decl_file   : 2	
-    <149>   DW_AT_decl_line   : 50	
-    <14a>   DW_AT_type        : <0x40>	
-    <14e>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><151>: Abbrev Number: 8 (DW_TAG_member)
-    <152>   DW_AT_name        : (indirect string, offset: 0x1cf): dxfer_len	
-    <156>   DW_AT_decl_file   : 2	
-    <157>   DW_AT_decl_line   : 51	
-    <158>   DW_AT_type        : <0x47>	
-    <15c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><15f>: Abbrev Number: 8 (DW_TAG_member)
-    <160>   DW_AT_name        : (indirect string, offset: 0x204): dxferp	
-    <164>   DW_AT_decl_file   : 2	
-    <165>   DW_AT_decl_line   : 52	
-    <166>   DW_AT_type        : <0x6a>	
-    <16a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><16d>: Abbrev Number: 8 (DW_TAG_member)
-    <16e>   DW_AT_name        : (indirect string, offset: 0x3d): cmdp	
-    <172>   DW_AT_decl_file   : 2	
-    <173>   DW_AT_decl_line   : 54	
-    <174>   DW_AT_type        : <0x240>	
-    <178>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><17b>: Abbrev Number: 9 (DW_TAG_member)
-    <17c>   DW_AT_name        : sbp	
-    <180>   DW_AT_decl_file   : 2	
-    <181>   DW_AT_decl_line   : 55	
-    <182>   DW_AT_type        : <0x240>	
-    <186>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><189>: Abbrev Number: 8 (DW_TAG_member)
-    <18a>   DW_AT_name        : (indirect string, offset: 0xc): timeout	
-    <18e>   DW_AT_decl_file   : 2	
-    <18f>   DW_AT_decl_line   : 56	
-    <190>   DW_AT_type        : <0x47>	
-    <194>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><197>: Abbrev Number: 8 (DW_TAG_member)
-    <198>   DW_AT_name        : (indirect string, offset: 0x168): flags	
-    <19c>   DW_AT_decl_file   : 2	
-    <19d>   DW_AT_decl_line   : 57	
-    <19e>   DW_AT_type        : <0x47>	
-    <1a2>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1a5>: Abbrev Number: 8 (DW_TAG_member)
-    <1a6>   DW_AT_name        : (indirect string, offset: 0x1f4): pack_id	
-    <1aa>   DW_AT_decl_file   : 2	
-    <1ab>   DW_AT_decl_line   : 58	
-    <1ac>   DW_AT_type        : <0x2b>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1b3>: Abbrev Number: 8 (DW_TAG_member)
-    <1b4>   DW_AT_name        : (indirect string, offset: 0x1fc): usr_ptr	
-    <1b8>   DW_AT_decl_file   : 2	
-    <1b9>   DW_AT_decl_line   : 59	
-    <1ba>   DW_AT_type        : <0x6a>	
-    <1be>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1c1>: Abbrev Number: 8 (DW_TAG_member)
-    <1c2>   DW_AT_name        : (indirect string, offset: 0x42): status	
-    <1c6>   DW_AT_decl_file   : 2	
-    <1c7>   DW_AT_decl_line   : 60	
-    <1c8>   DW_AT_type        : <0x39>	
-    <1cc>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1cf>: Abbrev Number: 8 (DW_TAG_member)
-    <1d0>   DW_AT_name        : (indirect string, offset: 0x245): masked_status	
-    <1d4>   DW_AT_decl_file   : 2	
-    <1d5>   DW_AT_decl_line   : 61	
-    <1d6>   DW_AT_type        : <0x39>	
-    <1da>   DW_AT_data_member_location: 2 byte block: 23 2d 	(DW_OP_plus_uconst: 45)
- <2><1dd>: Abbrev Number: 8 (DW_TAG_member)
-    <1de>   DW_AT_name        : (indirect string, offset: 0x227): msg_status	
-    <1e2>   DW_AT_decl_file   : 2	
-    <1e3>   DW_AT_decl_line   : 62	
-    <1e4>   DW_AT_type        : <0x39>	
-    <1e8>   DW_AT_data_member_location: 2 byte block: 23 2e 	(DW_OP_plus_uconst: 46)
- <2><1eb>: Abbrev Number: 8 (DW_TAG_member)
-    <1ec>   DW_AT_name        : (indirect string, offset: 0x23b): sb_len_wr	
-    <1f0>   DW_AT_decl_file   : 2	
-    <1f1>   DW_AT_decl_line   : 63	
-    <1f2>   DW_AT_type        : <0x39>	
-    <1f6>   DW_AT_data_member_location: 2 byte block: 23 2f 	(DW_OP_plus_uconst: 47)
- <2><1f9>: Abbrev Number: 8 (DW_TAG_member)
-    <1fa>   DW_AT_name        : (indirect string, offset: 0x21b): host_status	
-    <1fe>   DW_AT_decl_file   : 2	
-    <1ff>   DW_AT_decl_line   : 64	
-    <200>   DW_AT_type        : <0x40>	
-    <204>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><207>: Abbrev Number: 8 (DW_TAG_member)
-    <208>   DW_AT_name        : (indirect string, offset: 0x52): driver_status	
-    <20c>   DW_AT_decl_file   : 2	
-    <20d>   DW_AT_decl_line   : 65	
-    <20e>   DW_AT_type        : <0x40>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 32 	(DW_OP_plus_uconst: 50)
- <2><215>: Abbrev Number: 8 (DW_TAG_member)
-    <216>   DW_AT_name        : (indirect string, offset: 0x0): resid	
-    <21a>   DW_AT_decl_file   : 2	
-    <21b>   DW_AT_decl_line   : 66	
-    <21c>   DW_AT_type        : <0x2b>	
-    <220>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><223>: Abbrev Number: 8 (DW_TAG_member)
-    <224>   DW_AT_name        : (indirect string, offset: 0x14): duration	
-    <228>   DW_AT_decl_file   : 2	
-    <229>   DW_AT_decl_line   : 67	
-    <22a>   DW_AT_type        : <0x47>	
-    <22e>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><231>: Abbrev Number: 8 (DW_TAG_member)
-    <232>   DW_AT_name        : (indirect string, offset: 0xe5): info	
-    <236>   DW_AT_decl_file   : 2	
-    <237>   DW_AT_decl_line   : 68	
-    <238>   DW_AT_type        : <0x47>	
-    <23c>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><23f>: Abbrev Number: 0
- <1><240>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <241>   DW_AT_byte_size   : 4	
-    <242>   DW_AT_type        : <0x39>	
- <1><246>: Abbrev Number: 12 (DW_TAG_typedef)
-    <247>   DW_AT_name        : (indirect string, offset: 0x132): struct_sg_io_hdr	
-    <24b>   DW_AT_decl_file   : 3	
-    <24c>   DW_AT_decl_line   : 37	
-    <24d>   DW_AT_type        : <0xff>	
- <1><251>: Abbrev Number: 13 (DW_TAG_variable)
-    <252>   DW_AT_name        : (indirect string, offset: 0xd4): current_wordsize	
-    <256>   DW_AT_decl_file   : 4	
-    <257>   DW_AT_decl_line   : 757	
-    <259>   DW_AT_type        : <0x47>	
-    <25d>   DW_AT_external    : 1	
-    <25e>   DW_AT_declaration : 1	
- <1><25f>: Abbrev Number: 13 (DW_TAG_variable)
-    <260>   DW_AT_name        : (indirect string, offset: 0xbd): sysent	
-    <264>   DW_AT_decl_file   : 4	
-    <265>   DW_AT_decl_line   : 892	
-    <267>   DW_AT_type        : <0xed>	
-    <26b>   DW_AT_external    : 1	
-    <26c>   DW_AT_declaration : 1	
- <1><26d>: Abbrev Number: 13 (DW_TAG_variable)
-    <26e>   DW_AT_name        : (indirect string, offset: 0x1b2): nsyscalls	
-    <272>   DW_AT_decl_file   : 4	
-    <273>   DW_AT_decl_line   : 903	
-    <275>   DW_AT_type        : <0x47>	
-    <279>   DW_AT_external    : 1	
-    <27a>   DW_AT_declaration : 1	
- <1><27b>: Abbrev Number: 14 (DW_TAG_variable)
-    <27c>   DW_AT_name        : (indirect string, offset: 0x60): mpers_target_var	
-    <280>   DW_AT_decl_file   : 3	
-    <281>   DW_AT_decl_line   : 41	
-    <282>   DW_AT_type        : <0x246>	
-    <286>   DW_AT_external    : 1	
-    <287>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><28d>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_sg_io_hdr.d2 b/mpers-m32/struct_sg_io_hdr.d2
deleted file mode 100644
index 79115fa..0000000
--- a/mpers-m32/struct_sg_io_hdr.d2
+++ /dev/null
@@ -1,343 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x7b): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x20b): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d9): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x87): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x30): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x25c): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x232): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xab): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c6): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x17c): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xbd): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x215): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x71): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x253): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x49): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x16e): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x6): _Bool
-<1><ff>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x95): sg_io_hdr
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 44
-DW_AT_sibling     : <0x240>
-<2><10b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e7): interface_id
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><119>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc4): dxfer_direction
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><127>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x143): cmd_len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><135>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bc): mx_sb_len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
-<2><143>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9f): iovec_count
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><151>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cf): dxfer_len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><15f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x204): dxferp
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><16d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3d): cmdp
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x240>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><17b>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sbp
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x240>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><189>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc): timeout
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><197>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x168): flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1a5>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f4): pack_id
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1b3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fc): usr_ptr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1c1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x42): status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 60
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1cf>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x245): masked_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2d 	(DW_OP_plus_uconst: 45)
-<2><1dd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x227): msg_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 62
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2e 	(DW_OP_plus_uconst: 46)
-<2><1eb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23b): sb_len_wr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 63
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2f 	(DW_OP_plus_uconst: 47)
-<2><1f9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21b): host_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><207>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x52): driver_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 65
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 32 	(DW_OP_plus_uconst: 50)
-<2><215>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): resid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 66
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><223>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14): duration
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 67
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><231>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe5): info
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 68
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<1><240>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x39>
-<1><246>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x132): struct_sg_io_hdr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0xff>
-<1><251>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd4): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><25f>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xbd): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><26d>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b2): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><27b>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x60): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x246>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_sg_req_info.d1 b/mpers-m32/struct_sg_req_info.d1
deleted file mode 100644
index 93e39c5..0000000
--- a/mpers-m32/struct_sg_req_info.d1
+++ /dev/null
@@ -1,217 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1c0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xe3): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x48): mpers-m32/struct_sg_req_info.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x14b): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e2): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1c0): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x196): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x99): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0xf): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x12b): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x82): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1d1): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb3): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x18d): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x146): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xc5): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0xdd): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x78): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x1ee): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x3f): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x138): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><ff>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <100>   DW_AT_name        : (indirect string, offset: 0x1b4): sg_req_info	
-    <104>   DW_AT_byte_size   : 20	
-    <105>   DW_AT_decl_file   : 2	
-    <106>   DW_AT_decl_line   : 120	
-    <107>   DW_AT_sibling     : <0x17c>	
- <2><10b>: Abbrev Number: 8 (DW_TAG_member)
-    <10c>   DW_AT_name        : (indirect string, offset: 0x22): req_state	
-    <110>   DW_AT_decl_file   : 2	
-    <111>   DW_AT_decl_line   : 121	
-    <112>   DW_AT_type        : <0x6c>	
-    <116>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><119>: Abbrev Number: 8 (DW_TAG_member)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x1ca): orphan	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 122	
-    <120>   DW_AT_type        : <0x6c>	
-    <124>   DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
- <2><127>: Abbrev Number: 8 (DW_TAG_member)
-    <128>   DW_AT_name        : (indirect string, offset: 0xa7): sg_io_owned	
-    <12c>   DW_AT_decl_file   : 2	
-    <12d>   DW_AT_decl_line   : 123	
-    <12e>   DW_AT_type        : <0x6c>	
-    <132>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><135>: Abbrev Number: 8 (DW_TAG_member)
-    <136>   DW_AT_name        : (indirect string, offset: 0x1da): problem	
-    <13a>   DW_AT_decl_file   : 2	
-    <13b>   DW_AT_decl_line   : 124	
-    <13c>   DW_AT_type        : <0x6c>	
-    <140>   DW_AT_data_member_location: 2 byte block: 23 3 	(DW_OP_plus_uconst: 3)
- <2><143>: Abbrev Number: 8 (DW_TAG_member)
-    <144>   DW_AT_name        : (indirect string, offset: 0x1a4): pack_id	
-    <148>   DW_AT_decl_file   : 2	
-    <149>   DW_AT_decl_line   : 125	
-    <14a>   DW_AT_type        : <0x2b>	
-    <14e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><151>: Abbrev Number: 8 (DW_TAG_member)
-    <152>   DW_AT_name        : (indirect string, offset: 0x1ac): usr_ptr	
-    <156>   DW_AT_decl_file   : 2	
-    <157>   DW_AT_decl_line   : 126	
-    <158>   DW_AT_type        : <0x6a>	
-    <15c>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><15f>: Abbrev Number: 8 (DW_TAG_member)
-    <160>   DW_AT_name        : (indirect string, offset: 0x6): duration	
-    <164>   DW_AT_decl_file   : 2	
-    <165>   DW_AT_decl_line   : 127	
-    <166>   DW_AT_type        : <0x47>	
-    <16a>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><16d>: Abbrev Number: 8 (DW_TAG_member)
-    <16e>   DW_AT_name        : (indirect string, offset: 0x186): unused	
-    <172>   DW_AT_decl_file   : 2	
-    <173>   DW_AT_decl_line   : 129	
-    <174>   DW_AT_type        : <0x2b>	
-    <178>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><17b>: Abbrev Number: 0
- <1><17c>: Abbrev Number: 12 (DW_TAG_typedef)
-    <17d>   DW_AT_name        : (indirect string, offset: 0x2c): struct_sg_req_info	
-    <181>   DW_AT_decl_file   : 3	
-    <182>   DW_AT_decl_line   : 37	
-    <183>   DW_AT_type        : <0xff>	
- <1><187>: Abbrev Number: 13 (DW_TAG_variable)
-    <188>   DW_AT_name        : (indirect string, offset: 0xcc): current_wordsize	
-    <18c>   DW_AT_decl_file   : 4	
-    <18d>   DW_AT_decl_line   : 757	
-    <18f>   DW_AT_type        : <0x47>	
-    <193>   DW_AT_external    : 1	
-    <194>   DW_AT_declaration : 1	
- <1><195>: Abbrev Number: 13 (DW_TAG_variable)
-    <196>   DW_AT_name        : (indirect string, offset: 0xc5): sysent	
-    <19a>   DW_AT_decl_file   : 4	
-    <19b>   DW_AT_decl_line   : 892	
-    <19d>   DW_AT_type        : <0xed>	
-    <1a1>   DW_AT_external    : 1	
-    <1a2>   DW_AT_declaration : 1	
- <1><1a3>: Abbrev Number: 13 (DW_TAG_variable)
-    <1a4>   DW_AT_name        : (indirect string, offset: 0x17c): nsyscalls	
-    <1a8>   DW_AT_decl_file   : 4	
-    <1a9>   DW_AT_decl_line   : 903	
-    <1ab>   DW_AT_type        : <0x47>	
-    <1af>   DW_AT_external    : 1	
-    <1b0>   DW_AT_declaration : 1	
- <1><1b1>: Abbrev Number: 14 (DW_TAG_variable)
-    <1b2>   DW_AT_name        : (indirect string, offset: 0x67): mpers_target_var	
-    <1b6>   DW_AT_decl_file   : 3	
-    <1b7>   DW_AT_decl_line   : 41	
-    <1b8>   DW_AT_type        : <0x17c>	
-    <1bc>   DW_AT_external    : 1	
-    <1bd>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><1c3>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_sg_req_info.d2 b/mpers-m32/struct_sg_req_info.d2
deleted file mode 100644
index f9e7702..0000000
--- a/mpers-m32/struct_sg_req_info.d2
+++ /dev/null
@@ -1,241 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e2): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c0): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x196): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x99): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12b): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x82): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d1): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb3): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x18d): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x146): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc5): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xdd): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x78): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ee): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3f): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x138): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><ff>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1b4): sg_req_info
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 120
-DW_AT_sibling     : <0x17c>
-<2><10b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22): req_state
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 121
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><119>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ca): orphan
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 122
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
-<2><127>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa7): sg_io_owned
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 123
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><135>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1da): problem
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 124
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 3 	(DW_OP_plus_uconst: 3)
-<2><143>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a4): pack_id
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><151>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ac): usr_ptr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><15f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): duration
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 127
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><16d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x186): unused
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 129
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><17c>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2c): struct_sg_req_info
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0xff>
-<1><187>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xcc): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><195>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc5): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a3>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17c): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1b1>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x67): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x17c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_sigevent.d1 b/mpers-m32/struct_sigevent.d1
deleted file mode 100644
index 46ec7ae..0000000
--- a/mpers-m32/struct_sigevent.d1
+++ /dev/null
@@ -1,240 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1e5 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xd3): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x27): mpers-m32/struct_sigevent.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x14d): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1da): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x19b): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x8e): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x14): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x12d): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x67): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1c4): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x11b): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x192): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x148): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xa9): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xc1): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x5d): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1e6): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x43): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x13a): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0xe): _Bool	
- <1><fd>: Abbrev Number: 12 (DW_TAG_union_type)
-    <fe>   DW_AT_byte_size   : 4	
-    <ff>   DW_AT_decl_file   : 2	
-    <100>   DW_AT_decl_line   : 32	
-    <101>   DW_AT_sibling     : <0x11c>	
- <2><105>: Abbrev Number: 13 (DW_TAG_member)
-    <106>   DW_AT_name        : (indirect string, offset: 0x1a5): sival_int	
-    <10a>   DW_AT_decl_file   : 2	
-    <10b>   DW_AT_decl_line   : 33	
-    <10c>   DW_AT_type        : <0x2b>	
- <2><110>: Abbrev Number: 13 (DW_TAG_member)
-    <111>   DW_AT_name        : (indirect string, offset: 0x1f8): sival_ptr	
-    <115>   DW_AT_decl_file   : 2	
-    <116>   DW_AT_decl_line   : 34	
-    <117>   DW_AT_type        : <0x5c>	
- <2><11b>: Abbrev Number: 0
- <1><11c>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <11d>   DW_AT_byte_size   : 8	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 40	
-    <120>   DW_AT_sibling     : <0x141>	
- <2><124>: Abbrev Number: 7 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x1ef): function	
-    <129>   DW_AT_decl_file   : 2	
-    <12a>   DW_AT_decl_line   : 41	
-    <12b>   DW_AT_type        : <0x5c>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><132>: Abbrev Number: 7 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x188): attribute	
-    <137>   DW_AT_decl_file   : 2	
-    <138>   DW_AT_decl_line   : 42	
-    <139>   DW_AT_type        : <0x5c>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><140>: Abbrev Number: 0
- <1><141>: Abbrev Number: 12 (DW_TAG_union_type)
-    <142>   DW_AT_byte_size   : 8	
-    <143>   DW_AT_decl_file   : 2	
-    <144>   DW_AT_decl_line   : 38	
-    <145>   DW_AT_sibling     : <0x160>	
- <2><149>: Abbrev Number: 15 (DW_TAG_member)
-    <14a>   DW_AT_name        : tid	
-    <14e>   DW_AT_decl_file   : 2	
-    <14f>   DW_AT_decl_line   : 39	
-    <150>   DW_AT_type        : <0x2b>	
- <2><154>: Abbrev Number: 13 (DW_TAG_member)
-    <155>   DW_AT_name        : (indirect string, offset: 0x1cd): sigev_thread	
-    <159>   DW_AT_decl_file   : 2	
-    <15a>   DW_AT_decl_line   : 43	
-    <15b>   DW_AT_type        : <0x11c>	
- <2><15f>: Abbrev Number: 0
- <1><160>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <161>   DW_AT_byte_size   : 20	
-    <162>   DW_AT_decl_file   : 2	
-    <163>   DW_AT_decl_line   : 31	
-    <164>   DW_AT_sibling     : <0x1a1>	
- <2><168>: Abbrev Number: 7 (DW_TAG_member)
-    <169>   DW_AT_name        : (indirect string, offset: 0x1af): sigev_value	
-    <16d>   DW_AT_decl_file   : 2	
-    <16e>   DW_AT_decl_line   : 35	
-    <16f>   DW_AT_type        : <0xfd>	
-    <173>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><176>: Abbrev Number: 7 (DW_TAG_member)
-    <177>   DW_AT_name        : (indirect string, offset: 0xc7): sigev_signo	
-    <17b>   DW_AT_decl_file   : 2	
-    <17c>   DW_AT_decl_line   : 36	
-    <17d>   DW_AT_type        : <0x2b>	
-    <181>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><184>: Abbrev Number: 7 (DW_TAG_member)
-    <185>   DW_AT_name        : (indirect string, offset: 0x9c): sigev_notify	
-    <189>   DW_AT_decl_file   : 2	
-    <18a>   DW_AT_decl_line   : 37	
-    <18b>   DW_AT_type        : <0x2b>	
-    <18f>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><192>: Abbrev Number: 7 (DW_TAG_member)
-    <193>   DW_AT_name        : (indirect string, offset: 0x1bb): sigev_un	
-    <197>   DW_AT_decl_file   : 2	
-    <198>   DW_AT_decl_line   : 44	
-    <199>   DW_AT_type        : <0x141>	
-    <19d>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1a0>: Abbrev Number: 0
- <1><1a1>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x7e): struct_sigevent	
-    <1a6>   DW_AT_decl_file   : 2	
-    <1a7>   DW_AT_decl_line   : 45	
-    <1a8>   DW_AT_type        : <0x160>	
- <1><1ac>: Abbrev Number: 16 (DW_TAG_variable)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0xb0): current_wordsize	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 757	
-    <1b4>   DW_AT_type        : <0x47>	
-    <1b8>   DW_AT_external    : 1	
-    <1b9>   DW_AT_declaration : 1	
- <1><1ba>: Abbrev Number: 16 (DW_TAG_variable)
-    <1bb>   DW_AT_name        : (indirect string, offset: 0xa9): sysent	
-    <1bf>   DW_AT_decl_file   : 3	
-    <1c0>   DW_AT_decl_line   : 892	
-    <1c2>   DW_AT_type        : <0xeb>	
-    <1c6>   DW_AT_external    : 1	
-    <1c7>   DW_AT_declaration : 1	
- <1><1c8>: Abbrev Number: 16 (DW_TAG_variable)
-    <1c9>   DW_AT_name        : (indirect string, offset: 0x17e): nsyscalls	
-    <1cd>   DW_AT_decl_file   : 3	
-    <1ce>   DW_AT_decl_line   : 903	
-    <1d0>   DW_AT_type        : <0x47>	
-    <1d4>   DW_AT_external    : 1	
-    <1d5>   DW_AT_declaration : 1	
- <1><1d6>: Abbrev Number: 17 (DW_TAG_variable)
-    <1d7>   DW_AT_name        : (indirect string, offset: 0x4c): mpers_target_var	
-    <1db>   DW_AT_decl_file   : 4	
-    <1dc>   DW_AT_decl_line   : 32	
-    <1dd>   DW_AT_type        : <0x1a1>	
-    <1e1>   DW_AT_external    : 1	
-    <1e2>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><1e8>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_sigevent.d2 b/mpers-m32/struct_sigevent.d2
deleted file mode 100644
index 4b92f86..0000000
--- a/mpers-m32/struct_sigevent.d2
+++ /dev/null
@@ -1,265 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1da): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19b): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x8e): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12d): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x67): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c4): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x11b): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x192): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x148): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xa9): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc1): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5d): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e6): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x43): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x13a): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xe): _Bool
-<1><fd>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_sibling     : <0x11c>
-<2><105>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a5): sival_int
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x2b>
-<2><110>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f8): sival_ptr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x5c>
-<1><11c>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 40
-DW_AT_sibling     : <0x141>
-<2><124>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ef): function
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><132>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x188): attribute
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><141>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 38
-DW_AT_sibling     : <0x160>
-<2><149>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : tid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x2b>
-<2><154>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cd): sigev_thread
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x11c>
-<1><160>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 31
-DW_AT_sibling     : <0x1a1>
-<2><168>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1af): sigev_value
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><176>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc7): sigev_signo
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><184>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9c): sigev_notify
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><192>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bb): sigev_un
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x141>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1a1>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x7e): struct_sigevent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x160>
-<1><1ac>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xb0): current_wordsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1ba>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa9): sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1c8>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17e): nsyscalls
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1d6>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x4c): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x1a1>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_stat.c b/mpers-m32/struct_stat.c
index 80d1412..e10cfd9 100644
--- a/mpers-m32/struct_stat.c
+++ b/mpers-m32/struct_stat.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
diff --git a/mpers-m32/struct_stat.d1 b/mpers-m32/struct_stat.d1
deleted file mode 100644
index fd56e7a..0000000
--- a/mpers-m32/struct_stat.d1
+++ /dev/null
@@ -1,275 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x24a (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x10f): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1c): mpers-m32/struct_stat.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x18e): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x233): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x212): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1f0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xb5): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x4f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x160): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x9e): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x22a): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xcd): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1d0): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x17b): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xe7): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xff): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x105): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x23f): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x6a): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x16d): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x34): _Bool	
- <1><fd>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x17): stat	
-    <102>   DW_AT_byte_size   : 64	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 7	
-    <105>   DW_AT_sibling     : <0x206>	
- <2><109>: Abbrev Number: 7 (DW_TAG_member)
-    <10a>   DW_AT_name        : (indirect string, offset: 0x21c): st_dev	
-    <10e>   DW_AT_decl_file   : 2	
-    <10f>   DW_AT_decl_line   : 8	
-    <110>   DW_AT_type        : <0x5c>	
-    <114>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><117>: Abbrev Number: 7 (DW_TAG_member)
-    <118>   DW_AT_name        : (indirect string, offset: 0x73): st_ino	
-    <11c>   DW_AT_decl_file   : 2	
-    <11d>   DW_AT_decl_line   : 9	
-    <11e>   DW_AT_type        : <0x5c>	
-    <122>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><125>: Abbrev Number: 7 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0xdf): st_mode	
-    <12a>   DW_AT_decl_file   : 2	
-    <12b>   DW_AT_decl_line   : 10	
-    <12c>   DW_AT_type        : <0x40>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><133>: Abbrev Number: 7 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0x46): st_nlink	
-    <138>   DW_AT_decl_file   : 2	
-    <139>   DW_AT_decl_line   : 11	
-    <13a>   DW_AT_type        : <0x40>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><141>: Abbrev Number: 7 (DW_TAG_member)
-    <142>   DW_AT_name        : (indirect string, offset: 0x1c9): st_uid	
-    <146>   DW_AT_decl_file   : 2	
-    <147>   DW_AT_decl_line   : 12	
-    <148>   DW_AT_type        : <0x40>	
-    <14c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><14f>: Abbrev Number: 7 (DW_TAG_member)
-    <150>   DW_AT_name        : (indirect string, offset: 0x223): st_gid	
-    <154>   DW_AT_decl_file   : 2	
-    <155>   DW_AT_decl_line   : 13	
-    <156>   DW_AT_type        : <0x40>	
-    <15a>   DW_AT_data_member_location: 2 byte block: 23 e 	(DW_OP_plus_uconst: 14)
- <2><15d>: Abbrev Number: 7 (DW_TAG_member)
-    <15e>   DW_AT_name        : (indirect string, offset: 0x96): st_rdev	
-    <162>   DW_AT_decl_file   : 2	
-    <163>   DW_AT_decl_line   : 14	
-    <164>   DW_AT_type        : <0x5c>	
-    <168>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><16b>: Abbrev Number: 7 (DW_TAG_member)
-    <16c>   DW_AT_name        : (indirect string, offset: 0x62): st_size	
-    <170>   DW_AT_decl_file   : 2	
-    <171>   DW_AT_decl_line   : 15	
-    <172>   DW_AT_type        : <0x5c>	
-    <176>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><179>: Abbrev Number: 7 (DW_TAG_member)
-    <17a>   DW_AT_name        : (indirect string, offset: 0x7a): st_blksize	
-    <17e>   DW_AT_decl_file   : 2	
-    <17f>   DW_AT_decl_line   : 16	
-    <180>   DW_AT_type        : <0x5c>	
-    <184>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><187>: Abbrev Number: 7 (DW_TAG_member)
-    <188>   DW_AT_name        : (indirect string, offset: 0xc3): st_blocks	
-    <18c>   DW_AT_decl_file   : 2	
-    <18d>   DW_AT_decl_line   : 17	
-    <18e>   DW_AT_type        : <0x5c>	
-    <192>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><195>: Abbrev Number: 7 (DW_TAG_member)
-    <196>   DW_AT_name        : (indirect string, offset: 0x1d9): st_atime	
-    <19a>   DW_AT_decl_file   : 2	
-    <19b>   DW_AT_decl_line   : 18	
-    <19c>   DW_AT_type        : <0x5c>	
-    <1a0>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1a3>: Abbrev Number: 7 (DW_TAG_member)
-    <1a4>   DW_AT_name        : (indirect string, offset: 0x1e2): st_atime_nsec	
-    <1a8>   DW_AT_decl_file   : 2	
-    <1a9>   DW_AT_decl_line   : 19	
-    <1aa>   DW_AT_type        : <0x5c>	
-    <1ae>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1b1>: Abbrev Number: 7 (DW_TAG_member)
-    <1b2>   DW_AT_name        : (indirect string, offset: 0x0): st_mtime	
-    <1b6>   DW_AT_decl_file   : 2	
-    <1b7>   DW_AT_decl_line   : 20	
-    <1b8>   DW_AT_type        : <0x5c>	
-    <1bc>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1bf>: Abbrev Number: 7 (DW_TAG_member)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0x180): st_mtime_nsec	
-    <1c4>   DW_AT_decl_file   : 2	
-    <1c5>   DW_AT_decl_line   : 21	
-    <1c6>   DW_AT_type        : <0x5c>	
-    <1ca>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1cd>: Abbrev Number: 7 (DW_TAG_member)
-    <1ce>   DW_AT_name        : (indirect string, offset: 0x157): st_ctime	
-    <1d2>   DW_AT_decl_file   : 2	
-    <1d3>   DW_AT_decl_line   : 22	
-    <1d4>   DW_AT_type        : <0x5c>	
-    <1d8>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1db>: Abbrev Number: 7 (DW_TAG_member)
-    <1dc>   DW_AT_name        : (indirect string, offset: 0x9): st_ctime_nsec	
-    <1e0>   DW_AT_decl_file   : 2	
-    <1e1>   DW_AT_decl_line   : 23	
-    <1e2>   DW_AT_type        : <0x5c>	
-    <1e6>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><1e9>: Abbrev Number: 7 (DW_TAG_member)
-    <1ea>   DW_AT_name        : (indirect string, offset: 0x1fe): __unused4	
-    <1ee>   DW_AT_decl_file   : 2	
-    <1ef>   DW_AT_decl_line   : 24	
-    <1f0>   DW_AT_type        : <0x5c>	
-    <1f4>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1f7>: Abbrev Number: 7 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0x208): __unused5	
-    <1fc>   DW_AT_decl_file   : 2	
-    <1fd>   DW_AT_decl_line   : 25	
-    <1fe>   DW_AT_type        : <0x5c>	
-    <202>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><205>: Abbrev Number: 0
- <1><206>: Abbrev Number: 11 (DW_TAG_typedef)
-    <207>   DW_AT_name        : (indirect string, offset: 0x3a): struct_stat	
-    <20b>   DW_AT_decl_file   : 3	
-    <20c>   DW_AT_decl_line   : 59	
-    <20d>   DW_AT_type        : <0xfd>	
- <1><211>: Abbrev Number: 12 (DW_TAG_variable)
-    <212>   DW_AT_name        : (indirect string, offset: 0xee): current_wordsize	
-    <216>   DW_AT_decl_file   : 4	
-    <217>   DW_AT_decl_line   : 757	
-    <219>   DW_AT_type        : <0x47>	
-    <21d>   DW_AT_external    : 1	
-    <21e>   DW_AT_declaration : 1	
- <1><21f>: Abbrev Number: 12 (DW_TAG_variable)
-    <220>   DW_AT_name        : (indirect string, offset: 0xe7): sysent	
-    <224>   DW_AT_decl_file   : 4	
-    <225>   DW_AT_decl_line   : 892	
-    <227>   DW_AT_type        : <0xeb>	
-    <22b>   DW_AT_external    : 1	
-    <22c>   DW_AT_declaration : 1	
- <1><22d>: Abbrev Number: 12 (DW_TAG_variable)
-    <22e>   DW_AT_name        : (indirect string, offset: 0x1bf): nsyscalls	
-    <232>   DW_AT_decl_file   : 4	
-    <233>   DW_AT_decl_line   : 903	
-    <235>   DW_AT_type        : <0x47>	
-    <239>   DW_AT_external    : 1	
-    <23a>   DW_AT_declaration : 1	
- <1><23b>: Abbrev Number: 13 (DW_TAG_variable)
-    <23c>   DW_AT_name        : (indirect string, offset: 0x85): mpers_target_var	
-    <240>   DW_AT_decl_file   : 3	
-    <241>   DW_AT_decl_line   : 61	
-    <242>   DW_AT_type        : <0x206>	
-    <246>   DW_AT_external    : 1	
-    <247>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><24d>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_stat.d2 b/mpers-m32/struct_stat.d2
deleted file mode 100644
index 0914b73..0000000
--- a/mpers-m32/struct_stat.d2
+++ /dev/null
@@ -1,308 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x233): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x212): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xb5): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x4f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x160): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x9e): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x22a): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xcd): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d0): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x17b): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe7): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xff): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x105): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23f): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6a): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x16d): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x34): _Bool
-<1><fd>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x17): stat
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_sibling     : <0x206>
-<2><109>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21c): st_dev
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><117>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x73): st_ino
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><125>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xdf): st_mode
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><133>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x46): st_nlink
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 11
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><141>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c9): st_uid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 12
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><14f>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x223): st_gid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 13
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 e 	(DW_OP_plus_uconst: 14)
-<2><15d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x96): st_rdev
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><16b>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x62): st_size
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 15
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><179>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7a): st_blksize
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 16
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><187>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc3): st_blocks
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 17
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><195>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d9): st_atime
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 18
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1a3>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e2): st_atime_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 19
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1b1>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): st_mtime
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1bf>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x180): st_mtime_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 21
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1cd>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x157): st_ctime
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 22
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1db>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): st_ctime_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><1e9>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fe): __unused4
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 24
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1f7>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x208): __unused5
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<1><206>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x3a): struct_stat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 59
-DW_AT_type        : <0xfd>
-<1><211>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xee): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><21f>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe7): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><22d>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1bf): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><23b>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x85): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x206>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_stat64.c b/mpers-m32/struct_stat64.c
index cfececc..0f0480b 100644
--- a/mpers-m32/struct_stat64.c
+++ b/mpers-m32/struct_stat64.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
diff --git a/mpers-m32/struct_stat64.d1 b/mpers-m32/struct_stat64.d1
deleted file mode 100644
index 731b8ca..0000000
--- a/mpers-m32/struct_stat64.d1
+++ /dev/null
@@ -1,288 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x268 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xff): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x20b): mpers-m32/struct_stat64.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x17e): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x23c): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1e5): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1d7): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x9e): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x38): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x150): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x87): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x22c): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb6): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1c0): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x16b): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xd0): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xe8): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xf5): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x248): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x53): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x15d): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x29): _Bool	
- <1><fd>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0xee): stat64	
-    <102>   DW_AT_byte_size   : 96	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 39	
-    <105>   DW_AT_sibling     : <0x214>	
- <2><109>: Abbrev Number: 7 (DW_TAG_member)
-    <10a>   DW_AT_name        : (indirect string, offset: 0x1fd): st_dev	
-    <10e>   DW_AT_decl_file   : 2	
-    <10f>   DW_AT_decl_line   : 40	
-    <110>   DW_AT_type        : <0x4e>	
-    <114>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><117>: Abbrev Number: 7 (DW_TAG_member)
-    <118>   DW_AT_name        : (indirect string, offset: 0x225): __pad0	
-    <11c>   DW_AT_decl_file   : 2	
-    <11d>   DW_AT_decl_line   : 41	
-    <11e>   DW_AT_type        : <0x214>	
-    <122>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><125>: Abbrev Number: 7 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0x17): __st_ino	
-    <12a>   DW_AT_decl_file   : 2	
-    <12b>   DW_AT_decl_line   : 43	
-    <12c>   DW_AT_type        : <0x5c>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><133>: Abbrev Number: 7 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0xc8): st_mode	
-    <138>   DW_AT_decl_file   : 2	
-    <139>   DW_AT_decl_line   : 45	
-    <13a>   DW_AT_type        : <0x47>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><141>: Abbrev Number: 7 (DW_TAG_member)
-    <142>   DW_AT_name        : (indirect string, offset: 0x2f): st_nlink	
-    <146>   DW_AT_decl_file   : 2	
-    <147>   DW_AT_decl_line   : 46	
-    <148>   DW_AT_type        : <0x47>	
-    <14c>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><14f>: Abbrev Number: 7 (DW_TAG_member)
-    <150>   DW_AT_name        : (indirect string, offset: 0x1b9): st_uid	
-    <154>   DW_AT_decl_file   : 2	
-    <155>   DW_AT_decl_line   : 48	
-    <156>   DW_AT_type        : <0x5c>	
-    <15a>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><15d>: Abbrev Number: 7 (DW_TAG_member)
-    <15e>   DW_AT_name        : (indirect string, offset: 0x204): st_gid	
-    <162>   DW_AT_decl_file   : 2	
-    <163>   DW_AT_decl_line   : 49	
-    <164>   DW_AT_type        : <0x5c>	
-    <168>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><16b>: Abbrev Number: 7 (DW_TAG_member)
-    <16c>   DW_AT_name        : (indirect string, offset: 0x7f): st_rdev	
-    <170>   DW_AT_decl_file   : 2	
-    <171>   DW_AT_decl_line   : 51	
-    <172>   DW_AT_type        : <0x4e>	
-    <176>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><179>: Abbrev Number: 7 (DW_TAG_member)
-    <17a>   DW_AT_name        : (indirect string, offset: 0x235): __pad3	
-    <17e>   DW_AT_decl_file   : 2	
-    <17f>   DW_AT_decl_line   : 52	
-    <180>   DW_AT_type        : <0x214>	
-    <184>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><187>: Abbrev Number: 7 (DW_TAG_member)
-    <188>   DW_AT_name        : (indirect string, offset: 0x4b): st_size	
-    <18c>   DW_AT_decl_file   : 2	
-    <18d>   DW_AT_decl_line   : 54	
-    <18e>   DW_AT_type        : <0x32>	
-    <192>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><195>: Abbrev Number: 7 (DW_TAG_member)
-    <196>   DW_AT_name        : (indirect string, offset: 0x63): st_blksize	
-    <19a>   DW_AT_decl_file   : 2	
-    <19b>   DW_AT_decl_line   : 55	
-    <19c>   DW_AT_type        : <0x5c>	
-    <1a0>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><1a3>: Abbrev Number: 7 (DW_TAG_member)
-    <1a4>   DW_AT_name        : (indirect string, offset: 0xac): st_blocks	
-    <1a8>   DW_AT_decl_file   : 2	
-    <1a9>   DW_AT_decl_line   : 58	
-    <1aa>   DW_AT_type        : <0x4e>	
-    <1ae>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1b1>: Abbrev Number: 7 (DW_TAG_member)
-    <1b2>   DW_AT_name        : (indirect string, offset: 0x20): st_atime	
-    <1b6>   DW_AT_decl_file   : 2	
-    <1b7>   DW_AT_decl_line   : 60	
-    <1b8>   DW_AT_type        : <0x5c>	
-    <1bc>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1bf>: Abbrev Number: 7 (DW_TAG_member)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0x1c9): st_atime_nsec	
-    <1c4>   DW_AT_decl_file   : 2	
-    <1c5>   DW_AT_decl_line   : 61	
-    <1c6>   DW_AT_type        : <0x5c>	
-    <1ca>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><1cd>: Abbrev Number: 7 (DW_TAG_member)
-    <1ce>   DW_AT_name        : (indirect string, offset: 0x0): st_mtime	
-    <1d2>   DW_AT_decl_file   : 2	
-    <1d3>   DW_AT_decl_line   : 63	
-    <1d4>   DW_AT_type        : <0x5c>	
-    <1d8>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1db>: Abbrev Number: 7 (DW_TAG_member)
-    <1dc>   DW_AT_name        : (indirect string, offset: 0x170): st_mtime_nsec	
-    <1e0>   DW_AT_decl_file   : 2	
-    <1e1>   DW_AT_decl_line   : 64	
-    <1e2>   DW_AT_type        : <0x47>	
-    <1e6>   DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
- <2><1e9>: Abbrev Number: 7 (DW_TAG_member)
-    <1ea>   DW_AT_name        : (indirect string, offset: 0x147): st_ctime	
-    <1ee>   DW_AT_decl_file   : 2	
-    <1ef>   DW_AT_decl_line   : 66	
-    <1f0>   DW_AT_type        : <0x5c>	
-    <1f4>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><1f7>: Abbrev Number: 7 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0x9): st_ctime_nsec	
-    <1fc>   DW_AT_decl_file   : 2	
-    <1fd>   DW_AT_decl_line   : 67	
-    <1fe>   DW_AT_type        : <0x5c>	
-    <202>   DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
- <2><205>: Abbrev Number: 7 (DW_TAG_member)
-    <206>   DW_AT_name        : (indirect string, offset: 0x5c): st_ino	
-    <20a>   DW_AT_decl_file   : 2	
-    <20b>   DW_AT_decl_line   : 69	
-    <20c>   DW_AT_type        : <0x4e>	
-    <210>   DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
- <2><213>: Abbrev Number: 0
- <1><214>: Abbrev Number: 12 (DW_TAG_array_type)
-    <215>   DW_AT_type        : <0x39>	
-    <219>   DW_AT_sibling     : <0x224>	
- <2><21d>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <21e>   DW_AT_type        : <0x63>	
-    <222>   DW_AT_upper_bound : 3	
- <2><223>: Abbrev Number: 0
- <1><224>: Abbrev Number: 11 (DW_TAG_typedef)
-    <225>   DW_AT_name        : (indirect string, offset: 0x1ef): struct_stat64	
-    <229>   DW_AT_decl_file   : 3	
-    <22a>   DW_AT_decl_line   : 57	
-    <22b>   DW_AT_type        : <0xfd>	
- <1><22f>: Abbrev Number: 14 (DW_TAG_variable)
-    <230>   DW_AT_name        : (indirect string, offset: 0xd7): current_wordsize	
-    <234>   DW_AT_decl_file   : 4	
-    <235>   DW_AT_decl_line   : 757	
-    <237>   DW_AT_type        : <0x47>	
-    <23b>   DW_AT_external    : 1	
-    <23c>   DW_AT_declaration : 1	
- <1><23d>: Abbrev Number: 14 (DW_TAG_variable)
-    <23e>   DW_AT_name        : (indirect string, offset: 0xd0): sysent	
-    <242>   DW_AT_decl_file   : 4	
-    <243>   DW_AT_decl_line   : 892	
-    <245>   DW_AT_type        : <0xeb>	
-    <249>   DW_AT_external    : 1	
-    <24a>   DW_AT_declaration : 1	
- <1><24b>: Abbrev Number: 14 (DW_TAG_variable)
-    <24c>   DW_AT_name        : (indirect string, offset: 0x1af): nsyscalls	
-    <250>   DW_AT_decl_file   : 4	
-    <251>   DW_AT_decl_line   : 903	
-    <253>   DW_AT_type        : <0x47>	
-    <257>   DW_AT_external    : 1	
-    <258>   DW_AT_declaration : 1	
- <1><259>: Abbrev Number: 15 (DW_TAG_variable)
-    <25a>   DW_AT_name        : (indirect string, offset: 0x6e): mpers_target_var	
-    <25e>   DW_AT_decl_file   : 3	
-    <25f>   DW_AT_decl_line   : 59	
-    <260>   DW_AT_type        : <0x224>	
-    <264>   DW_AT_external    : 1	
-    <265>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><26b>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_stat64.d2 b/mpers-m32/struct_stat64.d2
deleted file mode 100644
index 5bef117..0000000
--- a/mpers-m32/struct_stat64.d2
+++ /dev/null
@@ -1,323 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x23c): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e5): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d7): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x9e): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x38): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x150): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x87): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x22c): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb6): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c0): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x16b): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd0): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe8): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf5): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x248): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x53): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x15d): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x29): _Bool
-<1><fd>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xee): stat64
-DW_AT_byte_size   : 96
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 39
-DW_AT_sibling     : <0x214>
-<2><109>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fd): st_dev
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x4e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><117>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x225): __pad0
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x214>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><125>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17): __st_ino
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><133>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc8): st_mode
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><141>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2f): st_nlink
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><14f>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b9): st_uid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><15d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x204): st_gid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><16b>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7f): st_rdev
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x4e>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><179>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x235): __pad3
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x214>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><187>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4b): st_size
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x32>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><195>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x63): st_blksize
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><1a3>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xac): st_blocks
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x4e>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1b1>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20): st_atime
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 60
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><1bf>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c9): st_atime_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<2><1cd>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): st_mtime
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 63
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><1db>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x170): st_mtime_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
-<2><1e9>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x147): st_ctime
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 66
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<2><1f7>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): st_ctime_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 67
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
-<2><205>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5c): st_ino
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 69
-DW_AT_type        : <0x4e>
-DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
-<1><214>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x39>
-DW_AT_sibling     : <0x224>
-<2><21d>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><224>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1ef): struct_stat64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 57
-DW_AT_type        : <0xfd>
-<1><22f>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd7): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><23d>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd0): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><24b>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1af): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><259>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x6e): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x224>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_statfs.d1 b/mpers-m32/struct_statfs.d1
deleted file mode 100644
index 88d9869..0000000
--- a/mpers-m32/struct_statfs.d1
+++ /dev/null
@@ -1,275 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x243 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x106): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1e4): mpers-m32/struct_statfs.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x188): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x207): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1da): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1cc): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x9e): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x2b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x157): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x80): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1fe): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb6): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_array_type)
-    <64>   DW_AT_type        : <0x2b>	
-    <68>   DW_AT_sibling     : <0x73>	
- <2><6c>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <6d>   DW_AT_type        : <0x73>	
-    <71>   DW_AT_upper_bound : 1	
- <2><72>: Abbrev Number: 0
- <1><73>: Abbrev Number: 2 (DW_TAG_base_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_encoding    : 7	(unsigned)
-    <76>   DW_AT_name        : (indirect string, offset: 0x1c3): sizetype	
- <1><7a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7b>   DW_AT_byte_size   : 1	
-    <7c>   DW_AT_encoding    : 6	(signed char)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x172): char	
- <1><81>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <82>   DW_AT_byte_size   : 4	
-    <83>   DW_AT_type        : <0x87>	
- <1><87>: Abbrev Number: 7 (DW_TAG_const_type)
-    <88>   DW_AT_type        : <0x7a>	
- <1><8c>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <8d>   DW_AT_byte_size   : 8	
-    <8e>   DW_AT_decl_file   : 2	
-    <8f>   DW_AT_decl_line   : 78	
-    <90>   DW_AT_sibling     : <0xa3>	
- <2><94>: Abbrev Number: 9 (DW_TAG_member)
-    <95>   DW_AT_name        : val	
-    <99>   DW_AT_decl_file   : 2	
-    <9a>   DW_AT_decl_line   : 79	
-    <9b>   DW_AT_type        : <0x63>	
-    <9f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a2>: Abbrev Number: 0
- <1><a3>: Abbrev Number: 10 (DW_TAG_typedef)
-    <a4>   DW_AT_name        : (indirect string, offset: 0xdf): __kernel_fsid_t	
-    <a8>   DW_AT_decl_file   : 2	
-    <a9>   DW_AT_decl_line   : 80	
-    <aa>   DW_AT_type        : <0x8c>	
- <1><ae>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <af>   DW_AT_name        : (indirect string, offset: 0xd0): sysent	
-    <b3>   DW_AT_byte_size   : 20	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 4	
-    <b6>   DW_AT_sibling     : <0x101>	
- <2><ba>: Abbrev Number: 12 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0x100): nargs	
-    <bf>   DW_AT_decl_file   : 1	
-    <c0>   DW_AT_decl_line   : 5	
-    <c1>   DW_AT_type        : <0x47>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c8>: Abbrev Number: 12 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x76): sys_flags	
-    <cd>   DW_AT_decl_file   : 1	
-    <ce>   DW_AT_decl_line   : 6	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d6>: Abbrev Number: 9 (DW_TAG_member)
-    <d7>   DW_AT_name        : sen	
-    <db>   DW_AT_decl_file   : 1	
-    <dc>   DW_AT_decl_line   : 7	
-    <dd>   DW_AT_type        : <0x2b>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><e4>: Abbrev Number: 12 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0x213): sys_func	
-    <e9>   DW_AT_decl_file   : 1	
-    <ea>   DW_AT_decl_line   : 8	
-    <eb>   DW_AT_type        : <0x10c>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><f2>: Abbrev Number: 12 (DW_TAG_member)
-    <f3>   DW_AT_name        : (indirect string, offset: 0x3e): sys_name	
-    <f7>   DW_AT_decl_file   : 1	
-    <f8>   DW_AT_decl_line   : 9	
-    <f9>   DW_AT_type        : <0x81>	
-    <fd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><100>: Abbrev Number: 0
- <1><101>: Abbrev Number: 13 (DW_TAG_subroutine_type)
-    <102>   DW_AT_type        : <0x2b>	
-    <106>   DW_AT_sibling     : <0x10c>	
- <2><10a>: Abbrev Number: 14 (DW_TAG_unspecified_parameters)
- <2><10b>: Abbrev Number: 0
- <1><10c>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x101>	
- <1><112>: Abbrev Number: 10 (DW_TAG_typedef)
-    <113>   DW_AT_name        : (indirect string, offset: 0x164): struct_sysent	
-    <117>   DW_AT_decl_file   : 1	
-    <118>   DW_AT_decl_line   : 10	
-    <119>   DW_AT_type        : <0xae>	
- <1><11d>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <11e>   DW_AT_byte_size   : 4	
-    <11f>   DW_AT_type        : <0x123>	
- <1><123>: Abbrev Number: 7 (DW_TAG_const_type)
-    <124>   DW_AT_type        : <0x112>	
- <1><128>: Abbrev Number: 2 (DW_TAG_base_type)
-    <129>   DW_AT_byte_size   : 1	
-    <12a>   DW_AT_encoding    : 2	(boolean)
-    <12b>   DW_AT_name        : (indirect string, offset: 0xf): _Bool	
- <1><12f>: Abbrev Number: 10 (DW_TAG_typedef)
-    <130>   DW_AT_name        : (indirect string, offset: 0x15): __u32	
-    <134>   DW_AT_decl_file   : 3	
-    <135>   DW_AT_decl_line   : 26	
-    <136>   DW_AT_type        : <0x47>	
- <1><13a>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x97): statfs	
-    <13f>   DW_AT_byte_size   : 64	
-    <140>   DW_AT_decl_file   : 4	
-    <141>   DW_AT_decl_line   : 22	
-    <142>   DW_AT_sibling     : <0x1ef>	
- <2><146>: Abbrev Number: 12 (DW_TAG_member)
-    <147>   DW_AT_name        : (indirect string, offset: 0x0): f_type	
-    <14b>   DW_AT_decl_file   : 4	
-    <14c>   DW_AT_decl_line   : 23	
-    <14d>   DW_AT_type        : <0x12f>	
-    <151>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><154>: Abbrev Number: 12 (DW_TAG_member)
-    <155>   DW_AT_name        : (indirect string, offset: 0x1b): f_bsize	
-    <159>   DW_AT_decl_file   : 4	
-    <15a>   DW_AT_decl_line   : 24	
-    <15b>   DW_AT_type        : <0x12f>	
-    <15f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><162>: Abbrev Number: 12 (DW_TAG_member)
-    <163>   DW_AT_name        : (indirect string, offset: 0x5c): f_blocks	
-    <167>   DW_AT_decl_file   : 4	
-    <168>   DW_AT_decl_line   : 25	
-    <169>   DW_AT_type        : <0x12f>	
-    <16d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><170>: Abbrev Number: 12 (DW_TAG_member)
-    <171>   DW_AT_name        : (indirect string, offset: 0xd7): f_bfree	
-    <175>   DW_AT_decl_file   : 4	
-    <176>   DW_AT_decl_line   : 26	
-    <177>   DW_AT_type        : <0x12f>	
-    <17b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><17e>: Abbrev Number: 12 (DW_TAG_member)
-    <17f>   DW_AT_name        : (indirect string, offset: 0x14e): f_bavail	
-    <183>   DW_AT_decl_file   : 4	
-    <184>   DW_AT_decl_line   : 27	
-    <185>   DW_AT_type        : <0x12f>	
-    <189>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><18c>: Abbrev Number: 12 (DW_TAG_member)
-    <18d>   DW_AT_name        : (indirect string, offset: 0x7): f_files	
-    <191>   DW_AT_decl_file   : 4	
-    <192>   DW_AT_decl_line   : 28	
-    <193>   DW_AT_type        : <0x12f>	
-    <197>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><19a>: Abbrev Number: 12 (DW_TAG_member)
-    <19b>   DW_AT_name        : (indirect string, offset: 0xc8): f_ffree	
-    <19f>   DW_AT_decl_file   : 4	
-    <1a0>   DW_AT_decl_line   : 29	
-    <1a1>   DW_AT_type        : <0x12f>	
-    <1a5>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1a8>: Abbrev Number: 12 (DW_TAG_member)
-    <1a9>   DW_AT_name        : (indirect string, offset: 0x55): f_fsid	
-    <1ad>   DW_AT_decl_file   : 4	
-    <1ae>   DW_AT_decl_line   : 30	
-    <1af>   DW_AT_type        : <0xa3>	
-    <1b3>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1b6>: Abbrev Number: 12 (DW_TAG_member)
-    <1b7>   DW_AT_name        : (indirect string, offset: 0xac): f_namelen	
-    <1bb>   DW_AT_decl_file   : 4	
-    <1bc>   DW_AT_decl_line   : 31	
-    <1bd>   DW_AT_type        : <0x12f>	
-    <1c1>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1c4>: Abbrev Number: 12 (DW_TAG_member)
-    <1c5>   DW_AT_name        : (indirect string, offset: 0x177): f_frsize	
-    <1c9>   DW_AT_decl_file   : 4	
-    <1ca>   DW_AT_decl_line   : 32	
-    <1cb>   DW_AT_type        : <0x12f>	
-    <1cf>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1d2>: Abbrev Number: 12 (DW_TAG_member)
-    <1d3>   DW_AT_name        : (indirect string, offset: 0x23): f_flags	
-    <1d7>   DW_AT_decl_file   : 4	
-    <1d8>   DW_AT_decl_line   : 33	
-    <1d9>   DW_AT_type        : <0x12f>	
-    <1dd>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1e0>: Abbrev Number: 12 (DW_TAG_member)
-    <1e1>   DW_AT_name        : (indirect string, offset: 0x180): f_spare	
-    <1e5>   DW_AT_decl_file   : 4	
-    <1e6>   DW_AT_decl_line   : 34	
-    <1e7>   DW_AT_type        : <0x1ef>	
-    <1eb>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1ee>: Abbrev Number: 0
- <1><1ef>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1f0>   DW_AT_type        : <0x12f>	
-    <1f4>   DW_AT_sibling     : <0x1ff>	
- <2><1f8>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1f9>   DW_AT_type        : <0x73>	
-    <1fd>   DW_AT_upper_bound : 3	
- <2><1fe>: Abbrev Number: 0
- <1><1ff>: Abbrev Number: 10 (DW_TAG_typedef)
-    <200>   DW_AT_name        : (indirect string, offset: 0x47): struct_statfs	
-    <204>   DW_AT_decl_file   : 5	
-    <205>   DW_AT_decl_line   : 33	
-    <206>   DW_AT_type        : <0x13a>	
- <1><20a>: Abbrev Number: 15 (DW_TAG_variable)
-    <20b>   DW_AT_name        : (indirect string, offset: 0xef): current_wordsize	
-    <20f>   DW_AT_decl_file   : 6	
-    <210>   DW_AT_decl_line   : 757	
-    <212>   DW_AT_type        : <0x47>	
-    <216>   DW_AT_external    : 1	
-    <217>   DW_AT_declaration : 1	
- <1><218>: Abbrev Number: 15 (DW_TAG_variable)
-    <219>   DW_AT_name        : (indirect string, offset: 0xd0): sysent	
-    <21d>   DW_AT_decl_file   : 6	
-    <21e>   DW_AT_decl_line   : 892	
-    <220>   DW_AT_type        : <0x11d>	
-    <224>   DW_AT_external    : 1	
-    <225>   DW_AT_declaration : 1	
- <1><226>: Abbrev Number: 15 (DW_TAG_variable)
-    <227>   DW_AT_name        : (indirect string, offset: 0x1b9): nsyscalls	
-    <22b>   DW_AT_decl_file   : 6	
-    <22c>   DW_AT_decl_line   : 903	
-    <22e>   DW_AT_type        : <0x47>	
-    <232>   DW_AT_external    : 1	
-    <233>   DW_AT_declaration : 1	
- <1><234>: Abbrev Number: 16 (DW_TAG_variable)
-    <235>   DW_AT_name        : (indirect string, offset: 0x65): mpers_target_var	
-    <239>   DW_AT_decl_file   : 5	
-    <23a>   DW_AT_decl_line   : 36	
-    <23b>   DW_AT_type        : <0x1ff>	
-    <23f>   DW_AT_external    : 1	
-    <240>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><246>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_statfs.d2 b/mpers-m32/struct_statfs.d2
deleted file mode 100644
index e40cb1b..0000000
--- a/mpers-m32/struct_statfs.d2
+++ /dev/null
@@ -1,307 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x207): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1da): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1cc): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x9e): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x157): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x80): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1fe): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb6): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x73>
-<2><6c>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 1
-<1><73>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c3): sizetype
-<1><7a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x172): char
-<1><81>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x87>
-<1><87>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x7a>
-<1><8c>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 78
-DW_AT_sibling     : <0xa3>
-<2><94>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : val
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 79
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<1><a3>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xdf): __kernel_fsid_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 80
-DW_AT_type        : <0x8c>
-<1><ae>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd0): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x101>
-<2><ba>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x100): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c8>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x76): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><e4>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x213): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x10c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><f2>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3e): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x81>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><101>
-Abbrev Number: 13 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x10c>
-<2><10a>
-Abbrev Number: 14 (DW_TAG_unspecified_parameters)
-<1><10c>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x101>
-<1><112>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x164): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xae>
-<1><11d>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x123>
-<1><123>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x112>
-<1><128>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xf): _Bool
-<1><12f>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x15): __u32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><13a>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x97): statfs
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 22
-DW_AT_sibling     : <0x1ef>
-<2><146>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): f_type
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><154>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b): f_bsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 24
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><162>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5c): f_blocks
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><170>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd7): f_bfree
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><17e>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14e): f_bavail
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><18c>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7): f_files
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><19a>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc8): f_ffree
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1a8>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x55): f_fsid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 30
-DW_AT_type        : <0xa3>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><1b6>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xac): f_namelen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1c4>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x177): f_frsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1d2>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23): f_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1e0>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x180): f_spare
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1ef>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<1><1ef>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x12f>
-DW_AT_sibling     : <0x1ff>
-<2><1f8>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 3
-<1><1ff>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x47): struct_statfs
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x13a>
-<1><20a>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xef): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><218>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd0): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x11d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><226>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b9): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><234>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x65): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x1ff>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_statfs64.d1 b/mpers-m32/struct_statfs64.d1
deleted file mode 100644
index 7c32a68..0000000
--- a/mpers-m32/struct_statfs64.d1
+++ /dev/null
@@ -1,280 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x24e (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x116): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x3e): mpers-m32/struct_statfs64.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x198): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x213): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x200): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1e2): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa5): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x2b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x167): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x8e): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x20a): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xbd): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_array_type)
-    <64>   DW_AT_type        : <0x2b>	
-    <68>   DW_AT_sibling     : <0x73>	
- <2><6c>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <6d>   DW_AT_type        : <0x73>	
-    <71>   DW_AT_upper_bound : 1	
- <2><72>: Abbrev Number: 0
- <1><73>: Abbrev Number: 2 (DW_TAG_base_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_encoding    : 7	(unsigned)
-    <76>   DW_AT_name        : (indirect string, offset: 0x1d9): sizetype	
- <1><7a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7b>   DW_AT_byte_size   : 1	
-    <7c>   DW_AT_encoding    : 6	(signed char)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x182): char	
- <1><81>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <82>   DW_AT_byte_size   : 4	
-    <83>   DW_AT_type        : <0x87>	
- <1><87>: Abbrev Number: 7 (DW_TAG_const_type)
-    <88>   DW_AT_type        : <0x7a>	
- <1><8c>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <8d>   DW_AT_byte_size   : 8	
-    <8e>   DW_AT_decl_file   : 2	
-    <8f>   DW_AT_decl_line   : 78	
-    <90>   DW_AT_sibling     : <0xa3>	
- <2><94>: Abbrev Number: 9 (DW_TAG_member)
-    <95>   DW_AT_name        : val	
-    <99>   DW_AT_decl_file   : 2	
-    <9a>   DW_AT_decl_line   : 79	
-    <9b>   DW_AT_type        : <0x63>	
-    <9f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a2>: Abbrev Number: 0
- <1><a3>: Abbrev Number: 10 (DW_TAG_typedef)
-    <a4>   DW_AT_name        : (indirect string, offset: 0x1f0): __kernel_fsid_t	
-    <a8>   DW_AT_decl_file   : 2	
-    <a9>   DW_AT_decl_line   : 80	
-    <aa>   DW_AT_type        : <0x8c>	
- <1><ae>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <af>   DW_AT_name        : (indirect string, offset: 0xd7): sysent	
-    <b3>   DW_AT_byte_size   : 20	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 4	
-    <b6>   DW_AT_sibling     : <0x101>	
- <2><ba>: Abbrev Number: 12 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0x110): nargs	
-    <bf>   DW_AT_decl_file   : 1	
-    <c0>   DW_AT_decl_line   : 5	
-    <c1>   DW_AT_type        : <0x47>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c8>: Abbrev Number: 12 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x84): sys_flags	
-    <cd>   DW_AT_decl_file   : 1	
-    <ce>   DW_AT_decl_line   : 6	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d6>: Abbrev Number: 9 (DW_TAG_member)
-    <d7>   DW_AT_name        : sen	
-    <db>   DW_AT_decl_file   : 1	
-    <dc>   DW_AT_decl_line   : 7	
-    <dd>   DW_AT_type        : <0x2b>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><e4>: Abbrev Number: 12 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0x21f): sys_func	
-    <e9>   DW_AT_decl_file   : 1	
-    <ea>   DW_AT_decl_line   : 8	
-    <eb>   DW_AT_type        : <0x10c>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><f2>: Abbrev Number: 12 (DW_TAG_member)
-    <f3>   DW_AT_name        : (indirect string, offset: 0x5a): sys_name	
-    <f7>   DW_AT_decl_file   : 1	
-    <f8>   DW_AT_decl_line   : 9	
-    <f9>   DW_AT_type        : <0x81>	
-    <fd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><100>: Abbrev Number: 0
- <1><101>: Abbrev Number: 13 (DW_TAG_subroutine_type)
-    <102>   DW_AT_type        : <0x2b>	
-    <106>   DW_AT_sibling     : <0x10c>	
- <2><10a>: Abbrev Number: 14 (DW_TAG_unspecified_parameters)
- <2><10b>: Abbrev Number: 0
- <1><10c>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x101>	
- <1><112>: Abbrev Number: 10 (DW_TAG_typedef)
-    <113>   DW_AT_name        : (indirect string, offset: 0x174): struct_sysent	
-    <117>   DW_AT_decl_file   : 1	
-    <118>   DW_AT_decl_line   : 10	
-    <119>   DW_AT_type        : <0xae>	
- <1><11d>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <11e>   DW_AT_byte_size   : 4	
-    <11f>   DW_AT_type        : <0x123>	
- <1><123>: Abbrev Number: 7 (DW_TAG_const_type)
-    <124>   DW_AT_type        : <0x112>	
- <1><128>: Abbrev Number: 2 (DW_TAG_base_type)
-    <129>   DW_AT_byte_size   : 1	
-    <12a>   DW_AT_encoding    : 2	(boolean)
-    <12b>   DW_AT_name        : (indirect string, offset: 0xf): _Bool	
- <1><12f>: Abbrev Number: 10 (DW_TAG_typedef)
-    <130>   DW_AT_name        : (indirect string, offset: 0x15): __u32	
-    <134>   DW_AT_decl_file   : 3	
-    <135>   DW_AT_decl_line   : 26	
-    <136>   DW_AT_type        : <0x47>	
- <1><13a>: Abbrev Number: 10 (DW_TAG_typedef)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x1d3): __u64	
-    <13f>   DW_AT_decl_file   : 3	
-    <140>   DW_AT_decl_line   : 30	
-    <141>   DW_AT_type        : <0x4e>	
- <1><145>: Abbrev Number: 4 (DW_TAG_array_type)
-    <146>   DW_AT_type        : <0x12f>	
-    <14a>   DW_AT_sibling     : <0x155>	
- <2><14e>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <14f>   DW_AT_type        : <0x73>	
-    <153>   DW_AT_upper_bound : 3	
- <2><154>: Abbrev Number: 0
- <1><155>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <156>   DW_AT_name        : (indirect string, offset: 0xde): statfs64	
-    <15a>   DW_AT_byte_size   : 84	
-    <15b>   DW_AT_decl_file   : 4	
-    <15c>   DW_AT_decl_line   : 45	
-    <15d>   DW_AT_sibling     : <0x20a>	
- <2><161>: Abbrev Number: 12 (DW_TAG_member)
-    <162>   DW_AT_name        : (indirect string, offset: 0x0): f_type	
-    <166>   DW_AT_decl_file   : 4	
-    <167>   DW_AT_decl_line   : 46	
-    <168>   DW_AT_type        : <0x12f>	
-    <16c>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><16f>: Abbrev Number: 12 (DW_TAG_member)
-    <170>   DW_AT_name        : (indirect string, offset: 0x1b): f_bsize	
-    <174>   DW_AT_decl_file   : 4	
-    <175>   DW_AT_decl_line   : 47	
-    <176>   DW_AT_type        : <0x12f>	
-    <17a>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><17d>: Abbrev Number: 12 (DW_TAG_member)
-    <17e>   DW_AT_name        : (indirect string, offset: 0x6a): f_blocks	
-    <182>   DW_AT_decl_file   : 4	
-    <183>   DW_AT_decl_line   : 48	
-    <184>   DW_AT_type        : <0x13a>	
-    <188>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><18b>: Abbrev Number: 12 (DW_TAG_member)
-    <18c>   DW_AT_name        : (indirect string, offset: 0xe7): f_bfree	
-    <190>   DW_AT_decl_file   : 4	
-    <191>   DW_AT_decl_line   : 49	
-    <192>   DW_AT_type        : <0x13a>	
-    <196>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><199>: Abbrev Number: 12 (DW_TAG_member)
-    <19a>   DW_AT_name        : (indirect string, offset: 0x15e): f_bavail	
-    <19e>   DW_AT_decl_file   : 4	
-    <19f>   DW_AT_decl_line   : 50	
-    <1a0>   DW_AT_type        : <0x13a>	
-    <1a4>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1a7>: Abbrev Number: 12 (DW_TAG_member)
-    <1a8>   DW_AT_name        : (indirect string, offset: 0x7): f_files	
-    <1ac>   DW_AT_decl_file   : 4	
-    <1ad>   DW_AT_decl_line   : 51	
-    <1ae>   DW_AT_type        : <0x13a>	
-    <1b2>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1b5>: Abbrev Number: 12 (DW_TAG_member)
-    <1b6>   DW_AT_name        : (indirect string, offset: 0xcf): f_ffree	
-    <1ba>   DW_AT_decl_file   : 4	
-    <1bb>   DW_AT_decl_line   : 52	
-    <1bc>   DW_AT_type        : <0x13a>	
-    <1c0>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1c3>: Abbrev Number: 12 (DW_TAG_member)
-    <1c4>   DW_AT_name        : (indirect string, offset: 0x63): f_fsid	
-    <1c8>   DW_AT_decl_file   : 4	
-    <1c9>   DW_AT_decl_line   : 53	
-    <1ca>   DW_AT_type        : <0xa3>	
-    <1ce>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1d1>: Abbrev Number: 12 (DW_TAG_member)
-    <1d2>   DW_AT_name        : (indirect string, offset: 0xb3): f_namelen	
-    <1d6>   DW_AT_decl_file   : 4	
-    <1d7>   DW_AT_decl_line   : 54	
-    <1d8>   DW_AT_type        : <0x12f>	
-    <1dc>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1df>: Abbrev Number: 12 (DW_TAG_member)
-    <1e0>   DW_AT_name        : (indirect string, offset: 0x187): f_frsize	
-    <1e4>   DW_AT_decl_file   : 4	
-    <1e5>   DW_AT_decl_line   : 55	
-    <1e6>   DW_AT_type        : <0x12f>	
-    <1ea>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><1ed>: Abbrev Number: 12 (DW_TAG_member)
-    <1ee>   DW_AT_name        : (indirect string, offset: 0x23): f_flags	
-    <1f2>   DW_AT_decl_file   : 4	
-    <1f3>   DW_AT_decl_line   : 56	
-    <1f4>   DW_AT_type        : <0x12f>	
-    <1f8>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1fb>: Abbrev Number: 12 (DW_TAG_member)
-    <1fc>   DW_AT_name        : (indirect string, offset: 0x190): f_spare	
-    <200>   DW_AT_decl_file   : 4	
-    <201>   DW_AT_decl_line   : 57	
-    <202>   DW_AT_type        : <0x145>	
-    <206>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><209>: Abbrev Number: 0
- <1><20a>: Abbrev Number: 10 (DW_TAG_typedef)
-    <20b>   DW_AT_name        : (indirect string, offset: 0xef): struct_statfs64	
-    <20f>   DW_AT_decl_file   : 5	
-    <210>   DW_AT_decl_line   : 34	
-    <211>   DW_AT_type        : <0x155>	
- <1><215>: Abbrev Number: 15 (DW_TAG_variable)
-    <216>   DW_AT_name        : (indirect string, offset: 0xff): current_wordsize	
-    <21a>   DW_AT_decl_file   : 6	
-    <21b>   DW_AT_decl_line   : 757	
-    <21d>   DW_AT_type        : <0x47>	
-    <221>   DW_AT_external    : 1	
-    <222>   DW_AT_declaration : 1	
- <1><223>: Abbrev Number: 15 (DW_TAG_variable)
-    <224>   DW_AT_name        : (indirect string, offset: 0xd7): sysent	
-    <228>   DW_AT_decl_file   : 6	
-    <229>   DW_AT_decl_line   : 892	
-    <22b>   DW_AT_type        : <0x11d>	
-    <22f>   DW_AT_external    : 1	
-    <230>   DW_AT_declaration : 1	
- <1><231>: Abbrev Number: 15 (DW_TAG_variable)
-    <232>   DW_AT_name        : (indirect string, offset: 0x1c9): nsyscalls	
-    <236>   DW_AT_decl_file   : 6	
-    <237>   DW_AT_decl_line   : 903	
-    <239>   DW_AT_type        : <0x47>	
-    <23d>   DW_AT_external    : 1	
-    <23e>   DW_AT_declaration : 1	
- <1><23f>: Abbrev Number: 16 (DW_TAG_variable)
-    <240>   DW_AT_name        : (indirect string, offset: 0x73): mpers_target_var	
-    <244>   DW_AT_decl_file   : 5	
-    <245>   DW_AT_decl_line   : 36	
-    <246>   DW_AT_type        : <0x20a>	
-    <24a>   DW_AT_external    : 1	
-    <24b>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><251>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_statfs64.d2 b/mpers-m32/struct_statfs64.d2
deleted file mode 100644
index a477d15..0000000
--- a/mpers-m32/struct_statfs64.d2
+++ /dev/null
@@ -1,313 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x213): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x200): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e2): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa5): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x167): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8e): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x20a): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbd): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x73>
-<2><6c>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 1
-<1><73>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d9): sizetype
-<1><7a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x182): char
-<1><81>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x87>
-<1><87>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x7a>
-<1><8c>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 78
-DW_AT_sibling     : <0xa3>
-<2><94>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : val
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 79
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<1><a3>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1f0): __kernel_fsid_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 80
-DW_AT_type        : <0x8c>
-<1><ae>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd7): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x101>
-<2><ba>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x110): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c8>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x84): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><e4>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21f): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x10c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><f2>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5a): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x81>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><101>
-Abbrev Number: 13 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x10c>
-<2><10a>
-Abbrev Number: 14 (DW_TAG_unspecified_parameters)
-<1><10c>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x101>
-<1><112>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x174): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xae>
-<1><11d>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x123>
-<1><123>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x112>
-<1><128>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xf): _Bool
-<1><12f>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x15): __u32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><13a>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d3): __u64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><145>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x12f>
-DW_AT_sibling     : <0x155>
-<2><14e>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 3
-<1><155>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xde): statfs64
-DW_AT_byte_size   : 84
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 45
-DW_AT_sibling     : <0x20a>
-<2><161>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): f_type
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><16f>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b): f_bsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><17d>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6a): f_blocks
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x13a>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><18b>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe7): f_bfree
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x13a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><199>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15e): f_bavail
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x13a>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1a7>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7): f_files
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x13a>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1b5>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcf): f_ffree
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x13a>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1c3>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x63): f_fsid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 53
-DW_AT_type        : <0xa3>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1d1>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb3): f_namelen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1df>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x187): f_frsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><1ed>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23): f_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><1fb>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x190): f_spare
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x145>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<1><20a>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xef): struct_statfs64
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x155>
-<1><215>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xff): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><223>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd7): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x11d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><231>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1c9): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><23f>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x73): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x20a>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_timex.c b/mpers-m32/struct_timex.c
index d66cba4..bf8298f 100644
--- a/mpers-m32/struct_timex.c
+++ b/mpers-m32/struct_timex.c
@@ -3,6 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 2006-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
diff --git a/mpers-m32/struct_timex.d1 b/mpers-m32/struct_timex.d1
deleted file mode 100644
index d3df456..0000000
--- a/mpers-m32/struct_timex.d1
+++ /dev/null
@@ -1,321 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2b0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x10e): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x0): mpers-m32/struct_timex.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1a2): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x23e): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x21e): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1f5): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xc3): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x50): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x16a): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x9e): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x22f): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xd1): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1e5): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0xfa): __time_t	
-    <6f>   DW_AT_decl_file   : 1	
-    <70>   DW_AT_decl_line   : 139	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x18c): __suseconds_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 141	
-    <7c>   DW_AT_type        : <0x55>	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0x253): __syscall_slong_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 175	
-    <87>   DW_AT_type        : <0x55>	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x187): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0x162): timeval	
-    <97>   DW_AT_byte_size   : 8	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 30	
-    <9a>   DW_AT_sibling     : <0xbb>	
- <2><9e>: Abbrev Number: 6 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x1ee): tv_sec	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 32	
-    <a5>   DW_AT_type        : <0x6a>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 6 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x19a): tv_usec	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 33	
-    <b3>   DW_AT_type        : <0x75>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 0
- <1><bb>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <bc>   DW_AT_byte_size   : 4	
-    <bd>   DW_AT_type        : <0xc1>	
- <1><c1>: Abbrev Number: 8 (DW_TAG_const_type)
-    <c2>   DW_AT_type        : <0x8b>	
- <1><c6>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <c7>   DW_AT_name        : (indirect string, offset: 0xe3): timex	
-    <cb>   DW_AT_byte_size   : 128	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 25	
-    <ce>   DW_AT_sibling     : <0x1eb>	
- <2><d2>: Abbrev Number: 6 (DW_TAG_member)
-    <d3>   DW_AT_name        : (indirect string, offset: 0x238): modes	
-    <d7>   DW_AT_decl_file   : 3	
-    <d8>   DW_AT_decl_line   : 27	
-    <d9>   DW_AT_type        : <0x47>	
-    <dd>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><e0>: Abbrev Number: 6 (DW_TAG_member)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x217): offset	
-    <e5>   DW_AT_decl_file   : 3	
-    <e6>   DW_AT_decl_line   : 28	
-    <e7>   DW_AT_type        : <0x80>	
-    <eb>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ee>: Abbrev Number: 6 (DW_TAG_member)
-    <ef>   DW_AT_name        : (indirect string, offset: 0x156): freq	
-    <f3>   DW_AT_decl_file   : 3	
-    <f4>   DW_AT_decl_line   : 29	
-    <f5>   DW_AT_type        : <0x80>	
-    <f9>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><fc>: Abbrev Number: 6 (DW_TAG_member)
-    <fd>   DW_AT_name        : (indirect string, offset: 0x7a): maxerror	
-    <101>   DW_AT_decl_file   : 3	
-    <102>   DW_AT_decl_line   : 30	
-    <103>   DW_AT_type        : <0x80>	
-    <107>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><10a>: Abbrev Number: 6 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x2c): esterror	
-    <10f>   DW_AT_decl_file   : 3	
-    <110>   DW_AT_decl_line   : 31	
-    <111>   DW_AT_type        : <0x80>	
-    <115>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><118>: Abbrev Number: 6 (DW_TAG_member)
-    <119>   DW_AT_name        : (indirect string, offset: 0x6a): status	
-    <11d>   DW_AT_decl_file   : 3	
-    <11e>   DW_AT_decl_line   : 32	
-    <11f>   DW_AT_type        : <0x2b>	
-    <123>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><126>: Abbrev Number: 6 (DW_TAG_member)
-    <127>   DW_AT_name        : (indirect string, offset: 0x177): constant	
-    <12b>   DW_AT_decl_file   : 3	
-    <12c>   DW_AT_decl_line   : 33	
-    <12d>   DW_AT_type        : <0x80>	
-    <131>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><134>: Abbrev Number: 6 (DW_TAG_member)
-    <135>   DW_AT_name        : (indirect string, offset: 0x203): precision	
-    <139>   DW_AT_decl_file   : 3	
-    <13a>   DW_AT_decl_line   : 34	
-    <13b>   DW_AT_type        : <0x80>	
-    <13f>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><142>: Abbrev Number: 6 (DW_TAG_member)
-    <143>   DW_AT_name        : (indirect string, offset: 0x20d): tolerance	
-    <147>   DW_AT_decl_file   : 3	
-    <148>   DW_AT_decl_line   : 35	
-    <149>   DW_AT_type        : <0x80>	
-    <14d>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><150>: Abbrev Number: 6 (DW_TAG_member)
-    <151>   DW_AT_name        : (indirect string, offset: 0x265): time	
-    <155>   DW_AT_decl_file   : 3	
-    <156>   DW_AT_decl_line   : 36	
-    <157>   DW_AT_type        : <0x92>	
-    <15b>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><15e>: Abbrev Number: 6 (DW_TAG_member)
-    <15f>   DW_AT_name        : (indirect string, offset: 0x103): tick	
-    <163>   DW_AT_decl_file   : 3	
-    <164>   DW_AT_decl_line   : 37	
-    <165>   DW_AT_type        : <0x80>	
-    <169>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><16c>: Abbrev Number: 6 (DW_TAG_member)
-    <16d>   DW_AT_name        : (indirect string, offset: 0x1dd): ppsfreq	
-    <171>   DW_AT_decl_file   : 3	
-    <172>   DW_AT_decl_line   : 38	
-    <173>   DW_AT_type        : <0x80>	
-    <177>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><17a>: Abbrev Number: 6 (DW_TAG_member)
-    <17b>   DW_AT_name        : (indirect string, offset: 0xbc): jitter	
-    <17f>   DW_AT_decl_file   : 3	
-    <180>   DW_AT_decl_line   : 39	
-    <181>   DW_AT_type        : <0x80>	
-    <185>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><188>: Abbrev Number: 6 (DW_TAG_member)
-    <189>   DW_AT_name        : (indirect string, offset: 0x26): shift	
-    <18d>   DW_AT_decl_file   : 3	
-    <18e>   DW_AT_decl_line   : 40	
-    <18f>   DW_AT_type        : <0x2b>	
-    <193>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><196>: Abbrev Number: 6 (DW_TAG_member)
-    <197>   DW_AT_name        : (indirect string, offset: 0x180): stabil	
-    <19b>   DW_AT_decl_file   : 3	
-    <19c>   DW_AT_decl_line   : 41	
-    <19d>   DW_AT_type        : <0x80>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><1a4>: Abbrev Number: 6 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x63): jitcnt	
-    <1a9>   DW_AT_decl_file   : 3	
-    <1aa>   DW_AT_decl_line   : 42	
-    <1ab>   DW_AT_type        : <0x80>	
-    <1af>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1b2>: Abbrev Number: 6 (DW_TAG_member)
-    <1b3>   DW_AT_name        : (indirect string, offset: 0xb5): calcnt	
-    <1b7>   DW_AT_decl_file   : 3	
-    <1b8>   DW_AT_decl_line   : 43	
-    <1b9>   DW_AT_type        : <0x80>	
-    <1bd>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><1c0>: Abbrev Number: 6 (DW_TAG_member)
-    <1c1>   DW_AT_name        : (indirect string, offset: 0x3b): errcnt	
-    <1c5>   DW_AT_decl_file   : 3	
-    <1c6>   DW_AT_decl_line   : 44	
-    <1c7>   DW_AT_type        : <0x80>	
-    <1cb>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1ce>: Abbrev Number: 6 (DW_TAG_member)
-    <1cf>   DW_AT_name        : (indirect string, offset: 0x228): stbcnt	
-    <1d3>   DW_AT_decl_file   : 3	
-    <1d4>   DW_AT_decl_line   : 45	
-    <1d5>   DW_AT_type        : <0x80>	
-    <1d9>   DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
- <2><1dc>: Abbrev Number: 9 (DW_TAG_member)
-    <1dd>   DW_AT_name        : tai	
-    <1e1>   DW_AT_decl_file   : 3	
-    <1e2>   DW_AT_decl_line   : 47	
-    <1e3>   DW_AT_type        : <0x2b>	
-    <1e7>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><1ea>: Abbrev Number: 0
- <1><1eb>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <1ec>   DW_AT_name        : (indirect string, offset: 0x15b): sysent	
-    <1f0>   DW_AT_byte_size   : 20	
-    <1f1>   DW_AT_decl_file   : 4	
-    <1f2>   DW_AT_decl_line   : 4	
-    <1f3>   DW_AT_sibling     : <0x23e>	
- <2><1f7>: Abbrev Number: 6 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0x108): nargs	
-    <1fc>   DW_AT_decl_file   : 4	
-    <1fd>   DW_AT_decl_line   : 5	
-    <1fe>   DW_AT_type        : <0x47>	
-    <202>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><205>: Abbrev Number: 6 (DW_TAG_member)
-    <206>   DW_AT_name        : (indirect string, offset: 0x94): sys_flags	
-    <20a>   DW_AT_decl_file   : 4	
-    <20b>   DW_AT_decl_line   : 6	
-    <20c>   DW_AT_type        : <0x2b>	
-    <210>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><213>: Abbrev Number: 9 (DW_TAG_member)
-    <214>   DW_AT_name        : sen	
-    <218>   DW_AT_decl_file   : 4	
-    <219>   DW_AT_decl_line   : 7	
-    <21a>   DW_AT_type        : <0x2b>	
-    <21e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><221>: Abbrev Number: 6 (DW_TAG_member)
-    <222>   DW_AT_name        : (indirect string, offset: 0x24a): sys_func	
-    <226>   DW_AT_decl_file   : 4	
-    <227>   DW_AT_decl_line   : 8	
-    <228>   DW_AT_type        : <0x249>	
-    <22c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><22f>: Abbrev Number: 6 (DW_TAG_member)
-    <230>   DW_AT_name        : (indirect string, offset: 0x71): sys_name	
-    <234>   DW_AT_decl_file   : 4	
-    <235>   DW_AT_decl_line   : 9	
-    <236>   DW_AT_type        : <0xbb>	
-    <23a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><23d>: Abbrev Number: 0
- <1><23e>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <23f>   DW_AT_type        : <0x2b>	
-    <243>   DW_AT_sibling     : <0x249>	
- <2><247>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><248>: Abbrev Number: 0
- <1><249>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <24a>   DW_AT_byte_size   : 4	
-    <24b>   DW_AT_type        : <0x23e>	
- <1><24f>: Abbrev Number: 4 (DW_TAG_typedef)
-    <250>   DW_AT_name        : (indirect string, offset: 0x42): struct_sysent	
-    <254>   DW_AT_decl_file   : 4	
-    <255>   DW_AT_decl_line   : 10	
-    <256>   DW_AT_type        : <0x1eb>	
- <1><25a>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <25b>   DW_AT_byte_size   : 4	
-    <25c>   DW_AT_type        : <0x260>	
- <1><260>: Abbrev Number: 8 (DW_TAG_const_type)
-    <261>   DW_AT_type        : <0x24f>	
- <1><265>: Abbrev Number: 2 (DW_TAG_base_type)
-    <266>   DW_AT_byte_size   : 1	
-    <267>   DW_AT_encoding    : 2	(boolean)
-    <268>   DW_AT_name        : (indirect string, offset: 0x35): _Bool	
- <1><26c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <26d>   DW_AT_name        : (indirect string, offset: 0x19): struct_timex	
-    <271>   DW_AT_decl_file   : 5	
-    <272>   DW_AT_decl_line   : 35	
-    <273>   DW_AT_type        : <0xc6>	
- <1><277>: Abbrev Number: 12 (DW_TAG_variable)
-    <278>   DW_AT_name        : (indirect string, offset: 0xe9): current_wordsize	
-    <27c>   DW_AT_decl_file   : 6	
-    <27d>   DW_AT_decl_line   : 757	
-    <27f>   DW_AT_type        : <0x47>	
-    <283>   DW_AT_external    : 1	
-    <284>   DW_AT_declaration : 1	
- <1><285>: Abbrev Number: 12 (DW_TAG_variable)
-    <286>   DW_AT_name        : (indirect string, offset: 0x15b): sysent	
-    <28a>   DW_AT_decl_file   : 6	
-    <28b>   DW_AT_decl_line   : 892	
-    <28d>   DW_AT_type        : <0x25a>	
-    <291>   DW_AT_external    : 1	
-    <292>   DW_AT_declaration : 1	
- <1><293>: Abbrev Number: 12 (DW_TAG_variable)
-    <294>   DW_AT_name        : (indirect string, offset: 0x1d3): nsyscalls	
-    <298>   DW_AT_decl_file   : 6	
-    <299>   DW_AT_decl_line   : 903	
-    <29b>   DW_AT_type        : <0x47>	
-    <29f>   DW_AT_external    : 1	
-    <2a0>   DW_AT_declaration : 1	
- <1><2a1>: Abbrev Number: 13 (DW_TAG_variable)
-    <2a2>   DW_AT_name        : (indirect string, offset: 0x83): mpers_target_var	
-    <2a6>   DW_AT_decl_file   : 5	
-    <2a7>   DW_AT_decl_line   : 37	
-    <2a8>   DW_AT_type        : <0x26c>	
-    <2ac>   DW_AT_external    : 1	
-    <2ad>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><2b3>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_timex.d2 b/mpers-m32/struct_timex.d2
deleted file mode 100644
index cad7010..0000000
--- a/mpers-m32/struct_timex.d2
+++ /dev/null
@@ -1,361 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x23e): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x21e): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f5): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xc3): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x50): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x16a): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x9e): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x22f): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd1): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1e5): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xfa): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x18c): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x55>
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x253): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x55>
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x187): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x162): timeval
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xbb>
-<2><9e>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ee): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19a): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><bb>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xc1>
-<1><c1>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><c6>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe3): timex
-DW_AT_byte_size   : 128
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 25
-DW_AT_sibling     : <0x1eb>
-<2><d2>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x238): modes
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><e0>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x217): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ee>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x156): freq
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><fc>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7a): maxerror
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><10a>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c): esterror
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><118>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6a): status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><126>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x177): constant
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><134>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x203): precision
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><142>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20d): tolerance
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><150>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x265): time
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><15e>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x103): tick
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><16c>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1dd): ppsfreq
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><17a>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbc): jitter
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><188>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26): shift
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><196>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x180): stabil
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><1a4>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x63): jitcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><1b2>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb5): calcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<2><1c0>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3b): errcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><1ce>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x228): stbcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
-<2><1dc>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : tai
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<1><1eb>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x15b): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x23e>
-<2><1f7>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x108): nargs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><205>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x94): sys_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><213>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><221>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x24a): sys_func
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x249>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><22f>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x71): sys_name
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xbb>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><23e>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x249>
-<2><247>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><249>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x23e>
-<1><24f>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x42): struct_sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x1eb>
-<1><25a>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x260>
-<1><260>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x24f>
-<1><265>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x35): _Bool
-<1><26c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x19): struct_timex
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xc6>
-<1><277>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe9): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><285>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x15b): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x25a>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><293>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1d3): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2a1>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x83): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x26c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_ustat.d1 b/mpers-m32/struct_ustat.d1
deleted file mode 100644
index 5d6ae48..0000000
--- a/mpers-m32/struct_ustat.d1
+++ /dev/null
@@ -1,208 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1ac (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xa4): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x173): mpers-m32/struct_ustat.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x121): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1a7): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x194): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x165): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x54): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x14): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0xec): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x1bc): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x19e): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x6c): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x6): __ino_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 127	
-    <6a>   DW_AT_type        : <0x5c>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x15c): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x62): __daddr_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 143	
-    <7c>   DW_AT_type        : <0x2b>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x10f): char	
- <1><87>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <88>   DW_AT_byte_size   : 4	
-    <89>   DW_AT_type        : <0x8d>	
- <1><8d>: Abbrev Number: 6 (DW_TAG_const_type)
-    <8e>   DW_AT_type        : <0x80>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0x7e): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x9e): nargs	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x41): sys_flags	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 2	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x1b3): sys_func	
-    <cd>   DW_AT_decl_file   : 2	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x27): sys_name	
-    <db>   DW_AT_decl_file   : 2	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x87>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0xf9): struct_sysent	
-    <fb>   DW_AT_decl_file   : 2	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 6 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0xe): _Bool	
- <1><113>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x0): ustat	
-    <118>   DW_AT_byte_size   : 20	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 24	
-    <11b>   DW_AT_sibling     : <0x158>	
- <2><11f>: Abbrev Number: 8 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0x18c): f_tfree	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 26	
-    <126>   DW_AT_type        : <0x75>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 8 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x4b): f_tinode	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 27	
-    <134>   DW_AT_type        : <0x63>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><13b>: Abbrev Number: 8 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x85): f_fname	
-    <140>   DW_AT_decl_file   : 3	
-    <141>   DW_AT_decl_line   : 28	
-    <142>   DW_AT_type        : <0x158>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><149>: Abbrev Number: 8 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x107): f_fpack	
-    <14e>   DW_AT_decl_file   : 3	
-    <14f>   DW_AT_decl_line   : 29	
-    <150>   DW_AT_type        : <0x158>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 e 	(DW_OP_plus_uconst: 14)
- <2><157>: Abbrev Number: 0
- <1><158>: Abbrev Number: 12 (DW_TAG_array_type)
-    <159>   DW_AT_type        : <0x80>	
-    <15d>   DW_AT_sibling     : <0x168>	
- <2><161>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <162>   DW_AT_type        : <0x6e>	
-    <166>   DW_AT_upper_bound : 5	
- <2><167>: Abbrev Number: 0
- <1><168>: Abbrev Number: 4 (DW_TAG_typedef)
-    <169>   DW_AT_name        : (indirect string, offset: 0x114): struct_ustat	
-    <16d>   DW_AT_decl_file   : 4	
-    <16e>   DW_AT_decl_line   : 31	
-    <16f>   DW_AT_type        : <0x113>	
- <1><173>: Abbrev Number: 14 (DW_TAG_variable)
-    <174>   DW_AT_name        : (indirect string, offset: 0x8d): current_wordsize	
-    <178>   DW_AT_decl_file   : 5	
-    <179>   DW_AT_decl_line   : 757	
-    <17b>   DW_AT_type        : <0x47>	
-    <17f>   DW_AT_external    : 1	
-    <180>   DW_AT_declaration : 1	
- <1><181>: Abbrev Number: 14 (DW_TAG_variable)
-    <182>   DW_AT_name        : (indirect string, offset: 0x7e): sysent	
-    <186>   DW_AT_decl_file   : 5	
-    <187>   DW_AT_decl_line   : 892	
-    <189>   DW_AT_type        : <0x101>	
-    <18d>   DW_AT_external    : 1	
-    <18e>   DW_AT_declaration : 1	
- <1><18f>: Abbrev Number: 14 (DW_TAG_variable)
-    <190>   DW_AT_name        : (indirect string, offset: 0x152): nsyscalls	
-    <194>   DW_AT_decl_file   : 5	
-    <195>   DW_AT_decl_line   : 903	
-    <197>   DW_AT_type        : <0x47>	
-    <19b>   DW_AT_external    : 1	
-    <19c>   DW_AT_declaration : 1	
- <1><19d>: Abbrev Number: 15 (DW_TAG_variable)
-    <19e>   DW_AT_name        : (indirect string, offset: 0x30): mpers_target_var	
-    <1a2>   DW_AT_decl_file   : 4	
-    <1a3>   DW_AT_decl_line   : 34	
-    <1a4>   DW_AT_type        : <0x168>	
-    <1a8>   DW_AT_external    : 1	
-    <1a9>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><1af>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_ustat.d2 b/mpers-m32/struct_ustat.d2
deleted file mode 100644
index ca88767..0000000
--- a/mpers-m32/struct_ustat.d2
+++ /dev/null
@@ -1,230 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a7): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x194): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x165): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x54): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xec): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1bc): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19e): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6c): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6): __ino_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 127
-DW_AT_type        : <0x5c>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x15c): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x62): __daddr_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 143
-DW_AT_type        : <0x2b>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x10f): char
-<1><87>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x8d>
-<1><8d>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x7e): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9e): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x41): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b3): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x27): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf9): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xe): _Bool
-<1><113>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): ustat
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 24
-DW_AT_sibling     : <0x158>
-<2><11f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18c): f_tfree
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4b): f_tinode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><13b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x85): f_fname
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x158>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><149>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x107): f_fpack
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x158>
-DW_AT_data_member_location: 2 byte block: 23 e 	(DW_OP_plus_uconst: 14)
-<1><158>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x80>
-DW_AT_sibling     : <0x168>
-<2><161>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x6e>
-DW_AT_upper_bound : 5
-<1><168>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x114): struct_ustat
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x113>
-<1><173>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x8d): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><181>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x7e): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18f>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x152): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><19d>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x30): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x168>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_v4l2_buffer.c b/mpers-m32/struct_v4l2_buffer.c
index d2d5cf1..dd68e07 100644
--- a/mpers-m32/struct_v4l2_buffer.c
+++ b/mpers-m32/struct_v4l2_buffer.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_buffer.d1 b/mpers-m32/struct_v4l2_buffer.d1
deleted file mode 100644
index 68f6441..0000000
--- a/mpers-m32/struct_v4l2_buffer.d1
+++ /dev/null
@@ -1,455 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x3ea (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x1b): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x92): mpers-m32/struct_v4l2_buffer.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x2e3): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x197): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x7f): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x104): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x170): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x20d): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1bf): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x112): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x129): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x25c): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x89): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0x26e): __time_t	
-    <6f>   DW_AT_decl_file   : 1	
-    <70>   DW_AT_decl_line   : 139	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x2cc): __suseconds_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 141	
-    <7c>   DW_AT_type        : <0x55>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x22e): char	
- <1><87>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <88>   DW_AT_name        : (indirect string, offset: 0x277): timeval	
-    <8c>   DW_AT_byte_size   : 8	
-    <8d>   DW_AT_decl_file   : 2	
-    <8e>   DW_AT_decl_line   : 30	
-    <8f>   DW_AT_sibling     : <0xb0>	
- <2><93>: Abbrev Number: 6 (DW_TAG_member)
-    <94>   DW_AT_name        : (indirect string, offset: 0x169): tv_sec	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 32	
-    <9a>   DW_AT_type        : <0x6a>	
-    <9e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a1>: Abbrev Number: 6 (DW_TAG_member)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x29e): tv_usec	
-    <a6>   DW_AT_decl_file   : 2	
-    <a7>   DW_AT_decl_line   : 33	
-    <a8>   DW_AT_type        : <0x75>	
-    <ac>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><af>: Abbrev Number: 0
- <1><b0>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <b1>   DW_AT_byte_size   : 4	
-    <b2>   DW_AT_type        : <0xb6>	
- <1><b6>: Abbrev Number: 8 (DW_TAG_const_type)
-    <b7>   DW_AT_type        : <0x80>	
- <1><bb>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <bc>   DW_AT_name        : (indirect string, offset: 0x2bf): sysent	
-    <c0>   DW_AT_byte_size   : 20	
-    <c1>   DW_AT_decl_file   : 3	
-    <c2>   DW_AT_decl_line   : 4	
-    <c3>   DW_AT_sibling     : <0x10e>	
- <2><c7>: Abbrev Number: 6 (DW_TAG_member)
-    <c8>   DW_AT_name        : (indirect string, offset: 0x191): nargs	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 5	
-    <ce>   DW_AT_type        : <0x47>	
-    <d2>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><d5>: Abbrev Number: 6 (DW_TAG_member)
-    <d6>   DW_AT_name        : (indirect string, offset: 0xe0): sys_flags	
-    <da>   DW_AT_decl_file   : 3	
-    <db>   DW_AT_decl_line   : 6	
-    <dc>   DW_AT_type        : <0x2b>	
-    <e0>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><e3>: Abbrev Number: 9 (DW_TAG_member)
-    <e4>   DW_AT_name        : sen	
-    <e8>   DW_AT_decl_file   : 3	
-    <e9>   DW_AT_decl_line   : 7	
-    <ea>   DW_AT_type        : <0x2b>	
-    <ee>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><f1>: Abbrev Number: 6 (DW_TAG_member)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x76): sys_func	
-    <f6>   DW_AT_decl_file   : 3	
-    <f7>   DW_AT_decl_line   : 8	
-    <f8>   DW_AT_type        : <0x119>	
-    <fc>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><ff>: Abbrev Number: 6 (DW_TAG_member)
-    <100>   DW_AT_name        : (indirect string, offset: 0xd7): sys_name	
-    <104>   DW_AT_decl_file   : 3	
-    <105>   DW_AT_decl_line   : 9	
-    <106>   DW_AT_type        : <0xb0>	
-    <10a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><10d>: Abbrev Number: 0
- <1><10e>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <10f>   DW_AT_type        : <0x2b>	
-    <113>   DW_AT_sibling     : <0x119>	
- <2><117>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><118>: Abbrev Number: 0
- <1><119>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <11a>   DW_AT_byte_size   : 4	
-    <11b>   DW_AT_type        : <0x10e>	
- <1><11f>: Abbrev Number: 4 (DW_TAG_typedef)
-    <120>   DW_AT_name        : (indirect string, offset: 0x290): struct_sysent	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 10	
-    <126>   DW_AT_type        : <0xbb>	
- <1><12a>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <12b>   DW_AT_byte_size   : 4	
-    <12c>   DW_AT_type        : <0x130>	
- <1><130>: Abbrev Number: 8 (DW_TAG_const_type)
-    <131>   DW_AT_type        : <0x11f>	
- <1><135>: Abbrev Number: 2 (DW_TAG_base_type)
-    <136>   DW_AT_byte_size   : 1	
-    <137>   DW_AT_encoding    : 2	(boolean)
-    <138>   DW_AT_name        : (indirect string, offset: 0x23d): _Bool	
- <1><13c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <13d>   DW_AT_name        : (indirect string, offset: 0x257): __u8	
-    <141>   DW_AT_decl_file   : 4	
-    <142>   DW_AT_decl_line   : 20	
-    <143>   DW_AT_type        : <0x39>	
- <1><147>: Abbrev Number: 4 (DW_TAG_typedef)
-    <148>   DW_AT_name        : (indirect string, offset: 0x27f): __s32	
-    <14c>   DW_AT_decl_file   : 4	
-    <14d>   DW_AT_decl_line   : 25	
-    <14e>   DW_AT_type        : <0x2b>	
- <1><152>: Abbrev Number: 4 (DW_TAG_typedef)
-    <153>   DW_AT_name        : (indirect string, offset: 0xf0): __u32	
-    <157>   DW_AT_decl_file   : 4	
-    <158>   DW_AT_decl_line   : 26	
-    <159>   DW_AT_type        : <0x47>	
- <1><15d>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <15e>   DW_AT_name        : (indirect string, offset: 0x2ae): v4l2_preemphasis	
-    <162>   DW_AT_byte_size   : 4	
-    <163>   DW_AT_decl_file   : 8	
-    <164>   DW_AT_decl_line   : 763	
-    <166>   DW_AT_sibling     : <0x17d>	
- <2><16a>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <16b>   DW_AT_name        : (indirect string, offset: 0xbd): V4L2_PREEMPHASIS_DISABLED	
-    <16f>   DW_AT_const_value : 0	
- <2><170>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <171>   DW_AT_name        : (indirect string, offset: 0x1e3): V4L2_PREEMPHASIS_50_uS	
-    <175>   DW_AT_const_value : 1	
- <2><176>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <177>   DW_AT_name        : (indirect string, offset: 0x1cc): V4L2_PREEMPHASIS_75_uS	
-    <17b>   DW_AT_const_value : 2	
- <2><17c>: Abbrev Number: 0
- <1><17d>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <17e>   DW_AT_name        : (indirect string, offset: 0x143): v4l2_timecode	
-    <182>   DW_AT_byte_size   : 16	
-    <183>   DW_AT_decl_file   : 5	
-    <184>   DW_AT_decl_line   : 519	
-    <186>   DW_AT_sibling     : <0x1f4>	
- <2><18a>: Abbrev Number: 15 (DW_TAG_member)
-    <18b>   DW_AT_name        : (indirect string, offset: 0x1b2): type	
-    <18f>   DW_AT_decl_file   : 5	
-    <190>   DW_AT_decl_line   : 520	
-    <192>   DW_AT_type        : <0x152>	
-    <196>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><199>: Abbrev Number: 15 (DW_TAG_member)
-    <19a>   DW_AT_name        : (indirect string, offset: 0x1a3): flags	
-    <19e>   DW_AT_decl_file   : 5	
-    <19f>   DW_AT_decl_line   : 521	
-    <1a1>   DW_AT_type        : <0x152>	
-    <1a5>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1a8>: Abbrev Number: 15 (DW_TAG_member)
-    <1a9>   DW_AT_name        : (indirect string, offset: 0x63): frames	
-    <1ad>   DW_AT_decl_file   : 5	
-    <1ae>   DW_AT_decl_line   : 522	
-    <1b0>   DW_AT_type        : <0x13c>	
-    <1b4>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1b7>: Abbrev Number: 15 (DW_TAG_member)
-    <1b8>   DW_AT_name        : (indirect string, offset: 0x220): seconds	
-    <1bc>   DW_AT_decl_file   : 5	
-    <1bd>   DW_AT_decl_line   : 523	
-    <1bf>   DW_AT_type        : <0x13c>	
-    <1c3>   DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
- <2><1c6>: Abbrev Number: 15 (DW_TAG_member)
-    <1c7>   DW_AT_name        : (indirect string, offset: 0x2a6): minutes	
-    <1cb>   DW_AT_decl_file   : 5	
-    <1cc>   DW_AT_decl_line   : 524	
-    <1ce>   DW_AT_type        : <0x13c>	
-    <1d2>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><1d5>: Abbrev Number: 15 (DW_TAG_member)
-    <1d6>   DW_AT_name        : (indirect string, offset: 0x228): hours	
-    <1da>   DW_AT_decl_file   : 5	
-    <1db>   DW_AT_decl_line   : 525	
-    <1dd>   DW_AT_type        : <0x13c>	
-    <1e1>   DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
- <2><1e4>: Abbrev Number: 15 (DW_TAG_member)
-    <1e5>   DW_AT_name        : (indirect string, offset: 0x24e): userbits	
-    <1e9>   DW_AT_decl_file   : 5	
-    <1ea>   DW_AT_decl_line   : 526	
-    <1ec>   DW_AT_type        : <0x1f4>	
-    <1f0>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1f3>: Abbrev Number: 0
- <1><1f4>: Abbrev Number: 16 (DW_TAG_array_type)
-    <1f5>   DW_AT_type        : <0x13c>	
-    <1f9>   DW_AT_sibling     : <0x204>	
- <2><1fd>: Abbrev Number: 17 (DW_TAG_subrange_type)
-    <1fe>   DW_AT_type        : <0x63>	
-    <202>   DW_AT_upper_bound : 3	
- <2><203>: Abbrev Number: 0
- <1><204>: Abbrev Number: 18 (DW_TAG_union_type)
-    <205>   DW_AT_byte_size   : 4	
-    <206>   DW_AT_decl_file   : 5	
-    <207>   DW_AT_decl_line   : 606	
-    <209>   DW_AT_sibling     : <0x231>	
- <2><20d>: Abbrev Number: 19 (DW_TAG_member)
-    <20e>   DW_AT_name        : (indirect string, offset: 0x243): mem_offset	
-    <212>   DW_AT_decl_file   : 5	
-    <213>   DW_AT_decl_line   : 607	
-    <215>   DW_AT_type        : <0x152>	
- <2><219>: Abbrev Number: 19 (DW_TAG_member)
-    <21a>   DW_AT_name        : (indirect string, offset: 0x1b7): userptr	
-    <21e>   DW_AT_decl_file   : 5	
-    <21f>   DW_AT_decl_line   : 608	
-    <221>   DW_AT_type        : <0x5c>	
- <2><225>: Abbrev Number: 20 (DW_TAG_member)
-    <226>   DW_AT_name        : fd	
-    <229>   DW_AT_decl_file   : 5	
-    <22a>   DW_AT_decl_line   : 609	
-    <22c>   DW_AT_type        : <0x147>	
- <2><230>: Abbrev Number: 0
- <1><231>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <232>   DW_AT_name        : (indirect string, offset: 0x285): v4l2_plane	
-    <236>   DW_AT_byte_size   : 60	
-    <237>   DW_AT_decl_file   : 5	
-    <238>   DW_AT_decl_line   : 603	
-    <23a>   DW_AT_sibling     : <0x288>	
- <2><23e>: Abbrev Number: 15 (DW_TAG_member)
-    <23f>   DW_AT_name        : (indirect string, offset: 0x233): bytesused	
-    <243>   DW_AT_decl_file   : 5	
-    <244>   DW_AT_decl_line   : 604	
-    <246>   DW_AT_type        : <0x152>	
-    <24a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><24d>: Abbrev Number: 15 (DW_TAG_member)
-    <24e>   DW_AT_name        : (indirect string, offset: 0x162): length	
-    <252>   DW_AT_decl_file   : 5	
-    <253>   DW_AT_decl_line   : 605	
-    <255>   DW_AT_type        : <0x152>	
-    <259>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><25c>: Abbrev Number: 21 (DW_TAG_member)
-    <25d>   DW_AT_name        : m	
-    <25f>   DW_AT_decl_file   : 5	
-    <260>   DW_AT_decl_line   : 610	
-    <262>   DW_AT_type        : <0x204>	
-    <266>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><269>: Abbrev Number: 15 (DW_TAG_member)
-    <26a>   DW_AT_name        : (indirect string, offset: 0x6a): data_offset	
-    <26e>   DW_AT_decl_file   : 5	
-    <26f>   DW_AT_decl_line   : 611	
-    <271>   DW_AT_type        : <0x152>	
-    <275>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><278>: Abbrev Number: 15 (DW_TAG_member)
-    <279>   DW_AT_name        : (indirect string, offset: 0x2da): reserved	
-    <27d>   DW_AT_decl_file   : 5	
-    <27e>   DW_AT_decl_line   : 612	
-    <280>   DW_AT_type        : <0x288>	
-    <284>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><287>: Abbrev Number: 0
- <1><288>: Abbrev Number: 16 (DW_TAG_array_type)
-    <289>   DW_AT_type        : <0x152>	
-    <28d>   DW_AT_sibling     : <0x298>	
- <2><291>: Abbrev Number: 17 (DW_TAG_subrange_type)
-    <292>   DW_AT_type        : <0x63>	
-    <296>   DW_AT_upper_bound : 10	
- <2><297>: Abbrev Number: 0
- <1><298>: Abbrev Number: 18 (DW_TAG_union_type)
-    <299>   DW_AT_byte_size   : 4	
-    <29a>   DW_AT_decl_file   : 5	
-    <29b>   DW_AT_decl_line   : 658	
-    <29d>   DW_AT_sibling     : <0x2d1>	
- <2><2a1>: Abbrev Number: 19 (DW_TAG_member)
-    <2a2>   DW_AT_name        : (indirect string, offset: 0x13c): offset	
-    <2a6>   DW_AT_decl_file   : 5	
-    <2a7>   DW_AT_decl_line   : 659	
-    <2a9>   DW_AT_type        : <0x152>	
- <2><2ad>: Abbrev Number: 19 (DW_TAG_member)
-    <2ae>   DW_AT_name        : (indirect string, offset: 0x1b7): userptr	
-    <2b2>   DW_AT_decl_file   : 5	
-    <2b3>   DW_AT_decl_line   : 660	
-    <2b5>   DW_AT_type        : <0x5c>	
- <2><2b9>: Abbrev Number: 19 (DW_TAG_member)
-    <2ba>   DW_AT_name        : (indirect string, offset: 0xf6): planes	
-    <2be>   DW_AT_decl_file   : 5	
-    <2bf>   DW_AT_decl_line   : 661	
-    <2c1>   DW_AT_type        : <0x2d1>	
- <2><2c5>: Abbrev Number: 20 (DW_TAG_member)
-    <2c6>   DW_AT_name        : fd	
-    <2c9>   DW_AT_decl_file   : 5	
-    <2ca>   DW_AT_decl_line   : 662	
-    <2cc>   DW_AT_type        : <0x147>	
- <2><2d0>: Abbrev Number: 0
- <1><2d1>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <2d2>   DW_AT_byte_size   : 4	
-    <2d3>   DW_AT_type        : <0x231>	
- <1><2d7>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <2d8>   DW_AT_name        : (indirect string, offset: 0xb1): v4l2_buffer	
-    <2dc>   DW_AT_byte_size   : 68	
-    <2dd>   DW_AT_decl_file   : 5	
-    <2de>   DW_AT_decl_line   : 646	
-    <2e0>   DW_AT_sibling     : <0x3a6>	
- <2><2e4>: Abbrev Number: 15 (DW_TAG_member)
-    <2e5>   DW_AT_name        : (indirect string, offset: 0xea): index	
-    <2e9>   DW_AT_decl_file   : 5	
-    <2ea>   DW_AT_decl_line   : 647	
-    <2ec>   DW_AT_type        : <0x152>	
-    <2f0>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2f3>: Abbrev Number: 15 (DW_TAG_member)
-    <2f4>   DW_AT_name        : (indirect string, offset: 0x1b2): type	
-    <2f8>   DW_AT_decl_file   : 5	
-    <2f9>   DW_AT_decl_line   : 648	
-    <2fb>   DW_AT_type        : <0x152>	
-    <2ff>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><302>: Abbrev Number: 15 (DW_TAG_member)
-    <303>   DW_AT_name        : (indirect string, offset: 0x233): bytesused	
-    <307>   DW_AT_decl_file   : 5	
-    <308>   DW_AT_decl_line   : 649	
-    <30a>   DW_AT_type        : <0x152>	
-    <30e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><311>: Abbrev Number: 15 (DW_TAG_member)
-    <312>   DW_AT_name        : (indirect string, offset: 0x1a3): flags	
-    <316>   DW_AT_decl_file   : 5	
-    <317>   DW_AT_decl_line   : 650	
-    <319>   DW_AT_type        : <0x152>	
-    <31d>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><320>: Abbrev Number: 15 (DW_TAG_member)
-    <321>   DW_AT_name        : (indirect string, offset: 0x2c6): field	
-    <325>   DW_AT_decl_file   : 5	
-    <326>   DW_AT_decl_line   : 651	
-    <328>   DW_AT_type        : <0x152>	
-    <32c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><32f>: Abbrev Number: 15 (DW_TAG_member)
-    <330>   DW_AT_name        : (indirect string, offset: 0x11): timestamp	
-    <334>   DW_AT_decl_file   : 5	
-    <335>   DW_AT_decl_line   : 652	
-    <337>   DW_AT_type        : <0x87>	
-    <33b>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><33e>: Abbrev Number: 15 (DW_TAG_member)
-    <33f>   DW_AT_name        : (indirect string, offset: 0x1fa): timecode	
-    <343>   DW_AT_decl_file   : 5	
-    <344>   DW_AT_decl_line   : 653	
-    <346>   DW_AT_type        : <0x17d>	
-    <34a>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><34d>: Abbrev Number: 15 (DW_TAG_member)
-    <34e>   DW_AT_name        : (indirect string, offset: 0x1a9): sequence	
-    <352>   DW_AT_decl_file   : 5	
-    <353>   DW_AT_decl_line   : 654	
-    <355>   DW_AT_type        : <0x152>	
-    <359>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><35c>: Abbrev Number: 15 (DW_TAG_member)
-    <35d>   DW_AT_name        : (indirect string, offset: 0xfd): memory	
-    <361>   DW_AT_decl_file   : 5	
-    <362>   DW_AT_decl_line   : 657	
-    <364>   DW_AT_type        : <0x152>	
-    <368>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><36b>: Abbrev Number: 21 (DW_TAG_member)
-    <36c>   DW_AT_name        : m	
-    <36e>   DW_AT_decl_file   : 5	
-    <36f>   DW_AT_decl_line   : 663	
-    <371>   DW_AT_type        : <0x298>	
-    <375>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><378>: Abbrev Number: 15 (DW_TAG_member)
-    <379>   DW_AT_name        : (indirect string, offset: 0x162): length	
-    <37d>   DW_AT_decl_file   : 5	
-    <37e>   DW_AT_decl_line   : 664	
-    <380>   DW_AT_type        : <0x152>	
-    <384>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><387>: Abbrev Number: 15 (DW_TAG_member)
-    <388>   DW_AT_name        : (indirect string, offset: 0x132): reserved2	
-    <38c>   DW_AT_decl_file   : 5	
-    <38d>   DW_AT_decl_line   : 665	
-    <38f>   DW_AT_type        : <0x152>	
-    <393>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><396>: Abbrev Number: 15 (DW_TAG_member)
-    <397>   DW_AT_name        : (indirect string, offset: 0x2da): reserved	
-    <39b>   DW_AT_decl_file   : 5	
-    <39c>   DW_AT_decl_line   : 666	
-    <39e>   DW_AT_type        : <0x152>	
-    <3a2>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><3a5>: Abbrev Number: 0
- <1><3a6>: Abbrev Number: 4 (DW_TAG_typedef)
-    <3a7>   DW_AT_name        : (indirect string, offset: 0x17e): struct_v4l2_buffer	
-    <3ab>   DW_AT_decl_file   : 6	
-    <3ac>   DW_AT_decl_line   : 38	
-    <3ad>   DW_AT_type        : <0x2d7>	
- <1><3b1>: Abbrev Number: 22 (DW_TAG_variable)
-    <3b2>   DW_AT_name        : (indirect string, offset: 0x151): current_wordsize	
-    <3b6>   DW_AT_decl_file   : 7	
-    <3b7>   DW_AT_decl_line   : 757	
-    <3b9>   DW_AT_type        : <0x47>	
-    <3bd>   DW_AT_external    : 1	
-    <3be>   DW_AT_declaration : 1	
- <1><3bf>: Abbrev Number: 22 (DW_TAG_variable)
-    <3c0>   DW_AT_name        : (indirect string, offset: 0x2bf): sysent	
-    <3c4>   DW_AT_decl_file   : 7	
-    <3c5>   DW_AT_decl_line   : 892	
-    <3c7>   DW_AT_type        : <0x12a>	
-    <3cb>   DW_AT_external    : 1	
-    <3cc>   DW_AT_declaration : 1	
- <1><3cd>: Abbrev Number: 22 (DW_TAG_variable)
-    <3ce>   DW_AT_name        : (indirect string, offset: 0x203): nsyscalls	
-    <3d2>   DW_AT_decl_file   : 7	
-    <3d3>   DW_AT_decl_line   : 903	
-    <3d5>   DW_AT_type        : <0x47>	
-    <3d9>   DW_AT_external    : 1	
-    <3da>   DW_AT_declaration : 1	
- <1><3db>: Abbrev Number: 23 (DW_TAG_variable)
-    <3dc>   DW_AT_name        : (indirect string, offset: 0x0): mpers_target_var	
-    <3e0>   DW_AT_decl_file   : 6	
-    <3e1>   DW_AT_decl_line   : 47	
-    <3e2>   DW_AT_type        : <0x3a6>	
-    <3e6>   DW_AT_external    : 1	
-    <3e7>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><3ed>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_buffer.d2 b/mpers-m32/struct_v4l2_buffer.d2
deleted file mode 100644
index 0587f48..0000000
--- a/mpers-m32/struct_v4l2_buffer.d2
+++ /dev/null
@@ -1,515 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x197): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x7f): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x104): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x170): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x20d): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1bf): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x112): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x129): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x25c): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x89): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x26e): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2cc): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x55>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x22e): char
-<1><87>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x277): timeval
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xb0>
-<2><93>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x169): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a1>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29e): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><b0>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xb6>
-<1><b6>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><bb>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2bf): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x10e>
-<2><c7>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x191): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><d5>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe0): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><e3>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><f1>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x76): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x119>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><ff>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd7): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xb0>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><10e>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x119>
-<2><117>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><119>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x10e>
-<1><11f>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x290): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xbb>
-<1><12a>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x130>
-<1><130>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x11f>
-<1><135>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x23d): _Bool
-<1><13c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x257): __u8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><147>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x27f): __s32
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><152>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf0): __u32
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><15d>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x2ae): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x17d>
-<2><16a>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xbd): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><170>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1e3): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><176>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1cc): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><17d>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x143): v4l2_timecode
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 519
-DW_AT_sibling     : <0x1f4>
-<2><18a>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b2): type
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 520
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><199>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a3): flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 521
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1a8>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x63): frames
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 522
-DW_AT_type        : <0x13c>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1b7>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): seconds
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 523
-DW_AT_type        : <0x13c>
-DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
-<2><1c6>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2a6): minutes
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 524
-DW_AT_type        : <0x13c>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><1d5>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x228): hours
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 525
-DW_AT_type        : <0x13c>
-DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
-<2><1e4>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x24e): userbits
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 526
-DW_AT_type        : <0x1f4>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1f4>
-Abbrev Number: 16 (DW_TAG_array_type)
-DW_AT_type        : <0x13c>
-DW_AT_sibling     : <0x204>
-<2><1fd>
-Abbrev Number: 17 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><204>
-Abbrev Number: 18 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 606
-DW_AT_sibling     : <0x231>
-<2><20d>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x243): mem_offset
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 607
-DW_AT_type        : <0x152>
-<2><219>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b7): userptr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 608
-DW_AT_type        : <0x5c>
-<2><225>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : fd
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 609
-DW_AT_type        : <0x147>
-<1><231>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x285): v4l2_plane
-DW_AT_byte_size   : 60
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 603
-DW_AT_sibling     : <0x288>
-<2><23e>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x233): bytesused
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 604
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><24d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x162): length
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 605
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><25c>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : m
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 610
-DW_AT_type        : <0x204>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><269>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6a): data_offset
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 611
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><278>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2da): reserved
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 612
-DW_AT_type        : <0x288>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><288>
-Abbrev Number: 16 (DW_TAG_array_type)
-DW_AT_type        : <0x152>
-DW_AT_sibling     : <0x298>
-<2><291>
-Abbrev Number: 17 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 10
-<1><298>
-Abbrev Number: 18 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 658
-DW_AT_sibling     : <0x2d1>
-<2><2a1>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13c): offset
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 659
-DW_AT_type        : <0x152>
-<2><2ad>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b7): userptr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 660
-DW_AT_type        : <0x5c>
-<2><2b9>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf6): planes
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 661
-DW_AT_type        : <0x2d1>
-<2><2c5>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : fd
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 662
-DW_AT_type        : <0x147>
-<1><2d1>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x231>
-<1><2d7>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xb1): v4l2_buffer
-DW_AT_byte_size   : 68
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 646
-DW_AT_sibling     : <0x3a6>
-<2><2e4>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xea): index
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 647
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2f3>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b2): type
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 648
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><302>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x233): bytesused
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 649
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><311>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a3): flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 650
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><320>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c6): field
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 651
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><32f>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11): timestamp
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 652
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><33e>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fa): timecode
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 653
-DW_AT_type        : <0x17d>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><34d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a9): sequence
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 654
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><35c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfd): memory
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 657
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><36b>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : m
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 663
-DW_AT_type        : <0x298>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><378>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x162): length
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 664
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><387>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x132): reserved2
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 665
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><396>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2da): reserved
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 666
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<1><3a6>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17e): struct_v4l2_buffer
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x2d7>
-<1><3b1>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x151): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3bf>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x2bf): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x12a>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3cd>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x203): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3db>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x0): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x3a6>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_v4l2_clip.c b/mpers-m32/struct_v4l2_clip.c
new file mode 100644
index 0000000..cd89a04
--- /dev/null
+++ b/mpers-m32/struct_v4l2_clip.c
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+
+#include <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;
+typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
+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;
+typedef struct v4l2_framebuffer struct_v4l2_framebuffer;
+typedef struct v4l2_input struct_v4l2_input;
+typedef struct v4l2_standard struct_v4l2_standard;
+
+struct_v4l2_clip mpers_target_var;
diff --git a/mpers-m32/struct_v4l2_clip.h b/mpers-m32/struct_v4l2_clip.h
new file mode 100644
index 0000000..4c7ab36
--- /dev/null
+++ b/mpers-m32/struct_v4l2_clip.h
@@ -0,0 +1,13 @@
+#include <inttypes.h>
+typedef uint32_t mpers_ptr_t;
+typedef
+struct {
+struct {
+int32_t left;
+int32_t top;
+int32_t width;
+int32_t height;
+} ATTRIBUTE_PACKED c;
+mpers_ptr_t next;
+} ATTRIBUTE_PACKED m32_struct_v4l2_clip;
+#define MPERS_m32_struct_v4l2_clip m32_struct_v4l2_clip
diff --git a/mpers-m32/struct_v4l2_create_buffers.c b/mpers-m32/struct_v4l2_create_buffers.c
index 7ecdafd..0fc1469 100644
--- a/mpers-m32/struct_v4l2_create_buffers.c
+++ b/mpers-m32/struct_v4l2_create_buffers.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_create_buffers.d1 b/mpers-m32/struct_v4l2_create_buffers.d1
deleted file mode 100644
index 3930530..0000000
--- a/mpers-m32/struct_v4l2_create_buffers.d1
+++ /dev/null
@@ -1,672 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x5f0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x16): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x2b2): mpers-m32/struct_v4l2_create_buffers.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x3cd): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1f2): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x76): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x3b1): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x1b0): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x28c): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x227): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x204): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x13b): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x30b): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x80): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x2ad): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0x377): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x31d): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0xb7): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x68): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x9d): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x32f): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x2de): _Bool	
- <1><ff>: Abbrev Number: 12 (DW_TAG_typedef)
-    <100>   DW_AT_name        : (indirect string, offset: 0x306): __u8	
-    <104>   DW_AT_decl_file   : 2	
-    <105>   DW_AT_decl_line   : 20	
-    <106>   DW_AT_type        : <0x39>	
- <1><10a>: Abbrev Number: 12 (DW_TAG_typedef)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x300): __u16	
-    <10f>   DW_AT_decl_file   : 2	
-    <110>   DW_AT_decl_line   : 23	
-    <111>   DW_AT_type        : <0x40>	
- <1><115>: Abbrev Number: 12 (DW_TAG_typedef)
-    <116>   DW_AT_name        : (indirect string, offset: 0x323): __s32	
-    <11a>   DW_AT_decl_file   : 2	
-    <11b>   DW_AT_decl_line   : 25	
-    <11c>   DW_AT_type        : <0x2b>	
- <1><120>: Abbrev Number: 12 (DW_TAG_typedef)
-    <121>   DW_AT_name        : (indirect string, offset: 0xf7): __u32	
-    <125>   DW_AT_decl_file   : 2	
-    <126>   DW_AT_decl_line   : 26	
-    <127>   DW_AT_type        : <0x47>	
- <1><12b>: Abbrev Number: 13 (DW_TAG_enumeration_type)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x358): v4l2_preemphasis	
-    <130>   DW_AT_byte_size   : 4	
-    <131>   DW_AT_decl_file   : 6	
-    <132>   DW_AT_decl_line   : 763	
-    <134>   DW_AT_sibling     : <0x14b>	
- <2><138>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <139>   DW_AT_name        : (indirect string, offset: 0x262): V4L2_PREEMPHASIS_DISABLED	
-    <13d>   DW_AT_const_value : 0	
- <2><13e>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <13f>   DW_AT_name        : (indirect string, offset: 0x23f): V4L2_PREEMPHASIS_50_uS	
-    <143>   DW_AT_const_value : 1	
- <2><144>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <145>   DW_AT_name        : (indirect string, offset: 0xd1): V4L2_PREEMPHASIS_75_uS	
-    <149>   DW_AT_const_value : 2	
- <2><14a>: Abbrev Number: 0
- <1><14b>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <14c>   DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect	
-    <150>   DW_AT_byte_size   : 16	
-    <151>   DW_AT_decl_file   : 3	
-    <152>   DW_AT_decl_line   : 205	
-    <153>   DW_AT_sibling     : <0x190>	
- <2><157>: Abbrev Number: 8 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x2d9): left	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 206	
-    <15e>   DW_AT_type        : <0x115>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><165>: Abbrev Number: 9 (DW_TAG_member)
-    <166>   DW_AT_name        : top	
-    <16a>   DW_AT_decl_file   : 3	
-    <16b>   DW_AT_decl_line   : 207	
-    <16c>   DW_AT_type        : <0x115>	
-    <170>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><173>: Abbrev Number: 8 (DW_TAG_member)
-    <174>   DW_AT_name        : (indirect string, offset: 0x11a): width	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 208	
-    <17a>   DW_AT_type        : <0x115>	
-    <17e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><181>: Abbrev Number: 8 (DW_TAG_member)
-    <182>   DW_AT_name        : (indirect string, offset: 0x220): height	
-    <186>   DW_AT_decl_file   : 3	
-    <187>   DW_AT_decl_line   : 209	
-    <188>   DW_AT_type        : <0x115>	
-    <18c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18f>: Abbrev Number: 0
- <1><190>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <191>   DW_AT_name        : (indirect string, offset: 0x2f0): v4l2_pix_format	
-    <195>   DW_AT_byte_size   : 32	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 274	
-    <199>   DW_AT_sibling     : <0x216>	
- <2><19d>: Abbrev Number: 16 (DW_TAG_member)
-    <19e>   DW_AT_name        : (indirect string, offset: 0x11a): width	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 275	
-    <1a5>   DW_AT_type        : <0x120>	
-    <1a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1ac>: Abbrev Number: 16 (DW_TAG_member)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0x220): height	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 276	
-    <1b4>   DW_AT_type        : <0x120>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1bb>: Abbrev Number: 16 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x89): pixelformat	
-    <1c0>   DW_AT_decl_file   : 3	
-    <1c1>   DW_AT_decl_line   : 277	
-    <1c3>   DW_AT_type        : <0x120>	
-    <1c7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ca>: Abbrev Number: 16 (DW_TAG_member)
-    <1cb>   DW_AT_name        : (indirect string, offset: 0x37e): field	
-    <1cf>   DW_AT_decl_file   : 3	
-    <1d0>   DW_AT_decl_line   : 278	
-    <1d2>   DW_AT_type        : <0x120>	
-    <1d6>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1d9>: Abbrev Number: 16 (DW_TAG_member)
-    <1da>   DW_AT_name        : (indirect string, offset: 0x12e): bytesperline	
-    <1de>   DW_AT_decl_file   : 3	
-    <1df>   DW_AT_decl_line   : 279	
-    <1e1>   DW_AT_type        : <0x120>	
-    <1e5>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1e8>: Abbrev Number: 16 (DW_TAG_member)
-    <1e9>   DW_AT_name        : (indirect string, offset: 0x5e): sizeimage	
-    <1ed>   DW_AT_decl_file   : 3	
-    <1ee>   DW_AT_decl_line   : 280	
-    <1f0>   DW_AT_type        : <0x120>	
-    <1f4>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1f7>: Abbrev Number: 16 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0x16d): colorspace	
-    <1fc>   DW_AT_decl_file   : 3	
-    <1fd>   DW_AT_decl_line   : 281	
-    <1ff>   DW_AT_type        : <0x120>	
-    <203>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><206>: Abbrev Number: 16 (DW_TAG_member)
-    <207>   DW_AT_name        : (indirect string, offset: 0x0): priv	
-    <20b>   DW_AT_decl_file   : 3	
-    <20c>   DW_AT_decl_line   : 282	
-    <20e>   DW_AT_type        : <0x120>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><215>: Abbrev Number: 0
- <1><216>: Abbrev Number: 17 (DW_TAG_array_type)
-    <217>   DW_AT_type        : <0x120>	
-    <21b>   DW_AT_sibling     : <0x226>	
- <2><21f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <220>   DW_AT_type        : <0x63>	
-    <224>   DW_AT_upper_bound : 1	
- <2><225>: Abbrev Number: 0
- <1><226>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <227>   DW_AT_name        : (indirect string, offset: 0x384): v4l2_clip	
-    <22b>   DW_AT_byte_size   : 20	
-    <22c>   DW_AT_decl_file   : 3	
-    <22d>   DW_AT_decl_line   : 745	
-    <22f>   DW_AT_sibling     : <0x250>	
- <2><233>: Abbrev Number: 19 (DW_TAG_member)
-    <234>   DW_AT_name        : c	
-    <236>   DW_AT_decl_file   : 3	
-    <237>   DW_AT_decl_line   : 746	
-    <239>   DW_AT_type        : <0x14b>	
-    <23d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><240>: Abbrev Number: 16 (DW_TAG_member)
-    <241>   DW_AT_name        : (indirect string, offset: 0x71): next	
-    <245>   DW_AT_decl_file   : 3	
-    <246>   DW_AT_decl_line   : 747	
-    <248>   DW_AT_type        : <0x250>	
-    <24c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><24f>: Abbrev Number: 0
- <1><250>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <251>   DW_AT_byte_size   : 4	
-    <252>   DW_AT_type        : <0x226>	
- <1><256>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <257>   DW_AT_name        : (indirect string, offset: 0x10e): v4l2_window	
-    <25b>   DW_AT_byte_size   : 40	
-    <25c>   DW_AT_decl_file   : 3	
-    <25d>   DW_AT_decl_line   : 750	
-    <25f>   DW_AT_sibling     : <0x2cb>	
- <2><263>: Abbrev Number: 19 (DW_TAG_member)
-    <264>   DW_AT_name        : w	
-    <266>   DW_AT_decl_file   : 3	
-    <267>   DW_AT_decl_line   : 751	
-    <269>   DW_AT_type        : <0x14b>	
-    <26d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><270>: Abbrev Number: 16 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x37e): field	
-    <275>   DW_AT_decl_file   : 3	
-    <276>   DW_AT_decl_line   : 752	
-    <278>   DW_AT_type        : <0x120>	
-    <27c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><27f>: Abbrev Number: 16 (DW_TAG_member)
-    <280>   DW_AT_name        : (indirect string, offset: 0x398): chromakey	
-    <284>   DW_AT_decl_file   : 3	
-    <285>   DW_AT_decl_line   : 753	
-    <287>   DW_AT_type        : <0x120>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><28e>: Abbrev Number: 16 (DW_TAG_member)
-    <28f>   DW_AT_name        : (indirect string, offset: 0x3ab): clips	
-    <293>   DW_AT_decl_file   : 3	
-    <294>   DW_AT_decl_line   : 754	
-    <296>   DW_AT_type        : <0x250>	
-    <29a>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><29d>: Abbrev Number: 16 (DW_TAG_member)
-    <29e>   DW_AT_name        : (indirect string, offset: 0x104): clipcount	
-    <2a2>   DW_AT_decl_file   : 3	
-    <2a3>   DW_AT_decl_line   : 755	
-    <2a5>   DW_AT_type        : <0x120>	
-    <2a9>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><2ac>: Abbrev Number: 16 (DW_TAG_member)
-    <2ad>   DW_AT_name        : (indirect string, offset: 0xfd): bitmap	
-    <2b1>   DW_AT_decl_file   : 3	
-    <2b2>   DW_AT_decl_line   : 756	
-    <2b4>   DW_AT_type        : <0x6a>	
-    <2b8>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><2bb>: Abbrev Number: 16 (DW_TAG_member)
-    <2bc>   DW_AT_name        : (indirect string, offset: 0x178): global_alpha	
-    <2c0>   DW_AT_decl_file   : 3	
-    <2c1>   DW_AT_decl_line   : 757	
-    <2c3>   DW_AT_type        : <0xff>	
-    <2c7>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><2ca>: Abbrev Number: 0
- <1><2cb>: Abbrev Number: 17 (DW_TAG_array_type)
-    <2cc>   DW_AT_type        : <0x120>	
-    <2d0>   DW_AT_sibling     : <0x2db>	
- <2><2d4>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <2d5>   DW_AT_type        : <0x63>	
-    <2d9>   DW_AT_upper_bound : 7	
- <2><2da>: Abbrev Number: 0
- <1><2db>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <2dc>   DW_AT_name        : (indirect string, offset: 0xc1): v4l2_vbi_format	
-    <2e0>   DW_AT_byte_size   : 44	
-    <2e1>   DW_AT_decl_file   : 3	
-    <2e2>   DW_AT_decl_line   : 1541	
-    <2e4>   DW_AT_sibling     : <0x361>	
- <2><2e8>: Abbrev Number: 16 (DW_TAG_member)
-    <2e9>   DW_AT_name        : (indirect string, offset: 0x29f): sampling_rate	
-    <2ed>   DW_AT_decl_file   : 3	
-    <2ee>   DW_AT_decl_line   : 1542	
-    <2f0>   DW_AT_type        : <0x120>	
-    <2f4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2f7>: Abbrev Number: 16 (DW_TAG_member)
-    <2f8>   DW_AT_name        : (indirect string, offset: 0x155): offset	
-    <2fc>   DW_AT_decl_file   : 3	
-    <2fd>   DW_AT_decl_line   : 1543	
-    <2ff>   DW_AT_type        : <0x120>	
-    <303>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><306>: Abbrev Number: 16 (DW_TAG_member)
-    <307>   DW_AT_name        : (indirect string, offset: 0xa6): samples_per_line	
-    <30b>   DW_AT_decl_file   : 3	
-    <30c>   DW_AT_decl_line   : 1544	
-    <30e>   DW_AT_type        : <0x120>	
-    <312>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><315>: Abbrev Number: 16 (DW_TAG_member)
-    <316>   DW_AT_name        : (indirect string, offset: 0x3bf): sample_format	
-    <31a>   DW_AT_decl_file   : 3	
-    <31b>   DW_AT_decl_line   : 1545	
-    <31d>   DW_AT_type        : <0x120>	
-    <321>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><324>: Abbrev Number: 16 (DW_TAG_member)
-    <325>   DW_AT_name        : (indirect string, offset: 0x286): start	
-    <329>   DW_AT_decl_file   : 3	
-    <32a>   DW_AT_decl_line   : 1546	
-    <32c>   DW_AT_type        : <0x361>	
-    <330>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><333>: Abbrev Number: 16 (DW_TAG_member)
-    <334>   DW_AT_name        : (indirect string, offset: 0x329): count	
-    <338>   DW_AT_decl_file   : 3	
-    <339>   DW_AT_decl_line   : 1547	
-    <33b>   DW_AT_type        : <0x216>	
-    <33f>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><342>: Abbrev Number: 16 (DW_TAG_member)
-    <343>   DW_AT_name        : (indirect string, offset: 0x1fe): flags	
-    <347>   DW_AT_decl_file   : 3	
-    <348>   DW_AT_decl_line   : 1548	
-    <34a>   DW_AT_type        : <0x120>	
-    <34e>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><351>: Abbrev Number: 16 (DW_TAG_member)
-    <352>   DW_AT_name        : (indirect string, offset: 0x3a2): reserved	
-    <356>   DW_AT_decl_file   : 3	
-    <357>   DW_AT_decl_line   : 1549	
-    <359>   DW_AT_type        : <0x216>	
-    <35d>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><360>: Abbrev Number: 0
- <1><361>: Abbrev Number: 17 (DW_TAG_array_type)
-    <362>   DW_AT_type        : <0x115>	
-    <366>   DW_AT_sibling     : <0x371>	
- <2><36a>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <36b>   DW_AT_type        : <0x63>	
-    <36f>   DW_AT_upper_bound : 1	
- <2><370>: Abbrev Number: 0
- <1><371>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <372>   DW_AT_name        : (indirect string, offset: 0x1d4): v4l2_sliced_vbi_format	
-    <376>   DW_AT_byte_size   : 112	
-    <377>   DW_AT_decl_file   : 3	
-    <378>   DW_AT_decl_line   : 1563	
-    <37a>   DW_AT_sibling     : <0x3bb>	
- <2><37e>: Abbrev Number: 16 (DW_TAG_member)
-    <37f>   DW_AT_name        : (indirect string, offset: 0x2e4): service_set	
-    <383>   DW_AT_decl_file   : 3	
-    <384>   DW_AT_decl_line   : 1564	
-    <386>   DW_AT_type        : <0x10a>	
-    <38a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><38d>: Abbrev Number: 16 (DW_TAG_member)
-    <38e>   DW_AT_name        : (indirect string, offset: 0x369): service_lines	
-    <392>   DW_AT_decl_file   : 3	
-    <393>   DW_AT_decl_line   : 1569	
-    <395>   DW_AT_type        : <0x3bb>	
-    <399>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><39c>: Abbrev Number: 16 (DW_TAG_member)
-    <39d>   DW_AT_name        : (indirect string, offset: 0x95): io_size	
-    <3a1>   DW_AT_decl_file   : 3	
-    <3a2>   DW_AT_decl_line   : 1570	
-    <3a4>   DW_AT_type        : <0x120>	
-    <3a8>   DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
- <2><3ab>: Abbrev Number: 16 (DW_TAG_member)
-    <3ac>   DW_AT_name        : (indirect string, offset: 0x3a2): reserved	
-    <3b0>   DW_AT_decl_file   : 3	
-    <3b1>   DW_AT_decl_line   : 1571	
-    <3b3>   DW_AT_type        : <0x216>	
-    <3b7>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><3ba>: Abbrev Number: 0
- <1><3bb>: Abbrev Number: 17 (DW_TAG_array_type)
-    <3bc>   DW_AT_type        : <0x10a>	
-    <3c0>   DW_AT_sibling     : <0x3d1>	
- <2><3c4>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3c5>   DW_AT_type        : <0x63>	
-    <3c9>   DW_AT_upper_bound : 1	
- <2><3ca>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3cb>   DW_AT_type        : <0x63>	
-    <3cf>   DW_AT_upper_bound : 23	
- <2><3d0>: Abbrev Number: 0
- <1><3d1>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <3d2>   DW_AT_name        : (indirect string, offset: 0x1be): v4l2_plane_pix_format	
-    <3d6>   DW_AT_byte_size   : 20	
-    <3d7>   DW_AT_decl_file   : 3	
-    <3d8>   DW_AT_decl_line   : 1664	
-    <3da>   DW_AT_sibling     : <0x40c>	
- <2><3de>: Abbrev Number: 16 (DW_TAG_member)
-    <3df>   DW_AT_name        : (indirect string, offset: 0x5e): sizeimage	
-    <3e3>   DW_AT_decl_file   : 3	
-    <3e4>   DW_AT_decl_line   : 1665	
-    <3e6>   DW_AT_type        : <0x120>	
-    <3ea>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><3ed>: Abbrev Number: 16 (DW_TAG_member)
-    <3ee>   DW_AT_name        : (indirect string, offset: 0x12e): bytesperline	
-    <3f2>   DW_AT_decl_file   : 3	
-    <3f3>   DW_AT_decl_line   : 1666	
-    <3f5>   DW_AT_type        : <0x10a>	
-    <3f9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3fc>: Abbrev Number: 16 (DW_TAG_member)
-    <3fd>   DW_AT_name        : (indirect string, offset: 0x3a2): reserved	
-    <401>   DW_AT_decl_file   : 3	
-    <402>   DW_AT_decl_line   : 1667	
-    <404>   DW_AT_type        : <0x40c>	
-    <408>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><40b>: Abbrev Number: 0
- <1><40c>: Abbrev Number: 17 (DW_TAG_array_type)
-    <40d>   DW_AT_type        : <0x10a>	
-    <411>   DW_AT_sibling     : <0x41c>	
- <2><415>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <416>   DW_AT_type        : <0x63>	
-    <41a>   DW_AT_upper_bound : 6	
- <2><41b>: Abbrev Number: 0
- <1><41c>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <41d>   DW_AT_name        : (indirect string, offset: 0x199): v4l2_pix_format_mplane	
-    <421>   DW_AT_byte_size   : 192	
-    <422>   DW_AT_decl_file   : 3	
-    <423>   DW_AT_decl_line   : 1680	
-    <425>   DW_AT_sibling     : <0x4a4>	
- <2><429>: Abbrev Number: 16 (DW_TAG_member)
-    <42a>   DW_AT_name        : (indirect string, offset: 0x11a): width	
-    <42e>   DW_AT_decl_file   : 3	
-    <42f>   DW_AT_decl_line   : 1681	
-    <431>   DW_AT_type        : <0x120>	
-    <435>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><438>: Abbrev Number: 16 (DW_TAG_member)
-    <439>   DW_AT_name        : (indirect string, offset: 0x220): height	
-    <43d>   DW_AT_decl_file   : 3	
-    <43e>   DW_AT_decl_line   : 1682	
-    <440>   DW_AT_type        : <0x120>	
-    <444>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><447>: Abbrev Number: 16 (DW_TAG_member)
-    <448>   DW_AT_name        : (indirect string, offset: 0x89): pixelformat	
-    <44c>   DW_AT_decl_file   : 3	
-    <44d>   DW_AT_decl_line   : 1683	
-    <44f>   DW_AT_type        : <0x120>	
-    <453>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><456>: Abbrev Number: 16 (DW_TAG_member)
-    <457>   DW_AT_name        : (indirect string, offset: 0x37e): field	
-    <45b>   DW_AT_decl_file   : 3	
-    <45c>   DW_AT_decl_line   : 1684	
-    <45e>   DW_AT_type        : <0x120>	
-    <462>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><465>: Abbrev Number: 16 (DW_TAG_member)
-    <466>   DW_AT_name        : (indirect string, offset: 0x16d): colorspace	
-    <46a>   DW_AT_decl_file   : 3	
-    <46b>   DW_AT_decl_line   : 1685	
-    <46d>   DW_AT_type        : <0x120>	
-    <471>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><474>: Abbrev Number: 16 (DW_TAG_member)
-    <475>   DW_AT_name        : (indirect string, offset: 0x38e): plane_fmt	
-    <479>   DW_AT_decl_file   : 3	
-    <47a>   DW_AT_decl_line   : 1687	
-    <47c>   DW_AT_type        : <0x4a4>	
-    <480>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><483>: Abbrev Number: 16 (DW_TAG_member)
-    <484>   DW_AT_name        : (indirect string, offset: 0x234): num_planes	
-    <488>   DW_AT_decl_file   : 3	
-    <489>   DW_AT_decl_line   : 1688	
-    <48b>   DW_AT_type        : <0xff>	
-    <48f>   DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
- <2><493>: Abbrev Number: 16 (DW_TAG_member)
-    <494>   DW_AT_name        : (indirect string, offset: 0x3a2): reserved	
-    <498>   DW_AT_decl_file   : 3	
-    <499>   DW_AT_decl_line   : 1689	
-    <49b>   DW_AT_type        : <0x4b4>	
-    <49f>   DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
- <2><4a3>: Abbrev Number: 0
- <1><4a4>: Abbrev Number: 17 (DW_TAG_array_type)
-    <4a5>   DW_AT_type        : <0x3d1>	
-    <4a9>   DW_AT_sibling     : <0x4b4>	
- <2><4ad>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <4ae>   DW_AT_type        : <0x63>	
-    <4b2>   DW_AT_upper_bound : 7	
- <2><4b3>: Abbrev Number: 0
- <1><4b4>: Abbrev Number: 17 (DW_TAG_array_type)
-    <4b5>   DW_AT_type        : <0xff>	
-    <4b9>   DW_AT_sibling     : <0x4c4>	
- <2><4bd>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <4be>   DW_AT_type        : <0x63>	
-    <4c2>   DW_AT_upper_bound : 10	
- <2><4c3>: Abbrev Number: 0
- <1><4c4>: Abbrev Number: 20 (DW_TAG_union_type)
-    <4c5>   DW_AT_byte_size   : 200	
-    <4c6>   DW_AT_decl_file   : 3	
-    <4c7>   DW_AT_decl_line   : 1704	
-    <4c9>   DW_AT_sibling     : <0x516>	
- <2><4cd>: Abbrev Number: 21 (DW_TAG_member)
-    <4ce>   DW_AT_name        : pix	
-    <4d2>   DW_AT_decl_file   : 3	
-    <4d3>   DW_AT_decl_line   : 1705	
-    <4d5>   DW_AT_type        : <0x190>	
- <2><4d9>: Abbrev Number: 22 (DW_TAG_member)
-    <4da>   DW_AT_name        : (indirect string, offset: 0x5): pix_mp	
-    <4de>   DW_AT_decl_file   : 3	
-    <4df>   DW_AT_decl_line   : 1706	
-    <4e1>   DW_AT_type        : <0x41c>	
- <2><4e5>: Abbrev Number: 21 (DW_TAG_member)
-    <4e6>   DW_AT_name        : win	
-    <4ea>   DW_AT_decl_file   : 3	
-    <4eb>   DW_AT_decl_line   : 1707	
-    <4ed>   DW_AT_type        : <0x256>	
- <2><4f1>: Abbrev Number: 21 (DW_TAG_member)
-    <4f2>   DW_AT_name        : vbi	
-    <4f6>   DW_AT_decl_file   : 3	
-    <4f7>   DW_AT_decl_line   : 1708	
-    <4f9>   DW_AT_type        : <0x2db>	
- <2><4fd>: Abbrev Number: 22 (DW_TAG_member)
-    <4fe>   DW_AT_name        : (indirect string, offset: 0x1eb): sliced	
-    <502>   DW_AT_decl_file   : 3	
-    <503>   DW_AT_decl_line   : 1709	
-    <505>   DW_AT_type        : <0x371>	
- <2><509>: Abbrev Number: 22 (DW_TAG_member)
-    <50a>   DW_AT_name        : (indirect string, offset: 0xee): raw_data	
-    <50e>   DW_AT_decl_file   : 3	
-    <50f>   DW_AT_decl_line   : 1710	
-    <511>   DW_AT_type        : <0x516>	
- <2><515>: Abbrev Number: 0
- <1><516>: Abbrev Number: 17 (DW_TAG_array_type)
-    <517>   DW_AT_type        : <0xff>	
-    <51b>   DW_AT_sibling     : <0x526>	
- <2><51f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <520>   DW_AT_type        : <0x63>	
-    <524>   DW_AT_upper_bound : 199	
- <2><525>: Abbrev Number: 0
- <1><526>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <527>   DW_AT_name        : (indirect string, offset: 0x256): v4l2_format	
-    <52b>   DW_AT_byte_size   : 204	
-    <52c>   DW_AT_decl_file   : 3	
-    <52d>   DW_AT_decl_line   : 1702	
-    <52f>   DW_AT_sibling     : <0x552>	
- <2><533>: Abbrev Number: 16 (DW_TAG_member)
-    <534>   DW_AT_name        : (indirect string, offset: 0x21b): type	
-    <538>   DW_AT_decl_file   : 3	
-    <539>   DW_AT_decl_line   : 1703	
-    <53b>   DW_AT_type        : <0x120>	
-    <53f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><542>: Abbrev Number: 19 (DW_TAG_member)
-    <543>   DW_AT_name        : fmt	
-    <547>   DW_AT_decl_file   : 3	
-    <548>   DW_AT_decl_line   : 1711	
-    <54a>   DW_AT_type        : <0x4c4>	
-    <54e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><551>: Abbrev Number: 0
- <1><552>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <553>   DW_AT_name        : (indirect string, offset: 0x185): v4l2_create_buffers	
-    <557>   DW_AT_byte_size   : 248	
-    <558>   DW_AT_decl_file   : 3	
-    <559>   DW_AT_decl_line   : 1843	
-    <55b>   DW_AT_sibling     : <0x5ac>	
- <2><55f>: Abbrev Number: 16 (DW_TAG_member)
-    <560>   DW_AT_name        : (indirect string, offset: 0xe8): index	
-    <564>   DW_AT_decl_file   : 3	
-    <565>   DW_AT_decl_line   : 1844	
-    <567>   DW_AT_type        : <0x120>	
-    <56b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><56e>: Abbrev Number: 16 (DW_TAG_member)
-    <56f>   DW_AT_name        : (indirect string, offset: 0x329): count	
-    <573>   DW_AT_decl_file   : 3	
-    <574>   DW_AT_decl_line   : 1845	
-    <576>   DW_AT_type        : <0x120>	
-    <57a>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><57d>: Abbrev Number: 16 (DW_TAG_member)
-    <57e>   DW_AT_name        : (indirect string, offset: 0x120): memory	
-    <582>   DW_AT_decl_file   : 3	
-    <583>   DW_AT_decl_line   : 1846	
-    <585>   DW_AT_type        : <0x120>	
-    <589>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><58c>: Abbrev Number: 16 (DW_TAG_member)
-    <58d>   DW_AT_name        : (indirect string, offset: 0x127): format	
-    <591>   DW_AT_decl_file   : 3	
-    <592>   DW_AT_decl_line   : 1847	
-    <594>   DW_AT_type        : <0x526>	
-    <598>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><59b>: Abbrev Number: 16 (DW_TAG_member)
-    <59c>   DW_AT_name        : (indirect string, offset: 0x3a2): reserved	
-    <5a0>   DW_AT_decl_file   : 3	
-    <5a1>   DW_AT_decl_line   : 1848	
-    <5a3>   DW_AT_type        : <0x2cb>	
-    <5a7>   DW_AT_data_member_location: 3 byte block: 23 d8 1 	(DW_OP_plus_uconst: 216)
- <2><5ab>: Abbrev Number: 0
- <1><5ac>: Abbrev Number: 12 (DW_TAG_typedef)
-    <5ad>   DW_AT_name        : (indirect string, offset: 0x33d): struct_v4l2_create_buffers	
-    <5b1>   DW_AT_decl_file   : 4	
-    <5b2>   DW_AT_decl_line   : 39	
-    <5b3>   DW_AT_type        : <0x552>	
- <1><5b7>: Abbrev Number: 23 (DW_TAG_variable)
-    <5b8>   DW_AT_name        : (indirect string, offset: 0x15c): current_wordsize	
-    <5bc>   DW_AT_decl_file   : 5	
-    <5bd>   DW_AT_decl_line   : 757	
-    <5bf>   DW_AT_type        : <0x47>	
-    <5c3>   DW_AT_external    : 1	
-    <5c4>   DW_AT_declaration : 1	
- <1><5c5>: Abbrev Number: 23 (DW_TAG_variable)
-    <5c6>   DW_AT_name        : (indirect string, offset: 0x377): sysent	
-    <5ca>   DW_AT_decl_file   : 5	
-    <5cb>   DW_AT_decl_line   : 892	
-    <5cd>   DW_AT_type        : <0xed>	
-    <5d1>   DW_AT_external    : 1	
-    <5d2>   DW_AT_declaration : 1	
- <1><5d3>: Abbrev Number: 23 (DW_TAG_variable)
-    <5d4>   DW_AT_name        : (indirect string, offset: 0x27c): nsyscalls	
-    <5d8>   DW_AT_decl_file   : 5	
-    <5d9>   DW_AT_decl_line   : 903	
-    <5db>   DW_AT_type        : <0x47>	
-    <5df>   DW_AT_external    : 1	
-    <5e0>   DW_AT_declaration : 1	
- <1><5e1>: Abbrev Number: 24 (DW_TAG_variable)
-    <5e2>   DW_AT_name        : (indirect string, offset: 0x144): mpers_target_var	
-    <5e6>   DW_AT_decl_file   : 4	
-    <5e7>   DW_AT_decl_line   : 47	
-    <5e8>   DW_AT_type        : <0x5ac>	
-    <5ec>   DW_AT_external    : 1	
-    <5ed>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><5f3>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_create_buffers.d2 b/mpers-m32/struct_v4l2_create_buffers.d2
deleted file mode 100644
index 4c4f105..0000000
--- a/mpers-m32/struct_v4l2_create_buffers.d2
+++ /dev/null
@@ -1,762 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1f2): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x76): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x3b1): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x1b0): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x28c): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x227): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x204): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x13b): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x30b): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x80): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x2ad): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x377): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x31d): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb7): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x68): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9d): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x32f): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2de): _Bool
-<1><ff>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x306): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><10a>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x300): __u16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><115>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x323): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><120>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf7): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><12b>
-Abbrev Number: 13 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x358): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x14b>
-<2><138>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x262): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><13e>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x23f): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><144>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xd1): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><14b>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 205
-DW_AT_sibling     : <0x190>
-<2><157>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d9): left
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 206
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><165>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : top
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 207
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><173>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11a): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 208
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><181>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 209
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><190>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2f0): v4l2_pix_format
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_sibling     : <0x216>
-<2><19d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11a): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 275
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 276
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x89): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 277
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ca>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x37e): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 278
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><1d9>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12e): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 279
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1e8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5e): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 280
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1f7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16d): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 281
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><206>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): priv
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 282
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><216>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x120>
-DW_AT_sibling     : <0x226>
-<2><21f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><226>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x384): v4l2_clip
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 745
-DW_AT_sibling     : <0x250>
-<2><233>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : c
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 746
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><240>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x71): next
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 747
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><250>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x226>
-<1><256>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x10e): v4l2_window
-DW_AT_byte_size   : 40
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 750
-DW_AT_sibling     : <0x2cb>
-<2><263>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : w
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 751
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><270>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x37e): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 752
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><27f>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x398): chromakey
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 753
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><28e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3ab): clips
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 754
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><29d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x104): clipcount
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 755
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><2ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfd): bitmap
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 756
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><2bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x178): global_alpha
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><2cb>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x120>
-DW_AT_sibling     : <0x2db>
-<2><2d4>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 7
-<1><2db>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc1): v4l2_vbi_format
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1541
-DW_AT_sibling     : <0x361>
-<2><2e8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29f): sampling_rate
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1542
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2f7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x155): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1543
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><306>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa6): samples_per_line
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1544
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><315>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3bf): sample_format
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1545
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><324>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x286): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1546
-DW_AT_type        : <0x361>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><333>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x329): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1547
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><342>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fe): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1548
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><351>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a2): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1549
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><361>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x115>
-DW_AT_sibling     : <0x371>
-<2><36a>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><371>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1d4): v4l2_sliced_vbi_format
-DW_AT_byte_size   : 112
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1563
-DW_AT_sibling     : <0x3bb>
-<2><37e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e4): service_set
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1564
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><38d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x369): service_lines
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1569
-DW_AT_type        : <0x3bb>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><39c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x95): io_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1570
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
-<2><3ab>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a2): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1571
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<1><3bb>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x3d1>
-<2><3c4>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<2><3ca>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 23
-<1><3d1>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1be): v4l2_plane_pix_format
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1664
-DW_AT_sibling     : <0x40c>
-<2><3de>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5e): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1665
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><3ed>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12e): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1666
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3fc>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a2): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1667
-DW_AT_type        : <0x40c>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<1><40c>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x41c>
-<2><415>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 6
-<1><41c>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x199): v4l2_pix_format_mplane
-DW_AT_byte_size   : 192
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1680
-DW_AT_sibling     : <0x4a4>
-<2><429>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11a): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1681
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><438>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1682
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><447>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x89): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1683
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><456>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x37e): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1684
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><465>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16d): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1685
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><474>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x38e): plane_fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1687
-DW_AT_type        : <0x4a4>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><483>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x234): num_planes
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1688
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
-<2><493>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a2): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1689
-DW_AT_type        : <0x4b4>
-DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
-<1><4a4>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x3d1>
-DW_AT_sibling     : <0x4b4>
-<2><4ad>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 7
-<1><4b4>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x4c4>
-<2><4bd>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 10
-<1><4c4>
-Abbrev Number: 20 (DW_TAG_union_type)
-DW_AT_byte_size   : 200
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1704
-DW_AT_sibling     : <0x516>
-<2><4cd>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : pix
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1705
-DW_AT_type        : <0x190>
-<2><4d9>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5): pix_mp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1706
-DW_AT_type        : <0x41c>
-<2><4e5>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : win
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1707
-DW_AT_type        : <0x256>
-<2><4f1>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : vbi
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1708
-DW_AT_type        : <0x2db>
-<2><4fd>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1eb): sliced
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1709
-DW_AT_type        : <0x371>
-<2><509>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xee): raw_data
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1710
-DW_AT_type        : <0x516>
-<1><516>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x526>
-<2><51f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 199
-<1><526>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x256): v4l2_format
-DW_AT_byte_size   : 204
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1702
-DW_AT_sibling     : <0x552>
-<2><533>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21b): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1703
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><542>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1711
-DW_AT_type        : <0x4c4>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><552>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x185): v4l2_create_buffers
-DW_AT_byte_size   : 248
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1843
-DW_AT_sibling     : <0x5ac>
-<2><55f>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe8): index
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1844
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><56e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x329): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1845
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><57d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x120): memory
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1846
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><58c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x127): format
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1847
-DW_AT_type        : <0x526>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><59b>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a2): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1848
-DW_AT_type        : <0x2cb>
-DW_AT_data_member_location: 3 byte block: 23 d8 1 	(DW_OP_plus_uconst: 216)
-<1><5ac>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x33d): struct_v4l2_create_buffers
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x552>
-<1><5b7>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x15c): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><5c5>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x377): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><5d3>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x27c): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><5e1>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x144): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x5ac>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_v4l2_create_buffers.h b/mpers-m32/struct_v4l2_create_buffers.h
index f85f054..2d5380f 100644
--- a/mpers-m32/struct_v4l2_create_buffers.h
+++ b/mpers-m32/struct_v4l2_create_buffers.h
@@ -59,8 +59,8 @@
 } ATTRIBUTE_PACKED vbi;
 struct {
 uint16_t service_set;
-uint16_t service_lines[24];
-unsigned char mpers_filler_2[50];
+uint16_t service_lines[2][24];
+unsigned char mpers_filler_2[2];
 uint32_t io_size;
 uint32_t reserved[2];
 } ATTRIBUTE_PACKED sliced;
diff --git a/mpers-m32/struct_v4l2_ext_control.c b/mpers-m32/struct_v4l2_ext_control.c
index d5365dd..2696feb 100644
--- a/mpers-m32/struct_v4l2_ext_control.c
+++ b/mpers-m32/struct_v4l2_ext_control.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_ext_control.d1 b/mpers-m32/struct_v4l2_ext_control.d1
deleted file mode 100644
index f9867f0..0000000
--- a/mpers-m32/struct_v4l2_ext_control.d1
+++ /dev/null
@@ -1,250 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x208 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x13b): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x82): mpers-m32/struct_v4l2_ext_control.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1cb): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x230): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x62): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x20f): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe0): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x4f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x194): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xc1): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x227): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xee): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x206): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
-    <6c>   DW_AT_type        : <0x70>	
- <1><70>: Abbrev Number: 2 (DW_TAG_base_type)
-    <71>   DW_AT_byte_size   : 1	
-    <72>   DW_AT_encoding    : 6	(signed char)
-    <73>   DW_AT_name        : (indirect string, offset: 0x1c6): char	
- <1><77>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <78>   DW_AT_byte_size   : 4	
-    <79>   DW_AT_type        : <0x7d>	
- <1><7d>: Abbrev Number: 5 (DW_TAG_const_type)
-    <7e>   DW_AT_type        : <0x70>	
- <1><82>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <83>   DW_AT_name        : (indirect string, offset: 0x100): sysent	
-    <87>   DW_AT_byte_size   : 20	
-    <88>   DW_AT_decl_file   : 1	
-    <89>   DW_AT_decl_line   : 4	
-    <8a>   DW_AT_sibling     : <0xd5>	
- <2><8e>: Abbrev Number: 7 (DW_TAG_member)
-    <8f>   DW_AT_name        : (indirect string, offset: 0x135): nargs	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 5	
-    <95>   DW_AT_type        : <0x47>	
-    <99>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><9c>: Abbrev Number: 7 (DW_TAG_member)
-    <9d>   DW_AT_name        : (indirect string, offset: 0xb7): sys_flags	
-    <a1>   DW_AT_decl_file   : 1	
-    <a2>   DW_AT_decl_line   : 6	
-    <a3>   DW_AT_type        : <0x2b>	
-    <a7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><aa>: Abbrev Number: 8 (DW_TAG_member)
-    <ab>   DW_AT_name        : sen	
-    <af>   DW_AT_decl_file   : 1	
-    <b0>   DW_AT_decl_line   : 7	
-    <b1>   DW_AT_type        : <0x2b>	
-    <b5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b8>: Abbrev Number: 7 (DW_TAG_member)
-    <b9>   DW_AT_name        : (indirect string, offset: 0x241): sys_func	
-    <bd>   DW_AT_decl_file   : 1	
-    <be>   DW_AT_decl_line   : 8	
-    <bf>   DW_AT_type        : <0xe0>	
-    <c3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c6>: Abbrev Number: 7 (DW_TAG_member)
-    <c7>   DW_AT_name        : (indirect string, offset: 0x72): sys_name	
-    <cb>   DW_AT_decl_file   : 1	
-    <cc>   DW_AT_decl_line   : 9	
-    <cd>   DW_AT_type        : <0x77>	
-    <d1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d4>: Abbrev Number: 0
- <1><d5>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d6>   DW_AT_type        : <0x2b>	
-    <da>   DW_AT_sibling     : <0xe0>	
- <2><de>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <e1>   DW_AT_byte_size   : 4	
-    <e2>   DW_AT_type        : <0xd5>	
- <1><e6>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e7>   DW_AT_name        : (indirect string, offset: 0x1b8): struct_sysent	
-    <eb>   DW_AT_decl_file   : 1	
-    <ec>   DW_AT_decl_line   : 10	
-    <ed>   DW_AT_type        : <0x82>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <f2>   DW_AT_byte_size   : 4	
-    <f3>   DW_AT_type        : <0xf7>	
- <1><f7>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f8>   DW_AT_type        : <0xe6>	
- <1><fc>: Abbrev Number: 2 (DW_TAG_base_type)
-    <fd>   DW_AT_byte_size   : 1	
-    <fe>   DW_AT_encoding    : 2	(boolean)
-    <ff>   DW_AT_name        : (indirect string, offset: 0x6c): _Bool	
- <1><103>: Abbrev Number: 11 (DW_TAG_typedef)
-    <104>   DW_AT_name        : (indirect string, offset: 0x107): __s32	
-    <108>   DW_AT_decl_file   : 2	
-    <109>   DW_AT_decl_line   : 25	
-    <10a>   DW_AT_type        : <0x2b>	
- <1><10e>: Abbrev Number: 11 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x32): __u32	
-    <113>   DW_AT_decl_file   : 2	
-    <114>   DW_AT_decl_line   : 26	
-    <115>   DW_AT_type        : <0x47>	
- <1><119>: Abbrev Number: 11 (DW_TAG_typedef)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x24a): __s64	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 29	
-    <120>   DW_AT_type        : <0x32>	
- <1><124>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <125>   DW_AT_name        : (indirect string, offset: 0x183): v4l2_preemphasis	
-    <129>   DW_AT_byte_size   : 4	
-    <12a>   DW_AT_decl_file   : 6	
-    <12b>   DW_AT_decl_line   : 763	
-    <12d>   DW_AT_sibling     : <0x144>	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED	
-    <136>   DW_AT_const_value : 0	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0x1a1): V4L2_PREEMPHASIS_50_uS	
-    <13c>   DW_AT_const_value : 1	
- <2><13d>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <13e>   DW_AT_name        : (indirect string, offset: 0x11e): V4L2_PREEMPHASIS_75_uS	
-    <142>   DW_AT_const_value : 2	
- <2><143>: Abbrev Number: 0
- <1><144>: Abbrev Number: 14 (DW_TAG_union_type)
-    <145>   DW_AT_byte_size   : 8	
-    <146>   DW_AT_decl_file   : 3	
-    <147>   DW_AT_decl_line   : 1225	
-    <149>   DW_AT_sibling     : <0x172>	
- <2><14d>: Abbrev Number: 15 (DW_TAG_member)
-    <14e>   DW_AT_name        : (indirect string, offset: 0x38): value	
-    <152>   DW_AT_decl_file   : 3	
-    <153>   DW_AT_decl_line   : 1226	
-    <155>   DW_AT_type        : <0x103>	
- <2><159>: Abbrev Number: 15 (DW_TAG_member)
-    <15a>   DW_AT_name        : (indirect string, offset: 0xd8): value64	
-    <15e>   DW_AT_decl_file   : 3	
-    <15f>   DW_AT_decl_line   : 1227	
-    <161>   DW_AT_type        : <0x119>	
- <2><165>: Abbrev Number: 15 (DW_TAG_member)
-    <166>   DW_AT_name        : (indirect string, offset: 0x7b): string	
-    <16a>   DW_AT_decl_file   : 3	
-    <16b>   DW_AT_decl_line   : 1228	
-    <16d>   DW_AT_type        : <0x6a>	
- <2><171>: Abbrev Number: 0
- <1><172>: Abbrev Number: 16 (DW_TAG_structure_type)
-    <173>   DW_AT_name        : (indirect string, offset: 0x3e): v4l2_ext_control	
-    <177>   DW_AT_byte_size   : 20	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 1221	
-    <17b>   DW_AT_sibling     : <0x1b4>	
- <2><17f>: Abbrev Number: 17 (DW_TAG_member)
-    <180>   DW_AT_name        : id	
-    <183>   DW_AT_decl_file   : 3	
-    <184>   DW_AT_decl_line   : 1222	
-    <186>   DW_AT_type        : <0x10e>	
-    <18a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><18d>: Abbrev Number: 18 (DW_TAG_member)
-    <18e>   DW_AT_name        : (indirect string, offset: 0x23c): size	
-    <192>   DW_AT_decl_file   : 3	
-    <193>   DW_AT_decl_line   : 1223	
-    <195>   DW_AT_type        : <0x10e>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><19c>: Abbrev Number: 18 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x21d): reserved2	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 1224	
-    <1a4>   DW_AT_type        : <0x1b4>	
-    <1a8>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ab>: Abbrev Number: 19 (DW_TAG_member)
-    <1ac>   DW_AT_type        : <0x144>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1b3>: Abbrev Number: 0
- <1><1b4>: Abbrev Number: 20 (DW_TAG_array_type)
-    <1b5>   DW_AT_type        : <0x10e>	
-    <1b9>   DW_AT_sibling     : <0x1c4>	
- <2><1bd>: Abbrev Number: 21 (DW_TAG_subrange_type)
-    <1be>   DW_AT_type        : <0x63>	
-    <1c2>   DW_AT_upper_bound : 0	
- <2><1c3>: Abbrev Number: 0
- <1><1c4>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1c5>   DW_AT_name        : (indirect string, offset: 0x1a): struct_v4l2_ext_control	
-    <1c9>   DW_AT_decl_file   : 4	
-    <1ca>   DW_AT_decl_line   : 40	
-    <1cb>   DW_AT_type        : <0x172>	
- <1><1cf>: Abbrev Number: 22 (DW_TAG_variable)
-    <1d0>   DW_AT_name        : (indirect string, offset: 0x10d): current_wordsize	
-    <1d4>   DW_AT_decl_file   : 5	
-    <1d5>   DW_AT_decl_line   : 757	
-    <1d7>   DW_AT_type        : <0x47>	
-    <1db>   DW_AT_external    : 1	
-    <1dc>   DW_AT_declaration : 1	
- <1><1dd>: Abbrev Number: 22 (DW_TAG_variable)
-    <1de>   DW_AT_name        : (indirect string, offset: 0x100): sysent	
-    <1e2>   DW_AT_decl_file   : 5	
-    <1e3>   DW_AT_decl_line   : 892	
-    <1e5>   DW_AT_type        : <0xf1>	
-    <1e9>   DW_AT_external    : 1	
-    <1ea>   DW_AT_declaration : 1	
- <1><1eb>: Abbrev Number: 22 (DW_TAG_variable)
-    <1ec>   DW_AT_name        : (indirect string, offset: 0x1fc): nsyscalls	
-    <1f0>   DW_AT_decl_file   : 5	
-    <1f1>   DW_AT_decl_line   : 903	
-    <1f3>   DW_AT_type        : <0x47>	
-    <1f7>   DW_AT_external    : 1	
-    <1f8>   DW_AT_declaration : 1	
- <1><1f9>: Abbrev Number: 23 (DW_TAG_variable)
-    <1fa>   DW_AT_name        : (indirect string, offset: 0xa6): mpers_target_var	
-    <1fe>   DW_AT_decl_file   : 4	
-    <1ff>   DW_AT_decl_line   : 47	
-    <200>   DW_AT_type        : <0x1c4>	
-    <204>   DW_AT_external    : 1	
-    <205>   DW_AT_location    : 5 byte block: 3 1 0 0 0 	(DW_OP_addr: 1)
- <1><20b>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_ext_control.d2 b/mpers-m32/struct_v4l2_ext_control.d2
deleted file mode 100644
index 7ad2394..0000000
--- a/mpers-m32/struct_v4l2_ext_control.d2
+++ /dev/null
@@ -1,280 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x230): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x62): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x20f): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe0): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x4f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x194): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc1): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x227): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xee): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x206): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x70>
-<1><70>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1c6): char
-<1><77>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7d>
-<1><7d>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x70>
-<1><82>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x100): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd5>
-<2><8e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x135): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><9c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb7): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b8>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x241): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c6>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x72): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x77>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d5>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe0>
-<2><de>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><e0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd5>
-<1><e6>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b8): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x82>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf7>
-<1><f7>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe6>
-<1><fc>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x6c): _Bool
-<1><103>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x107): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><10e>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x32): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><119>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x24a): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><124>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x183): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x144>
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1a1): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><13d>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x11e): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><144>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1225
-DW_AT_sibling     : <0x172>
-<2><14d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x38): value
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1226
-DW_AT_type        : <0x103>
-<2><159>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd8): value64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1227
-DW_AT_type        : <0x119>
-<2><165>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7b): string
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1228
-DW_AT_type        : <0x6a>
-<1><172>
-Abbrev Number: 16 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x3e): v4l2_ext_control
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1221
-DW_AT_sibling     : <0x1b4>
-<2><17f>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1222
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><18d>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23c): size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1223
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><19c>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21d): reserved2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1224
-DW_AT_type        : <0x1b4>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ab>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_type        : <0x144>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1b4>
-Abbrev Number: 20 (DW_TAG_array_type)
-DW_AT_type        : <0x10e>
-DW_AT_sibling     : <0x1c4>
-<2><1bd>
-Abbrev Number: 21 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 0
-<1><1c4>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1a): struct_v4l2_ext_control
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x172>
-<1><1cf>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x10d): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1dd>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x100): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf1>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1eb>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1fc): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1f9>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa6): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1c4>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 1 0 0 0 	(DW_OP_addr: 1)
diff --git a/mpers-m32/struct_v4l2_ext_controls.c b/mpers-m32/struct_v4l2_ext_controls.c
index 626f230..d89399e 100644
--- a/mpers-m32/struct_v4l2_ext_controls.c
+++ b/mpers-m32/struct_v4l2_ext_controls.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_ext_controls.d1 b/mpers-m32/struct_v4l2_ext_controls.d1
deleted file mode 100644
index 3cc4f90..0000000
--- a/mpers-m32/struct_v4l2_ext_controls.d1
+++ /dev/null
@@ -1,297 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x277 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x142): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1d7): mpers-m32/struct_v4l2_ext_controls.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x201): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x271): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x56): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x245): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xc5): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x43): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1a5): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x94): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x25d): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xd3): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x23c): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
-    <6c>   DW_AT_type        : <0x70>	
- <1><70>: Abbrev Number: 2 (DW_TAG_base_type)
-    <71>   DW_AT_byte_size   : 1	
-    <72>   DW_AT_encoding    : 6	(signed char)
-    <73>   DW_AT_name        : (indirect string, offset: 0x1fc): char	
- <1><77>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <78>   DW_AT_byte_size   : 4	
-    <79>   DW_AT_type        : <0x7d>	
- <1><7d>: Abbrev Number: 5 (DW_TAG_const_type)
-    <7e>   DW_AT_type        : <0x70>	
- <1><82>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <83>   DW_AT_name        : (indirect string, offset: 0xe5): sysent	
-    <87>   DW_AT_byte_size   : 20	
-    <88>   DW_AT_decl_file   : 1	
-    <89>   DW_AT_decl_line   : 4	
-    <8a>   DW_AT_sibling     : <0xd5>	
- <2><8e>: Abbrev Number: 7 (DW_TAG_member)
-    <8f>   DW_AT_name        : (indirect string, offset: 0x13c): nargs	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 5	
-    <95>   DW_AT_type        : <0x47>	
-    <99>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><9c>: Abbrev Number: 7 (DW_TAG_member)
-    <9d>   DW_AT_name        : (indirect string, offset: 0x8a): sys_flags	
-    <a1>   DW_AT_decl_file   : 1	
-    <a2>   DW_AT_decl_line   : 6	
-    <a3>   DW_AT_type        : <0x2b>	
-    <a7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><aa>: Abbrev Number: 8 (DW_TAG_member)
-    <ab>   DW_AT_name        : sen	
-    <af>   DW_AT_decl_file   : 1	
-    <b0>   DW_AT_decl_line   : 7	
-    <b1>   DW_AT_type        : <0x2b>	
-    <b5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b8>: Abbrev Number: 7 (DW_TAG_member)
-    <b9>   DW_AT_name        : (indirect string, offset: 0x282): sys_func	
-    <bd>   DW_AT_decl_file   : 1	
-    <be>   DW_AT_decl_line   : 8	
-    <bf>   DW_AT_type        : <0xe0>	
-    <c3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c6>: Abbrev Number: 7 (DW_TAG_member)
-    <c7>   DW_AT_name        : (indirect string, offset: 0x69): sys_name	
-    <cb>   DW_AT_decl_file   : 1	
-    <cc>   DW_AT_decl_line   : 9	
-    <cd>   DW_AT_type        : <0x77>	
-    <d1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d4>: Abbrev Number: 0
- <1><d5>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d6>   DW_AT_type        : <0x2b>	
-    <da>   DW_AT_sibling     : <0xe0>	
- <2><de>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <e1>   DW_AT_byte_size   : 4	
-    <e2>   DW_AT_type        : <0xd5>	
- <1><e6>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e7>   DW_AT_name        : (indirect string, offset: 0x1c9): struct_sysent	
-    <eb>   DW_AT_decl_file   : 1	
-    <ec>   DW_AT_decl_line   : 10	
-    <ed>   DW_AT_type        : <0x82>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <f2>   DW_AT_byte_size   : 4	
-    <f3>   DW_AT_type        : <0xf7>	
- <1><f7>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f8>   DW_AT_type        : <0xe6>	
- <1><fc>: Abbrev Number: 2 (DW_TAG_base_type)
-    <fd>   DW_AT_byte_size   : 1	
-    <fe>   DW_AT_encoding    : 2	(boolean)
-    <ff>   DW_AT_name        : (indirect string, offset: 0x1a): _Bool	
- <1><103>: Abbrev Number: 11 (DW_TAG_typedef)
-    <104>   DW_AT_name        : (indirect string, offset: 0x105): __s32	
-    <108>   DW_AT_decl_file   : 2	
-    <109>   DW_AT_decl_line   : 25	
-    <10a>   DW_AT_type        : <0x2b>	
- <1><10e>: Abbrev Number: 11 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x20): __u32	
-    <113>   DW_AT_decl_file   : 2	
-    <114>   DW_AT_decl_line   : 26	
-    <115>   DW_AT_type        : <0x47>	
- <1><119>: Abbrev Number: 11 (DW_TAG_typedef)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x28b): __s64	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 29	
-    <120>   DW_AT_type        : <0x32>	
- <1><124>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <125>   DW_AT_name        : (indirect string, offset: 0x18a): v4l2_preemphasis	
-    <129>   DW_AT_byte_size   : 4	
-    <12a>   DW_AT_decl_file   : 6	
-    <12b>   DW_AT_decl_line   : 763	
-    <12d>   DW_AT_sibling     : <0x144>	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED	
-    <136>   DW_AT_const_value : 0	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0x1b2): V4L2_PREEMPHASIS_50_uS	
-    <13c>   DW_AT_const_value : 1	
- <2><13d>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <13e>   DW_AT_name        : (indirect string, offset: 0x11c): V4L2_PREEMPHASIS_75_uS	
-    <142>   DW_AT_const_value : 2	
- <2><143>: Abbrev Number: 0
- <1><144>: Abbrev Number: 14 (DW_TAG_array_type)
-    <145>   DW_AT_type        : <0x10e>	
-    <149>   DW_AT_sibling     : <0x154>	
- <2><14d>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <14e>   DW_AT_type        : <0x63>	
-    <152>   DW_AT_upper_bound : 1	
- <2><153>: Abbrev Number: 0
- <1><154>: Abbrev Number: 16 (DW_TAG_union_type)
-    <155>   DW_AT_byte_size   : 8	
-    <156>   DW_AT_decl_file   : 3	
-    <157>   DW_AT_decl_line   : 1225	
-    <159>   DW_AT_sibling     : <0x182>	
- <2><15d>: Abbrev Number: 17 (DW_TAG_member)
-    <15e>   DW_AT_name        : (indirect string, offset: 0x26): value	
-    <162>   DW_AT_decl_file   : 3	
-    <163>   DW_AT_decl_line   : 1226	
-    <165>   DW_AT_type        : <0x103>	
- <2><169>: Abbrev Number: 17 (DW_TAG_member)
-    <16a>   DW_AT_name        : (indirect string, offset: 0xbd): value64	
-    <16e>   DW_AT_decl_file   : 3	
-    <16f>   DW_AT_decl_line   : 1227	
-    <171>   DW_AT_type        : <0x119>	
- <2><175>: Abbrev Number: 17 (DW_TAG_member)
-    <176>   DW_AT_name        : (indirect string, offset: 0x72): string	
-    <17a>   DW_AT_decl_file   : 3	
-    <17b>   DW_AT_decl_line   : 1228	
-    <17d>   DW_AT_type        : <0x6a>	
- <2><181>: Abbrev Number: 0
- <1><182>: Abbrev Number: 18 (DW_TAG_structure_type)
-    <183>   DW_AT_name        : (indirect string, offset: 0x32): v4l2_ext_control	
-    <187>   DW_AT_byte_size   : 20	
-    <188>   DW_AT_decl_file   : 3	
-    <189>   DW_AT_decl_line   : 1221	
-    <18b>   DW_AT_sibling     : <0x1c4>	
- <2><18f>: Abbrev Number: 19 (DW_TAG_member)
-    <190>   DW_AT_name        : id	
-    <193>   DW_AT_decl_file   : 3	
-    <194>   DW_AT_decl_line   : 1222	
-    <196>   DW_AT_type        : <0x10e>	
-    <19a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><19d>: Abbrev Number: 20 (DW_TAG_member)
-    <19e>   DW_AT_name        : (indirect string, offset: 0x27d): size	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 1223	
-    <1a5>   DW_AT_type        : <0x10e>	
-    <1a9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1ac>: Abbrev Number: 20 (DW_TAG_member)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0x253): reserved2	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 1224	
-    <1b4>   DW_AT_type        : <0x1c4>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1bb>: Abbrev Number: 21 (DW_TAG_member)
-    <1bc>   DW_AT_type        : <0x154>	
-    <1c0>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1c3>: Abbrev Number: 0
- <1><1c4>: Abbrev Number: 14 (DW_TAG_array_type)
-    <1c5>   DW_AT_type        : <0x10e>	
-    <1c9>   DW_AT_sibling     : <0x1d4>	
- <2><1cd>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <1ce>   DW_AT_type        : <0x63>	
-    <1d2>   DW_AT_upper_bound : 0	
- <2><1d3>: Abbrev Number: 0
- <1><1d4>: Abbrev Number: 18 (DW_TAG_structure_type)
-    <1d5>   DW_AT_name        : (indirect string, offset: 0xab): v4l2_ext_controls	
-    <1d9>   DW_AT_byte_size   : 24	
-    <1da>   DW_AT_decl_file   : 3	
-    <1db>   DW_AT_decl_line   : 1232	
-    <1dd>   DW_AT_sibling     : <0x22d>	
- <2><1e1>: Abbrev Number: 20 (DW_TAG_member)
-    <1e2>   DW_AT_name        : (indirect string, offset: 0x266): ctrl_class	
-    <1e6>   DW_AT_decl_file   : 3	
-    <1e7>   DW_AT_decl_line   : 1233	
-    <1e9>   DW_AT_type        : <0x10e>	
-    <1ed>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1f0>: Abbrev Number: 20 (DW_TAG_member)
-    <1f1>   DW_AT_name        : (indirect string, offset: 0x2c): count	
-    <1f5>   DW_AT_decl_file   : 3	
-    <1f6>   DW_AT_decl_line   : 1234	
-    <1f8>   DW_AT_type        : <0x10e>	
-    <1fc>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1ff>: Abbrev Number: 20 (DW_TAG_member)
-    <200>   DW_AT_name        : (indirect string, offset: 0x19b): error_idx	
-    <204>   DW_AT_decl_file   : 3	
-    <205>   DW_AT_decl_line   : 1235	
-    <207>   DW_AT_type        : <0x10e>	
-    <20b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><20e>: Abbrev Number: 20 (DW_TAG_member)
-    <20f>   DW_AT_name        : (indirect string, offset: 0x133): reserved	
-    <213>   DW_AT_decl_file   : 3	
-    <214>   DW_AT_decl_line   : 1236	
-    <216>   DW_AT_type        : <0x144>	
-    <21a>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><21d>: Abbrev Number: 20 (DW_TAG_member)
-    <21e>   DW_AT_name        : (indirect string, offset: 0x60): controls	
-    <222>   DW_AT_decl_file   : 3	
-    <223>   DW_AT_decl_line   : 1237	
-    <225>   DW_AT_type        : <0x22d>	
-    <229>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><22c>: Abbrev Number: 0
- <1><22d>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <22e>   DW_AT_byte_size   : 4	
-    <22f>   DW_AT_type        : <0x182>	
- <1><233>: Abbrev Number: 11 (DW_TAG_typedef)
-    <234>   DW_AT_name        : (indirect string, offset: 0xec): struct_v4l2_ext_controls	
-    <238>   DW_AT_decl_file   : 4	
-    <239>   DW_AT_decl_line   : 41	
-    <23a>   DW_AT_type        : <0x1d4>	
- <1><23e>: Abbrev Number: 22 (DW_TAG_variable)
-    <23f>   DW_AT_name        : (indirect string, offset: 0x10b): current_wordsize	
-    <243>   DW_AT_decl_file   : 5	
-    <244>   DW_AT_decl_line   : 757	
-    <246>   DW_AT_type        : <0x47>	
-    <24a>   DW_AT_external    : 1	
-    <24b>   DW_AT_declaration : 1	
- <1><24c>: Abbrev Number: 22 (DW_TAG_variable)
-    <24d>   DW_AT_name        : (indirect string, offset: 0xe5): sysent	
-    <251>   DW_AT_decl_file   : 5	
-    <252>   DW_AT_decl_line   : 892	
-    <254>   DW_AT_type        : <0xf1>	
-    <258>   DW_AT_external    : 1	
-    <259>   DW_AT_declaration : 1	
- <1><25a>: Abbrev Number: 22 (DW_TAG_variable)
-    <25b>   DW_AT_name        : (indirect string, offset: 0x232): nsyscalls	
-    <25f>   DW_AT_decl_file   : 5	
-    <260>   DW_AT_decl_line   : 903	
-    <262>   DW_AT_type        : <0x47>	
-    <266>   DW_AT_external    : 1	
-    <267>   DW_AT_declaration : 1	
- <1><268>: Abbrev Number: 23 (DW_TAG_variable)
-    <269>   DW_AT_name        : (indirect string, offset: 0x79): mpers_target_var	
-    <26d>   DW_AT_decl_file   : 4	
-    <26e>   DW_AT_decl_line   : 47	
-    <26f>   DW_AT_type        : <0x233>	
-    <273>   DW_AT_external    : 1	
-    <274>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><27a>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_ext_controls.d2 b/mpers-m32/struct_v4l2_ext_controls.d2
deleted file mode 100644
index 5870f8d..0000000
--- a/mpers-m32/struct_v4l2_ext_controls.d2
+++ /dev/null
@@ -1,334 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x271): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x56): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x245): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xc5): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x43): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1a5): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x94): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x25d): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd3): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x23c): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x70>
-<1><70>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1fc): char
-<1><77>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7d>
-<1><7d>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x70>
-<1><82>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe5): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd5>
-<2><8e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13c): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><9c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8a): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b8>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x282): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c6>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x69): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x77>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d5>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe0>
-<2><de>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><e0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd5>
-<1><e6>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c9): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x82>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf7>
-<1><f7>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe6>
-<1><fc>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1a): _Bool
-<1><103>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x105): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><10e>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x20): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><119>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x28b): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><124>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x18a): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x144>
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1b2): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><13d>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x11c): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><144>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x10e>
-DW_AT_sibling     : <0x154>
-<2><14d>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><154>
-Abbrev Number: 16 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1225
-DW_AT_sibling     : <0x182>
-<2><15d>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26): value
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1226
-DW_AT_type        : <0x103>
-<2><169>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbd): value64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1227
-DW_AT_type        : <0x119>
-<2><175>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x72): string
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1228
-DW_AT_type        : <0x6a>
-<1><182>
-Abbrev Number: 18 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x32): v4l2_ext_control
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1221
-DW_AT_sibling     : <0x1c4>
-<2><18f>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1222
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><19d>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x27d): size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1223
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1ac>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x253): reserved2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1224
-DW_AT_type        : <0x1c4>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1bb>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_type        : <0x154>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1c4>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x10e>
-DW_AT_sibling     : <0x1d4>
-<2><1cd>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 0
-<1><1d4>
-Abbrev Number: 18 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xab): v4l2_ext_controls
-DW_AT_byte_size   : 24
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1232
-DW_AT_sibling     : <0x22d>
-<2><1e1>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x266): ctrl_class
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1233
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1f0>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1234
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1ff>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19b): error_idx
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1235
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><20e>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x133): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1236
-DW_AT_type        : <0x144>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><21d>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x60): controls
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1237
-DW_AT_type        : <0x22d>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<1><22d>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x182>
-<1><233>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xec): struct_v4l2_ext_controls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x1d4>
-<1><23e>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x10b): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><24c>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe5): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf1>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><25a>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x232): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><268>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x79): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x233>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/struct_v4l2_format.c b/mpers-m32/struct_v4l2_format.c
index fd7973f..8791f9d 100644
--- a/mpers-m32/struct_v4l2_format.c
+++ b/mpers-m32/struct_v4l2_format.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_format.d1 b/mpers-m32/struct_v4l2_format.d1
deleted file mode 100644
index fc530af..0000000
--- a/mpers-m32/struct_v4l2_format.d1
+++ /dev/null
@@ -1,628 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x586 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x16): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x136): mpers-m32/struct_v4l2_format.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x395): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1f8): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x71): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x128): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x1b6): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x292): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x22d): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x20a): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x155): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x2fd): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x7b): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x2c6): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0x34e): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x30f): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0xbf): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x68): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0xa5): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x321): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x2d0): _Bool	
- <1><ff>: Abbrev Number: 12 (DW_TAG_typedef)
-    <100>   DW_AT_name        : (indirect string, offset: 0x2f8): __u8	
-    <104>   DW_AT_decl_file   : 2	
-    <105>   DW_AT_decl_line   : 20	
-    <106>   DW_AT_type        : <0x39>	
- <1><10a>: Abbrev Number: 12 (DW_TAG_typedef)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x2f2): __u16	
-    <10f>   DW_AT_decl_file   : 2	
-    <110>   DW_AT_decl_line   : 23	
-    <111>   DW_AT_type        : <0x40>	
- <1><115>: Abbrev Number: 12 (DW_TAG_typedef)
-    <116>   DW_AT_name        : (indirect string, offset: 0x315): __s32	
-    <11a>   DW_AT_decl_file   : 2	
-    <11b>   DW_AT_decl_line   : 25	
-    <11c>   DW_AT_type        : <0x2b>	
- <1><120>: Abbrev Number: 12 (DW_TAG_typedef)
-    <121>   DW_AT_name        : (indirect string, offset: 0xff): __u32	
-    <125>   DW_AT_decl_file   : 2	
-    <126>   DW_AT_decl_line   : 26	
-    <127>   DW_AT_type        : <0x47>	
- <1><12b>: Abbrev Number: 13 (DW_TAG_enumeration_type)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x32f): v4l2_preemphasis	
-    <130>   DW_AT_byte_size   : 4	
-    <131>   DW_AT_decl_file   : 6	
-    <132>   DW_AT_decl_line   : 763	
-    <134>   DW_AT_sibling     : <0x14b>	
- <2><138>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <139>   DW_AT_name        : (indirect string, offset: 0x268): V4L2_PREEMPHASIS_DISABLED	
-    <13d>   DW_AT_const_value : 0	
- <2><13e>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <13f>   DW_AT_name        : (indirect string, offset: 0x245): V4L2_PREEMPHASIS_50_uS	
-    <143>   DW_AT_const_value : 1	
- <2><144>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <145>   DW_AT_name        : (indirect string, offset: 0xd9): V4L2_PREEMPHASIS_75_uS	
-    <149>   DW_AT_const_value : 2	
- <2><14a>: Abbrev Number: 0
- <1><14b>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <14c>   DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect	
-    <150>   DW_AT_byte_size   : 16	
-    <151>   DW_AT_decl_file   : 3	
-    <152>   DW_AT_decl_line   : 205	
-    <153>   DW_AT_sibling     : <0x190>	
- <2><157>: Abbrev Number: 8 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x2cb): left	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 206	
-    <15e>   DW_AT_type        : <0x115>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><165>: Abbrev Number: 9 (DW_TAG_member)
-    <166>   DW_AT_name        : top	
-    <16a>   DW_AT_decl_file   : 3	
-    <16b>   DW_AT_decl_line   : 207	
-    <16c>   DW_AT_type        : <0x115>	
-    <170>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><173>: Abbrev Number: 8 (DW_TAG_member)
-    <174>   DW_AT_name        : (indirect string, offset: 0x122): width	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 208	
-    <17a>   DW_AT_type        : <0x115>	
-    <17e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><181>: Abbrev Number: 8 (DW_TAG_member)
-    <182>   DW_AT_name        : (indirect string, offset: 0x226): height	
-    <186>   DW_AT_decl_file   : 3	
-    <187>   DW_AT_decl_line   : 209	
-    <188>   DW_AT_type        : <0x115>	
-    <18c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18f>: Abbrev Number: 0
- <1><190>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <191>   DW_AT_name        : (indirect string, offset: 0x2e2): v4l2_pix_format	
-    <195>   DW_AT_byte_size   : 32	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 274	
-    <199>   DW_AT_sibling     : <0x216>	
- <2><19d>: Abbrev Number: 16 (DW_TAG_member)
-    <19e>   DW_AT_name        : (indirect string, offset: 0x122): width	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 275	
-    <1a5>   DW_AT_type        : <0x120>	
-    <1a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1ac>: Abbrev Number: 16 (DW_TAG_member)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0x226): height	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 276	
-    <1b4>   DW_AT_type        : <0x120>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1bb>: Abbrev Number: 16 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x84): pixelformat	
-    <1c0>   DW_AT_decl_file   : 3	
-    <1c1>   DW_AT_decl_line   : 277	
-    <1c3>   DW_AT_type        : <0x120>	
-    <1c7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ca>: Abbrev Number: 16 (DW_TAG_member)
-    <1cb>   DW_AT_name        : (indirect string, offset: 0xf0): field	
-    <1cf>   DW_AT_decl_file   : 3	
-    <1d0>   DW_AT_decl_line   : 278	
-    <1d2>   DW_AT_type        : <0x120>	
-    <1d6>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1d9>: Abbrev Number: 16 (DW_TAG_member)
-    <1da>   DW_AT_name        : (indirect string, offset: 0x90): bytesperline	
-    <1de>   DW_AT_decl_file   : 3	
-    <1df>   DW_AT_decl_line   : 279	
-    <1e1>   DW_AT_type        : <0x120>	
-    <1e5>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1e8>: Abbrev Number: 16 (DW_TAG_member)
-    <1e9>   DW_AT_name        : (indirect string, offset: 0x5e): sizeimage	
-    <1ed>   DW_AT_decl_file   : 3	
-    <1ee>   DW_AT_decl_line   : 280	
-    <1f0>   DW_AT_type        : <0x120>	
-    <1f4>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1f7>: Abbrev Number: 16 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0x187): colorspace	
-    <1fc>   DW_AT_decl_file   : 3	
-    <1fd>   DW_AT_decl_line   : 281	
-    <1ff>   DW_AT_type        : <0x120>	
-    <203>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><206>: Abbrev Number: 16 (DW_TAG_member)
-    <207>   DW_AT_name        : (indirect string, offset: 0x0): priv	
-    <20b>   DW_AT_decl_file   : 3	
-    <20c>   DW_AT_decl_line   : 282	
-    <20e>   DW_AT_type        : <0x120>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><215>: Abbrev Number: 0
- <1><216>: Abbrev Number: 17 (DW_TAG_array_type)
-    <217>   DW_AT_type        : <0x120>	
-    <21b>   DW_AT_sibling     : <0x226>	
- <2><21f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <220>   DW_AT_type        : <0x63>	
-    <224>   DW_AT_upper_bound : 1	
- <2><225>: Abbrev Number: 0
- <1><226>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <227>   DW_AT_name        : (indirect string, offset: 0x355): v4l2_clip	
-    <22b>   DW_AT_byte_size   : 20	
-    <22c>   DW_AT_decl_file   : 3	
-    <22d>   DW_AT_decl_line   : 745	
-    <22f>   DW_AT_sibling     : <0x250>	
- <2><233>: Abbrev Number: 19 (DW_TAG_member)
-    <234>   DW_AT_name        : c	
-    <236>   DW_AT_decl_file   : 3	
-    <237>   DW_AT_decl_line   : 746	
-    <239>   DW_AT_type        : <0x14b>	
-    <23d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><240>: Abbrev Number: 16 (DW_TAG_member)
-    <241>   DW_AT_name        : (indirect string, offset: 0x382): next	
-    <245>   DW_AT_decl_file   : 3	
-    <246>   DW_AT_decl_line   : 747	
-    <248>   DW_AT_type        : <0x250>	
-    <24c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><24f>: Abbrev Number: 0
- <1><250>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <251>   DW_AT_byte_size   : 4	
-    <252>   DW_AT_type        : <0x226>	
- <1><256>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <257>   DW_AT_name        : (indirect string, offset: 0x116): v4l2_window	
-    <25b>   DW_AT_byte_size   : 40	
-    <25c>   DW_AT_decl_file   : 3	
-    <25d>   DW_AT_decl_line   : 750	
-    <25f>   DW_AT_sibling     : <0x2cb>	
- <2><263>: Abbrev Number: 19 (DW_TAG_member)
-    <264>   DW_AT_name        : w	
-    <266>   DW_AT_decl_file   : 3	
-    <267>   DW_AT_decl_line   : 751	
-    <269>   DW_AT_type        : <0x14b>	
-    <26d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><270>: Abbrev Number: 16 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0xf0): field	
-    <275>   DW_AT_decl_file   : 3	
-    <276>   DW_AT_decl_line   : 752	
-    <278>   DW_AT_type        : <0x120>	
-    <27c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><27f>: Abbrev Number: 16 (DW_TAG_member)
-    <280>   DW_AT_name        : (indirect string, offset: 0x369): chromakey	
-    <284>   DW_AT_decl_file   : 3	
-    <285>   DW_AT_decl_line   : 753	
-    <287>   DW_AT_type        : <0x120>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><28e>: Abbrev Number: 16 (DW_TAG_member)
-    <28f>   DW_AT_name        : (indirect string, offset: 0x37c): clips	
-    <293>   DW_AT_decl_file   : 3	
-    <294>   DW_AT_decl_line   : 754	
-    <296>   DW_AT_type        : <0x250>	
-    <29a>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><29d>: Abbrev Number: 16 (DW_TAG_member)
-    <29e>   DW_AT_name        : (indirect string, offset: 0x10c): clipcount	
-    <2a2>   DW_AT_decl_file   : 3	
-    <2a3>   DW_AT_decl_line   : 755	
-    <2a5>   DW_AT_type        : <0x120>	
-    <2a9>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><2ac>: Abbrev Number: 16 (DW_TAG_member)
-    <2ad>   DW_AT_name        : (indirect string, offset: 0x105): bitmap	
-    <2b1>   DW_AT_decl_file   : 3	
-    <2b2>   DW_AT_decl_line   : 756	
-    <2b4>   DW_AT_type        : <0x6a>	
-    <2b8>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><2bb>: Abbrev Number: 16 (DW_TAG_member)
-    <2bc>   DW_AT_name        : (indirect string, offset: 0x192): global_alpha	
-    <2c0>   DW_AT_decl_file   : 3	
-    <2c1>   DW_AT_decl_line   : 757	
-    <2c3>   DW_AT_type        : <0xff>	
-    <2c7>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><2ca>: Abbrev Number: 0
- <1><2cb>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <2cc>   DW_AT_name        : (indirect string, offset: 0xc9): v4l2_vbi_format	
-    <2d0>   DW_AT_byte_size   : 44	
-    <2d1>   DW_AT_decl_file   : 3	
-    <2d2>   DW_AT_decl_line   : 1541	
-    <2d4>   DW_AT_sibling     : <0x351>	
- <2><2d8>: Abbrev Number: 16 (DW_TAG_member)
-    <2d9>   DW_AT_name        : (indirect string, offset: 0x2b8): sampling_rate	
-    <2dd>   DW_AT_decl_file   : 3	
-    <2de>   DW_AT_decl_line   : 1542	
-    <2e0>   DW_AT_type        : <0x120>	
-    <2e4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2e7>: Abbrev Number: 16 (DW_TAG_member)
-    <2e8>   DW_AT_name        : (indirect string, offset: 0x16f): offset	
-    <2ec>   DW_AT_decl_file   : 3	
-    <2ed>   DW_AT_decl_line   : 1543	
-    <2ef>   DW_AT_type        : <0x120>	
-    <2f3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2f6>: Abbrev Number: 16 (DW_TAG_member)
-    <2f7>   DW_AT_name        : (indirect string, offset: 0xae): samples_per_line	
-    <2fb>   DW_AT_decl_file   : 3	
-    <2fc>   DW_AT_decl_line   : 1544	
-    <2fe>   DW_AT_type        : <0x120>	
-    <302>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><305>: Abbrev Number: 16 (DW_TAG_member)
-    <306>   DW_AT_name        : (indirect string, offset: 0x387): sample_format	
-    <30a>   DW_AT_decl_file   : 3	
-    <30b>   DW_AT_decl_line   : 1545	
-    <30d>   DW_AT_type        : <0x120>	
-    <311>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><314>: Abbrev Number: 16 (DW_TAG_member)
-    <315>   DW_AT_name        : (indirect string, offset: 0x28c): start	
-    <319>   DW_AT_decl_file   : 3	
-    <31a>   DW_AT_decl_line   : 1546	
-    <31c>   DW_AT_type        : <0x351>	
-    <320>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><323>: Abbrev Number: 16 (DW_TAG_member)
-    <324>   DW_AT_name        : (indirect string, offset: 0x31b): count	
-    <328>   DW_AT_decl_file   : 3	
-    <329>   DW_AT_decl_line   : 1547	
-    <32b>   DW_AT_type        : <0x216>	
-    <32f>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><332>: Abbrev Number: 16 (DW_TAG_member)
-    <333>   DW_AT_name        : (indirect string, offset: 0x204): flags	
-    <337>   DW_AT_decl_file   : 3	
-    <338>   DW_AT_decl_line   : 1548	
-    <33a>   DW_AT_type        : <0x120>	
-    <33e>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><341>: Abbrev Number: 16 (DW_TAG_member)
-    <342>   DW_AT_name        : (indirect string, offset: 0x373): reserved	
-    <346>   DW_AT_decl_file   : 3	
-    <347>   DW_AT_decl_line   : 1549	
-    <349>   DW_AT_type        : <0x216>	
-    <34d>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><350>: Abbrev Number: 0
- <1><351>: Abbrev Number: 17 (DW_TAG_array_type)
-    <352>   DW_AT_type        : <0x115>	
-    <356>   DW_AT_sibling     : <0x361>	
- <2><35a>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <35b>   DW_AT_type        : <0x63>	
-    <35f>   DW_AT_upper_bound : 1	
- <2><360>: Abbrev Number: 0
- <1><361>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <362>   DW_AT_name        : (indirect string, offset: 0x1da): v4l2_sliced_vbi_format	
-    <366>   DW_AT_byte_size   : 112	
-    <367>   DW_AT_decl_file   : 3	
-    <368>   DW_AT_decl_line   : 1563	
-    <36a>   DW_AT_sibling     : <0x3ab>	
- <2><36e>: Abbrev Number: 16 (DW_TAG_member)
-    <36f>   DW_AT_name        : (indirect string, offset: 0x2d6): service_set	
-    <373>   DW_AT_decl_file   : 3	
-    <374>   DW_AT_decl_line   : 1564	
-    <376>   DW_AT_type        : <0x10a>	
-    <37a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><37d>: Abbrev Number: 16 (DW_TAG_member)
-    <37e>   DW_AT_name        : (indirect string, offset: 0x340): service_lines	
-    <382>   DW_AT_decl_file   : 3	
-    <383>   DW_AT_decl_line   : 1569	
-    <385>   DW_AT_type        : <0x3ab>	
-    <389>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><38c>: Abbrev Number: 16 (DW_TAG_member)
-    <38d>   DW_AT_name        : (indirect string, offset: 0x9d): io_size	
-    <391>   DW_AT_decl_file   : 3	
-    <392>   DW_AT_decl_line   : 1570	
-    <394>   DW_AT_type        : <0x120>	
-    <398>   DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
- <2><39b>: Abbrev Number: 16 (DW_TAG_member)
-    <39c>   DW_AT_name        : (indirect string, offset: 0x373): reserved	
-    <3a0>   DW_AT_decl_file   : 3	
-    <3a1>   DW_AT_decl_line   : 1571	
-    <3a3>   DW_AT_type        : <0x216>	
-    <3a7>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><3aa>: Abbrev Number: 0
- <1><3ab>: Abbrev Number: 17 (DW_TAG_array_type)
-    <3ac>   DW_AT_type        : <0x10a>	
-    <3b0>   DW_AT_sibling     : <0x3c1>	
- <2><3b4>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3b5>   DW_AT_type        : <0x63>	
-    <3b9>   DW_AT_upper_bound : 1	
- <2><3ba>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3bb>   DW_AT_type        : <0x63>	
-    <3bf>   DW_AT_upper_bound : 23	
- <2><3c0>: Abbrev Number: 0
- <1><3c1>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <3c2>   DW_AT_name        : (indirect string, offset: 0x1c4): v4l2_plane_pix_format	
-    <3c6>   DW_AT_byte_size   : 20	
-    <3c7>   DW_AT_decl_file   : 3	
-    <3c8>   DW_AT_decl_line   : 1664	
-    <3ca>   DW_AT_sibling     : <0x3fc>	
- <2><3ce>: Abbrev Number: 16 (DW_TAG_member)
-    <3cf>   DW_AT_name        : (indirect string, offset: 0x5e): sizeimage	
-    <3d3>   DW_AT_decl_file   : 3	
-    <3d4>   DW_AT_decl_line   : 1665	
-    <3d6>   DW_AT_type        : <0x120>	
-    <3da>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><3dd>: Abbrev Number: 16 (DW_TAG_member)
-    <3de>   DW_AT_name        : (indirect string, offset: 0x90): bytesperline	
-    <3e2>   DW_AT_decl_file   : 3	
-    <3e3>   DW_AT_decl_line   : 1666	
-    <3e5>   DW_AT_type        : <0x10a>	
-    <3e9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3ec>: Abbrev Number: 16 (DW_TAG_member)
-    <3ed>   DW_AT_name        : (indirect string, offset: 0x373): reserved	
-    <3f1>   DW_AT_decl_file   : 3	
-    <3f2>   DW_AT_decl_line   : 1667	
-    <3f4>   DW_AT_type        : <0x3fc>	
-    <3f8>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><3fb>: Abbrev Number: 0
- <1><3fc>: Abbrev Number: 17 (DW_TAG_array_type)
-    <3fd>   DW_AT_type        : <0x10a>	
-    <401>   DW_AT_sibling     : <0x40c>	
- <2><405>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <406>   DW_AT_type        : <0x63>	
-    <40a>   DW_AT_upper_bound : 6	
- <2><40b>: Abbrev Number: 0
- <1><40c>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <40d>   DW_AT_name        : (indirect string, offset: 0x19f): v4l2_pix_format_mplane	
-    <411>   DW_AT_byte_size   : 192	
-    <412>   DW_AT_decl_file   : 3	
-    <413>   DW_AT_decl_line   : 1680	
-    <415>   DW_AT_sibling     : <0x494>	
- <2><419>: Abbrev Number: 16 (DW_TAG_member)
-    <41a>   DW_AT_name        : (indirect string, offset: 0x122): width	
-    <41e>   DW_AT_decl_file   : 3	
-    <41f>   DW_AT_decl_line   : 1681	
-    <421>   DW_AT_type        : <0x120>	
-    <425>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><428>: Abbrev Number: 16 (DW_TAG_member)
-    <429>   DW_AT_name        : (indirect string, offset: 0x226): height	
-    <42d>   DW_AT_decl_file   : 3	
-    <42e>   DW_AT_decl_line   : 1682	
-    <430>   DW_AT_type        : <0x120>	
-    <434>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><437>: Abbrev Number: 16 (DW_TAG_member)
-    <438>   DW_AT_name        : (indirect string, offset: 0x84): pixelformat	
-    <43c>   DW_AT_decl_file   : 3	
-    <43d>   DW_AT_decl_line   : 1683	
-    <43f>   DW_AT_type        : <0x120>	
-    <443>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><446>: Abbrev Number: 16 (DW_TAG_member)
-    <447>   DW_AT_name        : (indirect string, offset: 0xf0): field	
-    <44b>   DW_AT_decl_file   : 3	
-    <44c>   DW_AT_decl_line   : 1684	
-    <44e>   DW_AT_type        : <0x120>	
-    <452>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><455>: Abbrev Number: 16 (DW_TAG_member)
-    <456>   DW_AT_name        : (indirect string, offset: 0x187): colorspace	
-    <45a>   DW_AT_decl_file   : 3	
-    <45b>   DW_AT_decl_line   : 1685	
-    <45d>   DW_AT_type        : <0x120>	
-    <461>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><464>: Abbrev Number: 16 (DW_TAG_member)
-    <465>   DW_AT_name        : (indirect string, offset: 0x35f): plane_fmt	
-    <469>   DW_AT_decl_file   : 3	
-    <46a>   DW_AT_decl_line   : 1687	
-    <46c>   DW_AT_type        : <0x494>	
-    <470>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><473>: Abbrev Number: 16 (DW_TAG_member)
-    <474>   DW_AT_name        : (indirect string, offset: 0x23a): num_planes	
-    <478>   DW_AT_decl_file   : 3	
-    <479>   DW_AT_decl_line   : 1688	
-    <47b>   DW_AT_type        : <0xff>	
-    <47f>   DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
- <2><483>: Abbrev Number: 16 (DW_TAG_member)
-    <484>   DW_AT_name        : (indirect string, offset: 0x373): reserved	
-    <488>   DW_AT_decl_file   : 3	
-    <489>   DW_AT_decl_line   : 1689	
-    <48b>   DW_AT_type        : <0x4a4>	
-    <48f>   DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
- <2><493>: Abbrev Number: 0
- <1><494>: Abbrev Number: 17 (DW_TAG_array_type)
-    <495>   DW_AT_type        : <0x3c1>	
-    <499>   DW_AT_sibling     : <0x4a4>	
- <2><49d>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <49e>   DW_AT_type        : <0x63>	
-    <4a2>   DW_AT_upper_bound : 7	
- <2><4a3>: Abbrev Number: 0
- <1><4a4>: Abbrev Number: 17 (DW_TAG_array_type)
-    <4a5>   DW_AT_type        : <0xff>	
-    <4a9>   DW_AT_sibling     : <0x4b4>	
- <2><4ad>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <4ae>   DW_AT_type        : <0x63>	
-    <4b2>   DW_AT_upper_bound : 10	
- <2><4b3>: Abbrev Number: 0
- <1><4b4>: Abbrev Number: 20 (DW_TAG_union_type)
-    <4b5>   DW_AT_byte_size   : 200	
-    <4b6>   DW_AT_decl_file   : 3	
-    <4b7>   DW_AT_decl_line   : 1704	
-    <4b9>   DW_AT_sibling     : <0x506>	
- <2><4bd>: Abbrev Number: 21 (DW_TAG_member)
-    <4be>   DW_AT_name        : pix	
-    <4c2>   DW_AT_decl_file   : 3	
-    <4c3>   DW_AT_decl_line   : 1705	
-    <4c5>   DW_AT_type        : <0x190>	
- <2><4c9>: Abbrev Number: 22 (DW_TAG_member)
-    <4ca>   DW_AT_name        : (indirect string, offset: 0x5): pix_mp	
-    <4ce>   DW_AT_decl_file   : 3	
-    <4cf>   DW_AT_decl_line   : 1706	
-    <4d1>   DW_AT_type        : <0x40c>	
- <2><4d5>: Abbrev Number: 21 (DW_TAG_member)
-    <4d6>   DW_AT_name        : win	
-    <4da>   DW_AT_decl_file   : 3	
-    <4db>   DW_AT_decl_line   : 1707	
-    <4dd>   DW_AT_type        : <0x256>	
- <2><4e1>: Abbrev Number: 21 (DW_TAG_member)
-    <4e2>   DW_AT_name        : vbi	
-    <4e6>   DW_AT_decl_file   : 3	
-    <4e7>   DW_AT_decl_line   : 1708	
-    <4e9>   DW_AT_type        : <0x2cb>	
- <2><4ed>: Abbrev Number: 22 (DW_TAG_member)
-    <4ee>   DW_AT_name        : (indirect string, offset: 0x1f1): sliced	
-    <4f2>   DW_AT_decl_file   : 3	
-    <4f3>   DW_AT_decl_line   : 1709	
-    <4f5>   DW_AT_type        : <0x361>	
- <2><4f9>: Abbrev Number: 22 (DW_TAG_member)
-    <4fa>   DW_AT_name        : (indirect string, offset: 0xf6): raw_data	
-    <4fe>   DW_AT_decl_file   : 3	
-    <4ff>   DW_AT_decl_line   : 1710	
-    <501>   DW_AT_type        : <0x506>	
- <2><505>: Abbrev Number: 0
- <1><506>: Abbrev Number: 17 (DW_TAG_array_type)
-    <507>   DW_AT_type        : <0xff>	
-    <50b>   DW_AT_sibling     : <0x516>	
- <2><50f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <510>   DW_AT_type        : <0x63>	
-    <514>   DW_AT_upper_bound : 199	
- <2><515>: Abbrev Number: 0
- <1><516>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <517>   DW_AT_name        : (indirect string, offset: 0x25c): v4l2_format	
-    <51b>   DW_AT_byte_size   : 204	
-    <51c>   DW_AT_decl_file   : 3	
-    <51d>   DW_AT_decl_line   : 1702	
-    <51f>   DW_AT_sibling     : <0x542>	
- <2><523>: Abbrev Number: 16 (DW_TAG_member)
-    <524>   DW_AT_name        : (indirect string, offset: 0x221): type	
-    <528>   DW_AT_decl_file   : 3	
-    <529>   DW_AT_decl_line   : 1703	
-    <52b>   DW_AT_type        : <0x120>	
-    <52f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><532>: Abbrev Number: 19 (DW_TAG_member)
-    <533>   DW_AT_name        : fmt	
-    <537>   DW_AT_decl_file   : 3	
-    <538>   DW_AT_decl_line   : 1711	
-    <53a>   DW_AT_type        : <0x4b4>	
-    <53e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><541>: Abbrev Number: 0
- <1><542>: Abbrev Number: 12 (DW_TAG_typedef)
-    <543>   DW_AT_name        : (indirect string, offset: 0x2a5): struct_v4l2_format	
-    <547>   DW_AT_decl_file   : 4	
-    <548>   DW_AT_decl_line   : 42	
-    <549>   DW_AT_type        : <0x516>	
- <1><54d>: Abbrev Number: 23 (DW_TAG_variable)
-    <54e>   DW_AT_name        : (indirect string, offset: 0x176): current_wordsize	
-    <552>   DW_AT_decl_file   : 5	
-    <553>   DW_AT_decl_line   : 757	
-    <555>   DW_AT_type        : <0x47>	
-    <559>   DW_AT_external    : 1	
-    <55a>   DW_AT_declaration : 1	
- <1><55b>: Abbrev Number: 23 (DW_TAG_variable)
-    <55c>   DW_AT_name        : (indirect string, offset: 0x34e): sysent	
-    <560>   DW_AT_decl_file   : 5	
-    <561>   DW_AT_decl_line   : 892	
-    <563>   DW_AT_type        : <0xed>	
-    <567>   DW_AT_external    : 1	
-    <568>   DW_AT_declaration : 1	
- <1><569>: Abbrev Number: 23 (DW_TAG_variable)
-    <56a>   DW_AT_name        : (indirect string, offset: 0x282): nsyscalls	
-    <56e>   DW_AT_decl_file   : 5	
-    <56f>   DW_AT_decl_line   : 903	
-    <571>   DW_AT_type        : <0x47>	
-    <575>   DW_AT_external    : 1	
-    <576>   DW_AT_declaration : 1	
- <1><577>: Abbrev Number: 24 (DW_TAG_variable)
-    <578>   DW_AT_name        : (indirect string, offset: 0x15e): mpers_target_var	
-    <57c>   DW_AT_decl_file   : 4	
-    <57d>   DW_AT_decl_line   : 47	
-    <57e>   DW_AT_type        : <0x542>	
-    <582>   DW_AT_external    : 1	
-    <583>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><589>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_format.d2 b/mpers-m32/struct_v4l2_format.d2
deleted file mode 100644
index 7da0e0e..0000000
--- a/mpers-m32/struct_v4l2_format.d2
+++ /dev/null
@@ -1,712 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1f8): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x71): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x128): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x1b6): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x292): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x22d): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x20a): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x155): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2fd): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7b): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x2c6): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x34e): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x30f): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbf): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x68): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa5): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x321): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2d0): _Bool
-<1><ff>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2f8): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><10a>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2f2): __u16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><115>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x315): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><120>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xff): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><12b>
-Abbrev Number: 13 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x32f): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x14b>
-<2><138>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x268): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><13e>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x245): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><144>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xd9): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><14b>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 205
-DW_AT_sibling     : <0x190>
-<2><157>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2cb): left
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 206
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><165>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : top
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 207
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><173>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x122): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 208
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><181>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x226): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 209
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><190>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2e2): v4l2_pix_format
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_sibling     : <0x216>
-<2><19d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x122): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 275
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x226): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 276
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x84): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 277
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ca>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf0): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 278
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><1d9>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x90): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 279
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1e8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5e): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 280
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1f7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x187): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 281
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><206>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): priv
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 282
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><216>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x120>
-DW_AT_sibling     : <0x226>
-<2><21f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><226>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x355): v4l2_clip
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 745
-DW_AT_sibling     : <0x250>
-<2><233>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : c
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 746
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><240>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x382): next
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 747
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><250>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x226>
-<1><256>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x116): v4l2_window
-DW_AT_byte_size   : 40
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 750
-DW_AT_sibling     : <0x2cb>
-<2><263>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : w
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 751
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><270>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf0): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 752
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><27f>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x369): chromakey
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 753
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><28e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x37c): clips
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 754
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><29d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10c): clipcount
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 755
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><2ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x105): bitmap
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 756
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><2bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x192): global_alpha
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><2cb>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc9): v4l2_vbi_format
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1541
-DW_AT_sibling     : <0x351>
-<2><2d8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2b8): sampling_rate
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1542
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2e7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16f): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1543
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><2f6>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xae): samples_per_line
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1544
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><305>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x387): sample_format
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1545
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><314>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28c): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1546
-DW_AT_type        : <0x351>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><323>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x31b): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1547
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><332>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x204): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1548
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><341>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x373): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1549
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><351>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x115>
-DW_AT_sibling     : <0x361>
-<2><35a>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><361>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1da): v4l2_sliced_vbi_format
-DW_AT_byte_size   : 112
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1563
-DW_AT_sibling     : <0x3ab>
-<2><36e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d6): service_set
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1564
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><37d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x340): service_lines
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1569
-DW_AT_type        : <0x3ab>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><38c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9d): io_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1570
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
-<2><39b>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x373): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1571
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<1><3ab>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x3c1>
-<2><3b4>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<2><3ba>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 23
-<1><3c1>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1c4): v4l2_plane_pix_format
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1664
-DW_AT_sibling     : <0x3fc>
-<2><3ce>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5e): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1665
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><3dd>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x90): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1666
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3ec>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x373): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1667
-DW_AT_type        : <0x3fc>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<1><3fc>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x40c>
-<2><405>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 6
-<1><40c>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x19f): v4l2_pix_format_mplane
-DW_AT_byte_size   : 192
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1680
-DW_AT_sibling     : <0x494>
-<2><419>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x122): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1681
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><428>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x226): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1682
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><437>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x84): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1683
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><446>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf0): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1684
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><455>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x187): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1685
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><464>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x35f): plane_fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1687
-DW_AT_type        : <0x494>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><473>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23a): num_planes
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1688
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
-<2><483>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x373): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1689
-DW_AT_type        : <0x4a4>
-DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
-<1><494>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x3c1>
-DW_AT_sibling     : <0x4a4>
-<2><49d>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 7
-<1><4a4>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x4b4>
-<2><4ad>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 10
-<1><4b4>
-Abbrev Number: 20 (DW_TAG_union_type)
-DW_AT_byte_size   : 200
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1704
-DW_AT_sibling     : <0x506>
-<2><4bd>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : pix
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1705
-DW_AT_type        : <0x190>
-<2><4c9>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5): pix_mp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1706
-DW_AT_type        : <0x40c>
-<2><4d5>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : win
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1707
-DW_AT_type        : <0x256>
-<2><4e1>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : vbi
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1708
-DW_AT_type        : <0x2cb>
-<2><4ed>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f1): sliced
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1709
-DW_AT_type        : <0x361>
-<2><4f9>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf6): raw_data
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1710
-DW_AT_type        : <0x506>
-<1><506>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x516>
-<2><50f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 199
-<1><516>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x25c): v4l2_format
-DW_AT_byte_size   : 204
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1702
-DW_AT_sibling     : <0x542>
-<2><523>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x221): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1703
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><532>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1711
-DW_AT_type        : <0x4b4>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><542>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2a5): struct_v4l2_format
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x516>
-<1><54d>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x176): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><55b>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x34e): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><569>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x282): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><577>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x15e): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x542>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_v4l2_format.h b/mpers-m32/struct_v4l2_format.h
index 303e626..bb62d39 100644
--- a/mpers-m32/struct_v4l2_format.h
+++ b/mpers-m32/struct_v4l2_format.h
@@ -55,8 +55,8 @@
 } ATTRIBUTE_PACKED vbi;
 struct {
 uint16_t service_set;
-uint16_t service_lines[24];
-unsigned char mpers_filler_2[50];
+uint16_t service_lines[2][24];
+unsigned char mpers_filler_2[2];
 uint32_t io_size;
 uint32_t reserved[2];
 } ATTRIBUTE_PACKED sliced;
diff --git a/mpers-m32/struct_v4l2_framebuffer.c b/mpers-m32/struct_v4l2_framebuffer.c
index c6f7e3e..4884034 100644
--- a/mpers-m32/struct_v4l2_framebuffer.c
+++ b/mpers-m32/struct_v4l2_framebuffer.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_framebuffer.d1 b/mpers-m32/struct_v4l2_framebuffer.d1
deleted file mode 100644
index c1fd329..0000000
--- a/mpers-m32/struct_v4l2_framebuffer.d1
+++ /dev/null
@@ -1,269 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x23e (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x11d): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x229): mpers-m32/struct_v4l2_framebuffer.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1c3): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x277): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x25e): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x21b): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xbf): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5e): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x17b): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xa8): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x26e): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xcd): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x212): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x1b3): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xdf): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x117): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x208): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x283): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x77): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x18e): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x71): _Bool	
- <1><ff>: Abbrev Number: 12 (DW_TAG_typedef)
-    <100>   DW_AT_name        : (indirect string, offset: 0x48): __u32	
-    <104>   DW_AT_decl_file   : 2	
-    <105>   DW_AT_decl_line   : 26	
-    <106>   DW_AT_type        : <0x47>	
- <1><10a>: Abbrev Number: 13 (DW_TAG_enumeration_type)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x165): v4l2_preemphasis	
-    <10f>   DW_AT_byte_size   : 4	
-    <110>   DW_AT_decl_file   : 6	
-    <111>   DW_AT_decl_line   : 763	
-    <113>   DW_AT_sibling     : <0x12a>	
- <2><117>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <118>   DW_AT_name        : (indirect string, offset: 0x18): V4L2_PREEMPHASIS_DISABLED	
-    <11c>   DW_AT_const_value : 0	
- <2><11d>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <11e>   DW_AT_name        : (indirect string, offset: 0x91): V4L2_PREEMPHASIS_50_uS	
-    <122>   DW_AT_const_value : 1	
- <2><123>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <124>   DW_AT_name        : (indirect string, offset: 0x19c): V4L2_PREEMPHASIS_75_uS	
-    <128>   DW_AT_const_value : 2	
- <2><129>: Abbrev Number: 0
- <1><12a>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x4e): v4l2_pix_format	
-    <12f>   DW_AT_byte_size   : 32	
-    <130>   DW_AT_decl_file   : 3	
-    <131>   DW_AT_decl_line   : 274	
-    <133>   DW_AT_sibling     : <0x1b0>	
- <2><137>: Abbrev Number: 16 (DW_TAG_member)
-    <138>   DW_AT_name        : (indirect string, offset: 0x258): width	
-    <13c>   DW_AT_decl_file   : 3	
-    <13d>   DW_AT_decl_line   : 275	
-    <13f>   DW_AT_type        : <0xff>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><146>: Abbrev Number: 16 (DW_TAG_member)
-    <147>   DW_AT_name        : (indirect string, offset: 0xe6): height	
-    <14b>   DW_AT_decl_file   : 3	
-    <14c>   DW_AT_decl_line   : 276	
-    <14e>   DW_AT_type        : <0xff>	
-    <152>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><155>: Abbrev Number: 16 (DW_TAG_member)
-    <156>   DW_AT_name        : (indirect string, offset: 0xfe): pixelformat	
-    <15a>   DW_AT_decl_file   : 3	
-    <15b>   DW_AT_decl_line   : 277	
-    <15d>   DW_AT_type        : <0xff>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><164>: Abbrev Number: 16 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x268): field	
-    <169>   DW_AT_decl_file   : 3	
-    <16a>   DW_AT_decl_line   : 278	
-    <16c>   DW_AT_type        : <0xff>	
-    <170>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><173>: Abbrev Number: 16 (DW_TAG_member)
-    <174>   DW_AT_name        : (indirect string, offset: 0x10a): bytesperline	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 279	
-    <17b>   DW_AT_type        : <0xff>	
-    <17f>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><182>: Abbrev Number: 16 (DW_TAG_member)
-    <183>   DW_AT_name        : (indirect string, offset: 0x1fe): sizeimage	
-    <187>   DW_AT_decl_file   : 3	
-    <188>   DW_AT_decl_line   : 280	
-    <18a>   DW_AT_type        : <0xff>	
-    <18e>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><191>: Abbrev Number: 16 (DW_TAG_member)
-    <192>   DW_AT_name        : (indirect string, offset: 0x1b8): colorspace	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 281	
-    <199>   DW_AT_type        : <0xff>	
-    <19d>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1a0>: Abbrev Number: 16 (DW_TAG_member)
-    <1a1>   DW_AT_name        : (indirect string, offset: 0x43): priv	
-    <1a5>   DW_AT_decl_file   : 3	
-    <1a6>   DW_AT_decl_line   : 282	
-    <1a8>   DW_AT_type        : <0xff>	
-    <1ac>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1af>: Abbrev Number: 0
- <1><1b0>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <1b1>   DW_AT_name        : (indirect string, offset: 0x32): v4l2_framebuffer	
-    <1b5>   DW_AT_byte_size   : 44	
-    <1b6>   DW_AT_decl_file   : 3	
-    <1b7>   DW_AT_decl_line   : 719	
-    <1b9>   DW_AT_sibling     : <0x1fa>	
- <2><1bd>: Abbrev Number: 16 (DW_TAG_member)
-    <1be>   DW_AT_name        : (indirect string, offset: 0x24d): capability	
-    <1c2>   DW_AT_decl_file   : 3	
-    <1c3>   DW_AT_decl_line   : 720	
-    <1c5>   DW_AT_type        : <0xff>	
-    <1c9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1cc>: Abbrev Number: 16 (DW_TAG_member)
-    <1cd>   DW_AT_name        : (indirect string, offset: 0x188): flags	
-    <1d1>   DW_AT_decl_file   : 3	
-    <1d2>   DW_AT_decl_line   : 721	
-    <1d4>   DW_AT_type        : <0xff>	
-    <1d8>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1db>: Abbrev Number: 16 (DW_TAG_member)
-    <1dc>   DW_AT_name        : (indirect string, offset: 0x176): base	
-    <1e0>   DW_AT_decl_file   : 3	
-    <1e1>   DW_AT_decl_line   : 724	
-    <1e3>   DW_AT_type        : <0x6a>	
-    <1e7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ea>: Abbrev Number: 17 (DW_TAG_member)
-    <1eb>   DW_AT_name        : fmt	
-    <1ef>   DW_AT_decl_file   : 3	
-    <1f0>   DW_AT_decl_line   : 725	
-    <1f2>   DW_AT_type        : <0x12a>	
-    <1f6>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1f9>: Abbrev Number: 0
- <1><1fa>: Abbrev Number: 12 (DW_TAG_typedef)
-    <1fb>   DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_framebuffer	
-    <1ff>   DW_AT_decl_file   : 4	
-    <200>   DW_AT_decl_line   : 43	
-    <201>   DW_AT_type        : <0x1b0>	
- <1><205>: Abbrev Number: 18 (DW_TAG_variable)
-    <206>   DW_AT_name        : (indirect string, offset: 0xed): current_wordsize	
-    <20a>   DW_AT_decl_file   : 5	
-    <20b>   DW_AT_decl_line   : 757	
-    <20d>   DW_AT_type        : <0x47>	
-    <211>   DW_AT_external    : 1	
-    <212>   DW_AT_declaration : 1	
- <1><213>: Abbrev Number: 18 (DW_TAG_variable)
-    <214>   DW_AT_name        : (indirect string, offset: 0xdf): sysent	
-    <218>   DW_AT_decl_file   : 5	
-    <219>   DW_AT_decl_line   : 892	
-    <21b>   DW_AT_type        : <0xed>	
-    <21f>   DW_AT_external    : 1	
-    <220>   DW_AT_declaration : 1	
- <1><221>: Abbrev Number: 18 (DW_TAG_variable)
-    <222>   DW_AT_name        : (indirect string, offset: 0x1f4): nsyscalls	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 903	
-    <229>   DW_AT_type        : <0x47>	
-    <22d>   DW_AT_external    : 1	
-    <22e>   DW_AT_declaration : 1	
- <1><22f>: Abbrev Number: 19 (DW_TAG_variable)
-    <230>   DW_AT_name        : (indirect string, offset: 0x80): mpers_target_var	
-    <234>   DW_AT_decl_file   : 4	
-    <235>   DW_AT_decl_line   : 47	
-    <236>   DW_AT_type        : <0x1fa>	
-    <23a>   DW_AT_external    : 1	
-    <23b>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><241>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_framebuffer.d2 b/mpers-m32/struct_v4l2_framebuffer.d2
deleted file mode 100644
index 905a179..0000000
--- a/mpers-m32/struct_v4l2_framebuffer.d2
+++ /dev/null
@@ -1,301 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x277): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x25e): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x21b): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xbf): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5e): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x17b): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa8): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x26e): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xcd): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x212): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b3): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xdf): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x117): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x208): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x283): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x77): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x18e): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x71): _Bool
-<1><ff>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x48): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><10a>
-Abbrev Number: 13 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x165): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x12a>
-<2><117>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x18): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><11d>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x91): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><123>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x19c): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><12a>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x4e): v4l2_pix_format
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_sibling     : <0x1b0>
-<2><137>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x258): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 275
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><146>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe6): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 276
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><155>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfe): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 277
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><164>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x268): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 278
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><173>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10a): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 279
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><182>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fe): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 280
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><191>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b8): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 281
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1a0>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x43): priv
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 282
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><1b0>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x32): v4l2_framebuffer
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 719
-DW_AT_sibling     : <0x1fa>
-<2><1bd>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x24d): capability
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 720
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1cc>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x188): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 721
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1db>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x176): base
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 724
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ea>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 725
-DW_AT_type        : <0x12a>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1fa>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_framebuffer
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x1b0>
-<1><205>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xed): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><213>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xdf): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><221>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1f4): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><22f>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x80): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1fa>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_v4l2_input.c b/mpers-m32/struct_v4l2_input.c
index fe0ffcd..850ef00 100644
--- a/mpers-m32/struct_v4l2_input.c
+++ b/mpers-m32/struct_v4l2_input.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_input.d1 b/mpers-m32/struct_v4l2_input.d1
deleted file mode 100644
index e276cb1..0000000
--- a/mpers-m32/struct_v4l2_input.d1
+++ /dev/null
@@ -1,271 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x243 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x108): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x41): mpers-m32/struct_v4l2_input.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x198): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x230): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x205): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1e2): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa7): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x23c): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x161): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x90): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x227): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb5): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1d9): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x193): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xc7): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x102): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x86): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x24f): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x66): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x185): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x2c): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x1f0): __u8	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 20	
-    <104>   DW_AT_type        : <0x39>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x32): __u32	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 26	
-    <10f>   DW_AT_type        : <0x47>	
- <1><113>: Abbrev Number: 11 (DW_TAG_typedef)
-    <114>   DW_AT_name        : (indirect string, offset: 0x1d3): __u64	
-    <118>   DW_AT_decl_file   : 2	
-    <119>   DW_AT_decl_line   : 30	
-    <11a>   DW_AT_type        : <0x4e>	
- <1><11e>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x150): v4l2_preemphasis	
-    <123>   DW_AT_byte_size   : 4	
-    <124>   DW_AT_decl_file   : 6	
-    <125>   DW_AT_decl_line   : 763	
-    <127>   DW_AT_sibling     : <0x13e>	
- <2><12b>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x12): V4L2_PREEMPHASIS_DISABLED	
-    <130>   DW_AT_const_value : 0	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x16e): V4L2_PREEMPHASIS_50_uS	
-    <136>   DW_AT_const_value : 1	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0xdf): V4L2_PREEMPHASIS_75_uS	
-    <13c>   DW_AT_const_value : 2	
- <2><13d>: Abbrev Number: 0
- <1><13e>: Abbrev Number: 14 (DW_TAG_array_type)
-    <13f>   DW_AT_type        : <0xfd>	
-    <143>   DW_AT_sibling     : <0x14e>	
- <2><147>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <148>   DW_AT_type        : <0x63>	
-    <14c>   DW_AT_upper_bound : 31	
- <2><14d>: Abbrev Number: 0
- <1><14e>: Abbrev Number: 14 (DW_TAG_array_type)
-    <14f>   DW_AT_type        : <0x108>	
-    <153>   DW_AT_sibling     : <0x15e>	
- <2><157>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <158>   DW_AT_type        : <0x63>	
-    <15c>   DW_AT_upper_bound : 2	
- <2><15d>: Abbrev Number: 0
- <1><15e>: Abbrev Number: 16 (DW_TAG_typedef)
-    <15f>   DW_AT_name        : (indirect string, offset: 0xf6): v4l2_std_id	
-    <163>   DW_AT_decl_file   : 3	
-    <164>   DW_AT_decl_line   : 826	
-    <166>   DW_AT_type        : <0x113>	
- <1><16a>: Abbrev Number: 17 (DW_TAG_structure_type)
-    <16b>   DW_AT_name        : (indirect string, offset: 0x20f): v4l2_input	
-    <16f>   DW_AT_byte_size   : 76	
-    <170>   DW_AT_decl_file   : 3	
-    <171>   DW_AT_decl_line   : 1145	
-    <173>   DW_AT_sibling     : <0x1ff>	
- <2><177>: Abbrev Number: 18 (DW_TAG_member)
-    <178>   DW_AT_name        : (indirect string, offset: 0x1fa): index	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 1146	
-    <17f>   DW_AT_type        : <0x108>	
-    <183>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><186>: Abbrev Number: 18 (DW_TAG_member)
-    <187>   DW_AT_name        : (indirect string, offset: 0x1f5): name	
-    <18b>   DW_AT_decl_file   : 3	
-    <18c>   DW_AT_decl_line   : 1147	
-    <18e>   DW_AT_type        : <0x13e>	
-    <192>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><195>: Abbrev Number: 18 (DW_TAG_member)
-    <196>   DW_AT_name        : (indirect string, offset: 0x200): type	
-    <19a>   DW_AT_decl_file   : 3	
-    <19b>   DW_AT_decl_line   : 1148	
-    <19d>   DW_AT_type        : <0x108>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1a4>: Abbrev Number: 18 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x258): audioset	
-    <1a9>   DW_AT_decl_file   : 3	
-    <1aa>   DW_AT_decl_line   : 1149	
-    <1ac>   DW_AT_type        : <0x108>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1b3>: Abbrev Number: 18 (DW_TAG_member)
-    <1b4>   DW_AT_name        : (indirect string, offset: 0x6f): tuner	
-    <1b8>   DW_AT_decl_file   : 3	
-    <1b9>   DW_AT_decl_line   : 1150	
-    <1bb>   DW_AT_type        : <0x108>	
-    <1bf>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1c2>: Abbrev Number: 19 (DW_TAG_member)
-    <1c3>   DW_AT_name        : std	
-    <1c7>   DW_AT_decl_file   : 3	
-    <1c8>   DW_AT_decl_line   : 1151	
-    <1ca>   DW_AT_type        : <0x15e>	
-    <1ce>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1d1>: Abbrev Number: 18 (DW_TAG_member)
-    <1d2>   DW_AT_name        : (indirect string, offset: 0x5f): status	
-    <1d6>   DW_AT_decl_file   : 3	
-    <1d7>   DW_AT_decl_line   : 1152	
-    <1d9>   DW_AT_type        : <0x108>	
-    <1dd>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1e0>: Abbrev Number: 18 (DW_TAG_member)
-    <1e1>   DW_AT_name        : (indirect string, offset: 0x21a): capabilities	
-    <1e5>   DW_AT_decl_file   : 3	
-    <1e6>   DW_AT_decl_line   : 1153	
-    <1e8>   DW_AT_type        : <0x108>	
-    <1ec>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><1ef>: Abbrev Number: 18 (DW_TAG_member)
-    <1f0>   DW_AT_name        : (indirect string, offset: 0x38): reserved	
-    <1f4>   DW_AT_decl_file   : 3	
-    <1f5>   DW_AT_decl_line   : 1154	
-    <1f7>   DW_AT_type        : <0x14e>	
-    <1fb>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1fe>: Abbrev Number: 0
- <1><1ff>: Abbrev Number: 11 (DW_TAG_typedef)
-    <200>   DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_input	
-    <204>   DW_AT_decl_file   : 4	
-    <205>   DW_AT_decl_line   : 44	
-    <206>   DW_AT_type        : <0x16a>	
- <1><20a>: Abbrev Number: 20 (DW_TAG_variable)
-    <20b>   DW_AT_name        : (indirect string, offset: 0xce): current_wordsize	
-    <20f>   DW_AT_decl_file   : 5	
-    <210>   DW_AT_decl_line   : 757	
-    <212>   DW_AT_type        : <0x47>	
-    <216>   DW_AT_external    : 1	
-    <217>   DW_AT_declaration : 1	
- <1><218>: Abbrev Number: 20 (DW_TAG_variable)
-    <219>   DW_AT_name        : (indirect string, offset: 0xc7): sysent	
-    <21d>   DW_AT_decl_file   : 5	
-    <21e>   DW_AT_decl_line   : 892	
-    <220>   DW_AT_type        : <0xeb>	
-    <224>   DW_AT_external    : 1	
-    <225>   DW_AT_declaration : 1	
- <1><226>: Abbrev Number: 20 (DW_TAG_variable)
-    <227>   DW_AT_name        : (indirect string, offset: 0x1c9): nsyscalls	
-    <22b>   DW_AT_decl_file   : 5	
-    <22c>   DW_AT_decl_line   : 903	
-    <22e>   DW_AT_type        : <0x47>	
-    <232>   DW_AT_external    : 1	
-    <233>   DW_AT_declaration : 1	
- <1><234>: Abbrev Number: 21 (DW_TAG_variable)
-    <235>   DW_AT_name        : (indirect string, offset: 0x75): mpers_target_var	
-    <239>   DW_AT_decl_file   : 4	
-    <23a>   DW_AT_decl_line   : 47	
-    <23b>   DW_AT_type        : <0x1ff>	
-    <23f>   DW_AT_external    : 1	
-    <240>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><246>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_input.d2 b/mpers-m32/struct_v4l2_input.d2
deleted file mode 100644
index b4d121d..0000000
--- a/mpers-m32/struct_v4l2_input.d2
+++ /dev/null
@@ -1,304 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x230): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x205): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e2): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa7): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x23c): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x161): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x90): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x227): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb5): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d9): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x193): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc7): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x102): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x86): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x24f): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x66): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x185): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2c): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1f0): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x32): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><113>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d3): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><11e>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x150): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x13e>
-<2><12b>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x12): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x16e): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xdf): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><13e>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0xfd>
-DW_AT_sibling     : <0x14e>
-<2><147>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 31
-<1><14e>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x15e>
-<2><157>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 2
-<1><15e>
-Abbrev Number: 16 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf6): v4l2_std_id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 826
-DW_AT_type        : <0x113>
-<1><16a>
-Abbrev Number: 17 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x20f): v4l2_input
-DW_AT_byte_size   : 76
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1145
-DW_AT_sibling     : <0x1ff>
-<2><177>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fa): index
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1146
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><186>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f5): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1147
-DW_AT_type        : <0x13e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><195>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x200): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1148
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1a4>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x258): audioset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1149
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1b3>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6f): tuner
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1150
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1c2>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : std
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1151
-DW_AT_type        : <0x15e>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1d1>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5f): status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1152
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1e0>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21a): capabilities
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1153
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><1ef>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x38): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1154
-DW_AT_type        : <0x14e>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<1><1ff>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_input
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x16a>
-<1><20a>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xce): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><218>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc7): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><226>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1c9): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><234>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x75): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1ff>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/struct_v4l2_standard.c b/mpers-m32/struct_v4l2_standard.c
index 3e4dbc4..49d08d6 100644
--- a/mpers-m32/struct_v4l2_standard.c
+++ b/mpers-m32/struct_v4l2_standard.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-m32/struct_v4l2_standard.d1 b/mpers-m32/struct_v4l2_standard.d1
deleted file mode 100644
index 7dbc1da..0000000
--- a/mpers-m32/struct_v4l2_standard.d1
+++ /dev/null
@@ -1,272 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x23e (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x137): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x3d): mpers-m32/struct_v4l2_standard.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1c7): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x24d): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x71): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x21c): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd6): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5e): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x190): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x244): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xe4): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x213): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x1c2): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xf6): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x131): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xb5): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x265): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x90): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x1b4): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x28): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x22a): __u8	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 20	
-    <104>   DW_AT_type        : <0x39>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x2e): __u32	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 26	
-    <10f>   DW_AT_type        : <0x47>	
- <1><113>: Abbrev Number: 11 (DW_TAG_typedef)
-    <114>   DW_AT_name        : (indirect string, offset: 0x20d): __u64	
-    <118>   DW_AT_decl_file   : 2	
-    <119>   DW_AT_decl_line   : 30	
-    <11a>   DW_AT_type        : <0x4e>	
- <1><11e>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x17f): v4l2_preemphasis	
-    <123>   DW_AT_byte_size   : 4	
-    <124>   DW_AT_decl_file   : 6	
-    <125>   DW_AT_decl_line   : 763	
-    <127>   DW_AT_sibling     : <0x13e>	
- <2><12b>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <12c>   DW_AT_name        : (indirect string, offset: 0xe): V4L2_PREEMPHASIS_DISABLED	
-    <130>   DW_AT_const_value : 0	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x19d): V4L2_PREEMPHASIS_50_uS	
-    <136>   DW_AT_const_value : 1	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0x10e): V4L2_PREEMPHASIS_75_uS	
-    <13c>   DW_AT_const_value : 2	
- <2><13d>: Abbrev Number: 0
- <1><13e>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <13f>   DW_AT_name        : (indirect string, offset: 0x99): v4l2_fract	
-    <143>   DW_AT_byte_size   : 8	
-    <144>   DW_AT_decl_file   : 3	
-    <145>   DW_AT_decl_line   : 212	
-    <146>   DW_AT_sibling     : <0x167>	
- <2><14a>: Abbrev Number: 7 (DW_TAG_member)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x23a): numerator	
-    <14f>   DW_AT_decl_file   : 3	
-    <150>   DW_AT_decl_line   : 213	
-    <151>   DW_AT_type        : <0x108>	
-    <155>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><158>: Abbrev Number: 7 (DW_TAG_member)
-    <159>   DW_AT_name        : (indirect string, offset: 0x26e): denominator	
-    <15d>   DW_AT_decl_file   : 3	
-    <15e>   DW_AT_decl_line   : 214	
-    <15f>   DW_AT_type        : <0x108>	
-    <163>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><166>: Abbrev Number: 0
- <1><167>: Abbrev Number: 14 (DW_TAG_array_type)
-    <168>   DW_AT_type        : <0x108>	
-    <16c>   DW_AT_sibling     : <0x177>	
- <2><170>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <171>   DW_AT_type        : <0x63>	
-    <175>   DW_AT_upper_bound : 3	
- <2><176>: Abbrev Number: 0
- <1><177>: Abbrev Number: 16 (DW_TAG_typedef)
-    <178>   DW_AT_name        : (indirect string, offset: 0x125): v4l2_std_id	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 826	
-    <17f>   DW_AT_type        : <0x113>	
- <1><183>: Abbrev Number: 17 (DW_TAG_structure_type)
-    <184>   DW_AT_name        : (indirect string, offset: 0x0): v4l2_standard	
-    <188>   DW_AT_byte_size   : 64	
-    <189>   DW_AT_decl_file   : 3	
-    <18a>   DW_AT_decl_line   : 954	
-    <18c>   DW_AT_sibling     : <0x1ea>	
- <2><190>: Abbrev Number: 18 (DW_TAG_member)
-    <191>   DW_AT_name        : (indirect string, offset: 0x234): index	
-    <195>   DW_AT_decl_file   : 3	
-    <196>   DW_AT_decl_line   : 955	
-    <198>   DW_AT_type        : <0x108>	
-    <19c>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><19f>: Abbrev Number: 19 (DW_TAG_member)
-    <1a0>   DW_AT_name        : id	
-    <1a3>   DW_AT_decl_file   : 3	
-    <1a4>   DW_AT_decl_line   : 956	
-    <1a6>   DW_AT_type        : <0x177>	
-    <1aa>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1ad>: Abbrev Number: 18 (DW_TAG_member)
-    <1ae>   DW_AT_name        : (indirect string, offset: 0x22f): name	
-    <1b2>   DW_AT_decl_file   : 3	
-    <1b3>   DW_AT_decl_line   : 957	
-    <1b5>   DW_AT_type        : <0x1ea>	
-    <1b9>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1bc>: Abbrev Number: 18 (DW_TAG_member)
-    <1bd>   DW_AT_name        : (indirect string, offset: 0x259): frameperiod	
-    <1c1>   DW_AT_decl_file   : 3	
-    <1c2>   DW_AT_decl_line   : 958	
-    <1c4>   DW_AT_type        : <0x13e>	
-    <1c8>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1cb>: Abbrev Number: 18 (DW_TAG_member)
-    <1cc>   DW_AT_name        : (indirect string, offset: 0x1f8): framelines	
-    <1d0>   DW_AT_decl_file   : 3	
-    <1d1>   DW_AT_decl_line   : 959	
-    <1d3>   DW_AT_type        : <0x108>	
-    <1d7>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1da>: Abbrev Number: 18 (DW_TAG_member)
-    <1db>   DW_AT_name        : (indirect string, offset: 0x34): reserved	
-    <1df>   DW_AT_decl_file   : 3	
-    <1e0>   DW_AT_decl_line   : 960	
-    <1e2>   DW_AT_type        : <0x167>	
-    <1e6>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1e9>: Abbrev Number: 0
- <1><1ea>: Abbrev Number: 14 (DW_TAG_array_type)
-    <1eb>   DW_AT_type        : <0xfd>	
-    <1ef>   DW_AT_sibling     : <0x1fa>	
- <2><1f3>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <1f4>   DW_AT_type        : <0x63>	
-    <1f8>   DW_AT_upper_bound : 23	
- <2><1f9>: Abbrev Number: 0
- <1><1fa>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1fb>   DW_AT_name        : (indirect string, offset: 0x7b): struct_v4l2_standard	
-    <1ff>   DW_AT_decl_file   : 4	
-    <200>   DW_AT_decl_line   : 45	
-    <201>   DW_AT_type        : <0x183>	
- <1><205>: Abbrev Number: 20 (DW_TAG_variable)
-    <206>   DW_AT_name        : (indirect string, offset: 0xfd): current_wordsize	
-    <20a>   DW_AT_decl_file   : 5	
-    <20b>   DW_AT_decl_line   : 757	
-    <20d>   DW_AT_type        : <0x47>	
-    <211>   DW_AT_external    : 1	
-    <212>   DW_AT_declaration : 1	
- <1><213>: Abbrev Number: 20 (DW_TAG_variable)
-    <214>   DW_AT_name        : (indirect string, offset: 0xf6): sysent	
-    <218>   DW_AT_decl_file   : 5	
-    <219>   DW_AT_decl_line   : 892	
-    <21b>   DW_AT_type        : <0xeb>	
-    <21f>   DW_AT_external    : 1	
-    <220>   DW_AT_declaration : 1	
- <1><221>: Abbrev Number: 20 (DW_TAG_variable)
-    <222>   DW_AT_name        : (indirect string, offset: 0x203): nsyscalls	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 903	
-    <229>   DW_AT_type        : <0x47>	
-    <22d>   DW_AT_external    : 1	
-    <22e>   DW_AT_declaration : 1	
- <1><22f>: Abbrev Number: 21 (DW_TAG_variable)
-    <230>   DW_AT_name        : (indirect string, offset: 0xa4): mpers_target_var	
-    <234>   DW_AT_decl_file   : 4	
-    <235>   DW_AT_decl_line   : 47	
-    <236>   DW_AT_type        : <0x1fa>	
-    <23a>   DW_AT_external    : 1	
-    <23b>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><241>: Abbrev Number: 0
-
diff --git a/mpers-m32/struct_v4l2_standard.d2 b/mpers-m32/struct_v4l2_standard.d2
deleted file mode 100644
index 7952169..0000000
--- a/mpers-m32/struct_v4l2_standard.d2
+++ /dev/null
@@ -1,304 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x24d): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x71): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x21c): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd6): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5e): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x190): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x244): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe4): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x213): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1c2): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf6): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x131): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb5): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x265): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x90): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b4): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x28): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x22a): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2e): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><113>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x20d): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><11e>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x17f): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x13e>
-<2><12b>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xe): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x19d): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x10e): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><13e>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x99): v4l2_fract
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 212
-DW_AT_sibling     : <0x167>
-<2><14a>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23a): numerator
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 213
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><158>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26e): denominator
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 214
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><167>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x177>
-<2><170>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><177>
-Abbrev Number: 16 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x125): v4l2_std_id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 826
-DW_AT_type        : <0x113>
-<1><183>
-Abbrev Number: 17 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): v4l2_standard
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 954
-DW_AT_sibling     : <0x1ea>
-<2><190>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x234): index
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 955
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><19f>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 956
-DW_AT_type        : <0x177>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1ad>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22f): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 957
-DW_AT_type        : <0x1ea>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><1bc>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x259): frameperiod
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 958
-DW_AT_type        : <0x13e>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1cb>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f8): framelines
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 959
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1da>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x34): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 960
-DW_AT_type        : <0x167>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<1><1ea>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0xfd>
-DW_AT_sibling     : <0x1fa>
-<2><1f3>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 23
-<1><1fa>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x7b): struct_v4l2_standard
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x183>
-<1><205>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xfd): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><213>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf6): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><221>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x203): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><22f>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa4): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1fa>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/sysinfo_t.c b/mpers-m32/sysinfo_t.c
index 6e656cf..c34a80f 100644
--- a/mpers-m32/sysinfo_t.c
+++ b/mpers-m32/sysinfo_t.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/sysinfo_t.d1 b/mpers-m32/sysinfo_t.d1
deleted file mode 100644
index a873cdc..0000000
--- a/mpers-m32/sysinfo_t.d1
+++ /dev/null
@@ -1,285 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x25d (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xf3): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xb8): mpers-m32/sysinfo_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1f6): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ea): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1cf): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1ae): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x98): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x30): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x13b): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x81): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1e1): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xa6): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x193): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x156): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_array_type)
-    <72>   DW_AT_type        : <0x6a>	
-    <76>   DW_AT_sibling     : <0x81>	
- <2><7a>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <7b>   DW_AT_type        : <0x63>	
-    <7f>   DW_AT_upper_bound : 7	
- <2><80>: Abbrev Number: 0
- <1><81>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <82>   DW_AT_byte_size   : 4	
-    <83>   DW_AT_type        : <0x87>	
- <1><87>: Abbrev Number: 7 (DW_TAG_const_type)
-    <88>   DW_AT_type        : <0x6a>	
- <1><8c>: Abbrev Number: 8 (DW_TAG_typedef)
-    <8d>   DW_AT_name        : (indirect string, offset: 0x43): __kernel_long_t	
-    <91>   DW_AT_decl_file   : 1	
-    <92>   DW_AT_decl_line   : 14	
-    <93>   DW_AT_type        : <0x55>	
- <1><97>: Abbrev Number: 8 (DW_TAG_typedef)
-    <98>   DW_AT_name        : (indirect string, offset: 0x178): __kernel_ulong_t	
-    <9c>   DW_AT_decl_file   : 1	
-    <9d>   DW_AT_decl_line   : 15	
-    <9e>   DW_AT_type        : <0x5c>	
- <1><a2>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a3>   DW_AT_name        : (indirect string, offset: 0xce): sysent	
-    <a7>   DW_AT_byte_size   : 20	
-    <a8>   DW_AT_decl_file   : 2	
-    <a9>   DW_AT_decl_line   : 4	
-    <aa>   DW_AT_sibling     : <0xf5>	
- <2><ae>: Abbrev Number: 10 (DW_TAG_member)
-    <af>   DW_AT_name        : (indirect string, offset: 0xed): nargs	
-    <b3>   DW_AT_decl_file   : 2	
-    <b4>   DW_AT_decl_line   : 5	
-    <b5>   DW_AT_type        : <0x47>	
-    <b9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><bc>: Abbrev Number: 10 (DW_TAG_member)
-    <bd>   DW_AT_name        : (indirect string, offset: 0x77): sys_flags	
-    <c1>   DW_AT_decl_file   : 2	
-    <c2>   DW_AT_decl_line   : 6	
-    <c3>   DW_AT_type        : <0x2b>	
-    <c7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ca>: Abbrev Number: 11 (DW_TAG_member)
-    <cb>   DW_AT_name        : sen	
-    <cf>   DW_AT_decl_file   : 2	
-    <d0>   DW_AT_decl_line   : 7	
-    <d1>   DW_AT_type        : <0x2b>	
-    <d5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d8>: Abbrev Number: 10 (DW_TAG_member)
-    <d9>   DW_AT_name        : (indirect string, offset: 0x227): sys_func	
-    <dd>   DW_AT_decl_file   : 2	
-    <de>   DW_AT_decl_line   : 8	
-    <df>   DW_AT_type        : <0x100>	
-    <e3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e6>: Abbrev Number: 10 (DW_TAG_member)
-    <e7>   DW_AT_name        : (indirect string, offset: 0x53): sys_name	
-    <eb>   DW_AT_decl_file   : 2	
-    <ec>   DW_AT_decl_line   : 9	
-    <ed>   DW_AT_type        : <0x81>	
-    <f1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><f4>: Abbrev Number: 0
- <1><f5>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <f6>   DW_AT_type        : <0x2b>	
-    <fa>   DW_AT_sibling     : <0x100>	
- <2><fe>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><ff>: Abbrev Number: 0
- <1><100>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <101>   DW_AT_byte_size   : 4	
-    <102>   DW_AT_type        : <0xf5>	
- <1><106>: Abbrev Number: 8 (DW_TAG_typedef)
-    <107>   DW_AT_name        : (indirect string, offset: 0x148): struct_sysent	
-    <10b>   DW_AT_decl_file   : 2	
-    <10c>   DW_AT_decl_line   : 10	
-    <10d>   DW_AT_type        : <0xa2>	
- <1><111>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <112>   DW_AT_byte_size   : 4	
-    <113>   DW_AT_type        : <0x117>	
- <1><117>: Abbrev Number: 7 (DW_TAG_const_type)
-    <118>   DW_AT_type        : <0x106>	
- <1><11c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <11d>   DW_AT_byte_size   : 1	
-    <11e>   DW_AT_encoding    : 2	(boolean)
-    <11f>   DW_AT_name        : (indirect string, offset: 0xc): _Bool	
- <1><123>: Abbrev Number: 8 (DW_TAG_typedef)
-    <124>   DW_AT_name        : (indirect string, offset: 0x6): __u16	
-    <128>   DW_AT_decl_file   : 3	
-    <129>   DW_AT_decl_line   : 23	
-    <12a>   DW_AT_type        : <0x40>	
- <1><12e>: Abbrev Number: 8 (DW_TAG_typedef)
-    <12f>   DW_AT_name        : (indirect string, offset: 0x12): __u32	
-    <133>   DW_AT_decl_file   : 3	
-    <134>   DW_AT_decl_line   : 26	
-    <135>   DW_AT_type        : <0x47>	
- <1><139>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <13a>   DW_AT_name        : (indirect string, offset: 0x19c): sysinfo	
-    <13e>   DW_AT_byte_size   : 64	
-    <13f>   DW_AT_decl_file   : 4	
-    <140>   DW_AT_decl_line   : 7	
-    <141>   DW_AT_sibling     : <0x209>	
- <2><145>: Abbrev Number: 10 (DW_TAG_member)
-    <146>   DW_AT_name        : (indirect string, offset: 0xe6): uptime	
-    <14a>   DW_AT_decl_file   : 4	
-    <14b>   DW_AT_decl_line   : 8	
-    <14c>   DW_AT_type        : <0x8c>	
-    <150>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><153>: Abbrev Number: 10 (DW_TAG_member)
-    <154>   DW_AT_name        : (indirect string, offset: 0x18): loads	
-    <158>   DW_AT_decl_file   : 4	
-    <159>   DW_AT_decl_line   : 9	
-    <15a>   DW_AT_type        : <0x209>	
-    <15e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><161>: Abbrev Number: 10 (DW_TAG_member)
-    <162>   DW_AT_name        : (indirect string, offset: 0x27): totalram	
-    <166>   DW_AT_decl_file   : 4	
-    <167>   DW_AT_decl_line   : 10	
-    <168>   DW_AT_type        : <0x97>	
-    <16c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><16f>: Abbrev Number: 10 (DW_TAG_member)
-    <170>   DW_AT_name        : (indirect string, offset: 0x1d9): freeram	
-    <174>   DW_AT_decl_file   : 4	
-    <175>   DW_AT_decl_line   : 11	
-    <176>   DW_AT_type        : <0x97>	
-    <17a>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><17d>: Abbrev Number: 10 (DW_TAG_member)
-    <17e>   DW_AT_name        : (indirect string, offset: 0x15b): sharedram	
-    <182>   DW_AT_decl_file   : 4	
-    <183>   DW_AT_decl_line   : 12	
-    <184>   DW_AT_type        : <0x97>	
-    <188>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><18b>: Abbrev Number: 10 (DW_TAG_member)
-    <18c>   DW_AT_name        : (indirect string, offset: 0x5c): bufferram	
-    <190>   DW_AT_decl_file   : 4	
-    <191>   DW_AT_decl_line   : 13	
-    <192>   DW_AT_type        : <0x97>	
-    <196>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><199>: Abbrev Number: 10 (DW_TAG_member)
-    <19a>   DW_AT_name        : (indirect string, offset: 0x1a4): totalswap	
-    <19e>   DW_AT_decl_file   : 4	
-    <19f>   DW_AT_decl_line   : 14	
-    <1a0>   DW_AT_type        : <0x97>	
-    <1a4>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1a7>: Abbrev Number: 10 (DW_TAG_member)
-    <1a8>   DW_AT_name        : (indirect string, offset: 0x16f): freeswap	
-    <1ac>   DW_AT_decl_file   : 4	
-    <1ad>   DW_AT_decl_line   : 15	
-    <1ae>   DW_AT_type        : <0x97>	
-    <1b2>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1b5>: Abbrev Number: 10 (DW_TAG_member)
-    <1b6>   DW_AT_name        : (indirect string, offset: 0x0): procs	
-    <1ba>   DW_AT_decl_file   : 4	
-    <1bb>   DW_AT_decl_line   : 16	
-    <1bc>   DW_AT_type        : <0x123>	
-    <1c0>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1c3>: Abbrev Number: 11 (DW_TAG_member)
-    <1c4>   DW_AT_name        : pad	
-    <1c8>   DW_AT_decl_file   : 4	
-    <1c9>   DW_AT_decl_line   : 17	
-    <1ca>   DW_AT_type        : <0x123>	
-    <1ce>   DW_AT_data_member_location: 2 byte block: 23 2a 	(DW_OP_plus_uconst: 42)
- <2><1d1>: Abbrev Number: 10 (DW_TAG_member)
-    <1d2>   DW_AT_name        : (indirect string, offset: 0x165): totalhigh	
-    <1d6>   DW_AT_decl_file   : 4	
-    <1d7>   DW_AT_decl_line   : 18	
-    <1d8>   DW_AT_type        : <0x97>	
-    <1dc>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1df>: Abbrev Number: 10 (DW_TAG_member)
-    <1e0>   DW_AT_name        : (indirect string, offset: 0x1e): freehigh	
-    <1e4>   DW_AT_decl_file   : 4	
-    <1e5>   DW_AT_decl_line   : 19	
-    <1e6>   DW_AT_type        : <0x97>	
-    <1ea>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1ed>: Abbrev Number: 10 (DW_TAG_member)
-    <1ee>   DW_AT_name        : (indirect string, offset: 0x1bc): mem_unit	
-    <1f2>   DW_AT_decl_file   : 4	
-    <1f3>   DW_AT_decl_line   : 20	
-    <1f4>   DW_AT_type        : <0x12e>	
-    <1f8>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><1fb>: Abbrev Number: 11 (DW_TAG_member)
-    <1fc>   DW_AT_name        : _f	
-    <1ff>   DW_AT_decl_file   : 4	
-    <200>   DW_AT_decl_line   : 21	
-    <201>   DW_AT_type        : <0x71>	
-    <205>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><208>: Abbrev Number: 0
- <1><209>: Abbrev Number: 4 (DW_TAG_array_type)
-    <20a>   DW_AT_type        : <0x97>	
-    <20e>   DW_AT_sibling     : <0x219>	
- <2><212>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <213>   DW_AT_type        : <0x63>	
-    <217>   DW_AT_upper_bound : 2	
- <2><218>: Abbrev Number: 0
- <1><219>: Abbrev Number: 8 (DW_TAG_typedef)
-    <21a>   DW_AT_name        : (indirect string, offset: 0x1c5): sysinfo_t	
-    <21e>   DW_AT_decl_file   : 5	
-    <21f>   DW_AT_decl_line   : 37	
-    <220>   DW_AT_type        : <0x139>	
- <1><224>: Abbrev Number: 14 (DW_TAG_variable)
-    <225>   DW_AT_name        : (indirect string, offset: 0xd5): current_wordsize	
-    <229>   DW_AT_decl_file   : 6	
-    <22a>   DW_AT_decl_line   : 757	
-    <22c>   DW_AT_type        : <0x47>	
-    <230>   DW_AT_external    : 1	
-    <231>   DW_AT_declaration : 1	
- <1><232>: Abbrev Number: 14 (DW_TAG_variable)
-    <233>   DW_AT_name        : (indirect string, offset: 0xce): sysent	
-    <237>   DW_AT_decl_file   : 6	
-    <238>   DW_AT_decl_line   : 892	
-    <23a>   DW_AT_type        : <0x111>	
-    <23e>   DW_AT_external    : 1	
-    <23f>   DW_AT_declaration : 1	
- <1><240>: Abbrev Number: 14 (DW_TAG_variable)
-    <241>   DW_AT_name        : (indirect string, offset: 0x189): nsyscalls	
-    <245>   DW_AT_decl_file   : 6	
-    <246>   DW_AT_decl_line   : 903	
-    <248>   DW_AT_type        : <0x47>	
-    <24c>   DW_AT_external    : 1	
-    <24d>   DW_AT_declaration : 1	
- <1><24e>: Abbrev Number: 15 (DW_TAG_variable)
-    <24f>   DW_AT_name        : (indirect string, offset: 0x66): mpers_target_var	
-    <253>   DW_AT_decl_file   : 5	
-    <254>   DW_AT_decl_line   : 38	
-    <255>   DW_AT_type        : <0x219>	
-    <259>   DW_AT_external    : 1	
-    <25a>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><260>: Abbrev Number: 0
-
diff --git a/mpers-m32/sysinfo_t.d2 b/mpers-m32/sysinfo_t.d2
deleted file mode 100644
index a3c16b3..0000000
--- a/mpers-m32/sysinfo_t.d2
+++ /dev/null
@@ -1,320 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ea): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1cf): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ae): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x98): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x30): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x13b): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x81): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e1): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa6): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x193): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x156): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x81>
-<2><7a>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 7
-<1><81>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x87>
-<1><87>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><8c>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x43): __kernel_long_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x55>
-<1><97>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x178): __kernel_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 15
-DW_AT_type        : <0x5c>
-<1><a2>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xce): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf5>
-<2><ae>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xed): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><bc>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x77): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ca>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d8>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x227): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x100>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x53): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x81>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f5>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x100>
-<2><fe>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><100>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf5>
-<1><106>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x148): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xa2>
-<1><111>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x117>
-<1><117>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x106>
-<1><11c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xc): _Bool
-<1><123>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6): __u16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><12e>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x12): __u32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><139>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x19c): sysinfo
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_sibling     : <0x209>
-<2><145>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe6): uptime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x8c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><153>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18): loads
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x209>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><161>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x27): totalram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><16f>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d9): freeram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 11
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><17d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15b): sharedram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 12
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><18b>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5c): bufferram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 13
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><199>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a4): totalswap
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1a7>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16f): freeswap
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 15
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1b5>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): procs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 16
-DW_AT_type        : <0x123>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1c3>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : pad
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 17
-DW_AT_type        : <0x123>
-DW_AT_data_member_location: 2 byte block: 23 2a 	(DW_OP_plus_uconst: 42)
-<2><1d1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x165): totalhigh
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 18
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1df>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e): freehigh
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 19
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1ed>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bc): mem_unit
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x12e>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><1fb>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : _f
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 21
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<1><209>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x97>
-DW_AT_sibling     : <0x219>
-<2><212>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 2
-<1><219>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c5): sysinfo_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x139>
-<1><224>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd5): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><232>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xce): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x111>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><240>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x189): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><24e>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x66): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x219>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-m32/time_t.c b/mpers-m32/time_t.c
index f2a0e40..834d93d 100644
--- a/mpers-m32/time_t.c
+++ b/mpers-m32/time_t.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/mpers-m32/time_t.d1 b/mpers-m32/time_t.d1
deleted file mode 100644
index 41aef14..0000000
--- a/mpers-m32/time_t.d1
+++ /dev/null
@@ -1,165 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x14c (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x14f): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x32): mpers-m32/time_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x7f): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x123): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x138): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0xec): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xb5): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x110): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x142): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x68): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0xca): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x56): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x12f): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0xfa): __time_t	
-    <6f>   DW_AT_decl_file   : 1	
-    <70>   DW_AT_decl_line   : 139	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 2 (DW_TAG_base_type)
-    <76>   DW_AT_byte_size   : 1	
-    <77>   DW_AT_encoding    : 6	(signed char)
-    <78>   DW_AT_name        : (indirect string, offset: 0xb0): char	
- <1><7c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xc3): time_t	
-    <81>   DW_AT_decl_file   : 2	
-    <82>   DW_AT_decl_line   : 75	
-    <83>   DW_AT_type        : <0x6a>	
- <1><87>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <88>   DW_AT_byte_size   : 4	
-    <89>   DW_AT_type        : <0x8d>	
- <1><8d>: Abbrev Number: 6 (DW_TAG_const_type)
-    <8e>   DW_AT_type        : <0x75>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0x103): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 3	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x10a): nargs	
-    <a3>   DW_AT_decl_file   : 3	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0xdc): sys_flags	
-    <b1>   DW_AT_decl_file   : 3	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 3	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0xd3): sys_func	
-    <cd>   DW_AT_decl_file   : 3	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x11): sys_name	
-    <db>   DW_AT_decl_file   : 3	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x87>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0x1a): struct_sysent	
-    <fb>   DW_AT_decl_file   : 3	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 6 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0xe6): _Bool	
- <1><113>: Abbrev Number: 12 (DW_TAG_variable)
-    <114>   DW_AT_name        : (indirect string, offset: 0x0): current_wordsize	
-    <118>   DW_AT_decl_file   : 4	
-    <119>   DW_AT_decl_line   : 757	
-    <11b>   DW_AT_type        : <0x47>	
-    <11f>   DW_AT_external    : 1	
-    <120>   DW_AT_declaration : 1	
- <1><121>: Abbrev Number: 12 (DW_TAG_variable)
-    <122>   DW_AT_name        : (indirect string, offset: 0x103): sysent	
-    <126>   DW_AT_decl_file   : 4	
-    <127>   DW_AT_decl_line   : 892	
-    <129>   DW_AT_type        : <0x101>	
-    <12d>   DW_AT_external    : 1	
-    <12e>   DW_AT_declaration : 1	
- <1><12f>: Abbrev Number: 12 (DW_TAG_variable)
-    <130>   DW_AT_name        : (indirect string, offset: 0x28): nsyscalls	
-    <134>   DW_AT_decl_file   : 4	
-    <135>   DW_AT_decl_line   : 903	
-    <137>   DW_AT_type        : <0x47>	
-    <13b>   DW_AT_external    : 1	
-    <13c>   DW_AT_declaration : 1	
- <1><13d>: Abbrev Number: 13 (DW_TAG_variable)
-    <13e>   DW_AT_name        : (indirect string, offset: 0x45): mpers_target_var	
-    <142>   DW_AT_decl_file   : 5	
-    <143>   DW_AT_decl_line   : 31	
-    <144>   DW_AT_type        : <0x7c>	
-    <148>   DW_AT_external    : 1	
-    <149>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><14f>: Abbrev Number: 0
-
diff --git a/mpers-m32/time_t.d2 b/mpers-m32/time_t.d2
deleted file mode 100644
index 476aa5e..0000000
--- a/mpers-m32/time_t.d2
+++ /dev/null
@@ -1,181 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x123): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x138): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xec): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xb5): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x110): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x142): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x68): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xca): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x56): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12f): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xfa): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0xb0): char
-<1><7c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xc3): time_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 75
-DW_AT_type        : <0x6a>
-<1><87>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x8d>
-<1><8d>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x75>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x103): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10a): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xdc): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd3): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1a): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xe6): _Bool
-<1><113>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x0): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><121>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x103): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><12f>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x28): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><13d>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x45): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x7c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/timespec_t.c b/mpers-m32/timespec_t.c
index c5171fd..ac6ccab 100644
--- a/mpers-m32/timespec_t.c
+++ b/mpers-m32/timespec_t.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
diff --git a/mpers-m32/timespec_t.d1 b/mpers-m32/timespec_t.d1
deleted file mode 100644
index 96885df..0000000
--- a/mpers-m32/timespec_t.d1
+++ /dev/null
@@ -1,189 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x180 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xb0): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x0): mpers-m32/timespec_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x118): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x18f): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x17c): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x163): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x69): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x19b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0xf8): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x52): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x186): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x77): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x153): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0xa1): __time_t	
-    <6f>   DW_AT_decl_file   : 1	
-    <70>   DW_AT_decl_line   : 139	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x1b7): __syscall_slong_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 175	
-    <7c>   DW_AT_type        : <0x55>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x113): char	
- <1><87>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <88>   DW_AT_name        : (indirect string, offset: 0x3f): timespec	
-    <8c>   DW_AT_byte_size   : 8	
-    <8d>   DW_AT_decl_file   : 2	
-    <8e>   DW_AT_decl_line   : 120	
-    <8f>   DW_AT_sibling     : <0xb0>	
- <2><93>: Abbrev Number: 6 (DW_TAG_member)
-    <94>   DW_AT_name        : (indirect string, offset: 0x15c): tv_sec	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 122	
-    <9a>   DW_AT_type        : <0x6a>	
-    <9e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a1>: Abbrev Number: 6 (DW_TAG_member)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x2e): tv_nsec	
-    <a6>   DW_AT_decl_file   : 2	
-    <a7>   DW_AT_decl_line   : 123	
-    <a8>   DW_AT_type        : <0x75>	
-    <ac>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><af>: Abbrev Number: 0
- <1><b0>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <b1>   DW_AT_byte_size   : 4	
-    <b2>   DW_AT_type        : <0xb6>	
- <1><b6>: Abbrev Number: 8 (DW_TAG_const_type)
-    <b7>   DW_AT_type        : <0x80>	
- <1><bb>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <bc>   DW_AT_name        : (indirect string, offset: 0x89): sysent	
-    <c0>   DW_AT_byte_size   : 20	
-    <c1>   DW_AT_decl_file   : 3	
-    <c2>   DW_AT_decl_line   : 4	
-    <c3>   DW_AT_sibling     : <0x10e>	
- <2><c7>: Abbrev Number: 6 (DW_TAG_member)
-    <c8>   DW_AT_name        : (indirect string, offset: 0xaa): nargs	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 5	
-    <ce>   DW_AT_type        : <0x47>	
-    <d2>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><d5>: Abbrev Number: 6 (DW_TAG_member)
-    <d6>   DW_AT_name        : (indirect string, offset: 0x48): sys_flags	
-    <da>   DW_AT_decl_file   : 3	
-    <db>   DW_AT_decl_line   : 6	
-    <dc>   DW_AT_type        : <0x2b>	
-    <e0>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><e3>: Abbrev Number: 9 (DW_TAG_member)
-    <e4>   DW_AT_name        : sen	
-    <e8>   DW_AT_decl_file   : 3	
-    <e9>   DW_AT_decl_line   : 7	
-    <ea>   DW_AT_type        : <0x2b>	
-    <ee>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><f1>: Abbrev Number: 6 (DW_TAG_member)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x1ae): sys_func	
-    <f6>   DW_AT_decl_file   : 3	
-    <f7>   DW_AT_decl_line   : 8	
-    <f8>   DW_AT_type        : <0x119>	
-    <fc>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><ff>: Abbrev Number: 6 (DW_TAG_member)
-    <100>   DW_AT_name        : (indirect string, offset: 0x36): sys_name	
-    <104>   DW_AT_decl_file   : 3	
-    <105>   DW_AT_decl_line   : 9	
-    <106>   DW_AT_type        : <0xb0>	
-    <10a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><10d>: Abbrev Number: 0
- <1><10e>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <10f>   DW_AT_type        : <0x2b>	
-    <113>   DW_AT_sibling     : <0x119>	
- <2><117>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><118>: Abbrev Number: 0
- <1><119>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <11a>   DW_AT_byte_size   : 4	
-    <11b>   DW_AT_type        : <0x10e>	
- <1><11f>: Abbrev Number: 4 (DW_TAG_typedef)
-    <120>   DW_AT_name        : (indirect string, offset: 0x105): struct_sysent	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 10	
-    <126>   DW_AT_type        : <0xbb>	
- <1><12a>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <12b>   DW_AT_byte_size   : 4	
-    <12c>   DW_AT_type        : <0x130>	
- <1><130>: Abbrev Number: 8 (DW_TAG_const_type)
-    <131>   DW_AT_type        : <0x11f>	
- <1><135>: Abbrev Number: 2 (DW_TAG_base_type)
-    <136>   DW_AT_byte_size   : 1	
-    <137>   DW_AT_encoding    : 2	(boolean)
-    <138>   DW_AT_name        : (indirect string, offset: 0x28): _Bool	
- <1><13c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <13d>   DW_AT_name        : (indirect string, offset: 0x171): timespec_t	
-    <141>   DW_AT_decl_file   : 4	
-    <142>   DW_AT_decl_line   : 31	
-    <143>   DW_AT_type        : <0x87>	
- <1><147>: Abbrev Number: 12 (DW_TAG_variable)
-    <148>   DW_AT_name        : (indirect string, offset: 0x90): current_wordsize	
-    <14c>   DW_AT_decl_file   : 5	
-    <14d>   DW_AT_decl_line   : 757	
-    <14f>   DW_AT_type        : <0x47>	
-    <153>   DW_AT_external    : 1	
-    <154>   DW_AT_declaration : 1	
- <1><155>: Abbrev Number: 12 (DW_TAG_variable)
-    <156>   DW_AT_name        : (indirect string, offset: 0x89): sysent	
-    <15a>   DW_AT_decl_file   : 5	
-    <15b>   DW_AT_decl_line   : 892	
-    <15d>   DW_AT_type        : <0x12a>	
-    <161>   DW_AT_external    : 1	
-    <162>   DW_AT_declaration : 1	
- <1><163>: Abbrev Number: 12 (DW_TAG_variable)
-    <164>   DW_AT_name        : (indirect string, offset: 0x149): nsyscalls	
-    <168>   DW_AT_decl_file   : 5	
-    <169>   DW_AT_decl_line   : 903	
-    <16b>   DW_AT_type        : <0x47>	
-    <16f>   DW_AT_external    : 1	
-    <170>   DW_AT_declaration : 1	
- <1><171>: Abbrev Number: 13 (DW_TAG_variable)
-    <172>   DW_AT_name        : (indirect string, offset: 0x17): mpers_target_var	
-    <176>   DW_AT_decl_file   : 4	
-    <177>   DW_AT_decl_line   : 33	
-    <178>   DW_AT_type        : <0x13c>	
-    <17c>   DW_AT_external    : 1	
-    <17d>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><183>: Abbrev Number: 0
-
diff --git a/mpers-m32/timespec_t.d2 b/mpers-m32/timespec_t.d2
deleted file mode 100644
index 6e0b859..0000000
--- a/mpers-m32/timespec_t.d2
+++ /dev/null
@@ -1,208 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x18f): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x17c): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x163): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x69): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x19b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf8): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x52): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x186): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x77): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x153): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xa1): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b7): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x55>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x113): char
-<1><87>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x3f): timespec
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 120
-DW_AT_sibling     : <0xb0>
-<2><93>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15c): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 122
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a1>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e): tv_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 123
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><b0>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xb6>
-<1><b6>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><bb>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x89): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x10e>
-<2><c7>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xaa): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><d5>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x48): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><e3>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><f1>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ae): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x119>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><ff>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x36): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xb0>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><10e>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x119>
-<2><117>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><119>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x10e>
-<1><11f>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x105): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xbb>
-<1><12a>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x130>
-<1><130>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x11f>
-<1><135>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x28): _Bool
-<1><13c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x171): timespec_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x87>
-<1><147>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x90): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><155>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x89): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x12a>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><163>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x149): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><171>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x13c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/timeval_t.c b/mpers-m32/timeval_t.c
index 5d867b5..36574eb 100644
--- a/mpers-m32/timeval_t.c
+++ b/mpers-m32/timeval_t.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-m32/timeval_t.d1 b/mpers-m32/timeval_t.d1
deleted file mode 100644
index 3472dfb..0000000
--- a/mpers-m32/timeval_t.d1
+++ /dev/null
@@ -1,189 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x180 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xbb): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x6): mpers-m32/timeval_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x141): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ad): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x19a): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x18c): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x74): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x1c): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x10b): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x5d): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1a4): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x82): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x17c): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0xac): __time_t	
-    <6f>   DW_AT_decl_file   : 1	
-    <70>   DW_AT_decl_line   : 139	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x12b): __suseconds_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 141	
-    <7c>   DW_AT_type        : <0x55>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x126): char	
- <1><87>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <88>   DW_AT_name        : (indirect string, offset: 0x103): timeval	
-    <8c>   DW_AT_byte_size   : 8	
-    <8d>   DW_AT_decl_file   : 2	
-    <8e>   DW_AT_decl_line   : 30	
-    <8f>   DW_AT_sibling     : <0xb0>	
- <2><93>: Abbrev Number: 6 (DW_TAG_member)
-    <94>   DW_AT_name        : (indirect string, offset: 0x185): tv_sec	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 32	
-    <9a>   DW_AT_type        : <0x6a>	
-    <9e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a1>: Abbrev Number: 6 (DW_TAG_member)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x139): tv_usec	
-    <a6>   DW_AT_decl_file   : 2	
-    <a7>   DW_AT_decl_line   : 33	
-    <a8>   DW_AT_type        : <0x75>	
-    <ac>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><af>: Abbrev Number: 0
- <1><b0>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <b1>   DW_AT_byte_size   : 4	
-    <b2>   DW_AT_type        : <0xb6>	
- <1><b6>: Abbrev Number: 8 (DW_TAG_const_type)
-    <b7>   DW_AT_type        : <0x80>	
- <1><bb>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <bc>   DW_AT_name        : (indirect string, offset: 0x94): sysent	
-    <c0>   DW_AT_byte_size   : 20	
-    <c1>   DW_AT_decl_file   : 3	
-    <c2>   DW_AT_decl_line   : 4	
-    <c3>   DW_AT_sibling     : <0x10e>	
- <2><c7>: Abbrev Number: 6 (DW_TAG_member)
-    <c8>   DW_AT_name        : (indirect string, offset: 0xb5): nargs	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 5	
-    <ce>   DW_AT_type        : <0x47>	
-    <d2>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><d5>: Abbrev Number: 6 (DW_TAG_member)
-    <d6>   DW_AT_name        : (indirect string, offset: 0x53): sys_flags	
-    <da>   DW_AT_decl_file   : 3	
-    <db>   DW_AT_decl_line   : 6	
-    <dc>   DW_AT_type        : <0x2b>	
-    <e0>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><e3>: Abbrev Number: 9 (DW_TAG_member)
-    <e4>   DW_AT_name        : sen	
-    <e8>   DW_AT_decl_file   : 3	
-    <e9>   DW_AT_decl_line   : 7	
-    <ea>   DW_AT_type        : <0x2b>	
-    <ee>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><f1>: Abbrev Number: 6 (DW_TAG_member)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x1b9): sys_func	
-    <f6>   DW_AT_decl_file   : 3	
-    <f7>   DW_AT_decl_line   : 8	
-    <f8>   DW_AT_type        : <0x119>	
-    <fc>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><ff>: Abbrev Number: 6 (DW_TAG_member)
-    <100>   DW_AT_name        : (indirect string, offset: 0x39): sys_name	
-    <104>   DW_AT_decl_file   : 3	
-    <105>   DW_AT_decl_line   : 9	
-    <106>   DW_AT_type        : <0xb0>	
-    <10a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><10d>: Abbrev Number: 0
- <1><10e>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <10f>   DW_AT_type        : <0x2b>	
-    <113>   DW_AT_sibling     : <0x119>	
- <2><117>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><118>: Abbrev Number: 0
- <1><119>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <11a>   DW_AT_byte_size   : 4	
-    <11b>   DW_AT_type        : <0x10e>	
- <1><11f>: Abbrev Number: 4 (DW_TAG_typedef)
-    <120>   DW_AT_name        : (indirect string, offset: 0x118): struct_sysent	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 10	
-    <126>   DW_AT_type        : <0xbb>	
- <1><12a>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <12b>   DW_AT_byte_size   : 4	
-    <12c>   DW_AT_type        : <0x130>	
- <1><130>: Abbrev Number: 8 (DW_TAG_const_type)
-    <131>   DW_AT_type        : <0x11f>	
- <1><135>: Abbrev Number: 2 (DW_TAG_base_type)
-    <136>   DW_AT_byte_size   : 1	
-    <137>   DW_AT_encoding    : 2	(boolean)
-    <138>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><13c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <13d>   DW_AT_name        : (indirect string, offset: 0x2f): timeval_t	
-    <141>   DW_AT_decl_file   : 4	
-    <142>   DW_AT_decl_line   : 31	
-    <143>   DW_AT_type        : <0x87>	
- <1><147>: Abbrev Number: 12 (DW_TAG_variable)
-    <148>   DW_AT_name        : (indirect string, offset: 0x9b): current_wordsize	
-    <14c>   DW_AT_decl_file   : 5	
-    <14d>   DW_AT_decl_line   : 757	
-    <14f>   DW_AT_type        : <0x47>	
-    <153>   DW_AT_external    : 1	
-    <154>   DW_AT_declaration : 1	
- <1><155>: Abbrev Number: 12 (DW_TAG_variable)
-    <156>   DW_AT_name        : (indirect string, offset: 0x94): sysent	
-    <15a>   DW_AT_decl_file   : 5	
-    <15b>   DW_AT_decl_line   : 892	
-    <15d>   DW_AT_type        : <0x12a>	
-    <161>   DW_AT_external    : 1	
-    <162>   DW_AT_declaration : 1	
- <1><163>: Abbrev Number: 12 (DW_TAG_variable)
-    <164>   DW_AT_name        : (indirect string, offset: 0x172): nsyscalls	
-    <168>   DW_AT_decl_file   : 5	
-    <169>   DW_AT_decl_line   : 903	
-    <16b>   DW_AT_type        : <0x47>	
-    <16f>   DW_AT_external    : 1	
-    <170>   DW_AT_declaration : 1	
- <1><171>: Abbrev Number: 13 (DW_TAG_variable)
-    <172>   DW_AT_name        : (indirect string, offset: 0x42): mpers_target_var	
-    <176>   DW_AT_decl_file   : 4	
-    <177>   DW_AT_decl_line   : 33	
-    <178>   DW_AT_type        : <0x13c>	
-    <17c>   DW_AT_external    : 1	
-    <17d>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><183>: Abbrev Number: 0
-
diff --git a/mpers-m32/timeval_t.d2 b/mpers-m32/timeval_t.d2
deleted file mode 100644
index 5f2ac0e..0000000
--- a/mpers-m32/timeval_t.d2
+++ /dev/null
@@ -1,208 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ad): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19a): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18c): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x74): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x10b): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5d): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a4): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x82): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x17c): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xac): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x12b): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x55>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x126): char
-<1><87>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x103): timeval
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xb0>
-<2><93>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x185): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a1>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x139): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><b0>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xb6>
-<1><b6>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><bb>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x94): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x10e>
-<2><c7>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb5): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><d5>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x53): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><e3>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><f1>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b9): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x119>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><ff>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x39): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xb0>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><10e>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x119>
-<2><117>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><119>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x10e>
-<1><11f>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x118): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xbb>
-<1><12a>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x130>
-<1><130>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x11f>
-<1><135>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><13c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2f): timeval_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x87>
-<1><147>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9b): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><155>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x94): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x12a>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><163>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x172): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><171>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x42): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x13c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/tms_t.c b/mpers-m32/tms_t.c
index 7af2d32..b11758c 100644
--- a/mpers-m32/tms_t.c
+++ b/mpers-m32/tms_t.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
diff --git a/mpers-m32/tms_t.d1 b/mpers-m32/tms_t.d1
deleted file mode 100644
index 10dfe81..0000000
--- a/mpers-m32/tms_t.d1
+++ /dev/null
@@ -1,201 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x19c (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xd1): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x27): mpers-m32/tms_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x139): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1b3): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x195): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x17d): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x88): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x39): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x119): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x71): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x19f): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x96): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x174): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0x18b): __clock_t	
-    <6f>   DW_AT_decl_file   : 1	
-    <70>   DW_AT_decl_line   : 135	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 2 (DW_TAG_base_type)
-    <76>   DW_AT_byte_size   : 1	
-    <77>   DW_AT_encoding    : 6	(signed char)
-    <78>   DW_AT_name        : (indirect string, offset: 0x134): char	
- <1><7c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x5f): clock_t	
-    <81>   DW_AT_decl_file   : 2	
-    <82>   DW_AT_decl_line   : 59	
-    <83>   DW_AT_type        : <0x6a>	
- <1><87>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <88>   DW_AT_byte_size   : 4	
-    <89>   DW_AT_type        : <0x8d>	
- <1><8d>: Abbrev Number: 6 (DW_TAG_const_type)
-    <8e>   DW_AT_type        : <0x75>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0xa8): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 3	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0xcb): nargs	
-    <a3>   DW_AT_decl_file   : 3	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x67): sys_flags	
-    <b1>   DW_AT_decl_file   : 3	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 3	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x1bf): sys_func	
-    <cd>   DW_AT_decl_file   : 3	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x56): sys_name	
-    <db>   DW_AT_decl_file   : 3	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x87>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0x126): struct_sysent	
-    <fb>   DW_AT_decl_file   : 3	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 6 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x1b): _Bool	
- <1><113>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : tms	
-    <118>   DW_AT_byte_size   : 16	
-    <119>   DW_AT_decl_file   : 4	
-    <11a>   DW_AT_decl_line   : 34	
-    <11b>   DW_AT_sibling     : <0x158>	
- <2><11f>: Abbrev Number: 8 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0x11): tms_utime	
-    <124>   DW_AT_decl_file   : 4	
-    <125>   DW_AT_decl_line   : 36	
-    <126>   DW_AT_type        : <0x7c>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 8 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x4c): tms_stime	
-    <132>   DW_AT_decl_file   : 4	
-    <133>   DW_AT_decl_line   : 37	
-    <134>   DW_AT_type        : <0x7c>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><13b>: Abbrev Number: 8 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0xaf): tms_cutime	
-    <140>   DW_AT_decl_file   : 4	
-    <141>   DW_AT_decl_line   : 39	
-    <142>   DW_AT_type        : <0x7c>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><149>: Abbrev Number: 8 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x1a8): tms_cstime	
-    <14e>   DW_AT_decl_file   : 4	
-    <14f>   DW_AT_decl_line   : 40	
-    <150>   DW_AT_type        : <0x7c>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><157>: Abbrev Number: 0
- <1><158>: Abbrev Number: 4 (DW_TAG_typedef)
-    <159>   DW_AT_name        : (indirect string, offset: 0x21): tms_t	
-    <15d>   DW_AT_decl_file   : 5	
-    <15e>   DW_AT_decl_line   : 36	
-    <15f>   DW_AT_type        : <0x113>	
- <1><163>: Abbrev Number: 13 (DW_TAG_variable)
-    <164>   DW_AT_name        : (indirect string, offset: 0xba): current_wordsize	
-    <168>   DW_AT_decl_file   : 6	
-    <169>   DW_AT_decl_line   : 757	
-    <16b>   DW_AT_type        : <0x47>	
-    <16f>   DW_AT_external    : 1	
-    <170>   DW_AT_declaration : 1	
- <1><171>: Abbrev Number: 13 (DW_TAG_variable)
-    <172>   DW_AT_name        : (indirect string, offset: 0xa8): sysent	
-    <176>   DW_AT_decl_file   : 6	
-    <177>   DW_AT_decl_line   : 892	
-    <179>   DW_AT_type        : <0x101>	
-    <17d>   DW_AT_external    : 1	
-    <17e>   DW_AT_declaration : 1	
- <1><17f>: Abbrev Number: 13 (DW_TAG_variable)
-    <180>   DW_AT_name        : (indirect string, offset: 0x16a): nsyscalls	
-    <184>   DW_AT_decl_file   : 6	
-    <185>   DW_AT_decl_line   : 903	
-    <187>   DW_AT_type        : <0x47>	
-    <18b>   DW_AT_external    : 1	
-    <18c>   DW_AT_declaration : 1	
- <1><18d>: Abbrev Number: 14 (DW_TAG_variable)
-    <18e>   DW_AT_name        : (indirect string, offset: 0x0): mpers_target_var	
-    <192>   DW_AT_decl_file   : 5	
-    <193>   DW_AT_decl_line   : 37	
-    <194>   DW_AT_type        : <0x158>	
-    <198>   DW_AT_external    : 1	
-    <199>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><19f>: Abbrev Number: 0
-
diff --git a/mpers-m32/tms_t.d2 b/mpers-m32/tms_t.d2
deleted file mode 100644
index 96c62f8..0000000
--- a/mpers-m32/tms_t.d2
+++ /dev/null
@@ -1,222 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b3): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x195): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x17d): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x88): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x39): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x119): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x71): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19f): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x96): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x174): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x18b): __clock_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 135
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x134): char
-<1><7c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x5f): clock_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x6a>
-<1><87>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x8d>
-<1><8d>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x75>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xa8): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcb): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x67): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bf): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x56): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x126): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1b): _Bool
-<1><113>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : tms
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_sibling     : <0x158>
-<2><11f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11): tms_utime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4c): tms_stime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><13b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xaf): tms_cutime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><149>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a8): tms_cstime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><158>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x21): tms_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x113>
-<1><163>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xba): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><171>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa8): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17f>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x16a): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18d>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x0): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x158>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-m32/utimbuf_t.d1 b/mpers-m32/utimbuf_t.d1
deleted file mode 100644
index 3bcf6aa..0000000
--- a/mpers-m32/utimbuf_t.d1
+++ /dev/null
@@ -1,184 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x175 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xca): GNU C 4.8.4 -m32 -mtune=generic -march=i686 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x94): mpers-m32/utimbuf_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x13a): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x19f): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x18c): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x17e): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x66): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x10): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x11a): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x4f): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x196): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x7b): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x175): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0xbb): __time_t	
-    <6f>   DW_AT_decl_file   : 2	
-    <70>   DW_AT_decl_line   : 139	
-    <71>   DW_AT_type        : <0x55>	
- <1><75>: Abbrev Number: 2 (DW_TAG_base_type)
-    <76>   DW_AT_byte_size   : 1	
-    <77>   DW_AT_encoding    : 6	(signed char)
-    <78>   DW_AT_name        : (indirect string, offset: 0x135): char	
- <1><7c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <7d>   DW_AT_byte_size   : 4	
-    <7e>   DW_AT_type        : <0x82>	
- <1><82>: Abbrev Number: 6 (DW_TAG_const_type)
-    <83>   DW_AT_type        : <0x75>	
- <1><87>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <88>   DW_AT_name        : (indirect string, offset: 0x8d): sysent	
-    <8c>   DW_AT_byte_size   : 20	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 4	
-    <8f>   DW_AT_sibling     : <0xda>	
- <2><93>: Abbrev Number: 8 (DW_TAG_member)
-    <94>   DW_AT_name        : (indirect string, offset: 0xc4): nargs	
-    <98>   DW_AT_decl_file   : 1	
-    <99>   DW_AT_decl_line   : 5	
-    <9a>   DW_AT_type        : <0x47>	
-    <9e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a1>: Abbrev Number: 8 (DW_TAG_member)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x45): sys_flags	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 6	
-    <a8>   DW_AT_type        : <0x2b>	
-    <ac>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><af>: Abbrev Number: 9 (DW_TAG_member)
-    <b0>   DW_AT_name        : sen	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 7	
-    <b6>   DW_AT_type        : <0x2b>	
-    <ba>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><bd>: Abbrev Number: 8 (DW_TAG_member)
-    <be>   DW_AT_name        : (indirect string, offset: 0x1ab): sys_func	
-    <c2>   DW_AT_decl_file   : 1	
-    <c3>   DW_AT_decl_line   : 8	
-    <c4>   DW_AT_type        : <0xe5>	
-    <c8>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><cb>: Abbrev Number: 8 (DW_TAG_member)
-    <cc>   DW_AT_name        : (indirect string, offset: 0x23): sys_name	
-    <d0>   DW_AT_decl_file   : 1	
-    <d1>   DW_AT_decl_line   : 9	
-    <d2>   DW_AT_type        : <0x7c>	
-    <d6>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <db>   DW_AT_type        : <0x2b>	
-    <df>   DW_AT_sibling     : <0xe5>	
- <2><e3>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <e6>   DW_AT_byte_size   : 4	
-    <e7>   DW_AT_type        : <0xda>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_typedef)
-    <ec>   DW_AT_name        : (indirect string, offset: 0x127): struct_sysent	
-    <f0>   DW_AT_decl_file   : 1	
-    <f1>   DW_AT_decl_line   : 10	
-    <f2>   DW_AT_type        : <0x87>	
- <1><f6>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f7>   DW_AT_byte_size   : 4	
-    <f8>   DW_AT_type        : <0xfc>	
- <1><fc>: Abbrev Number: 6 (DW_TAG_const_type)
-    <fd>   DW_AT_type        : <0xeb>	
- <1><101>: Abbrev Number: 2 (DW_TAG_base_type)
-    <102>   DW_AT_byte_size   : 1	
-    <103>   DW_AT_encoding    : 2	(boolean)
-    <104>   DW_AT_name        : (indirect string, offset: 0xa): _Bool	
- <1><108>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <109>   DW_AT_name        : (indirect string, offset: 0x2c): utimbuf	
-    <10d>   DW_AT_byte_size   : 8	
-    <10e>   DW_AT_decl_file   : 3	
-    <10f>   DW_AT_decl_line   : 37	
-    <110>   DW_AT_sibling     : <0x131>	
- <2><114>: Abbrev Number: 8 (DW_TAG_member)
-    <115>   DW_AT_name        : (indirect string, offset: 0x74): actime	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 39	
-    <11b>   DW_AT_type        : <0x6a>	
-    <11f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><122>: Abbrev Number: 8 (DW_TAG_member)
-    <123>   DW_AT_name        : (indirect string, offset: 0x112): modtime	
-    <127>   DW_AT_decl_file   : 3	
-    <128>   DW_AT_decl_line   : 40	
-    <129>   DW_AT_type        : <0x6a>	
-    <12d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><130>: Abbrev Number: 0
- <1><131>: Abbrev Number: 4 (DW_TAG_typedef)
-    <132>   DW_AT_name        : (indirect string, offset: 0x0): utimbuf_t	
-    <136>   DW_AT_decl_file   : 4	
-    <137>   DW_AT_decl_line   : 6	
-    <138>   DW_AT_type        : <0x108>	
- <1><13c>: Abbrev Number: 12 (DW_TAG_variable)
-    <13d>   DW_AT_name        : (indirect string, offset: 0xaa): current_wordsize	
-    <141>   DW_AT_decl_file   : 5	
-    <142>   DW_AT_decl_line   : 757	
-    <144>   DW_AT_type        : <0x47>	
-    <148>   DW_AT_external    : 1	
-    <149>   DW_AT_declaration : 1	
- <1><14a>: Abbrev Number: 12 (DW_TAG_variable)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x8d): sysent	
-    <14f>   DW_AT_decl_file   : 5	
-    <150>   DW_AT_decl_line   : 892	
-    <152>   DW_AT_type        : <0xf6>	
-    <156>   DW_AT_external    : 1	
-    <157>   DW_AT_declaration : 1	
- <1><158>: Abbrev Number: 12 (DW_TAG_variable)
-    <159>   DW_AT_name        : (indirect string, offset: 0x16b): nsyscalls	
-    <15d>   DW_AT_decl_file   : 5	
-    <15e>   DW_AT_decl_line   : 903	
-    <160>   DW_AT_type        : <0x47>	
-    <164>   DW_AT_external    : 1	
-    <165>   DW_AT_declaration : 1	
- <1><166>: Abbrev Number: 13 (DW_TAG_variable)
-    <167>   DW_AT_name        : (indirect string, offset: 0x34): mpers_target_var	
-    <16b>   DW_AT_decl_file   : 4	
-    <16c>   DW_AT_decl_line   : 8	
-    <16d>   DW_AT_type        : <0x131>	
-    <171>   DW_AT_external    : 1	
-    <172>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><178>: Abbrev Number: 0
-
diff --git a/mpers-m32/utimbuf_t.d2 b/mpers-m32/utimbuf_t.d2
deleted file mode 100644
index e3ee7ad..0000000
--- a/mpers-m32/utimbuf_t.d2
+++ /dev/null
@@ -1,202 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x19f): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18c): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x17e): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x66): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x10): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x11a): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x4f): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x196): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7b): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x175): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xbb): __time_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x55>
-<1><75>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x135): char
-<1><7c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x82>
-<1><82>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x75>
-<1><87>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x8d): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xda>
-<2><93>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc4): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x45): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><af>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><bd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ab): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe5>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><cb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><da>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe5>
-<2><e3>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><e5>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xda>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x127): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x87>
-<1><f6>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfc>
-<1><fc>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xeb>
-<1><101>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xa): _Bool
-<1><108>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2c): utimbuf
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_sibling     : <0x131>
-<2><114>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x74): actime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><122>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x112): modtime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><131>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): utimbuf_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x108>
-<1><13c>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xaa): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><14a>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x8d): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf6>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><158>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x16b): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><166>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x34): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x131>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-mx32/kernel_dirent.c b/mpers-mx32/kernel_dirent.c
index 77ca7e6..9ad17aa 100644
--- a/mpers-mx32/kernel_dirent.c
+++ b/mpers-mx32/kernel_dirent.c
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/kernel_dirent.d1 b/mpers-mx32/kernel_dirent.d1
deleted file mode 100644
index 9b7a8bb..0000000
--- a/mpers-mx32/kernel_dirent.d1
+++ /dev/null
@@ -1,207 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1a8 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x6): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x19e): mpers-mx32/kernel_dirent.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0xed): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1b9): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x17c): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x168): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x9e): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x51): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x124): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x7e): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x195): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xac): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x15f): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x13f): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_array_type)
-    <7d>   DW_AT_type        : <0x6a>	
-    <81>   DW_AT_sibling     : <0x8c>	
- <2><85>: Abbrev Number: 7 (DW_TAG_subrange_type)
-    <86>   DW_AT_type        : <0x63>	
-    <8a>   DW_AT_upper_bound : 0	
- <2><8b>: Abbrev Number: 0
- <1><8c>: Abbrev Number: 8 (DW_TAG_typedef)
-    <8d>   DW_AT_name        : (indirect string, offset: 0x144): __kernel_ulong_t	
-    <91>   DW_AT_decl_file   : 1	
-    <92>   DW_AT_decl_line   : 14	
-    <93>   DW_AT_type        : <0x4e>	
- <1><97>: Abbrev Number: 8 (DW_TAG_typedef)
-    <98>   DW_AT_name        : (indirect string, offset: 0x186): kernel_ulong_t	
-    <9c>   DW_AT_decl_file   : 2	
-    <9d>   DW_AT_decl_line   : 36	
-    <9e>   DW_AT_type        : <0x8c>	
- <1><a2>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a3>   DW_AT_byte_size   : 24	
-    <a4>   DW_AT_decl_file   : 2	
-    <a5>   DW_AT_decl_line   : 50	
-    <a6>   DW_AT_sibling     : <0xe3>	
- <2><aa>: Abbrev Number: 10 (DW_TAG_member)
-    <ab>   DW_AT_name        : (indirect string, offset: 0x176): d_ino	
-    <af>   DW_AT_decl_file   : 2	
-    <b0>   DW_AT_decl_line   : 51	
-    <b1>   DW_AT_type        : <0x97>	
-    <b5>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b8>: Abbrev Number: 10 (DW_TAG_member)
-    <b9>   DW_AT_name        : (indirect string, offset: 0x11e): d_off	
-    <bd>   DW_AT_decl_file   : 2	
-    <be>   DW_AT_decl_line   : 52	
-    <bf>   DW_AT_type        : <0x97>	
-    <c3>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c6>: Abbrev Number: 10 (DW_TAG_member)
-    <c7>   DW_AT_name        : (indirect string, offset: 0x95): d_reclen	
-    <cb>   DW_AT_decl_file   : 2	
-    <cc>   DW_AT_decl_line   : 53	
-    <cd>   DW_AT_type        : <0x40>	
-    <d1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d4>: Abbrev Number: 10 (DW_TAG_member)
-    <d5>   DW_AT_name        : (indirect string, offset: 0x6d): d_name	
-    <d9>   DW_AT_decl_file   : 2	
-    <da>   DW_AT_decl_line   : 54	
-    <db>   DW_AT_type        : <0x7c>	
-    <df>   DW_AT_data_member_location: 2 byte block: 23 12 	(DW_OP_plus_uconst: 18)
- <2><e2>: Abbrev Number: 0
- <1><e3>: Abbrev Number: 8 (DW_TAG_typedef)
-    <e4>   DW_AT_name        : (indirect string, offset: 0x1c5): kernel_dirent	
-    <e8>   DW_AT_decl_file   : 2	
-    <e9>   DW_AT_decl_line   : 55	
-    <ea>   DW_AT_type        : <0xa2>	
- <1><ee>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <ef>   DW_AT_name        : (indirect string, offset: 0xbe): sysent	
-    <f3>   DW_AT_byte_size   : 20	
-    <f4>   DW_AT_decl_file   : 3	
-    <f5>   DW_AT_decl_line   : 4	
-    <f6>   DW_AT_sibling     : <0x141>	
- <2><fa>: Abbrev Number: 10 (DW_TAG_member)
-    <fb>   DW_AT_name        : (indirect string, offset: 0xd6): nargs	
-    <ff>   DW_AT_decl_file   : 3	
-    <100>   DW_AT_decl_line   : 5	
-    <101>   DW_AT_type        : <0x47>	
-    <105>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><108>: Abbrev Number: 10 (DW_TAG_member)
-    <109>   DW_AT_name        : (indirect string, offset: 0x74): sys_flags	
-    <10d>   DW_AT_decl_file   : 3	
-    <10e>   DW_AT_decl_line   : 6	
-    <10f>   DW_AT_type        : <0x2b>	
-    <113>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><116>: Abbrev Number: 12 (DW_TAG_member)
-    <117>   DW_AT_name        : sen	
-    <11b>   DW_AT_decl_file   : 3	
-    <11c>   DW_AT_decl_line   : 7	
-    <11d>   DW_AT_type        : <0x2b>	
-    <121>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><124>: Abbrev Number: 10 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x1d3): sys_func	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 8	
-    <12b>   DW_AT_type        : <0x14c>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><132>: Abbrev Number: 10 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x64): sys_name	
-    <137>   DW_AT_decl_file   : 3	
-    <138>   DW_AT_decl_line   : 9	
-    <139>   DW_AT_type        : <0x71>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><140>: Abbrev Number: 0
- <1><141>: Abbrev Number: 13 (DW_TAG_subroutine_type)
-    <142>   DW_AT_type        : <0x2b>	
-    <146>   DW_AT_sibling     : <0x14c>	
- <2><14a>: Abbrev Number: 14 (DW_TAG_unspecified_parameters)
- <2><14b>: Abbrev Number: 0
- <1><14c>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <14d>   DW_AT_byte_size   : 4	
-    <14e>   DW_AT_type        : <0x141>	
- <1><152>: Abbrev Number: 8 (DW_TAG_typedef)
-    <153>   DW_AT_name        : (indirect string, offset: 0x131): struct_sysent	
-    <157>   DW_AT_decl_file   : 3	
-    <158>   DW_AT_decl_line   : 10	
-    <159>   DW_AT_type        : <0xee>	
- <1><15d>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <15e>   DW_AT_byte_size   : 4	
-    <15f>   DW_AT_type        : <0x163>	
- <1><163>: Abbrev Number: 5 (DW_TAG_const_type)
-    <164>   DW_AT_type        : <0x152>	
- <1><168>: Abbrev Number: 2 (DW_TAG_base_type)
-    <169>   DW_AT_byte_size   : 1	
-    <16a>   DW_AT_encoding    : 2	(boolean)
-    <16b>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><16f>: Abbrev Number: 15 (DW_TAG_variable)
-    <170>   DW_AT_name        : (indirect string, offset: 0xc5): current_wordsize	
-    <174>   DW_AT_decl_file   : 4	
-    <175>   DW_AT_decl_line   : 757	
-    <177>   DW_AT_type        : <0x47>	
-    <17b>   DW_AT_external    : 1	
-    <17c>   DW_AT_declaration : 1	
- <1><17d>: Abbrev Number: 15 (DW_TAG_variable)
-    <17e>   DW_AT_name        : (indirect string, offset: 0xbe): sysent	
-    <182>   DW_AT_decl_file   : 4	
-    <183>   DW_AT_decl_line   : 892	
-    <185>   DW_AT_type        : <0x15d>	
-    <189>   DW_AT_external    : 1	
-    <18a>   DW_AT_declaration : 1	
- <1><18b>: Abbrev Number: 15 (DW_TAG_variable)
-    <18c>   DW_AT_name        : (indirect string, offset: 0x155): nsyscalls	
-    <190>   DW_AT_decl_file   : 4	
-    <191>   DW_AT_decl_line   : 903	
-    <193>   DW_AT_type        : <0x47>	
-    <197>   DW_AT_external    : 1	
-    <198>   DW_AT_declaration : 1	
- <1><199>: Abbrev Number: 16 (DW_TAG_variable)
-    <19a>   DW_AT_name        : (indirect string, offset: 0xdc): mpers_target_var	
-    <19e>   DW_AT_decl_file   : 5	
-    <19f>   DW_AT_decl_line   : 35	
-    <1a0>   DW_AT_type        : <0xe3>	
-    <1a4>   DW_AT_external    : 1	
-    <1a5>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><1ab>: Abbrev Number: 0
-
diff --git a/mpers-mx32/kernel_dirent.d2 b/mpers-mx32/kernel_dirent.d2
deleted file mode 100644
index d246d2e..0000000
--- a/mpers-mx32/kernel_dirent.d2
+++ /dev/null
@@ -1,229 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b9): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x17c): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x168): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x9e): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x51): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x124): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7e): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x195): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xac): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x15f): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x13f): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x8c>
-<2><85>
-Abbrev Number: 7 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 0
-<1><8c>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x144): __kernel_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x4e>
-<1><97>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x186): kernel_ulong_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x8c>
-<1><a2>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_byte_size   : 24
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 50
-DW_AT_sibling     : <0xe3>
-<2><aa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x176): d_ino
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b8>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11e): d_off
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x97>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x95): d_reclen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><d4>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6d): d_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 12 	(DW_OP_plus_uconst: 18)
-<1><e3>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c5): kernel_dirent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 55
-DW_AT_type        : <0xa2>
-<1><ee>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xbe): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x141>
-<2><fa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd6): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><108>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x74): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><116>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><124>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d3): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x14c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><132>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x64): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><141>
-Abbrev Number: 13 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x14c>
-<2><14a>
-Abbrev Number: 14 (DW_TAG_unspecified_parameters)
-<1><14c>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x141>
-<1><152>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x131): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xee>
-<1><15d>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x163>
-<1><163>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x152>
-<1><168>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><16f>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc5): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17d>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xbe): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x15d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18b>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x155): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><199>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xdc): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xe3>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/mq_attr_t.c b/mpers-mx32/mq_attr_t.c
index 2c31495..9f0ec7a 100644
--- a/mpers-mx32/mq_attr_t.c
+++ b/mpers-mx32/mq_attr_t.c
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/mq_attr_t.d1 b/mpers-mx32/mq_attr_t.d1
deleted file mode 100644
index f0bf8d6..0000000
--- a/mpers-mx32/mq_attr_t.d1
+++ /dev/null
@@ -1,214 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1ba (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x16): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xb4): mpers-mx32/mq_attr_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x19e): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x192): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x175): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x15f): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xcb): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x61): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x123): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x9d): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x17f): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xd9): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x11a): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x156): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x1d8): __syscall_slong_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 175	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x13e): char	
- <1><87>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <88>   DW_AT_byte_size   : 4	
-    <89>   DW_AT_type        : <0x8d>	
- <1><8d>: Abbrev Number: 6 (DW_TAG_const_type)
-    <8e>   DW_AT_type        : <0x80>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0xeb): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x103): nargs	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x93): sys_flags	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 2	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x1cf): sys_func	
-    <cd>   DW_AT_decl_file   : 2	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x7f): sys_name	
-    <db>   DW_AT_decl_file   : 2	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x87>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0x130): struct_sysent	
-    <fb>   DW_AT_decl_file   : 2	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 6 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x6): _Bool	
- <1><113>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x16d): mq_attr	
-    <118>   DW_AT_byte_size   : 64	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 26	
-    <11b>   DW_AT_sibling     : <0x166>	
- <2><11f>: Abbrev Number: 8 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0x143): mq_flags	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 28	
-    <126>   DW_AT_type        : <0x75>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 8 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x188): mq_maxmsg	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 29	
-    <134>   DW_AT_type        : <0x75>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13b>: Abbrev Number: 8 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x74): mq_msgsize	
-    <140>   DW_AT_decl_file   : 3	
-    <141>   DW_AT_decl_line   : 30	
-    <142>   DW_AT_type        : <0x75>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><149>: Abbrev Number: 8 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x88): mq_curmsgs	
-    <14e>   DW_AT_decl_file   : 3	
-    <14f>   DW_AT_decl_line   : 31	
-    <150>   DW_AT_type        : <0x75>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><157>: Abbrev Number: 8 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x0): __pad	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 32	
-    <15e>   DW_AT_type        : <0x166>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><165>: Abbrev Number: 0
- <1><166>: Abbrev Number: 12 (DW_TAG_array_type)
-    <167>   DW_AT_type        : <0x75>	
-    <16b>   DW_AT_sibling     : <0x176>	
- <2><16f>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <170>   DW_AT_type        : <0x6e>	
-    <174>   DW_AT_upper_bound : 3	
- <2><175>: Abbrev Number: 0
- <1><176>: Abbrev Number: 4 (DW_TAG_typedef)
-    <177>   DW_AT_name        : (indirect string, offset: 0xc): mq_attr_t	
-    <17b>   DW_AT_decl_file   : 4	
-    <17c>   DW_AT_decl_line   : 34	
-    <17d>   DW_AT_type        : <0x113>	
- <1><181>: Abbrev Number: 14 (DW_TAG_variable)
-    <182>   DW_AT_name        : (indirect string, offset: 0xf2): current_wordsize	
-    <186>   DW_AT_decl_file   : 5	
-    <187>   DW_AT_decl_line   : 757	
-    <189>   DW_AT_type        : <0x47>	
-    <18d>   DW_AT_external    : 1	
-    <18e>   DW_AT_declaration : 1	
- <1><18f>: Abbrev Number: 14 (DW_TAG_variable)
-    <190>   DW_AT_name        : (indirect string, offset: 0xeb): sysent	
-    <194>   DW_AT_decl_file   : 5	
-    <195>   DW_AT_decl_line   : 892	
-    <197>   DW_AT_type        : <0x101>	
-    <19b>   DW_AT_external    : 1	
-    <19c>   DW_AT_declaration : 1	
- <1><19d>: Abbrev Number: 14 (DW_TAG_variable)
-    <19e>   DW_AT_name        : (indirect string, offset: 0x14c): nsyscalls	
-    <1a2>   DW_AT_decl_file   : 5	
-    <1a3>   DW_AT_decl_line   : 903	
-    <1a5>   DW_AT_type        : <0x47>	
-    <1a9>   DW_AT_external    : 1	
-    <1aa>   DW_AT_declaration : 1	
- <1><1ab>: Abbrev Number: 15 (DW_TAG_variable)
-    <1ac>   DW_AT_name        : (indirect string, offset: 0x109): mpers_target_var	
-    <1b0>   DW_AT_decl_file   : 4	
-    <1b1>   DW_AT_decl_line   : 42	
-    <1b2>   DW_AT_type        : <0x176>	
-    <1b6>   DW_AT_external    : 1	
-    <1b7>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1bd>: Abbrev Number: 0
-
diff --git a/mpers-mx32/mq_attr_t.d2 b/mpers-mx32/mq_attr_t.d2
deleted file mode 100644
index c233bb7..0000000
--- a/mpers-mx32/mq_attr_t.d2
+++ /dev/null
@@ -1,237 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x192): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x175): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x15f): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xcb): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x61): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x123): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x9d): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x17f): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd9): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11a): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x156): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d8): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x13e): char
-<1><87>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x8d>
-<1><8d>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xeb): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x103): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x93): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cf): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7f): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x130): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x6): _Bool
-<1><113>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x16d): mq_attr
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_sibling     : <0x166>
-<2><11f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x143): mq_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x188): mq_maxmsg
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><13b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x74): mq_msgsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><149>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x88): mq_curmsgs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><157>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): __pad
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x166>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<1><166>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x75>
-DW_AT_sibling     : <0x176>
-<2><16f>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x6e>
-DW_AT_upper_bound : 3
-<1><176>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xc): mq_attr_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x113>
-<1><181>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf2): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18f>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xeb): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><19d>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x14c): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1ab>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x109): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x176>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/msgbuf_t.c b/mpers-mx32/msgbuf_t.c
index 4b0d5a9..a345637 100644
--- a/mpers-mx32/msgbuf_t.c
+++ b/mpers-mx32/msgbuf_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/mpers-mx32/msgbuf_t.d1 b/mpers-mx32/msgbuf_t.d1
deleted file mode 100644
index 7788462..0000000
--- a/mpers-mx32/msgbuf_t.d1
+++ /dev/null
@@ -1,196 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x190 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xd): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x181): mpers-mx32/msgbuf_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x113): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x197): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x16e): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x157): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x95): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x58): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0xf3): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x7e): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x178): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xa9): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0xea): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x14e): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x1b2): __syscall_slong_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 175	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x10e): char	
- <1><87>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <88>   DW_AT_byte_size   : 4	
-    <89>   DW_AT_type        : <0x8d>	
- <1><8d>: Abbrev Number: 6 (DW_TAG_const_type)
-    <8e>   DW_AT_type        : <0x80>	
- <1><92>: Abbrev Number: 7 (DW_TAG_array_type)
-    <93>   DW_AT_type        : <0x80>	
-    <97>   DW_AT_sibling     : <0xa2>	
- <2><9b>: Abbrev Number: 8 (DW_TAG_subrange_type)
-    <9c>   DW_AT_type        : <0x6e>	
-    <a0>   DW_AT_upper_bound : 0	
- <2><a1>: Abbrev Number: 0
- <1><a2>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a3>   DW_AT_name        : (indirect string, offset: 0xbb): sysent	
-    <a7>   DW_AT_byte_size   : 20	
-    <a8>   DW_AT_decl_file   : 2	
-    <a9>   DW_AT_decl_line   : 4	
-    <aa>   DW_AT_sibling     : <0xf5>	
- <2><ae>: Abbrev Number: 10 (DW_TAG_member)
-    <af>   DW_AT_name        : (indirect string, offset: 0xd3): nargs	
-    <b3>   DW_AT_decl_file   : 2	
-    <b4>   DW_AT_decl_line   : 5	
-    <b5>   DW_AT_type        : <0x47>	
-    <b9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><bc>: Abbrev Number: 10 (DW_TAG_member)
-    <bd>   DW_AT_name        : (indirect string, offset: 0x74): sys_flags	
-    <c1>   DW_AT_decl_file   : 2	
-    <c2>   DW_AT_decl_line   : 6	
-    <c3>   DW_AT_type        : <0x2b>	
-    <c7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ca>: Abbrev Number: 11 (DW_TAG_member)
-    <cb>   DW_AT_name        : sen	
-    <cf>   DW_AT_decl_file   : 2	
-    <d0>   DW_AT_decl_line   : 7	
-    <d1>   DW_AT_type        : <0x2b>	
-    <d5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d8>: Abbrev Number: 10 (DW_TAG_member)
-    <d9>   DW_AT_name        : (indirect string, offset: 0x1a9): sys_func	
-    <dd>   DW_AT_decl_file   : 2	
-    <de>   DW_AT_decl_line   : 8	
-    <df>   DW_AT_type        : <0x100>	
-    <e3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e6>: Abbrev Number: 10 (DW_TAG_member)
-    <e7>   DW_AT_name        : (indirect string, offset: 0x6b): sys_name	
-    <eb>   DW_AT_decl_file   : 2	
-    <ec>   DW_AT_decl_line   : 9	
-    <ed>   DW_AT_type        : <0x87>	
-    <f1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><f4>: Abbrev Number: 0
- <1><f5>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <f6>   DW_AT_type        : <0x2b>	
-    <fa>   DW_AT_sibling     : <0x100>	
- <2><fe>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><ff>: Abbrev Number: 0
- <1><100>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <101>   DW_AT_byte_size   : 4	
-    <102>   DW_AT_type        : <0xf5>	
- <1><106>: Abbrev Number: 4 (DW_TAG_typedef)
-    <107>   DW_AT_name        : (indirect string, offset: 0x100): struct_sysent	
-    <10b>   DW_AT_decl_file   : 2	
-    <10c>   DW_AT_decl_line   : 10	
-    <10d>   DW_AT_type        : <0xa2>	
- <1><111>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <112>   DW_AT_byte_size   : 4	
-    <113>   DW_AT_type        : <0x117>	
- <1><117>: Abbrev Number: 6 (DW_TAG_const_type)
-    <118>   DW_AT_type        : <0x106>	
- <1><11c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <11d>   DW_AT_byte_size   : 1	
-    <11e>   DW_AT_encoding    : 2	(boolean)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x7): _Bool	
- <1><123>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <124>   DW_AT_name        : (indirect string, offset: 0x0): msgbuf	
-    <128>   DW_AT_byte_size   : 16	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 51	
-    <12b>   DW_AT_sibling     : <0x14c>	
- <2><12f>: Abbrev Number: 10 (DW_TAG_member)
-    <130>   DW_AT_name        : (indirect string, offset: 0x1a3): mtype	
-    <134>   DW_AT_decl_file   : 3	
-    <135>   DW_AT_decl_line   : 53	
-    <136>   DW_AT_type        : <0x75>	
-    <13a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><13d>: Abbrev Number: 10 (DW_TAG_member)
-    <13e>   DW_AT_name        : (indirect string, offset: 0xa3): mtext	
-    <142>   DW_AT_decl_file   : 3	
-    <143>   DW_AT_decl_line   : 54	
-    <144>   DW_AT_type        : <0x92>	
-    <148>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><14b>: Abbrev Number: 0
- <1><14c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <14d>   DW_AT_name        : (indirect string, offset: 0x165): msgbuf_t	
-    <151>   DW_AT_decl_file   : 4	
-    <152>   DW_AT_decl_line   : 37	
-    <153>   DW_AT_type        : <0x123>	
- <1><157>: Abbrev Number: 14 (DW_TAG_variable)
-    <158>   DW_AT_name        : (indirect string, offset: 0xc2): current_wordsize	
-    <15c>   DW_AT_decl_file   : 5	
-    <15d>   DW_AT_decl_line   : 757	
-    <15f>   DW_AT_type        : <0x47>	
-    <163>   DW_AT_external    : 1	
-    <164>   DW_AT_declaration : 1	
- <1><165>: Abbrev Number: 14 (DW_TAG_variable)
-    <166>   DW_AT_name        : (indirect string, offset: 0xbb): sysent	
-    <16a>   DW_AT_decl_file   : 5	
-    <16b>   DW_AT_decl_line   : 892	
-    <16d>   DW_AT_type        : <0x111>	
-    <171>   DW_AT_external    : 1	
-    <172>   DW_AT_declaration : 1	
- <1><173>: Abbrev Number: 14 (DW_TAG_variable)
-    <174>   DW_AT_name        : (indirect string, offset: 0x144): nsyscalls	
-    <178>   DW_AT_decl_file   : 5	
-    <179>   DW_AT_decl_line   : 903	
-    <17b>   DW_AT_type        : <0x47>	
-    <17f>   DW_AT_external    : 1	
-    <180>   DW_AT_declaration : 1	
- <1><181>: Abbrev Number: 15 (DW_TAG_variable)
-    <182>   DW_AT_name        : (indirect string, offset: 0xd9): mpers_target_var	
-    <186>   DW_AT_decl_file   : 4	
-    <187>   DW_AT_decl_line   : 38	
-    <188>   DW_AT_type        : <0x14c>	
-    <18c>   DW_AT_external    : 1	
-    <18d>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><193>: Abbrev Number: 0
-
diff --git a/mpers-mx32/msgbuf_t.d2 b/mpers-mx32/msgbuf_t.d2
deleted file mode 100644
index 7db9689..0000000
--- a/mpers-mx32/msgbuf_t.d2
+++ /dev/null
@@ -1,216 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x197): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x16e): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x157): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x95): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x58): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf3): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7e): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x178): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa9): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xea): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14e): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b2): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x10e): char
-<1><87>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x8d>
-<1><8d>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><92>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0x80>
-DW_AT_sibling     : <0xa2>
-<2><9b>
-Abbrev Number: 8 (DW_TAG_subrange_type)
-DW_AT_type        : <0x6e>
-DW_AT_upper_bound : 0
-<1><a2>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xbb): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf5>
-<2><ae>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd3): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><bc>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x74): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ca>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d8>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a9): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x100>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6b): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f5>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x100>
-<2><fe>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><100>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf5>
-<1><106>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x100): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xa2>
-<1><111>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x117>
-<1><117>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x106>
-<1><11c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x7): _Bool
-<1><123>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): msgbuf
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_sibling     : <0x14c>
-<2><12f>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a3): mtype
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><13d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa3): mtext
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><14c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x165): msgbuf_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x123>
-<1><157>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc2): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><165>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xbb): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x111>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><173>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x144): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><181>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd9): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x14c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/msqid_ds_t.c b/mpers-mx32/msqid_ds_t.c
index 8e70ecb..2e2b96e 100644
--- a/mpers-mx32/msqid_ds_t.c
+++ b/mpers-mx32/msqid_ds_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/mpers-mx32/msqid_ds_t.d1 b/mpers-mx32/msqid_ds_t.d1
deleted file mode 100644
index 12ea43a..0000000
--- a/mpers-mx32/msqid_ds_t.d1
+++ /dev/null
@@ -1,356 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2fd (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x2f): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x200): mpers-mx32/msqid_ds_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x28b): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x27f): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x21e): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1f2): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd9): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x7a): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x188): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xc2): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x26e): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xf0): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x161): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x2bc): __u_quad_t	
-    <73>   DW_AT_decl_file   : 1	
-    <74>   DW_AT_decl_line   : 56	
-    <75>   DW_AT_type        : <0x4e>	
- <1><79>: Abbrev Number: 4 (DW_TAG_typedef)
-    <7a>   DW_AT_name        : (indirect string, offset: 0x27): __uid_t	
-    <7e>   DW_AT_decl_file   : 1	
-    <7f>   DW_AT_decl_line   : 125	
-    <80>   DW_AT_type        : <0x47>	
- <1><84>: Abbrev Number: 4 (DW_TAG_typedef)
-    <85>   DW_AT_name        : (indirect string, offset: 0x1d6): __gid_t	
-    <89>   DW_AT_decl_file   : 1	
-    <8a>   DW_AT_decl_line   : 126	
-    <8b>   DW_AT_type        : <0x47>	
- <1><8f>: Abbrev Number: 4 (DW_TAG_typedef)
-    <90>   DW_AT_name        : (indirect string, offset: 0x277): __pid_t	
-    <94>   DW_AT_decl_file   : 1	
-    <95>   DW_AT_decl_line   : 133	
-    <96>   DW_AT_type        : <0x2b>	
- <1><9a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <9b>   DW_AT_byte_size   : 4	
-    <9c>   DW_AT_encoding    : 7	(unsigned)
-    <9d>   DW_AT_name        : (indirect string, offset: 0x1de): sizetype	
- <1><a1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x12e): __time_t	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 139	
-    <a8>   DW_AT_type        : <0x63>	
- <1><ac>: Abbrev Number: 4 (DW_TAG_typedef)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x1b7): __key_t	
-    <b1>   DW_AT_decl_file   : 1	
-    <b2>   DW_AT_decl_line   : 144	
-    <b3>   DW_AT_type        : <0x2b>	
- <1><b7>: Abbrev Number: 4 (DW_TAG_typedef)
-    <b8>   DW_AT_name        : (indirect string, offset: 0x8d): __syscall_ulong_t	
-    <bc>   DW_AT_decl_file   : 1	
-    <bd>   DW_AT_decl_line   : 177	
-    <be>   DW_AT_type        : <0x6e>	
- <1><c2>: Abbrev Number: 2 (DW_TAG_base_type)
-    <c3>   DW_AT_byte_size   : 1	
-    <c4>   DW_AT_encoding    : 6	(signed char)
-    <c5>   DW_AT_name        : (indirect string, offset: 0x1ad): char	
- <1><c9>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ca>   DW_AT_byte_size   : 4	
-    <cb>   DW_AT_type        : <0xcf>	
- <1><cf>: Abbrev Number: 6 (DW_TAG_const_type)
-    <d0>   DW_AT_type        : <0xc2>	
- <1><d4>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <d5>   DW_AT_name        : (indirect string, offset: 0x107): sysent	
-    <d9>   DW_AT_byte_size   : 20	
-    <da>   DW_AT_decl_file   : 2	
-    <db>   DW_AT_decl_line   : 4	
-    <dc>   DW_AT_sibling     : <0x127>	
- <2><e0>: Abbrev Number: 8 (DW_TAG_member)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x148): nargs	
-    <e5>   DW_AT_decl_file   : 2	
-    <e6>   DW_AT_decl_line   : 5	
-    <e7>   DW_AT_type        : <0x47>	
-    <eb>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ee>: Abbrev Number: 8 (DW_TAG_member)
-    <ef>   DW_AT_name        : (indirect string, offset: 0xb8): sys_flags	
-    <f3>   DW_AT_decl_file   : 2	
-    <f4>   DW_AT_decl_line   : 6	
-    <f5>   DW_AT_type        : <0x2b>	
-    <f9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><fc>: Abbrev Number: 9 (DW_TAG_member)
-    <fd>   DW_AT_name        : sen	
-    <101>   DW_AT_decl_file   : 2	
-    <102>   DW_AT_decl_line   : 7	
-    <103>   DW_AT_type        : <0x2b>	
-    <107>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><10a>: Abbrev Number: 8 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0xe7): sys_func	
-    <10f>   DW_AT_decl_file   : 2	
-    <110>   DW_AT_decl_line   : 8	
-    <111>   DW_AT_type        : <0x132>	
-    <115>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><118>: Abbrev Number: 8 (DW_TAG_member)
-    <119>   DW_AT_name        : (indirect string, offset: 0xa9): sys_name	
-    <11d>   DW_AT_decl_file   : 2	
-    <11e>   DW_AT_decl_line   : 9	
-    <11f>   DW_AT_type        : <0xc9>	
-    <123>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><126>: Abbrev Number: 0
- <1><127>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <128>   DW_AT_type        : <0x2b>	
-    <12c>   DW_AT_sibling     : <0x132>	
- <2><130>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><131>: Abbrev Number: 0
- <1><132>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <133>   DW_AT_byte_size   : 4	
-    <134>   DW_AT_type        : <0x127>	
- <1><138>: Abbrev Number: 4 (DW_TAG_typedef)
-    <139>   DW_AT_name        : (indirect string, offset: 0x19f): struct_sysent	
-    <13d>   DW_AT_decl_file   : 2	
-    <13e>   DW_AT_decl_line   : 10	
-    <13f>   DW_AT_type        : <0xd4>	
- <1><143>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <144>   DW_AT_byte_size   : 4	
-    <145>   DW_AT_type        : <0x149>	
- <1><149>: Abbrev Number: 6 (DW_TAG_const_type)
-    <14a>   DW_AT_type        : <0x138>	
- <1><14e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <14f>   DW_AT_byte_size   : 1	
-    <150>   DW_AT_encoding    : 2	(boolean)
-    <151>   DW_AT_name        : (indirect string, offset: 0x1a): _Bool	
- <1><155>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <156>   DW_AT_name        : (indirect string, offset: 0x23a): ipc_perm	
-    <15a>   DW_AT_byte_size   : 48	
-    <15b>   DW_AT_decl_file   : 3	
-    <15c>   DW_AT_decl_line   : 42	
-    <15d>   DW_AT_sibling     : <0x1fc>	
- <2><161>: Abbrev Number: 8 (DW_TAG_member)
-    <162>   DW_AT_name        : (indirect string, offset: 0x218): __key	
-    <166>   DW_AT_decl_file   : 3	
-    <167>   DW_AT_decl_line   : 44	
-    <168>   DW_AT_type        : <0xac>	
-    <16c>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><16f>: Abbrev Number: 9 (DW_TAG_member)
-    <170>   DW_AT_name        : uid	
-    <174>   DW_AT_decl_file   : 3	
-    <175>   DW_AT_decl_line   : 45	
-    <176>   DW_AT_type        : <0x79>	
-    <17a>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><17d>: Abbrev Number: 9 (DW_TAG_member)
-    <17e>   DW_AT_name        : gid	
-    <182>   DW_AT_decl_file   : 3	
-    <183>   DW_AT_decl_line   : 46	
-    <184>   DW_AT_type        : <0x84>	
-    <188>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><18b>: Abbrev Number: 8 (DW_TAG_member)
-    <18c>   DW_AT_name        : (indirect string, offset: 0x10e): cuid	
-    <190>   DW_AT_decl_file   : 3	
-    <191>   DW_AT_decl_line   : 47	
-    <192>   DW_AT_type        : <0x79>	
-    <196>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><199>: Abbrev Number: 8 (DW_TAG_member)
-    <19a>   DW_AT_name        : (indirect string, offset: 0x102): cgid	
-    <19e>   DW_AT_decl_file   : 3	
-    <19f>   DW_AT_decl_line   : 48	
-    <1a0>   DW_AT_type        : <0x84>	
-    <1a4>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1a7>: Abbrev Number: 8 (DW_TAG_member)
-    <1a8>   DW_AT_name        : (indirect string, offset: 0x1b2): mode	
-    <1ac>   DW_AT_decl_file   : 3	
-    <1ad>   DW_AT_decl_line   : 49	
-    <1ae>   DW_AT_type        : <0x40>	
-    <1b2>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1b5>: Abbrev Number: 8 (DW_TAG_member)
-    <1b6>   DW_AT_name        : (indirect string, offset: 0x267): __pad1	
-    <1ba>   DW_AT_decl_file   : 3	
-    <1bb>   DW_AT_decl_line   : 50	
-    <1bc>   DW_AT_type        : <0x40>	
-    <1c0>   DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
- <2><1c3>: Abbrev Number: 8 (DW_TAG_member)
-    <1c4>   DW_AT_name        : (indirect string, offset: 0xb2): __seq	
-    <1c8>   DW_AT_decl_file   : 3	
-    <1c9>   DW_AT_decl_line   : 51	
-    <1ca>   DW_AT_type        : <0x40>	
-    <1ce>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1d1>: Abbrev Number: 8 (DW_TAG_member)
-    <1d2>   DW_AT_name        : (indirect string, offset: 0x20): __pad2	
-    <1d6>   DW_AT_decl_file   : 3	
-    <1d7>   DW_AT_decl_line   : 52	
-    <1d8>   DW_AT_type        : <0x40>	
-    <1dc>   DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
- <2><1df>: Abbrev Number: 8 (DW_TAG_member)
-    <1e0>   DW_AT_name        : (indirect string, offset: 0x113): __glibc_reserved1	
-    <1e4>   DW_AT_decl_file   : 3	
-    <1e5>   DW_AT_decl_line   : 53	
-    <1e6>   DW_AT_type        : <0xb7>	
-    <1ea>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1ed>: Abbrev Number: 8 (DW_TAG_member)
-    <1ee>   DW_AT_name        : (indirect string, offset: 0x228): __glibc_reserved2	
-    <1f2>   DW_AT_decl_file   : 3	
-    <1f3>   DW_AT_decl_line   : 54	
-    <1f4>   DW_AT_type        : <0xb7>	
-    <1f8>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1fb>: Abbrev Number: 0
- <1><1fc>: Abbrev Number: 4 (DW_TAG_typedef)
-    <1fd>   DW_AT_name        : (indirect string, offset: 0x175): msgqnum_t	
-    <201>   DW_AT_decl_file   : 4	
-    <202>   DW_AT_decl_line   : 32	
-    <203>   DW_AT_type        : <0xb7>	
- <1><207>: Abbrev Number: 4 (DW_TAG_typedef)
-    <208>   DW_AT_name        : (indirect string, offset: 0x17f): msglen_t	
-    <20c>   DW_AT_decl_file   : 4	
-    <20d>   DW_AT_decl_line   : 33	
-    <20e>   DW_AT_type        : <0xb7>	
- <1><212>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <213>   DW_AT_name        : (indirect string, offset: 0x0): msqid_ds	
-    <217>   DW_AT_byte_size   : 120	
-    <218>   DW_AT_decl_file   : 4	
-    <219>   DW_AT_decl_line   : 37	
-    <21a>   DW_AT_sibling     : <0x2b9>	
- <2><21e>: Abbrev Number: 8 (DW_TAG_member)
-    <21f>   DW_AT_name        : (indirect string, offset: 0x125): msg_perm	
-    <223>   DW_AT_decl_file   : 4	
-    <224>   DW_AT_decl_line   : 39	
-    <225>   DW_AT_type        : <0x155>	
-    <229>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><22c>: Abbrev Number: 8 (DW_TAG_member)
-    <22d>   DW_AT_name        : (indirect string, offset: 0x2c7): msg_stime	
-    <231>   DW_AT_decl_file   : 4	
-    <232>   DW_AT_decl_line   : 40	
-    <233>   DW_AT_type        : <0xa1>	
-    <237>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><23a>: Abbrev Number: 8 (DW_TAG_member)
-    <23b>   DW_AT_name        : (indirect string, offset: 0x195): msg_rtime	
-    <23f>   DW_AT_decl_file   : 4	
-    <240>   DW_AT_decl_line   : 44	
-    <241>   DW_AT_type        : <0xa1>	
-    <245>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><248>: Abbrev Number: 8 (DW_TAG_member)
-    <249>   DW_AT_name        : (indirect string, offset: 0x14e): msg_ctime	
-    <24d>   DW_AT_decl_file   : 4	
-    <24e>   DW_AT_decl_line   : 48	
-    <24f>   DW_AT_type        : <0xa1>	
-    <253>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><256>: Abbrev Number: 8 (DW_TAG_member)
-    <257>   DW_AT_name        : (indirect string, offset: 0x1bf): __msg_cbytes	
-    <25b>   DW_AT_decl_file   : 4	
-    <25c>   DW_AT_decl_line   : 52	
-    <25d>   DW_AT_type        : <0xb7>	
-    <261>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><264>: Abbrev Number: 8 (DW_TAG_member)
-    <265>   DW_AT_name        : (indirect string, offset: 0x158): msg_qnum	
-    <269>   DW_AT_decl_file   : 4	
-    <26a>   DW_AT_decl_line   : 53	
-    <26b>   DW_AT_type        : <0x1fc>	
-    <26f>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><272>: Abbrev Number: 8 (DW_TAG_member)
-    <273>   DW_AT_name        : (indirect string, offset: 0x16a): msg_qbytes	
-    <277>   DW_AT_decl_file   : 4	
-    <278>   DW_AT_decl_line   : 54	
-    <279>   DW_AT_type        : <0x207>	
-    <27d>   DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
- <2><280>: Abbrev Number: 8 (DW_TAG_member)
-    <281>   DW_AT_name        : (indirect string, offset: 0x9f): msg_lspid	
-    <285>   DW_AT_decl_file   : 4	
-    <286>   DW_AT_decl_line   : 55	
-    <287>   DW_AT_type        : <0x8f>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><28e>: Abbrev Number: 8 (DW_TAG_member)
-    <28f>   DW_AT_name        : (indirect string, offset: 0x2d1): msg_lrpid	
-    <293>   DW_AT_decl_file   : 4	
-    <294>   DW_AT_decl_line   : 56	
-    <295>   DW_AT_type        : <0x8f>	
-    <299>   DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
- <2><29c>: Abbrev Number: 8 (DW_TAG_member)
-    <29d>   DW_AT_name        : (indirect string, offset: 0x243): __glibc_reserved4	
-    <2a1>   DW_AT_decl_file   : 4	
-    <2a2>   DW_AT_decl_line   : 57	
-    <2a3>   DW_AT_type        : <0xb7>	
-    <2a7>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><2aa>: Abbrev Number: 8 (DW_TAG_member)
-    <2ab>   DW_AT_name        : (indirect string, offset: 0x255): __glibc_reserved5	
-    <2af>   DW_AT_decl_file   : 4	
-    <2b0>   DW_AT_decl_line   : 58	
-    <2b1>   DW_AT_type        : <0xb7>	
-    <2b5>   DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
- <2><2b8>: Abbrev Number: 0
- <1><2b9>: Abbrev Number: 4 (DW_TAG_typedef)
-    <2ba>   DW_AT_name        : (indirect string, offset: 0x1e7): msqid_ds_t	
-    <2be>   DW_AT_decl_file   : 5	
-    <2bf>   DW_AT_decl_line   : 41	
-    <2c0>   DW_AT_type        : <0x212>	
- <1><2c4>: Abbrev Number: 12 (DW_TAG_variable)
-    <2c5>   DW_AT_name        : (indirect string, offset: 0x137): current_wordsize	
-    <2c9>   DW_AT_decl_file   : 6	
-    <2ca>   DW_AT_decl_line   : 757	
-    <2cc>   DW_AT_type        : <0x47>	
-    <2d0>   DW_AT_external    : 1	
-    <2d1>   DW_AT_declaration : 1	
- <1><2d2>: Abbrev Number: 12 (DW_TAG_variable)
-    <2d3>   DW_AT_name        : (indirect string, offset: 0x107): sysent	
-    <2d7>   DW_AT_decl_file   : 6	
-    <2d8>   DW_AT_decl_line   : 892	
-    <2da>   DW_AT_type        : <0x143>	
-    <2de>   DW_AT_external    : 1	
-    <2df>   DW_AT_declaration : 1	
- <1><2e0>: Abbrev Number: 12 (DW_TAG_variable)
-    <2e1>   DW_AT_name        : (indirect string, offset: 0x1cc): nsyscalls	
-    <2e5>   DW_AT_decl_file   : 6	
-    <2e6>   DW_AT_decl_line   : 903	
-    <2e8>   DW_AT_type        : <0x47>	
-    <2ec>   DW_AT_external    : 1	
-    <2ed>   DW_AT_declaration : 1	
- <1><2ee>: Abbrev Number: 13 (DW_TAG_variable)
-    <2ef>   DW_AT_name        : (indirect string, offset: 0x9): mpers_target_var	
-    <2f3>   DW_AT_decl_file   : 5	
-    <2f4>   DW_AT_decl_line   : 48	
-    <2f5>   DW_AT_type        : <0x2b9>	
-    <2f9>   DW_AT_external    : 1	
-    <2fa>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><300>: Abbrev Number: 0
-
diff --git a/mpers-mx32/msqid_ds_t.d2 b/mpers-mx32/msqid_ds_t.d2
deleted file mode 100644
index 1855344..0000000
--- a/mpers-mx32/msqid_ds_t.d2
+++ /dev/null
@@ -1,403 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x27f): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x21e): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f2): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd9): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7a): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x188): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc2): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x26e): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf0): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x161): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2bc): __u_quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x4e>
-<1><79>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x27): __uid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-<1><84>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d6): __gid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x47>
-<1><8f>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x277): __pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x2b>
-<1><9a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1de): sizetype
-<1><a1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x12e): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><ac>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b7): __key_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<1><b7>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x8d): __syscall_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 177
-DW_AT_type        : <0x6e>
-<1><c2>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ad): char
-<1><c9>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><cf>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xc2>
-<1><d4>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x107): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x127>
-<2><e0>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x148): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ee>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb8): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><fc>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><10a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe7): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x132>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><118>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa9): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xc9>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><127>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x132>
-<2><130>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><132>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x127>
-<1><138>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x19f): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xd4>
-<1><143>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x149>
-<1><149>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x138>
-<1><14e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1a): _Bool
-<1><155>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x23a): ipc_perm
-DW_AT_byte_size   : 48
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 42
-DW_AT_sibling     : <0x1fc>
-<2><161>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x218): __key
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_type        : <0xac>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><16f>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><17d>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : gid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x84>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><18b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10e): cuid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><199>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x102): cgid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x84>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1a7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b2): mode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1b5>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x267): __pad1
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
-<2><1c3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb2): __seq
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1d1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20): __pad2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
-<2><1df>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x113): __glibc_reserved1
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1ed>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x228): __glibc_reserved2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<1><1fc>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x175): msgqnum_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0xb7>
-<1><207>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17f): msglen_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0xb7>
-<1><212>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): msqid_ds
-DW_AT_byte_size   : 120
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_sibling     : <0x2b9>
-<2><21e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x125): msg_perm
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x155>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><22c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c7): msg_stime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><23a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x195): msg_rtime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 44
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><248>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14e): msg_ctime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 48
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><256>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bf): __msg_cbytes
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 52
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><264>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x158): msg_qnum
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x1fc>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<2><272>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16a): msg_qbytes
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x207>
-DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
-<2><280>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9f): msg_lspid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x8f>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><28e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d1): msg_lrpid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x8f>
-DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
-<2><29c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x243): __glibc_reserved4
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 57
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<2><2aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x255): __glibc_reserved5
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 58
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
-<1><2b9>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1e7): msqid_ds_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x212>
-<1><2c4>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x137): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2d2>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x107): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x143>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2e0>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1cc): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2ee>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x2b9>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/rusage_t.c b/mpers-mx32/rusage_t.c
index f69a7ee..cf3c244 100644
--- a/mpers-mx32/rusage_t.c
+++ b/mpers-mx32/rusage_t.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/rusage_t.d1 b/mpers-mx32/rusage_t.d1
deleted file mode 100644
index cc73bf7..0000000
--- a/mpers-mx32/rusage_t.d1
+++ /dev/null
@@ -1,484 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x3ef (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xc3): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x16d): mpers-mx32/rusage_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x33f): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1a8): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x5e): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x129): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x194): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x204): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1e3): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x1c5): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x137): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x288): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x0): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x78): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x2bc): __time_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 139	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0x327): __suseconds_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 141	
-    <87>   DW_AT_type        : <0x63>	
- <1><8b>: Abbrev Number: 4 (DW_TAG_typedef)
-    <8c>   DW_AT_name        : (indirect string, offset: 0x9e): __syscall_slong_t	
-    <90>   DW_AT_decl_file   : 1	
-    <91>   DW_AT_decl_line   : 175	
-    <92>   DW_AT_type        : <0x63>	
- <1><96>: Abbrev Number: 2 (DW_TAG_base_type)
-    <97>   DW_AT_byte_size   : 1	
-    <98>   DW_AT_encoding    : 6	(signed char)
-    <99>   DW_AT_name        : (indirect string, offset: 0x230): char	
- <1><9d>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <9e>   DW_AT_name        : (indirect string, offset: 0x2c5): timeval	
-    <a2>   DW_AT_byte_size   : 16	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 30	
-    <a5>   DW_AT_sibling     : <0xc6>	
- <2><a9>: Abbrev Number: 6 (DW_TAG_member)
-    <aa>   DW_AT_name        : (indirect string, offset: 0x3e): tv_sec	
-    <ae>   DW_AT_decl_file   : 2	
-    <af>   DW_AT_decl_line   : 32	
-    <b0>   DW_AT_type        : <0x75>	
-    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b7>: Abbrev Number: 6 (DW_TAG_member)
-    <b8>   DW_AT_name        : (indirect string, offset: 0x2eb): tv_usec	
-    <bc>   DW_AT_decl_file   : 2	
-    <bd>   DW_AT_decl_line   : 33	
-    <be>   DW_AT_type        : <0x80>	
-    <c2>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c5>: Abbrev Number: 0
- <1><c6>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <c7>   DW_AT_byte_size   : 4	
-    <c8>   DW_AT_type        : <0xcc>	
- <1><cc>: Abbrev Number: 8 (DW_TAG_const_type)
-    <cd>   DW_AT_type        : <0x96>	
- <1><d1>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <d2>   DW_AT_name        : (indirect string, offset: 0x317): sysent	
-    <d6>   DW_AT_byte_size   : 20	
-    <d7>   DW_AT_decl_file   : 3	
-    <d8>   DW_AT_decl_line   : 4	
-    <d9>   DW_AT_sibling     : <0x124>	
- <2><dd>: Abbrev Number: 6 (DW_TAG_member)
-    <de>   DW_AT_name        : (indirect string, offset: 0x1a2): nargs	
-    <e2>   DW_AT_decl_file   : 3	
-    <e3>   DW_AT_decl_line   : 5	
-    <e4>   DW_AT_type        : <0x47>	
-    <e8>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><eb>: Abbrev Number: 6 (DW_TAG_member)
-    <ec>   DW_AT_name        : (indirect string, offset: 0x1f0): sys_flags	
-    <f0>   DW_AT_decl_file   : 3	
-    <f1>   DW_AT_decl_line   : 6	
-    <f2>   DW_AT_type        : <0x2b>	
-    <f6>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><f9>: Abbrev Number: 9 (DW_TAG_member)
-    <fa>   DW_AT_name        : sen	
-    <fe>   DW_AT_decl_file   : 3	
-    <ff>   DW_AT_decl_line   : 7	
-    <100>   DW_AT_type        : <0x2b>	
-    <104>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><107>: Abbrev Number: 6 (DW_TAG_member)
-    <108>   DW_AT_name        : (indirect string, offset: 0x9): sys_func	
-    <10c>   DW_AT_decl_file   : 3	
-    <10d>   DW_AT_decl_line   : 8	
-    <10e>   DW_AT_type        : <0x12f>	
-    <112>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><115>: Abbrev Number: 6 (DW_TAG_member)
-    <116>   DW_AT_name        : (indirect string, offset: 0x95): sys_name	
-    <11a>   DW_AT_decl_file   : 3	
-    <11b>   DW_AT_decl_line   : 9	
-    <11c>   DW_AT_type        : <0xc6>	
-    <120>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><123>: Abbrev Number: 0
- <1><124>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <125>   DW_AT_type        : <0x2b>	
-    <129>   DW_AT_sibling     : <0x12f>	
- <2><12d>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><12e>: Abbrev Number: 0
- <1><12f>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <130>   DW_AT_byte_size   : 4	
-    <131>   DW_AT_type        : <0x124>	
- <1><135>: Abbrev Number: 4 (DW_TAG_typedef)
-    <136>   DW_AT_name        : (indirect string, offset: 0x2dd): struct_sysent	
-    <13a>   DW_AT_decl_file   : 3	
-    <13b>   DW_AT_decl_line   : 10	
-    <13c>   DW_AT_type        : <0xd1>	
- <1><140>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <141>   DW_AT_byte_size   : 4	
-    <142>   DW_AT_type        : <0x146>	
- <1><146>: Abbrev Number: 8 (DW_TAG_const_type)
-    <147>   DW_AT_type        : <0x135>	
- <1><14b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <14c>   DW_AT_byte_size   : 1	
-    <14d>   DW_AT_encoding    : 2	(boolean)
-    <14e>   DW_AT_name        : (indirect string, offset: 0x235): _Bool	
- <1><152>: Abbrev Number: 12 (DW_TAG_union_type)
-    <153>   DW_AT_byte_size   : 8	
-    <154>   DW_AT_decl_file   : 4	
-    <155>   DW_AT_decl_line   : 194	
-    <156>   DW_AT_sibling     : <0x171>	
- <2><15a>: Abbrev Number: 13 (DW_TAG_member)
-    <15b>   DW_AT_name        : (indirect string, offset: 0x10e): ru_maxrss	
-    <15f>   DW_AT_decl_file   : 4	
-    <160>   DW_AT_decl_line   : 196	
-    <161>   DW_AT_type        : <0x55>	
- <2><165>: Abbrev Number: 13 (DW_TAG_member)
-    <166>   DW_AT_name        : (indirect string, offset: 0x151): __ru_maxrss_word	
-    <16a>   DW_AT_decl_file   : 4	
-    <16b>   DW_AT_decl_line   : 197	
-    <16c>   DW_AT_type        : <0x8b>	
- <2><170>: Abbrev Number: 0
- <1><171>: Abbrev Number: 12 (DW_TAG_union_type)
-    <172>   DW_AT_byte_size   : 8	
-    <173>   DW_AT_decl_file   : 4	
-    <174>   DW_AT_decl_line   : 202	
-    <175>   DW_AT_sibling     : <0x190>	
- <2><179>: Abbrev Number: 13 (DW_TAG_member)
-    <17a>   DW_AT_name        : (indirect string, offset: 0x35): ru_ixrss	
-    <17e>   DW_AT_decl_file   : 4	
-    <17f>   DW_AT_decl_line   : 204	
-    <180>   DW_AT_type        : <0x55>	
- <2><184>: Abbrev Number: 13 (DW_TAG_member)
-    <185>   DW_AT_name        : (indirect string, offset: 0x2cd): __ru_ixrss_word	
-    <189>   DW_AT_decl_file   : 4	
-    <18a>   DW_AT_decl_line   : 205	
-    <18b>   DW_AT_type        : <0x8b>	
- <2><18f>: Abbrev Number: 0
- <1><190>: Abbrev Number: 12 (DW_TAG_union_type)
-    <191>   DW_AT_byte_size   : 8	
-    <192>   DW_AT_decl_file   : 4	
-    <193>   DW_AT_decl_line   : 208	
-    <194>   DW_AT_sibling     : <0x1af>	
- <2><198>: Abbrev Number: 13 (DW_TAG_member)
-    <199>   DW_AT_name        : (indirect string, offset: 0x55): ru_idrss	
-    <19d>   DW_AT_decl_file   : 4	
-    <19e>   DW_AT_decl_line   : 210	
-    <19f>   DW_AT_type        : <0x55>	
- <2><1a3>: Abbrev Number: 13 (DW_TAG_member)
-    <1a4>   DW_AT_name        : (indirect string, offset: 0x45): __ru_idrss_word	
-    <1a8>   DW_AT_decl_file   : 4	
-    <1a9>   DW_AT_decl_line   : 211	
-    <1aa>   DW_AT_type        : <0x8b>	
- <2><1ae>: Abbrev Number: 0
- <1><1af>: Abbrev Number: 12 (DW_TAG_union_type)
-    <1b0>   DW_AT_byte_size   : 8	
-    <1b1>   DW_AT_decl_file   : 4	
-    <1b2>   DW_AT_decl_line   : 214	
-    <1b3>   DW_AT_sibling     : <0x1ce>	
- <2><1b7>: Abbrev Number: 13 (DW_TAG_member)
-    <1b8>   DW_AT_name        : (indirect string, offset: 0xba): ru_isrss	
-    <1bc>   DW_AT_decl_file   : 4	
-    <1bd>   DW_AT_decl_line   : 216	
-    <1be>   DW_AT_type        : <0x55>	
- <2><1c2>: Abbrev Number: 13 (DW_TAG_member)
-    <1c3>   DW_AT_name        : (indirect string, offset: 0x220): __ru_isrss_word	
-    <1c7>   DW_AT_decl_file   : 4	
-    <1c8>   DW_AT_decl_line   : 217	
-    <1c9>   DW_AT_type        : <0x8b>	
- <2><1cd>: Abbrev Number: 0
- <1><1ce>: Abbrev Number: 12 (DW_TAG_union_type)
-    <1cf>   DW_AT_byte_size   : 8	
-    <1d0>   DW_AT_decl_file   : 4	
-    <1d1>   DW_AT_decl_line   : 221	
-    <1d2>   DW_AT_sibling     : <0x1ed>	
- <2><1d6>: Abbrev Number: 13 (DW_TAG_member)
-    <1d7>   DW_AT_name        : (indirect string, offset: 0x12): ru_minflt	
-    <1db>   DW_AT_decl_file   : 4	
-    <1dc>   DW_AT_decl_line   : 223	
-    <1dd>   DW_AT_type        : <0x55>	
- <2><1e1>: Abbrev Number: 13 (DW_TAG_member)
-    <1e2>   DW_AT_name        : (indirect string, offset: 0x118): __ru_minflt_word	
-    <1e6>   DW_AT_decl_file   : 4	
-    <1e7>   DW_AT_decl_line   : 224	
-    <1e8>   DW_AT_type        : <0x8b>	
- <2><1ec>: Abbrev Number: 0
- <1><1ed>: Abbrev Number: 12 (DW_TAG_union_type)
-    <1ee>   DW_AT_byte_size   : 8	
-    <1ef>   DW_AT_decl_file   : 4	
-    <1f0>   DW_AT_decl_line   : 227	
-    <1f1>   DW_AT_sibling     : <0x20c>	
- <2><1f5>: Abbrev Number: 13 (DW_TAG_member)
-    <1f6>   DW_AT_name        : (indirect string, offset: 0xb0): ru_majflt	
-    <1fa>   DW_AT_decl_file   : 4	
-    <1fb>   DW_AT_decl_line   : 229	
-    <1fc>   DW_AT_type        : <0x55>	
- <2><200>: Abbrev Number: 13 (DW_TAG_member)
-    <201>   DW_AT_name        : (indirect string, offset: 0x183): __ru_majflt_word	
-    <205>   DW_AT_decl_file   : 4	
-    <206>   DW_AT_decl_line   : 230	
-    <207>   DW_AT_type        : <0x8b>	
- <2><20b>: Abbrev Number: 0
- <1><20c>: Abbrev Number: 12 (DW_TAG_union_type)
-    <20d>   DW_AT_byte_size   : 8	
-    <20e>   DW_AT_decl_file   : 4	
-    <20f>   DW_AT_decl_line   : 233	
-    <210>   DW_AT_sibling     : <0x22b>	
- <2><214>: Abbrev Number: 13 (DW_TAG_member)
-    <215>   DW_AT_name        : (indirect string, offset: 0x81): ru_nswap	
-    <219>   DW_AT_decl_file   : 4	
-    <21a>   DW_AT_decl_line   : 235	
-    <21b>   DW_AT_type        : <0x55>	
- <2><21f>: Abbrev Number: 13 (DW_TAG_member)
-    <220>   DW_AT_name        : (indirect string, offset: 0x68): __ru_nswap_word	
-    <224>   DW_AT_decl_file   : 4	
-    <225>   DW_AT_decl_line   : 236	
-    <226>   DW_AT_type        : <0x8b>	
- <2><22a>: Abbrev Number: 0
- <1><22b>: Abbrev Number: 12 (DW_TAG_union_type)
-    <22c>   DW_AT_byte_size   : 8	
-    <22d>   DW_AT_decl_file   : 4	
-    <22e>   DW_AT_decl_line   : 240	
-    <22f>   DW_AT_sibling     : <0x24a>	
- <2><233>: Abbrev Number: 13 (DW_TAG_member)
-    <234>   DW_AT_name        : (indirect string, offset: 0x162): ru_inblock	
-    <238>   DW_AT_decl_file   : 4	
-    <239>   DW_AT_decl_line   : 242	
-    <23a>   DW_AT_type        : <0x55>	
- <2><23e>: Abbrev Number: 13 (DW_TAG_member)
-    <23f>   DW_AT_name        : (indirect string, offset: 0x251): __ru_inblock_word	
-    <243>   DW_AT_decl_file   : 4	
-    <244>   DW_AT_decl_line   : 243	
-    <245>   DW_AT_type        : <0x8b>	
- <2><249>: Abbrev Number: 0
- <1><24a>: Abbrev Number: 12 (DW_TAG_union_type)
-    <24b>   DW_AT_byte_size   : 8	
-    <24c>   DW_AT_decl_file   : 4	
-    <24d>   DW_AT_decl_line   : 246	
-    <24e>   DW_AT_sibling     : <0x269>	
- <2><252>: Abbrev Number: 13 (DW_TAG_member)
-    <253>   DW_AT_name        : (indirect string, offset: 0x8a): ru_oublock	
-    <257>   DW_AT_decl_file   : 4	
-    <258>   DW_AT_decl_line   : 248	
-    <259>   DW_AT_type        : <0x55>	
- <2><25d>: Abbrev Number: 13 (DW_TAG_member)
-    <25e>   DW_AT_name        : (indirect string, offset: 0x276): __ru_oublock_word	
-    <262>   DW_AT_decl_file   : 4	
-    <263>   DW_AT_decl_line   : 249	
-    <264>   DW_AT_type        : <0x8b>	
- <2><268>: Abbrev Number: 0
- <1><269>: Abbrev Number: 12 (DW_TAG_union_type)
-    <26a>   DW_AT_byte_size   : 8	
-    <26b>   DW_AT_decl_file   : 4	
-    <26c>   DW_AT_decl_line   : 252	
-    <26d>   DW_AT_sibling     : <0x288>	
- <2><271>: Abbrev Number: 13 (DW_TAG_member)
-    <272>   DW_AT_name        : (indirect string, offset: 0x23b): ru_msgsnd	
-    <276>   DW_AT_decl_file   : 4	
-    <277>   DW_AT_decl_line   : 254	
-    <278>   DW_AT_type        : <0x55>	
- <2><27c>: Abbrev Number: 13 (DW_TAG_member)
-    <27d>   DW_AT_name        : (indirect string, offset: 0x29a): __ru_msgsnd_word	
-    <281>   DW_AT_decl_file   : 4	
-    <282>   DW_AT_decl_line   : 255	
-    <283>   DW_AT_type        : <0x8b>	
- <2><287>: Abbrev Number: 0
- <1><288>: Abbrev Number: 14 (DW_TAG_union_type)
-    <289>   DW_AT_byte_size   : 8	
-    <28a>   DW_AT_decl_file   : 4	
-    <28b>   DW_AT_decl_line   : 258	
-    <28d>   DW_AT_sibling     : <0x2aa>	
- <2><291>: Abbrev Number: 15 (DW_TAG_member)
-    <292>   DW_AT_name        : (indirect string, offset: 0x335): ru_msgrcv	
-    <296>   DW_AT_decl_file   : 4	
-    <297>   DW_AT_decl_line   : 260	
-    <299>   DW_AT_type        : <0x55>	
- <2><29d>: Abbrev Number: 15 (DW_TAG_member)
-    <29e>   DW_AT_name        : (indirect string, offset: 0x2f3): __ru_msgrcv_word	
-    <2a2>   DW_AT_decl_file   : 4	
-    <2a3>   DW_AT_decl_line   : 261	
-    <2a5>   DW_AT_type        : <0x8b>	
- <2><2a9>: Abbrev Number: 0
- <1><2aa>: Abbrev Number: 14 (DW_TAG_union_type)
-    <2ab>   DW_AT_byte_size   : 8	
-    <2ac>   DW_AT_decl_file   : 4	
-    <2ad>   DW_AT_decl_line   : 264	
-    <2af>   DW_AT_sibling     : <0x2cc>	
- <2><2b3>: Abbrev Number: 15 (DW_TAG_member)
-    <2b4>   DW_AT_name        : (indirect string, offset: 0x245): ru_nsignals	
-    <2b8>   DW_AT_decl_file   : 4	
-    <2b9>   DW_AT_decl_line   : 266	
-    <2bb>   DW_AT_type        : <0x55>	
- <2><2bf>: Abbrev Number: 15 (DW_TAG_member)
-    <2c0>   DW_AT_name        : (indirect string, offset: 0x263): __ru_nsignals_word	
-    <2c4>   DW_AT_decl_file   : 4	
-    <2c5>   DW_AT_decl_line   : 267	
-    <2c7>   DW_AT_type        : <0x8b>	
- <2><2cb>: Abbrev Number: 0
- <1><2cc>: Abbrev Number: 14 (DW_TAG_union_type)
-    <2cd>   DW_AT_byte_size   : 8	
-    <2ce>   DW_AT_decl_file   : 4	
-    <2cf>   DW_AT_decl_line   : 272	
-    <2d1>   DW_AT_sibling     : <0x2ee>	
- <2><2d5>: Abbrev Number: 15 (DW_TAG_member)
-    <2d6>   DW_AT_name        : (indirect string, offset: 0x1c): ru_nvcsw	
-    <2da>   DW_AT_decl_file   : 4	
-    <2db>   DW_AT_decl_line   : 274	
-    <2dd>   DW_AT_type        : <0x55>	
- <2><2e1>: Abbrev Number: 15 (DW_TAG_member)
-    <2e2>   DW_AT_name        : (indirect string, offset: 0x25): __ru_nvcsw_word	
-    <2e6>   DW_AT_decl_file   : 4	
-    <2e7>   DW_AT_decl_line   : 275	
-    <2e9>   DW_AT_type        : <0x8b>	
- <2><2ed>: Abbrev Number: 0
- <1><2ee>: Abbrev Number: 14 (DW_TAG_union_type)
-    <2ef>   DW_AT_byte_size   : 8	
-    <2f0>   DW_AT_decl_file   : 4	
-    <2f1>   DW_AT_decl_line   : 279	
-    <2f3>   DW_AT_sibling     : <0x310>	
- <2><2f7>: Abbrev Number: 15 (DW_TAG_member)
-    <2f8>   DW_AT_name        : (indirect string, offset: 0x304): ru_nivcsw	
-    <2fc>   DW_AT_decl_file   : 4	
-    <2fd>   DW_AT_decl_line   : 281	
-    <2ff>   DW_AT_type        : <0x55>	
- <2><303>: Abbrev Number: 15 (DW_TAG_member)
-    <304>   DW_AT_name        : (indirect string, offset: 0x2ab): __ru_nivcsw_word	
-    <308>   DW_AT_decl_file   : 4	
-    <309>   DW_AT_decl_line   : 282	
-    <30b>   DW_AT_type        : <0x8b>	
- <2><30f>: Abbrev Number: 0
- <1><310>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <311>   DW_AT_name        : (indirect string, offset: 0x1dc): rusage	
-    <315>   DW_AT_byte_size   : 144	
-    <316>   DW_AT_decl_file   : 4	
-    <317>   DW_AT_decl_line   : 187	
-    <318>   DW_AT_sibling     : <0x3ab>	
- <2><31c>: Abbrev Number: 6 (DW_TAG_member)
-    <31d>   DW_AT_name        : (indirect string, offset: 0x217): ru_utime	
-    <321>   DW_AT_decl_file   : 4	
-    <322>   DW_AT_decl_line   : 190	
-    <323>   DW_AT_type        : <0x9d>	
-    <327>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><32a>: Abbrev Number: 6 (DW_TAG_member)
-    <32b>   DW_AT_name        : (indirect string, offset: 0x31e): ru_stime	
-    <32f>   DW_AT_decl_file   : 4	
-    <330>   DW_AT_decl_line   : 192	
-    <331>   DW_AT_type        : <0x9d>	
-    <335>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><338>: Abbrev Number: 16 (DW_TAG_member)
-    <339>   DW_AT_type        : <0x152>	
-    <33d>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><340>: Abbrev Number: 16 (DW_TAG_member)
-    <341>   DW_AT_type        : <0x171>	
-    <345>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><348>: Abbrev Number: 16 (DW_TAG_member)
-    <349>   DW_AT_type        : <0x190>	
-    <34d>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><350>: Abbrev Number: 16 (DW_TAG_member)
-    <351>   DW_AT_type        : <0x1af>	
-    <355>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><358>: Abbrev Number: 16 (DW_TAG_member)
-    <359>   DW_AT_type        : <0x1ce>	
-    <35d>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><360>: Abbrev Number: 16 (DW_TAG_member)
-    <361>   DW_AT_type        : <0x1ed>	
-    <365>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><368>: Abbrev Number: 16 (DW_TAG_member)
-    <369>   DW_AT_type        : <0x20c>	
-    <36d>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><370>: Abbrev Number: 16 (DW_TAG_member)
-    <371>   DW_AT_type        : <0x22b>	
-    <375>   DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
- <2><378>: Abbrev Number: 16 (DW_TAG_member)
-    <379>   DW_AT_type        : <0x24a>	
-    <37d>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><380>: Abbrev Number: 16 (DW_TAG_member)
-    <381>   DW_AT_type        : <0x269>	
-    <385>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><388>: Abbrev Number: 16 (DW_TAG_member)
-    <389>   DW_AT_type        : <0x288>	
-    <38d>   DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
- <2><390>: Abbrev Number: 16 (DW_TAG_member)
-    <391>   DW_AT_type        : <0x2aa>	
-    <395>   DW_AT_data_member_location: 2 byte block: 23 78 	(DW_OP_plus_uconst: 120)
- <2><398>: Abbrev Number: 16 (DW_TAG_member)
-    <399>   DW_AT_type        : <0x2cc>	
-    <39d>   DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
- <2><3a1>: Abbrev Number: 16 (DW_TAG_member)
-    <3a2>   DW_AT_type        : <0x2ee>	
-    <3a6>   DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
- <2><3aa>: Abbrev Number: 0
- <1><3ab>: Abbrev Number: 4 (DW_TAG_typedef)
-    <3ac>   DW_AT_name        : (indirect string, offset: 0x30e): rusage_t	
-    <3b0>   DW_AT_decl_file   : 5	
-    <3b1>   DW_AT_decl_line   : 35	
-    <3b2>   DW_AT_type        : <0x310>	
- <1><3b6>: Abbrev Number: 17 (DW_TAG_variable)
-    <3b7>   DW_AT_name        : (indirect string, offset: 0x1b4): current_wordsize	
-    <3bb>   DW_AT_decl_file   : 6	
-    <3bc>   DW_AT_decl_line   : 757	
-    <3be>   DW_AT_type        : <0x47>	
-    <3c2>   DW_AT_external    : 1	
-    <3c3>   DW_AT_declaration : 1	
- <1><3c4>: Abbrev Number: 17 (DW_TAG_variable)
-    <3c5>   DW_AT_name        : (indirect string, offset: 0x317): sysent	
-    <3c9>   DW_AT_decl_file   : 6	
-    <3ca>   DW_AT_decl_line   : 892	
-    <3cc>   DW_AT_type        : <0x140>	
-    <3d0>   DW_AT_external    : 1	
-    <3d1>   DW_AT_declaration : 1	
- <1><3d2>: Abbrev Number: 17 (DW_TAG_variable)
-    <3d3>   DW_AT_name        : (indirect string, offset: 0x1fa): nsyscalls	
-    <3d7>   DW_AT_decl_file   : 6	
-    <3d8>   DW_AT_decl_line   : 903	
-    <3da>   DW_AT_type        : <0x47>	
-    <3de>   DW_AT_external    : 1	
-    <3df>   DW_AT_declaration : 1	
- <1><3e0>: Abbrev Number: 18 (DW_TAG_variable)
-    <3e1>   DW_AT_name        : (indirect string, offset: 0x140): mpers_target_var	
-    <3e5>   DW_AT_decl_file   : 5	
-    <3e6>   DW_AT_decl_line   : 37	
-    <3e7>   DW_AT_type        : <0x3ab>	
-    <3eb>   DW_AT_external    : 1	
-    <3ec>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><3f2>: Abbrev Number: 0
-
diff --git a/mpers-mx32/rusage_t.d2 b/mpers-mx32/rusage_t.d2
deleted file mode 100644
index 801e892..0000000
--- a/mpers-mx32/rusage_t.d2
+++ /dev/null
@@ -1,549 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a8): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x5e): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x129): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x194): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x204): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1e3): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c5): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x137): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x288): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x78): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2bc): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x327): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x63>
-<1><8b>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x9e): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x63>
-<1><96>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x230): char
-<1><9d>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2c5): timeval
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xc6>
-<2><a9>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3e): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b7>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2eb): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><c6>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcc>
-<1><cc>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x96>
-<1><d1>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x317): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x124>
-<2><dd>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a2): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><eb>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f0): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><f9>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><107>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><115>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x95): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xc6>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><124>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x12f>
-<2><12d>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><12f>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x124>
-<1><135>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2dd): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xd1>
-<1><140>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x146>
-<1><146>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x135>
-<1><14b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x235): _Bool
-<1><152>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 194
-DW_AT_sibling     : <0x171>
-<2><15a>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10e): ru_maxrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 196
-DW_AT_type        : <0x55>
-<2><165>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x151): __ru_maxrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 197
-DW_AT_type        : <0x8b>
-<1><171>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 202
-DW_AT_sibling     : <0x190>
-<2><179>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x35): ru_ixrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 204
-DW_AT_type        : <0x55>
-<2><184>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2cd): __ru_ixrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 205
-DW_AT_type        : <0x8b>
-<1><190>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 208
-DW_AT_sibling     : <0x1af>
-<2><198>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x55): ru_idrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 210
-DW_AT_type        : <0x55>
-<2><1a3>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x45): __ru_idrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 211
-DW_AT_type        : <0x8b>
-<1><1af>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 214
-DW_AT_sibling     : <0x1ce>
-<2><1b7>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xba): ru_isrss
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 216
-DW_AT_type        : <0x55>
-<2><1c2>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): __ru_isrss_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 217
-DW_AT_type        : <0x8b>
-<1><1ce>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 221
-DW_AT_sibling     : <0x1ed>
-<2><1d6>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12): ru_minflt
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 223
-DW_AT_type        : <0x55>
-<2><1e1>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x118): __ru_minflt_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 224
-DW_AT_type        : <0x8b>
-<1><1ed>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 227
-DW_AT_sibling     : <0x20c>
-<2><1f5>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb0): ru_majflt
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 229
-DW_AT_type        : <0x55>
-<2><200>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x183): __ru_majflt_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 230
-DW_AT_type        : <0x8b>
-<1><20c>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 233
-DW_AT_sibling     : <0x22b>
-<2><214>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x81): ru_nswap
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 235
-DW_AT_type        : <0x55>
-<2><21f>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x68): __ru_nswap_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 236
-DW_AT_type        : <0x8b>
-<1><22b>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 240
-DW_AT_sibling     : <0x24a>
-<2><233>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x162): ru_inblock
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 242
-DW_AT_type        : <0x55>
-<2><23e>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x251): __ru_inblock_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 243
-DW_AT_type        : <0x8b>
-<1><24a>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 246
-DW_AT_sibling     : <0x269>
-<2><252>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8a): ru_oublock
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 248
-DW_AT_type        : <0x55>
-<2><25d>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x276): __ru_oublock_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 249
-DW_AT_type        : <0x8b>
-<1><269>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 252
-DW_AT_sibling     : <0x288>
-<2><271>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23b): ru_msgsnd
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 254
-DW_AT_type        : <0x55>
-<2><27c>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29a): __ru_msgsnd_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 255
-DW_AT_type        : <0x8b>
-<1><288>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 258
-DW_AT_sibling     : <0x2aa>
-<2><291>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x335): ru_msgrcv
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 260
-DW_AT_type        : <0x55>
-<2><29d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2f3): __ru_msgrcv_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 261
-DW_AT_type        : <0x8b>
-<1><2aa>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 264
-DW_AT_sibling     : <0x2cc>
-<2><2b3>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x245): ru_nsignals
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 266
-DW_AT_type        : <0x55>
-<2><2bf>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x263): __ru_nsignals_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 267
-DW_AT_type        : <0x8b>
-<1><2cc>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 272
-DW_AT_sibling     : <0x2ee>
-<2><2d5>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c): ru_nvcsw
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 274
-DW_AT_type        : <0x55>
-<2><2e1>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25): __ru_nvcsw_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 275
-DW_AT_type        : <0x8b>
-<1><2ee>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 279
-DW_AT_sibling     : <0x310>
-<2><2f7>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x304): ru_nivcsw
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 281
-DW_AT_type        : <0x55>
-<2><303>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ab): __ru_nivcsw_word
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 282
-DW_AT_type        : <0x8b>
-<1><310>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1dc): rusage
-DW_AT_byte_size   : 144
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 187
-DW_AT_sibling     : <0x3ab>
-<2><31c>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x217): ru_utime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 190
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><32a>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x31e): ru_stime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 192
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><338>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x152>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><340>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x171>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><348>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x190>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><350>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1af>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><358>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1ce>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><360>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1ed>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><368>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x20c>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<2><370>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x22b>
-DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
-<2><378>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x24a>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><380>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x269>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<2><388>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x288>
-DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
-<2><390>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x2aa>
-DW_AT_data_member_location: 2 byte block: 23 78 	(DW_OP_plus_uconst: 120)
-<2><398>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x2cc>
-DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
-<2><3a1>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x2ee>
-DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
-<1><3ab>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x30e): rusage_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x310>
-<1><3b6>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b4): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3c4>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x317): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x140>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3d2>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1fa): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3e0>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x140): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x3ab>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/sample.c b/mpers-mx32/sample.c
index 4c65608..1eedf1c 100644
--- a/mpers-mx32/sample.c
+++ b/mpers-mx32/sample.c
@@ -16,7 +16,7 @@
 		long long sll __attribute__((__aligned__(8)));
 		unsigned long long ull;
 		unsigned long ul;
-		long asl[3];
+		long asl[3][5][7];
 		char f;
 		/* unsigned char mpers_end_filler_4[7]; */
 	} s;
@@ -28,11 +28,11 @@
 		unsigned long ul;
 		int si;
 		unsigned ui;
-		short ss;
-		unsigned short us;
+		short ss[7][9];
+		unsigned short us[4];
 		char sc;
 		unsigned char uc;
-	} u[3];
+	} u[3][2];
 	short f[0];
 } sample_struct;
 #include MPERS_DEFS
diff --git a/mpers-mx32/sample.expected b/mpers-mx32/sample.expected
index 557ab69..3e6c2a5 100644
--- a/mpers-mx32/sample.expected
+++ b/mpers-mx32/sample.expected
@@ -17,7 +17,7 @@
 int64_t sll;
 uint64_t ull;
 uint32_t ul;
-int32_t asl[3];
+int32_t asl[3][5][7];
 char f;
 unsigned char mpers_end_filler_4[7];
 } ATTRIBUTE_PACKED s;
@@ -29,11 +29,11 @@
 uint32_t ul;
 int32_t si;
 uint32_t ui;
-int16_t ss;
-uint16_t us;
+int16_t ss[7][9];
+uint16_t us[4];
 char sc;
 unsigned char uc;
-} u[3];
+} u[3][2];
 int16_t f[0];
 } ATTRIBUTE_PACKED mx32_sample_struct;
 #define MPERS_mx32_sample_struct mx32_sample_struct
diff --git a/mpers-mx32/sample_struct.c b/mpers-mx32/sample_struct.c
index 6ebddcc..b9f6d05 100644
--- a/mpers-mx32/sample_struct.c
+++ b/mpers-mx32/sample_struct.c
@@ -15,7 +15,7 @@
 		long long sll __attribute__((__aligned__(8)));
 		unsigned long long ull;
 		unsigned long ul;
-		long asl[3];
+		long asl[3][5][7];
 		char f;
 		/* unsigned char mpers_end_filler_4[7]; */
 	} s;
@@ -27,11 +27,11 @@
 		unsigned long ul;
 		int si;
 		unsigned ui;
-		short ss;
-		unsigned short us;
+		short ss[7][9];
+		unsigned short us[4];
 		char sc;
 		unsigned char uc;
-	} u[3];
+	} u[3][2];
 	short f[0];
 } sample_struct;
 sample_struct mpers_target_var;
diff --git a/mpers-mx32/sample_struct.d1 b/mpers-mx32/sample_struct.d1
deleted file mode 100644
index 0b8ee9a..0000000
--- a/mpers-mx32/sample_struct.d1
+++ /dev/null
@@ -1,262 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x20d (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x1b): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x10f): mpers-mx32/sample_struct.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x77): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_structure_type)
-    <1e>   DW_AT_byte_size   : 72	
-    <1f>   DW_AT_decl_file   : 1	
-    <20>   DW_AT_decl_line   : 3	
-    <21>   DW_AT_sibling     : <0xd0>	
- <2><25>: Abbrev Number: 3 (DW_TAG_member)
-    <26>   DW_AT_name        : p	
-    <28>   DW_AT_decl_file   : 1	
-    <29>   DW_AT_decl_line   : 4	
-    <2a>   DW_AT_type        : <0xd0>	
-    <2e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><31>: Abbrev Number: 3 (DW_TAG_member)
-    <32>   DW_AT_name        : sc	
-    <35>   DW_AT_decl_file   : 1	
-    <36>   DW_AT_decl_line   : 5	
-    <37>   DW_AT_type        : <0xd2>	
-    <3b>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3e>: Abbrev Number: 3 (DW_TAG_member)
-    <3f>   DW_AT_name        : ss	
-    <42>   DW_AT_decl_file   : 1	
-    <43>   DW_AT_decl_line   : 7	
-    <44>   DW_AT_type        : <0xd9>	
-    <48>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><4b>: Abbrev Number: 3 (DW_TAG_member)
-    <4c>   DW_AT_name        : uc	
-    <4f>   DW_AT_decl_file   : 1	
-    <50>   DW_AT_decl_line   : 8	
-    <51>   DW_AT_type        : <0xe0>	
-    <55>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><58>: Abbrev Number: 3 (DW_TAG_member)
-    <59>   DW_AT_name        : si	
-    <5c>   DW_AT_decl_file   : 1	
-    <5d>   DW_AT_decl_line   : 10	
-    <5e>   DW_AT_type        : <0xe7>	
-    <62>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><65>: Abbrev Number: 3 (DW_TAG_member)
-    <66>   DW_AT_name        : ui	
-    <69>   DW_AT_decl_file   : 1	
-    <6a>   DW_AT_decl_line   : 11	
-    <6b>   DW_AT_type        : <0xee>	
-    <6f>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><72>: Abbrev Number: 3 (DW_TAG_member)
-    <73>   DW_AT_name        : sl	
-    <76>   DW_AT_decl_file   : 1	
-    <77>   DW_AT_decl_line   : 12	
-    <78>   DW_AT_type        : <0xf5>	
-    <7c>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><7f>: Abbrev Number: 3 (DW_TAG_member)
-    <80>   DW_AT_name        : us	
-    <83>   DW_AT_decl_file   : 1	
-    <84>   DW_AT_decl_line   : 13	
-    <85>   DW_AT_type        : <0xfc>	
-    <89>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><8c>: Abbrev Number: 3 (DW_TAG_member)
-    <8d>   DW_AT_name        : sll	
-    <91>   DW_AT_decl_file   : 1	
-    <92>   DW_AT_decl_line   : 15	
-    <93>   DW_AT_type        : <0x103>	
-    <97>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><9a>: Abbrev Number: 3 (DW_TAG_member)
-    <9b>   DW_AT_name        : ull	
-    <9f>   DW_AT_decl_file   : 1	
-    <a0>   DW_AT_decl_line   : 16	
-    <a1>   DW_AT_type        : <0x10a>	
-    <a5>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><a8>: Abbrev Number: 3 (DW_TAG_member)
-    <a9>   DW_AT_name        : ul	
-    <ac>   DW_AT_decl_file   : 1	
-    <ad>   DW_AT_decl_line   : 17	
-    <ae>   DW_AT_type        : <0x111>	
-    <b2>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><b5>: Abbrev Number: 3 (DW_TAG_member)
-    <b6>   DW_AT_name        : asl	
-    <ba>   DW_AT_decl_file   : 1	
-    <bb>   DW_AT_decl_line   : 18	
-    <bc>   DW_AT_type        : <0x118>	
-    <c0>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><c3>: Abbrev Number: 3 (DW_TAG_member)
-    <c4>   DW_AT_name        : f	
-    <c6>   DW_AT_decl_file   : 1	
-    <c7>   DW_AT_decl_line   : 19	
-    <c8>   DW_AT_type        : <0xd2>	
-    <cc>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><cf>: Abbrev Number: 0
- <1><d0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <d1>   DW_AT_byte_size   : 4	
- <1><d2>: Abbrev Number: 5 (DW_TAG_base_type)
-    <d3>   DW_AT_byte_size   : 1	
-    <d4>   DW_AT_encoding    : 6	(signed char)
-    <d5>   DW_AT_name        : (indirect string, offset: 0xb6): char	
- <1><d9>: Abbrev Number: 5 (DW_TAG_base_type)
-    <da>   DW_AT_byte_size   : 2	
-    <db>   DW_AT_encoding    : 5	(signed)
-    <dc>   DW_AT_name        : (indirect string, offset: 0x105): short int	
- <1><e0>: Abbrev Number: 5 (DW_TAG_base_type)
-    <e1>   DW_AT_byte_size   : 1	
-    <e2>   DW_AT_encoding    : 8	(unsigned char)
-    <e3>   DW_AT_name        : (indirect string, offset: 0xa8): unsigned char	
- <1><e7>: Abbrev Number: 6 (DW_TAG_base_type)
-    <e8>   DW_AT_byte_size   : 4	
-    <e9>   DW_AT_encoding    : 5	(signed)
-    <ea>   DW_AT_name        : int	
- <1><ee>: Abbrev Number: 5 (DW_TAG_base_type)
-    <ef>   DW_AT_byte_size   : 4	
-    <f0>   DW_AT_encoding    : 7	(unsigned)
-    <f1>   DW_AT_name        : (indirect string, offset: 0xe): unsigned int	
- <1><f5>: Abbrev Number: 5 (DW_TAG_base_type)
-    <f6>   DW_AT_byte_size   : 4	
-    <f7>   DW_AT_encoding    : 5	(signed)
-    <f8>   DW_AT_name        : (indirect string, offset: 0xbb): long int	
- <1><fc>: Abbrev Number: 5 (DW_TAG_base_type)
-    <fd>   DW_AT_byte_size   : 2	
-    <fe>   DW_AT_encoding    : 7	(unsigned)
-    <ff>   DW_AT_name        : (indirect string, offset: 0xe9): short unsigned int	
- <1><103>: Abbrev Number: 5 (DW_TAG_base_type)
-    <104>   DW_AT_byte_size   : 8	
-    <105>   DW_AT_encoding    : 5	(signed)
-    <106>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><10a>: Abbrev Number: 5 (DW_TAG_base_type)
-    <10b>   DW_AT_byte_size   : 8	
-    <10c>   DW_AT_encoding    : 7	(unsigned)
-    <10d>   DW_AT_name        : (indirect string, offset: 0xc4): long long unsigned int	
- <1><111>: Abbrev Number: 5 (DW_TAG_base_type)
-    <112>   DW_AT_byte_size   : 4	
-    <113>   DW_AT_encoding    : 7	(unsigned)
-    <114>   DW_AT_name        : (indirect string, offset: 0x12a): long unsigned int	
- <1><118>: Abbrev Number: 7 (DW_TAG_array_type)
-    <119>   DW_AT_type        : <0xf5>	
-    <11d>   DW_AT_sibling     : <0x128>	
- <2><121>: Abbrev Number: 8 (DW_TAG_subrange_type)
-    <122>   DW_AT_type        : <0x128>	
-    <126>   DW_AT_upper_bound : 2	
- <2><127>: Abbrev Number: 0
- <1><128>: Abbrev Number: 5 (DW_TAG_base_type)
-    <129>   DW_AT_byte_size   : 4	
-    <12a>   DW_AT_encoding    : 7	(unsigned)
-    <12b>   DW_AT_name        : (indirect string, offset: 0xfc): sizetype	
- <1><12f>: Abbrev Number: 9 (DW_TAG_union_type)
-    <130>   DW_AT_byte_size   : 8	
-    <131>   DW_AT_decl_file   : 1	
-    <132>   DW_AT_decl_line   : 22	
-    <133>   DW_AT_sibling     : <0x1a7>	
- <2><137>: Abbrev Number: 10 (DW_TAG_member)
-    <138>   DW_AT_name        : sll	
-    <13c>   DW_AT_decl_file   : 1	
-    <13d>   DW_AT_decl_line   : 23	
-    <13e>   DW_AT_type        : <0x103>	
- <2><142>: Abbrev Number: 10 (DW_TAG_member)
-    <143>   DW_AT_name        : ull	
-    <147>   DW_AT_decl_file   : 1	
-    <148>   DW_AT_decl_line   : 24	
-    <149>   DW_AT_type        : <0x10a>	
- <2><14d>: Abbrev Number: 10 (DW_TAG_member)
-    <14e>   DW_AT_name        : p	
-    <150>   DW_AT_decl_file   : 1	
-    <151>   DW_AT_decl_line   : 25	
-    <152>   DW_AT_type        : <0xd0>	
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : sl	
-    <15a>   DW_AT_decl_file   : 1	
-    <15b>   DW_AT_decl_line   : 26	
-    <15c>   DW_AT_type        : <0xf5>	
- <2><160>: Abbrev Number: 10 (DW_TAG_member)
-    <161>   DW_AT_name        : ul	
-    <164>   DW_AT_decl_file   : 1	
-    <165>   DW_AT_decl_line   : 27	
-    <166>   DW_AT_type        : <0x111>	
- <2><16a>: Abbrev Number: 10 (DW_TAG_member)
-    <16b>   DW_AT_name        : si	
-    <16e>   DW_AT_decl_file   : 1	
-    <16f>   DW_AT_decl_line   : 28	
-    <170>   DW_AT_type        : <0xe7>	
- <2><174>: Abbrev Number: 10 (DW_TAG_member)
-    <175>   DW_AT_name        : ui	
-    <178>   DW_AT_decl_file   : 1	
-    <179>   DW_AT_decl_line   : 29	
-    <17a>   DW_AT_type        : <0xee>	
- <2><17e>: Abbrev Number: 10 (DW_TAG_member)
-    <17f>   DW_AT_name        : ss	
-    <182>   DW_AT_decl_file   : 1	
-    <183>   DW_AT_decl_line   : 30	
-    <184>   DW_AT_type        : <0xd9>	
- <2><188>: Abbrev Number: 10 (DW_TAG_member)
-    <189>   DW_AT_name        : us	
-    <18c>   DW_AT_decl_file   : 1	
-    <18d>   DW_AT_decl_line   : 31	
-    <18e>   DW_AT_type        : <0xfc>	
- <2><192>: Abbrev Number: 10 (DW_TAG_member)
-    <193>   DW_AT_name        : sc	
-    <196>   DW_AT_decl_file   : 1	
-    <197>   DW_AT_decl_line   : 32	
-    <198>   DW_AT_type        : <0xd2>	
- <2><19c>: Abbrev Number: 10 (DW_TAG_member)
-    <19d>   DW_AT_name        : uc	
-    <1a0>   DW_AT_decl_file   : 1	
-    <1a1>   DW_AT_decl_line   : 33	
-    <1a2>   DW_AT_type        : <0xe0>	
- <2><1a6>: Abbrev Number: 0
- <1><1a7>: Abbrev Number: 2 (DW_TAG_structure_type)
-    <1a8>   DW_AT_byte_size   : 96	
-    <1a9>   DW_AT_decl_file   : 1	
-    <1aa>   DW_AT_decl_line   : 2	
-    <1ab>   DW_AT_sibling     : <0x1d4>	
- <2><1af>: Abbrev Number: 3 (DW_TAG_member)
-    <1b0>   DW_AT_name        : s	
-    <1b2>   DW_AT_decl_file   : 1	
-    <1b3>   DW_AT_decl_line   : 21	
-    <1b4>   DW_AT_type        : <0x1d>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1bb>: Abbrev Number: 3 (DW_TAG_member)
-    <1bc>   DW_AT_name        : u	
-    <1be>   DW_AT_decl_file   : 1	
-    <1bf>   DW_AT_decl_line   : 34	
-    <1c0>   DW_AT_type        : <0x1d4>	
-    <1c4>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1c7>: Abbrev Number: 3 (DW_TAG_member)
-    <1c8>   DW_AT_name        : f	
-    <1ca>   DW_AT_decl_file   : 1	
-    <1cb>   DW_AT_decl_line   : 35	
-    <1cc>   DW_AT_type        : <0x1e4>	
-    <1d0>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><1d3>: Abbrev Number: 0
- <1><1d4>: Abbrev Number: 7 (DW_TAG_array_type)
-    <1d5>   DW_AT_type        : <0x12f>	
-    <1d9>   DW_AT_sibling     : <0x1e4>	
- <2><1dd>: Abbrev Number: 8 (DW_TAG_subrange_type)
-    <1de>   DW_AT_type        : <0x128>	
-    <1e2>   DW_AT_upper_bound : 2	
- <2><1e3>: Abbrev Number: 0
- <1><1e4>: Abbrev Number: 7 (DW_TAG_array_type)
-    <1e5>   DW_AT_type        : <0xd9>	
-    <1e9>   DW_AT_sibling     : <0x1f3>	
- <2><1ed>: Abbrev Number: 11 (DW_TAG_subrange_type)
-    <1ee>   DW_AT_type        : <0x128>	
- <2><1f2>: Abbrev Number: 0
- <1><1f3>: Abbrev Number: 12 (DW_TAG_typedef)
-    <1f4>   DW_AT_name        : (indirect string, offset: 0xdb): sample_struct	
-    <1f8>   DW_AT_decl_file   : 1	
-    <1f9>   DW_AT_decl_line   : 36	
-    <1fa>   DW_AT_type        : <0x1a7>	
- <1><1fe>: Abbrev Number: 13 (DW_TAG_variable)
-    <1ff>   DW_AT_name        : (indirect string, offset: 0x66): mpers_target_var	
-    <203>   DW_AT_decl_file   : 1	
-    <204>   DW_AT_decl_line   : 37	
-    <205>   DW_AT_type        : <0x1f3>	
-    <209>   DW_AT_external    : 1	
-    <20a>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><210>: Abbrev Number: 0
-
diff --git a/mpers-mx32/sample_struct.d2 b/mpers-mx32/sample_struct.d2
deleted file mode 100644
index 336bee5..0000000
--- a/mpers-mx32/sample_struct.d2
+++ /dev/null
@@ -1,291 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_structure_type)
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 3
-DW_AT_sibling     : <0xd0>
-<2><25>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : p
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_type        : <0xd0>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><31>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : sc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0xd2>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3e>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ss
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0xd9>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><4b>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : uc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe0>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><58>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : si
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xe7>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><65>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ui
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 11
-DW_AT_type        : <0xee>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><72>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : sl
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 12
-DW_AT_type        : <0xf5>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><7f>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : us
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 13
-DW_AT_type        : <0xfc>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><8c>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : sll
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 15
-DW_AT_type        : <0x103>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><9a>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ull
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 16
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><a8>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : ul
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 17
-DW_AT_type        : <0x111>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><b5>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : asl
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 18
-DW_AT_type        : <0x118>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><c3>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : f
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 19
-DW_AT_type        : <0xd2>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<1><d0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><d2>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0xb6): char
-<1><d9>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x105): short int
-<1><e0>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa8): unsigned char
-<1><e7>
-Abbrev Number: 6 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><ee>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe): unsigned int
-<1><f5>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xbb): long int
-<1><fc>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe9): short unsigned int
-<1><103>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><10a>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc4): long long unsigned int
-<1><111>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12a): long unsigned int
-<1><118>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0xf5>
-DW_AT_sibling     : <0x128>
-<2><121>
-Abbrev Number: 8 (DW_TAG_subrange_type)
-DW_AT_type        : <0x128>
-DW_AT_upper_bound : 2
-<1><128>
-Abbrev Number: 5 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xfc): sizetype
-<1><12f>
-Abbrev Number: 9 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 22
-DW_AT_sibling     : <0x1a7>
-<2><137>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sll
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x103>
-<2><142>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ull
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 24
-DW_AT_type        : <0x10a>
-<2><14d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : p
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 25
-DW_AT_type        : <0xd0>
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sl
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 26
-DW_AT_type        : <0xf5>
-<2><160>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ul
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x111>
-<2><16a>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : si
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 28
-DW_AT_type        : <0xe7>
-<2><174>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ui
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 29
-DW_AT_type        : <0xee>
-<2><17e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : ss
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 30
-DW_AT_type        : <0xd9>
-<2><188>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : us
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 31
-DW_AT_type        : <0xfc>
-<2><192>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 32
-DW_AT_type        : <0xd2>
-<2><19c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : uc
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 33
-DW_AT_type        : <0xe0>
-<1><1a7>
-Abbrev Number: 2 (DW_TAG_structure_type)
-DW_AT_byte_size   : 96
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 2
-DW_AT_sibling     : <0x1d4>
-<2><1af>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : s
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 21
-DW_AT_type        : <0x1d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1bb>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : u
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1d4>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><1c7>
-Abbrev Number: 3 (DW_TAG_member)
-DW_AT_name        : f
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x1e4>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<1><1d4>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0x12f>
-DW_AT_sibling     : <0x1e4>
-<2><1dd>
-Abbrev Number: 8 (DW_TAG_subrange_type)
-DW_AT_type        : <0x128>
-DW_AT_upper_bound : 2
-<1><1e4>
-Abbrev Number: 7 (DW_TAG_array_type)
-DW_AT_type        : <0xd9>
-DW_AT_sibling     : <0x1f3>
-<2><1ed>
-Abbrev Number: 11 (DW_TAG_subrange_type)
-DW_AT_type        : <0x128>
-<1><1f3>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xdb): sample_struct
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x1a7>
-<1><1fe>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x66): mpers_target_var
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x1f3>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/sample_struct.h b/mpers-mx32/sample_struct.h
index 557ab69..3e6c2a5 100644
--- a/mpers-mx32/sample_struct.h
+++ b/mpers-mx32/sample_struct.h
@@ -17,7 +17,7 @@
 int64_t sll;
 uint64_t ull;
 uint32_t ul;
-int32_t asl[3];
+int32_t asl[3][5][7];
 char f;
 unsigned char mpers_end_filler_4[7];
 } ATTRIBUTE_PACKED s;
@@ -29,11 +29,11 @@
 uint32_t ul;
 int32_t si;
 uint32_t ui;
-int16_t ss;
-uint16_t us;
+int16_t ss[7][9];
+uint16_t us[4];
 char sc;
 unsigned char uc;
-} u[3];
+} u[3][2];
 int16_t f[0];
 } ATTRIBUTE_PACKED mx32_sample_struct;
 #define MPERS_mx32_sample_struct mx32_sample_struct
diff --git a/mpers-mx32/seccomp_fprog_t.c b/mpers-mx32/seccomp_fprog_t.c
index 7f2f131..f26c70c 100644
--- a/mpers-mx32/seccomp_fprog_t.c
+++ b/mpers-mx32/seccomp_fprog_t.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/mpers-mx32/seccomp_fprog_t.d1 b/mpers-mx32/seccomp_fprog_t.d1
deleted file mode 100644
index db1cefc..0000000
--- a/mpers-mx32/seccomp_fprog_t.d1
+++ /dev/null
@@ -1,179 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x16a (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x40): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x138): mpers-mx32/seccomp_fprog_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0xba): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x18d): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1a2): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x155): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x109): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x17a): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1ac): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xeb): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x11c): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xa2): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x199): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x117): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x163): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x9c): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x12e): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x125): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x1f): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x11): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0xb4): _Bool	
- <1><fd>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x28): seccomp_fprog	
-    <102>   DW_AT_byte_size   : 8	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 4	
-    <105>   DW_AT_sibling     : <0x126>	
- <2><109>: Abbrev Number: 8 (DW_TAG_member)
-    <10a>   DW_AT_name        : len	
-    <10e>   DW_AT_decl_file   : 2	
-    <10f>   DW_AT_decl_line   : 5	
-    <110>   DW_AT_type        : <0x40>	
-    <114>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><117>: Abbrev Number: 7 (DW_TAG_member)
-    <118>   DW_AT_name        : (indirect string, offset: 0x102): filter	
-    <11c>   DW_AT_decl_file   : 2	
-    <11d>   DW_AT_decl_line   : 6	
-    <11e>   DW_AT_type        : <0x5c>	
-    <122>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><125>: Abbrev Number: 0
- <1><126>: Abbrev Number: 11 (DW_TAG_typedef)
-    <127>   DW_AT_name        : (indirect string, offset: 0x16a): seccomp_fprog_t	
-    <12b>   DW_AT_decl_file   : 3	
-    <12c>   DW_AT_decl_line   : 32	
-    <12d>   DW_AT_type        : <0xfd>	
- <1><131>: Abbrev Number: 12 (DW_TAG_variable)
-    <132>   DW_AT_name        : (indirect string, offset: 0x0): current_wordsize	
-    <136>   DW_AT_decl_file   : 4	
-    <137>   DW_AT_decl_line   : 757	
-    <139>   DW_AT_type        : <0x47>	
-    <13d>   DW_AT_external    : 1	
-    <13e>   DW_AT_declaration : 1	
- <1><13f>: Abbrev Number: 12 (DW_TAG_variable)
-    <140>   DW_AT_name        : (indirect string, offset: 0x163): sysent	
-    <144>   DW_AT_decl_file   : 4	
-    <145>   DW_AT_decl_line   : 892	
-    <147>   DW_AT_type        : <0xeb>	
-    <14b>   DW_AT_external    : 1	
-    <14c>   DW_AT_declaration : 1	
- <1><14d>: Abbrev Number: 12 (DW_TAG_variable)
-    <14e>   DW_AT_name        : (indirect string, offset: 0x36): nsyscalls	
-    <152>   DW_AT_decl_file   : 4	
-    <153>   DW_AT_decl_line   : 903	
-    <155>   DW_AT_type        : <0x47>	
-    <159>   DW_AT_external    : 1	
-    <15a>   DW_AT_declaration : 1	
- <1><15b>: Abbrev Number: 13 (DW_TAG_variable)
-    <15c>   DW_AT_name        : (indirect string, offset: 0x8b): mpers_target_var	
-    <160>   DW_AT_decl_file   : 3	
-    <161>   DW_AT_decl_line   : 34	
-    <162>   DW_AT_type        : <0x126>	
-    <166>   DW_AT_external    : 1	
-    <167>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><16d>: Abbrev Number: 0
-
diff --git a/mpers-mx32/seccomp_fprog_t.d2 b/mpers-mx32/seccomp_fprog_t.d2
deleted file mode 100644
index c6b3cc3..0000000
--- a/mpers-mx32/seccomp_fprog_t.d2
+++ /dev/null
@@ -1,196 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x18d): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a2): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x155): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x109): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x17a): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1ac): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xeb): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x11c): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa2): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x199): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x117): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x163): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9c): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12e): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x125): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xb4): _Bool
-<1><fd>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x28): seccomp_fprog
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x126>
-<2><109>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><117>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x102): filter
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><126>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x16a): seccomp_fprog_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0xfd>
-<1><131>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x0): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><13f>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x163): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><14d>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x36): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><15b>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x8b): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x126>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-mx32/shmid_ds_t.c b/mpers-mx32/shmid_ds_t.c
index 0d77b84..af4a7d2 100644
--- a/mpers-mx32/shmid_ds_t.c
+++ b/mpers-mx32/shmid_ds_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/mpers-mx32/shmid_ds_t.d1 b/mpers-mx32/shmid_ds_t.d1
deleted file mode 100644
index 30a4171..0000000
--- a/mpers-mx32/shmid_ds_t.d1
+++ /dev/null
@@ -1,350 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2ef (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x30): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xde): mpers-mx32/shmid_ds_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1b5): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x298): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x22b): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x201): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd0): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x7b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x188): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xb9): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x287): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xff): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x179): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x2bf): __u_quad_t	
-    <73>   DW_AT_decl_file   : 1	
-    <74>   DW_AT_decl_line   : 56	
-    <75>   DW_AT_type        : <0x4e>	
- <1><79>: Abbrev Number: 4 (DW_TAG_typedef)
-    <7a>   DW_AT_name        : (indirect string, offset: 0x28): __uid_t	
-    <7e>   DW_AT_decl_file   : 1	
-    <7f>   DW_AT_decl_line   : 125	
-    <80>   DW_AT_type        : <0x47>	
- <1><84>: Abbrev Number: 4 (DW_TAG_typedef)
-    <85>   DW_AT_name        : (indirect string, offset: 0x1f0): __gid_t	
-    <89>   DW_AT_decl_file   : 1	
-    <8a>   DW_AT_decl_line   : 126	
-    <8b>   DW_AT_type        : <0x47>	
- <1><8f>: Abbrev Number: 4 (DW_TAG_typedef)
-    <90>   DW_AT_name        : (indirect string, offset: 0x290): __pid_t	
-    <94>   DW_AT_decl_file   : 1	
-    <95>   DW_AT_decl_line   : 133	
-    <96>   DW_AT_type        : <0x2b>	
- <1><9a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <9b>   DW_AT_byte_size   : 4	
-    <9c>   DW_AT_encoding    : 7	(unsigned)
-    <9d>   DW_AT_name        : (indirect string, offset: 0x1f8): sizetype	
- <1><a1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <a2>   DW_AT_name        : (indirect string, offset: 0x150): __time_t	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 139	
-    <a8>   DW_AT_type        : <0x63>	
- <1><ac>: Abbrev Number: 4 (DW_TAG_typedef)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x1ad): __key_t	
-    <b1>   DW_AT_decl_file   : 1	
-    <b2>   DW_AT_decl_line   : 144	
-    <b3>   DW_AT_type        : <0x2b>	
- <1><b7>: Abbrev Number: 4 (DW_TAG_typedef)
-    <b8>   DW_AT_name        : (indirect string, offset: 0x8e): __syscall_ulong_t	
-    <bc>   DW_AT_decl_file   : 1	
-    <bd>   DW_AT_decl_line   : 177	
-    <be>   DW_AT_type        : <0x6e>	
- <1><c2>: Abbrev Number: 2 (DW_TAG_base_type)
-    <c3>   DW_AT_byte_size   : 1	
-    <c4>   DW_AT_encoding    : 6	(signed char)
-    <c5>   DW_AT_name        : (indirect string, offset: 0x1a3): char	
- <1><c9>: Abbrev Number: 4 (DW_TAG_typedef)
-    <ca>   DW_AT_name        : (indirect string, offset: 0x0): size_t	
-    <ce>   DW_AT_decl_file   : 2	
-    <cf>   DW_AT_decl_line   : 212	
-    <d0>   DW_AT_type        : <0x47>	
- <1><d4>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <d5>   DW_AT_byte_size   : 4	
-    <d6>   DW_AT_type        : <0xda>	
- <1><da>: Abbrev Number: 6 (DW_TAG_const_type)
-    <db>   DW_AT_type        : <0xc2>	
- <1><df>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <e0>   DW_AT_name        : (indirect string, offset: 0x116): sysent	
-    <e4>   DW_AT_byte_size   : 20	
-    <e5>   DW_AT_decl_file   : 3	
-    <e6>   DW_AT_decl_line   : 4	
-    <e7>   DW_AT_sibling     : <0x132>	
- <2><eb>: Abbrev Number: 8 (DW_TAG_member)
-    <ec>   DW_AT_name        : (indirect string, offset: 0x159): nargs	
-    <f0>   DW_AT_decl_file   : 3	
-    <f1>   DW_AT_decl_line   : 5	
-    <f2>   DW_AT_type        : <0x47>	
-    <f6>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><f9>: Abbrev Number: 8 (DW_TAG_member)
-    <fa>   DW_AT_name        : (indirect string, offset: 0xaf): sys_flags	
-    <fe>   DW_AT_decl_file   : 3	
-    <ff>   DW_AT_decl_line   : 6	
-    <100>   DW_AT_type        : <0x2b>	
-    <104>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><107>: Abbrev Number: 9 (DW_TAG_member)
-    <108>   DW_AT_name        : sen	
-    <10c>   DW_AT_decl_file   : 3	
-    <10d>   DW_AT_decl_line   : 7	
-    <10e>   DW_AT_type        : <0x2b>	
-    <112>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><115>: Abbrev Number: 8 (DW_TAG_member)
-    <116>   DW_AT_name        : (indirect string, offset: 0xf6): sys_func	
-    <11a>   DW_AT_decl_file   : 3	
-    <11b>   DW_AT_decl_line   : 8	
-    <11c>   DW_AT_type        : <0x13d>	
-    <120>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><123>: Abbrev Number: 8 (DW_TAG_member)
-    <124>   DW_AT_name        : (indirect string, offset: 0xa0): sys_name	
-    <128>   DW_AT_decl_file   : 3	
-    <129>   DW_AT_decl_line   : 9	
-    <12a>   DW_AT_type        : <0xd4>	
-    <12e>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><131>: Abbrev Number: 0
- <1><132>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <133>   DW_AT_type        : <0x2b>	
-    <137>   DW_AT_sibling     : <0x13d>	
- <2><13b>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><13c>: Abbrev Number: 0
- <1><13d>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <13e>   DW_AT_byte_size   : 4	
-    <13f>   DW_AT_type        : <0x132>	
- <1><143>: Abbrev Number: 4 (DW_TAG_typedef)
-    <144>   DW_AT_name        : (indirect string, offset: 0x195): struct_sysent	
-    <148>   DW_AT_decl_file   : 3	
-    <149>   DW_AT_decl_line   : 10	
-    <14a>   DW_AT_type        : <0xdf>	
- <1><14e>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <14f>   DW_AT_byte_size   : 4	
-    <150>   DW_AT_type        : <0x154>	
- <1><154>: Abbrev Number: 6 (DW_TAG_const_type)
-    <155>   DW_AT_type        : <0x143>	
- <1><159>: Abbrev Number: 2 (DW_TAG_base_type)
-    <15a>   DW_AT_byte_size   : 1	
-    <15b>   DW_AT_encoding    : 2	(boolean)
-    <15c>   DW_AT_name        : (indirect string, offset: 0x1b): _Bool	
- <1><160>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <161>   DW_AT_name        : (indirect string, offset: 0x247): ipc_perm	
-    <165>   DW_AT_byte_size   : 48	
-    <166>   DW_AT_decl_file   : 4	
-    <167>   DW_AT_decl_line   : 42	
-    <168>   DW_AT_sibling     : <0x207>	
- <2><16c>: Abbrev Number: 8 (DW_TAG_member)
-    <16d>   DW_AT_name        : (indirect string, offset: 0x182): __key	
-    <171>   DW_AT_decl_file   : 4	
-    <172>   DW_AT_decl_line   : 44	
-    <173>   DW_AT_type        : <0xac>	
-    <177>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><17a>: Abbrev Number: 9 (DW_TAG_member)
-    <17b>   DW_AT_name        : uid	
-    <17f>   DW_AT_decl_file   : 4	
-    <180>   DW_AT_decl_line   : 45	
-    <181>   DW_AT_type        : <0x79>	
-    <185>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><188>: Abbrev Number: 9 (DW_TAG_member)
-    <189>   DW_AT_name        : gid	
-    <18d>   DW_AT_decl_file   : 4	
-    <18e>   DW_AT_decl_line   : 46	
-    <18f>   DW_AT_type        : <0x84>	
-    <193>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><196>: Abbrev Number: 8 (DW_TAG_member)
-    <197>   DW_AT_name        : (indirect string, offset: 0x128): cuid	
-    <19b>   DW_AT_decl_file   : 4	
-    <19c>   DW_AT_decl_line   : 47	
-    <19d>   DW_AT_type        : <0x79>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1a4>: Abbrev Number: 8 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x111): cgid	
-    <1a9>   DW_AT_decl_file   : 4	
-    <1aa>   DW_AT_decl_line   : 48	
-    <1ab>   DW_AT_type        : <0x84>	
-    <1af>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1b2>: Abbrev Number: 8 (DW_TAG_member)
-    <1b3>   DW_AT_name        : (indirect string, offset: 0x1a8): mode	
-    <1b7>   DW_AT_decl_file   : 4	
-    <1b8>   DW_AT_decl_line   : 49	
-    <1b9>   DW_AT_type        : <0x40>	
-    <1bd>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1c0>: Abbrev Number: 8 (DW_TAG_member)
-    <1c1>   DW_AT_name        : (indirect string, offset: 0x280): __pad1	
-    <1c5>   DW_AT_decl_file   : 4	
-    <1c6>   DW_AT_decl_line   : 50	
-    <1c7>   DW_AT_type        : <0x40>	
-    <1cb>   DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
- <2><1ce>: Abbrev Number: 8 (DW_TAG_member)
-    <1cf>   DW_AT_name        : (indirect string, offset: 0xa9): __seq	
-    <1d3>   DW_AT_decl_file   : 4	
-    <1d4>   DW_AT_decl_line   : 51	
-    <1d5>   DW_AT_type        : <0x40>	
-    <1d9>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1dc>: Abbrev Number: 8 (DW_TAG_member)
-    <1dd>   DW_AT_name        : (indirect string, offset: 0x21): __pad2	
-    <1e1>   DW_AT_decl_file   : 4	
-    <1e2>   DW_AT_decl_line   : 52	
-    <1e3>   DW_AT_type        : <0x40>	
-    <1e7>   DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
- <2><1ea>: Abbrev Number: 8 (DW_TAG_member)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0x12d): __glibc_reserved1	
-    <1ef>   DW_AT_decl_file   : 4	
-    <1f0>   DW_AT_decl_line   : 53	
-    <1f1>   DW_AT_type        : <0xb7>	
-    <1f5>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1f8>: Abbrev Number: 8 (DW_TAG_member)
-    <1f9>   DW_AT_name        : (indirect string, offset: 0x235): __glibc_reserved2	
-    <1fd>   DW_AT_decl_file   : 4	
-    <1fe>   DW_AT_decl_line   : 54	
-    <1ff>   DW_AT_type        : <0xb7>	
-    <203>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><206>: Abbrev Number: 0
- <1><207>: Abbrev Number: 4 (DW_TAG_typedef)
-    <208>   DW_AT_name        : (indirect string, offset: 0x2a4): shmatt_t	
-    <20c>   DW_AT_decl_file   : 5	
-    <20d>   DW_AT_decl_line   : 46	
-    <20e>   DW_AT_type        : <0xb7>	
- <1><212>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <213>   DW_AT_name        : (indirect string, offset: 0x26c): shmid_ds	
-    <217>   DW_AT_byte_size   : 112	
-    <218>   DW_AT_decl_file   : 5	
-    <219>   DW_AT_decl_line   : 49	
-    <21a>   DW_AT_sibling     : <0x2ab>	
- <2><21e>: Abbrev Number: 8 (DW_TAG_member)
-    <21f>   DW_AT_name        : (indirect string, offset: 0x20f): shm_perm	
-    <223>   DW_AT_decl_file   : 5	
-    <224>   DW_AT_decl_line   : 51	
-    <225>   DW_AT_type        : <0x160>	
-    <229>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><22c>: Abbrev Number: 8 (DW_TAG_member)
-    <22d>   DW_AT_name        : (indirect string, offset: 0x7): shm_segsz	
-    <231>   DW_AT_decl_file   : 5	
-    <232>   DW_AT_decl_line   : 52	
-    <233>   DW_AT_type        : <0xc9>	
-    <237>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><23a>: Abbrev Number: 8 (DW_TAG_member)
-    <23b>   DW_AT_name        : (indirect string, offset: 0x218): shm_atime	
-    <23f>   DW_AT_decl_file   : 5	
-    <240>   DW_AT_decl_line   : 53	
-    <241>   DW_AT_type        : <0xa1>	
-    <245>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><248>: Abbrev Number: 8 (DW_TAG_member)
-    <249>   DW_AT_name        : (indirect string, offset: 0x11): shm_dtime	
-    <24d>   DW_AT_decl_file   : 5	
-    <24e>   DW_AT_decl_line   : 57	
-    <24f>   DW_AT_type        : <0xa1>	
-    <253>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><256>: Abbrev Number: 8 (DW_TAG_member)
-    <257>   DW_AT_name        : (indirect string, offset: 0x250): shm_ctime	
-    <25b>   DW_AT_decl_file   : 5	
-    <25c>   DW_AT_decl_line   : 61	
-    <25d>   DW_AT_type        : <0xa1>	
-    <261>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><264>: Abbrev Number: 8 (DW_TAG_member)
-    <265>   DW_AT_name        : (indirect string, offset: 0x222): shm_cpid	
-    <269>   DW_AT_decl_file   : 5	
-    <26a>   DW_AT_decl_line   : 65	
-    <26b>   DW_AT_type        : <0x8f>	
-    <26f>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><272>: Abbrev Number: 8 (DW_TAG_member)
-    <273>   DW_AT_name        : (indirect string, offset: 0x170): shm_lpid	
-    <277>   DW_AT_decl_file   : 5	
-    <278>   DW_AT_decl_line   : 66	
-    <279>   DW_AT_type        : <0x8f>	
-    <27d>   DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
- <2><280>: Abbrev Number: 8 (DW_TAG_member)
-    <281>   DW_AT_name        : (indirect string, offset: 0x275): shm_nattch	
-    <285>   DW_AT_decl_file   : 5	
-    <286>   DW_AT_decl_line   : 67	
-    <287>   DW_AT_type        : <0x207>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
- <2><28e>: Abbrev Number: 8 (DW_TAG_member)
-    <28f>   DW_AT_name        : (indirect string, offset: 0x2ad): __glibc_reserved4	
-    <293>   DW_AT_decl_file   : 5	
-    <294>   DW_AT_decl_line   : 68	
-    <295>   DW_AT_type        : <0xb7>	
-    <299>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><29c>: Abbrev Number: 8 (DW_TAG_member)
-    <29d>   DW_AT_name        : (indirect string, offset: 0x25a): __glibc_reserved5	
-    <2a1>   DW_AT_decl_file   : 5	
-    <2a2>   DW_AT_decl_line   : 69	
-    <2a3>   DW_AT_type        : <0xb7>	
-    <2a7>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><2aa>: Abbrev Number: 0
- <1><2ab>: Abbrev Number: 4 (DW_TAG_typedef)
-    <2ac>   DW_AT_name        : (indirect string, offset: 0x11d): shmid_ds_t	
-    <2b0>   DW_AT_decl_file   : 6	
-    <2b1>   DW_AT_decl_line   : 41	
-    <2b2>   DW_AT_type        : <0x212>	
- <1><2b6>: Abbrev Number: 12 (DW_TAG_variable)
-    <2b7>   DW_AT_name        : (indirect string, offset: 0x13f): current_wordsize	
-    <2bb>   DW_AT_decl_file   : 7	
-    <2bc>   DW_AT_decl_line   : 757	
-    <2be>   DW_AT_type        : <0x47>	
-    <2c2>   DW_AT_external    : 1	
-    <2c3>   DW_AT_declaration : 1	
- <1><2c4>: Abbrev Number: 12 (DW_TAG_variable)
-    <2c5>   DW_AT_name        : (indirect string, offset: 0x116): sysent	
-    <2c9>   DW_AT_decl_file   : 7	
-    <2ca>   DW_AT_decl_line   : 892	
-    <2cc>   DW_AT_type        : <0x14e>	
-    <2d0>   DW_AT_external    : 1	
-    <2d1>   DW_AT_declaration : 1	
- <1><2d2>: Abbrev Number: 12 (DW_TAG_variable)
-    <2d3>   DW_AT_name        : (indirect string, offset: 0x1e6): nsyscalls	
-    <2d7>   DW_AT_decl_file   : 7	
-    <2d8>   DW_AT_decl_line   : 903	
-    <2da>   DW_AT_type        : <0x47>	
-    <2de>   DW_AT_external    : 1	
-    <2df>   DW_AT_declaration : 1	
- <1><2e0>: Abbrev Number: 13 (DW_TAG_variable)
-    <2e1>   DW_AT_name        : (indirect string, offset: 0x15f): mpers_target_var	
-    <2e5>   DW_AT_decl_file   : 6	
-    <2e6>   DW_AT_decl_line   : 48	
-    <2e7>   DW_AT_type        : <0x2ab>	
-    <2eb>   DW_AT_external    : 1	
-    <2ec>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><2f2>: Abbrev Number: 0
-
diff --git a/mpers-mx32/shmid_ds_t.d2 b/mpers-mx32/shmid_ds_t.d2
deleted file mode 100644
index e9f7feb..0000000
--- a/mpers-mx32/shmid_ds_t.d2
+++ /dev/null
@@ -1,396 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x298): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x22b): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x201): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd0): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x188): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb9): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x287): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xff): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x179): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2bf): __u_quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x4e>
-<1><79>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x28): __uid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-<1><84>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1f0): __gid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x47>
-<1><8f>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x290): __pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x2b>
-<1><9a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1f8): sizetype
-<1><a1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x150): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><ac>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1ad): __key_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<1><b7>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x8e): __syscall_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 177
-DW_AT_type        : <0x6e>
-<1><c2>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a3): char
-<1><c9>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><d4>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xda>
-<1><da>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xc2>
-<1><df>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x116): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x132>
-<2><eb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x159): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><f9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xaf): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><107>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><115>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf6): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x13d>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><123>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa0): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xd4>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><132>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x13d>
-<2><13b>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><13d>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x132>
-<1><143>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x195): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xdf>
-<1><14e>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x154>
-<1><154>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x143>
-<1><159>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1b): _Bool
-<1><160>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x247): ipc_perm
-DW_AT_byte_size   : 48
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_sibling     : <0x207>
-<2><16c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x182): __key
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 44
-DW_AT_type        : <0xac>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><17a>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : uid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><188>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : gid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x84>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><196>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x128): cuid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><1a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x111): cgid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x84>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1b2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a8): mode
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1c0>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x280): __pad1
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
-<2><1ce>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa9): __seq
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1dc>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21): __pad2
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 1a 	(DW_OP_plus_uconst: 26)
-<2><1ea>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12d): __glibc_reserved1
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 53
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1f8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x235): __glibc_reserved2
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 54
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<1><207>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2a4): shmatt_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 46
-DW_AT_type        : <0xb7>
-<1><212>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x26c): shmid_ds
-DW_AT_byte_size   : 112
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 49
-DW_AT_sibling     : <0x2ab>
-<2><21e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20f): shm_perm
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x160>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><22c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7): shm_segsz
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 52
-DW_AT_type        : <0xc9>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><23a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x218): shm_atime
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 53
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><248>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11): shm_dtime
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 57
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><256>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x250): shm_ctime
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 61
-DW_AT_type        : <0xa1>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><264>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x222): shm_cpid
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 65
-DW_AT_type        : <0x8f>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<2><272>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x170): shm_lpid
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 66
-DW_AT_type        : <0x8f>
-DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
-<2><280>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x275): shm_nattch
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 67
-DW_AT_type        : <0x207>
-DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
-<2><28e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ad): __glibc_reserved4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 68
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><29c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25a): __glibc_reserved5
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 69
-DW_AT_type        : <0xb7>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<1><2ab>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11d): shmid_ds_t
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x212>
-<1><2b6>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x13f): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2c4>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x116): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x14e>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2d2>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1e6): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2e0>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x15f): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x2ab>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/siginfo_t.c b/mpers-mx32/siginfo_t.c
index b00fa38..fbd003c 100644
--- a/mpers-mx32/siginfo_t.c
+++ b/mpers-mx32/siginfo_t.c
@@ -7,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/siginfo_t.d1 b/mpers-mx32/siginfo_t.d1
deleted file mode 100644
index fb8eed3..0000000
--- a/mpers-mx32/siginfo_t.d1
+++ /dev/null
@@ -1,454 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x3b1 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x3b): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x151): mpers-mx32/siginfo_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x261): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x24d): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x21a): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0xd9): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe7): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x86): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0xa4): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x2a4): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x23c): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x106): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x18c): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x33): __uid_t	
-    <73>   DW_AT_decl_file   : 1	
-    <74>   DW_AT_decl_line   : 125	
-    <75>   DW_AT_type        : <0x47>	
- <1><79>: Abbrev Number: 4 (DW_TAG_typedef)
-    <7a>   DW_AT_name        : (indirect string, offset: 0x245): __pid_t	
-    <7e>   DW_AT_decl_file   : 1	
-    <7f>   DW_AT_decl_line   : 133	
-    <80>   DW_AT_type        : <0x2b>	
- <1><84>: Abbrev Number: 2 (DW_TAG_base_type)
-    <85>   DW_AT_byte_size   : 4	
-    <86>   DW_AT_encoding    : 7	(unsigned)
-    <87>   DW_AT_name        : (indirect string, offset: 0x1dd): sizetype	
- <1><8b>: Abbrev Number: 4 (DW_TAG_typedef)
-    <8c>   DW_AT_name        : (indirect string, offset: 0x206): __clock_t	
-    <90>   DW_AT_decl_file   : 1	
-    <91>   DW_AT_decl_line   : 135	
-    <92>   DW_AT_type        : <0x63>	
- <1><96>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <97>   DW_AT_byte_size   : 4	
- <1><98>: Abbrev Number: 2 (DW_TAG_base_type)
-    <99>   DW_AT_byte_size   : 1	
-    <9a>   DW_AT_encoding    : 6	(signed char)
-    <9b>   DW_AT_name        : (indirect string, offset: 0x1b6): char	
- <1><9f>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <a0>   DW_AT_byte_size   : 4	
-    <a1>   DW_AT_type        : <0xa5>	
- <1><a5>: Abbrev Number: 7 (DW_TAG_const_type)
-    <a6>   DW_AT_type        : <0x98>	
- <1><aa>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <ab>   DW_AT_name        : (indirect string, offset: 0x118): sysent	
-    <af>   DW_AT_byte_size   : 20	
-    <b0>   DW_AT_decl_file   : 2	
-    <b1>   DW_AT_decl_line   : 4	
-    <b2>   DW_AT_sibling     : <0xfd>	
- <2><b6>: Abbrev Number: 9 (DW_TAG_member)
-    <b7>   DW_AT_name        : (indirect string, offset: 0x224): nargs	
-    <bb>   DW_AT_decl_file   : 2	
-    <bc>   DW_AT_decl_line   : 5	
-    <bd>   DW_AT_type        : <0x47>	
-    <c1>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c4>: Abbrev Number: 9 (DW_TAG_member)
-    <c5>   DW_AT_name        : (indirect string, offset: 0xcf): sys_flags	
-    <c9>   DW_AT_decl_file   : 2	
-    <ca>   DW_AT_decl_line   : 6	
-    <cb>   DW_AT_type        : <0x2b>	
-    <cf>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d2>: Abbrev Number: 10 (DW_TAG_member)
-    <d3>   DW_AT_name        : sen	
-    <d7>   DW_AT_decl_file   : 2	
-    <d8>   DW_AT_decl_line   : 7	
-    <d9>   DW_AT_type        : <0x2b>	
-    <dd>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><e0>: Abbrev Number: 9 (DW_TAG_member)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x29b): sys_func	
-    <e5>   DW_AT_decl_file   : 2	
-    <e6>   DW_AT_decl_line   : 8	
-    <e7>   DW_AT_type        : <0x108>	
-    <eb>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><ee>: Abbrev Number: 9 (DW_TAG_member)
-    <ef>   DW_AT_name        : (indirect string, offset: 0xb9): sys_name	
-    <f3>   DW_AT_decl_file   : 2	
-    <f4>   DW_AT_decl_line   : 9	
-    <f5>   DW_AT_type        : <0x9f>	
-    <f9>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><fc>: Abbrev Number: 0
- <1><fd>: Abbrev Number: 11 (DW_TAG_subroutine_type)
-    <fe>   DW_AT_type        : <0x2b>	
-    <102>   DW_AT_sibling     : <0x108>	
- <2><106>: Abbrev Number: 12 (DW_TAG_unspecified_parameters)
- <2><107>: Abbrev Number: 0
- <1><108>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <109>   DW_AT_byte_size   : 4	
-    <10a>   DW_AT_type        : <0xfd>	
- <1><10e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x19e): struct_sysent	
-    <113>   DW_AT_decl_file   : 2	
-    <114>   DW_AT_decl_line   : 10	
-    <115>   DW_AT_type        : <0xaa>	
- <1><119>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <11a>   DW_AT_byte_size   : 4	
-    <11b>   DW_AT_type        : <0x11f>	
- <1><11f>: Abbrev Number: 7 (DW_TAG_const_type)
-    <120>   DW_AT_type        : <0x10e>	
- <1><124>: Abbrev Number: 2 (DW_TAG_base_type)
-    <125>   DW_AT_byte_size   : 1	
-    <126>   DW_AT_encoding    : 2	(boolean)
-    <127>   DW_AT_name        : (indirect string, offset: 0x26): _Bool	
- <1><12b>: Abbrev Number: 13 (DW_TAG_union_type)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x1ff): sigval	
-    <130>   DW_AT_byte_size   : 4	
-    <131>   DW_AT_decl_file   : 3	
-    <132>   DW_AT_decl_line   : 32	
-    <133>   DW_AT_sibling     : <0x14e>	
- <2><137>: Abbrev Number: 14 (DW_TAG_member)
-    <138>   DW_AT_name        : (indirect string, offset: 0xf5): sival_int	
-    <13c>   DW_AT_decl_file   : 3	
-    <13d>   DW_AT_decl_line   : 34	
-    <13e>   DW_AT_type        : <0x2b>	
- <2><142>: Abbrev Number: 14 (DW_TAG_member)
-    <143>   DW_AT_name        : (indirect string, offset: 0x2c3): sival_ptr	
-    <147>   DW_AT_decl_file   : 3	
-    <148>   DW_AT_decl_line   : 35	
-    <149>   DW_AT_type        : <0x96>	
- <2><14d>: Abbrev Number: 0
- <1><14e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <14f>   DW_AT_name        : (indirect string, offset: 0x168): sigval_t	
-    <153>   DW_AT_decl_file   : 3	
-    <154>   DW_AT_decl_line   : 36	
-    <155>   DW_AT_type        : <0x12b>	
- <1><159>: Abbrev Number: 4 (DW_TAG_typedef)
-    <15a>   DW_AT_name        : (indirect string, offset: 0x1cb): __sigchld_clock_t	
-    <15e>   DW_AT_decl_file   : 3	
-    <15f>   DW_AT_decl_line   : 55	
-    <160>   DW_AT_type        : <0x8b>	
- <1><164>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <165>   DW_AT_byte_size   : 8	
-    <166>   DW_AT_decl_file   : 3	
-    <167>   DW_AT_decl_line   : 74	
-    <168>   DW_AT_sibling     : <0x189>	
- <2><16c>: Abbrev Number: 9 (DW_TAG_member)
-    <16d>   DW_AT_name        : (indirect string, offset: 0xc8): si_pid	
-    <171>   DW_AT_decl_file   : 3	
-    <172>   DW_AT_decl_line   : 76	
-    <173>   DW_AT_type        : <0x79>	
-    <177>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><17a>: Abbrev Number: 9 (DW_TAG_member)
-    <17b>   DW_AT_name        : (indirect string, offset: 0xff): si_uid	
-    <17f>   DW_AT_decl_file   : 3	
-    <180>   DW_AT_decl_line   : 77	
-    <181>   DW_AT_type        : <0x6e>	
-    <185>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><188>: Abbrev Number: 0
- <1><189>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <18a>   DW_AT_byte_size   : 12	
-    <18b>   DW_AT_decl_file   : 3	
-    <18c>   DW_AT_decl_line   : 81	
-    <18d>   DW_AT_sibling     : <0x1bc>	
- <2><191>: Abbrev Number: 9 (DW_TAG_member)
-    <192>   DW_AT_name        : (indirect string, offset: 0x2c): si_tid	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 83	
-    <198>   DW_AT_type        : <0x2b>	
-    <19c>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><19f>: Abbrev Number: 9 (DW_TAG_member)
-    <1a0>   DW_AT_name        : (indirect string, offset: 0x99): si_overrun	
-    <1a4>   DW_AT_decl_file   : 3	
-    <1a5>   DW_AT_decl_line   : 84	
-    <1a6>   DW_AT_type        : <0x2b>	
-    <1aa>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1ad>: Abbrev Number: 9 (DW_TAG_member)
-    <1ae>   DW_AT_name        : (indirect string, offset: 0x1ac): si_sigval	
-    <1b2>   DW_AT_decl_file   : 3	
-    <1b3>   DW_AT_decl_line   : 85	
-    <1b4>   DW_AT_type        : <0x14e>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1bb>: Abbrev Number: 0
- <1><1bc>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <1bd>   DW_AT_byte_size   : 12	
-    <1be>   DW_AT_decl_file   : 3	
-    <1bf>   DW_AT_decl_line   : 89	
-    <1c0>   DW_AT_sibling     : <0x1ef>	
- <2><1c4>: Abbrev Number: 9 (DW_TAG_member)
-    <1c5>   DW_AT_name        : (indirect string, offset: 0xc8): si_pid	
-    <1c9>   DW_AT_decl_file   : 3	
-    <1ca>   DW_AT_decl_line   : 91	
-    <1cb>   DW_AT_type        : <0x79>	
-    <1cf>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1d2>: Abbrev Number: 9 (DW_TAG_member)
-    <1d3>   DW_AT_name        : (indirect string, offset: 0xff): si_uid	
-    <1d7>   DW_AT_decl_file   : 3	
-    <1d8>   DW_AT_decl_line   : 92	
-    <1d9>   DW_AT_type        : <0x6e>	
-    <1dd>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1e0>: Abbrev Number: 9 (DW_TAG_member)
-    <1e1>   DW_AT_name        : (indirect string, offset: 0x1ac): si_sigval	
-    <1e5>   DW_AT_decl_file   : 3	
-    <1e6>   DW_AT_decl_line   : 93	
-    <1e7>   DW_AT_type        : <0x14e>	
-    <1eb>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ee>: Abbrev Number: 0
- <1><1ef>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <1f0>   DW_AT_byte_size   : 28	
-    <1f1>   DW_AT_decl_file   : 3	
-    <1f2>   DW_AT_decl_line   : 97	
-    <1f3>   DW_AT_sibling     : <0x23e>	
- <2><1f7>: Abbrev Number: 9 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0xc8): si_pid	
-    <1fc>   DW_AT_decl_file   : 3	
-    <1fd>   DW_AT_decl_line   : 99	
-    <1fe>   DW_AT_type        : <0x79>	
-    <202>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><205>: Abbrev Number: 9 (DW_TAG_member)
-    <206>   DW_AT_name        : (indirect string, offset: 0xff): si_uid	
-    <20a>   DW_AT_decl_file   : 3	
-    <20b>   DW_AT_decl_line   : 100	
-    <20c>   DW_AT_type        : <0x6e>	
-    <210>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><213>: Abbrev Number: 9 (DW_TAG_member)
-    <214>   DW_AT_name        : (indirect string, offset: 0x1ed): si_status	
-    <218>   DW_AT_decl_file   : 3	
-    <219>   DW_AT_decl_line   : 101	
-    <21a>   DW_AT_type        : <0x2b>	
-    <21e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><221>: Abbrev Number: 9 (DW_TAG_member)
-    <222>   DW_AT_name        : (indirect string, offset: 0x233): si_utime	
-    <226>   DW_AT_decl_file   : 3	
-    <227>   DW_AT_decl_line   : 102	
-    <228>   DW_AT_type        : <0x159>	
-    <22c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><22f>: Abbrev Number: 9 (DW_TAG_member)
-    <230>   DW_AT_name        : (indirect string, offset: 0x13f): si_stime	
-    <234>   DW_AT_decl_file   : 3	
-    <235>   DW_AT_decl_line   : 103	
-    <236>   DW_AT_type        : <0x159>	
-    <23a>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><23d>: Abbrev Number: 0
- <1><23e>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <23f>   DW_AT_byte_size   : 8	
-    <240>   DW_AT_decl_file   : 3	
-    <241>   DW_AT_decl_line   : 107	
-    <242>   DW_AT_sibling     : <0x263>	
- <2><246>: Abbrev Number: 9 (DW_TAG_member)
-    <247>   DW_AT_name        : (indirect string, offset: 0xb1): si_addr	
-    <24b>   DW_AT_decl_file   : 3	
-    <24c>   DW_AT_decl_line   : 109	
-    <24d>   DW_AT_type        : <0x96>	
-    <251>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><254>: Abbrev Number: 9 (DW_TAG_member)
-    <255>   DW_AT_name        : (indirect string, offset: 0xf): si_addr_lsb	
-    <259>   DW_AT_decl_file   : 3	
-    <25a>   DW_AT_decl_line   : 110	
-    <25b>   DW_AT_type        : <0x24>	
-    <25f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><262>: Abbrev Number: 0
- <1><263>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <264>   DW_AT_byte_size   : 8	
-    <265>   DW_AT_decl_file   : 3	
-    <266>   DW_AT_decl_line   : 114	
-    <267>   DW_AT_sibling     : <0x288>	
- <2><26b>: Abbrev Number: 9 (DW_TAG_member)
-    <26c>   DW_AT_name        : (indirect string, offset: 0x259): si_band	
-    <270>   DW_AT_decl_file   : 3	
-    <271>   DW_AT_decl_line   : 116	
-    <272>   DW_AT_type        : <0x55>	
-    <276>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><279>: Abbrev Number: 9 (DW_TAG_member)
-    <27a>   DW_AT_name        : (indirect string, offset: 0x1bb): si_fd	
-    <27e>   DW_AT_decl_file   : 3	
-    <27f>   DW_AT_decl_line   : 117	
-    <280>   DW_AT_type        : <0x2b>	
-    <284>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><287>: Abbrev Number: 0
- <1><288>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <289>   DW_AT_byte_size   : 12	
-    <28a>   DW_AT_decl_file   : 3	
-    <28b>   DW_AT_decl_line   : 121	
-    <28c>   DW_AT_sibling     : <0x2bb>	
- <2><290>: Abbrev Number: 9 (DW_TAG_member)
-    <291>   DW_AT_name        : (indirect string, offset: 0x1b): _call_addr	
-    <295>   DW_AT_decl_file   : 3	
-    <296>   DW_AT_decl_line   : 123	
-    <297>   DW_AT_type        : <0x96>	
-    <29b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><29e>: Abbrev Number: 9 (DW_TAG_member)
-    <29f>   DW_AT_name        : (indirect string, offset: 0x148): _syscall	
-    <2a3>   DW_AT_decl_file   : 3	
-    <2a4>   DW_AT_decl_line   : 124	
-    <2a5>   DW_AT_type        : <0x2b>	
-    <2a9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2ac>: Abbrev Number: 9 (DW_TAG_member)
-    <2ad>   DW_AT_name        : (indirect string, offset: 0xc2): _arch	
-    <2b1>   DW_AT_decl_file   : 3	
-    <2b2>   DW_AT_decl_line   : 125	
-    <2b3>   DW_AT_type        : <0x47>	
-    <2b7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><2ba>: Abbrev Number: 0
- <1><2bb>: Abbrev Number: 16 (DW_TAG_union_type)
-    <2bc>   DW_AT_byte_size   : 116	
-    <2bd>   DW_AT_decl_file   : 3	
-    <2be>   DW_AT_decl_line   : 69	
-    <2bf>   DW_AT_sibling     : <0x31c>	
- <2><2c3>: Abbrev Number: 14 (DW_TAG_member)
-    <2c4>   DW_AT_name        : (indirect string, offset: 0x129): _pad	
-    <2c8>   DW_AT_decl_file   : 3	
-    <2c9>   DW_AT_decl_line   : 71	
-    <2ca>   DW_AT_type        : <0x31c>	
- <2><2ce>: Abbrev Number: 14 (DW_TAG_member)
-    <2cf>   DW_AT_name        : (indirect string, offset: 0x9): _kill	
-    <2d3>   DW_AT_decl_file   : 3	
-    <2d4>   DW_AT_decl_line   : 78	
-    <2d5>   DW_AT_type        : <0x164>	
- <2><2d9>: Abbrev Number: 14 (DW_TAG_member)
-    <2da>   DW_AT_name        : (indirect string, offset: 0x1e6): _timer	
-    <2de>   DW_AT_decl_file   : 3	
-    <2df>   DW_AT_decl_line   : 86	
-    <2e0>   DW_AT_type        : <0x189>	
- <2><2e4>: Abbrev Number: 17 (DW_TAG_member)
-    <2e5>   DW_AT_name        : _rt	
-    <2e9>   DW_AT_decl_file   : 3	
-    <2ea>   DW_AT_decl_line   : 94	
-    <2eb>   DW_AT_type        : <0x1bc>	
- <2><2ef>: Abbrev Number: 14 (DW_TAG_member)
-    <2f0>   DW_AT_name        : (indirect string, offset: 0x22a): _sigchld	
-    <2f4>   DW_AT_decl_file   : 3	
-    <2f5>   DW_AT_decl_line   : 104	
-    <2f6>   DW_AT_type        : <0x1ef>	
- <2><2fa>: Abbrev Number: 14 (DW_TAG_member)
-    <2fb>   DW_AT_name        : (indirect string, offset: 0x1c1): _sigfault	
-    <2ff>   DW_AT_decl_file   : 3	
-    <300>   DW_AT_decl_line   : 111	
-    <301>   DW_AT_type        : <0x23e>	
- <2><305>: Abbrev Number: 14 (DW_TAG_member)
-    <306>   DW_AT_name        : (indirect string, offset: 0x292): _sigpoll	
-    <30a>   DW_AT_decl_file   : 3	
-    <30b>   DW_AT_decl_line   : 118	
-    <30c>   DW_AT_type        : <0x263>	
- <2><310>: Abbrev Number: 14 (DW_TAG_member)
-    <311>   DW_AT_name        : (indirect string, offset: 0x2bb): _sigsys	
-    <315>   DW_AT_decl_file   : 3	
-    <316>   DW_AT_decl_line   : 126	
-    <317>   DW_AT_type        : <0x288>	
- <2><31b>: Abbrev Number: 0
- <1><31c>: Abbrev Number: 18 (DW_TAG_array_type)
-    <31d>   DW_AT_type        : <0x2b>	
-    <321>   DW_AT_sibling     : <0x32c>	
- <2><325>: Abbrev Number: 19 (DW_TAG_subrange_type)
-    <326>   DW_AT_type        : <0x84>	
-    <32a>   DW_AT_upper_bound : 28	
- <2><32b>: Abbrev Number: 0
- <1><32c>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <32d>   DW_AT_byte_size   : 128	
-    <32e>   DW_AT_decl_file   : 3	
-    <32f>   DW_AT_decl_line   : 62	
-    <330>   DW_AT_sibling     : <0x36d>	
- <2><334>: Abbrev Number: 9 (DW_TAG_member)
-    <335>   DW_AT_name        : (indirect string, offset: 0x0): si_signo	
-    <339>   DW_AT_decl_file   : 3	
-    <33a>   DW_AT_decl_line   : 64	
-    <33b>   DW_AT_type        : <0x2b>	
-    <33f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><342>: Abbrev Number: 9 (DW_TAG_member)
-    <343>   DW_AT_name        : (indirect string, offset: 0x195): si_errno	
-    <347>   DW_AT_decl_file   : 3	
-    <348>   DW_AT_decl_line   : 65	
-    <349>   DW_AT_type        : <0x2b>	
-    <34d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><350>: Abbrev Number: 9 (DW_TAG_member)
-    <351>   DW_AT_name        : (indirect string, offset: 0x1f7): si_code	
-    <355>   DW_AT_decl_file   : 3	
-    <356>   DW_AT_decl_line   : 67	
-    <357>   DW_AT_type        : <0x2b>	
-    <35b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><35e>: Abbrev Number: 9 (DW_TAG_member)
-    <35f>   DW_AT_name        : (indirect string, offset: 0x171): _sifields	
-    <363>   DW_AT_decl_file   : 3	
-    <364>   DW_AT_decl_line   : 127	
-    <365>   DW_AT_type        : <0x2bb>	
-    <369>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><36c>: Abbrev Number: 0
- <1><36d>: Abbrev Number: 4 (DW_TAG_typedef)
-    <36e>   DW_AT_name        : (indirect string, offset: 0x210): siginfo_t	
-    <372>   DW_AT_decl_file   : 3	
-    <373>   DW_AT_decl_line   : 128	
-    <374>   DW_AT_type        : <0x32c>	
- <1><378>: Abbrev Number: 20 (DW_TAG_variable)
-    <379>   DW_AT_name        : (indirect string, offset: 0x12e): current_wordsize	
-    <37d>   DW_AT_decl_file   : 4	
-    <37e>   DW_AT_decl_line   : 757	
-    <380>   DW_AT_type        : <0x47>	
-    <384>   DW_AT_external    : 1	
-    <385>   DW_AT_declaration : 1	
- <1><386>: Abbrev Number: 20 (DW_TAG_variable)
-    <387>   DW_AT_name        : (indirect string, offset: 0x118): sysent	
-    <38b>   DW_AT_decl_file   : 4	
-    <38c>   DW_AT_decl_line   : 892	
-    <38e>   DW_AT_type        : <0x119>	
-    <392>   DW_AT_external    : 1	
-    <393>   DW_AT_declaration : 1	
- <1><394>: Abbrev Number: 20 (DW_TAG_variable)
-    <395>   DW_AT_name        : (indirect string, offset: 0x11f): nsyscalls	
-    <399>   DW_AT_decl_file   : 4	
-    <39a>   DW_AT_decl_line   : 903	
-    <39c>   DW_AT_type        : <0x47>	
-    <3a0>   DW_AT_external    : 1	
-    <3a1>   DW_AT_declaration : 1	
- <1><3a2>: Abbrev Number: 21 (DW_TAG_variable)
-    <3a3>   DW_AT_name        : (indirect string, offset: 0x17b): mpers_target_var	
-    <3a7>   DW_AT_decl_file   : 5	
-    <3a8>   DW_AT_decl_line   : 41	
-    <3a9>   DW_AT_type        : <0x36d>	
-    <3ad>   DW_AT_external    : 1	
-    <3ae>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><3b4>: Abbrev Number: 0
-
diff --git a/mpers-mx32/siginfo_t.d2 b/mpers-mx32/siginfo_t.d2
deleted file mode 100644
index 56e1552..0000000
--- a/mpers-mx32/siginfo_t.d2
+++ /dev/null
@@ -1,511 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x24d): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x21a): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xd9): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe7): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x86): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa4): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2a4): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x23c): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x106): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x18c): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x33): __uid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-<1><79>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x245): __pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x2b>
-<1><84>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1dd): sizetype
-<1><8b>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x206): __clock_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 135
-DW_AT_type        : <0x63>
-<1><96>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><98>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b6): char
-<1><9f>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xa5>
-<1><a5>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x98>
-<1><aa>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x118): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xfd>
-<2><b6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x224): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c4>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcf): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d2>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><e0>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29b): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><ee>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb9): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x9f>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><fd>
-Abbrev Number: 11 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x108>
-<2><106>
-Abbrev Number: 12 (DW_TAG_unspecified_parameters)
-<1><108>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfd>
-<1><10e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x19e): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xaa>
-<1><119>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x11f>
-<1><11f>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x10e>
-<1><124>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x26): _Bool
-<1><12b>
-Abbrev Number: 13 (DW_TAG_union_type)
-DW_AT_name        : (indirect string, offset: 0x1ff): sigval
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_sibling     : <0x14e>
-<2><137>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf5): sival_int
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x2b>
-<2><142>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c3): sival_ptr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x96>
-<1><14e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x168): sigval_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x12b>
-<1><159>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1cb): __sigchld_clock_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x8b>
-<1><164>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 74
-DW_AT_sibling     : <0x189>
-<2><16c>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc8): si_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 76
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><17a>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xff): si_uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 77
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><189>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 81
-DW_AT_sibling     : <0x1bc>
-<2><191>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c): si_tid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 83
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><19f>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x99): si_overrun
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 84
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1ad>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ac): si_sigval
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 85
-DW_AT_type        : <0x14e>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><1bc>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 89
-DW_AT_sibling     : <0x1ef>
-<2><1c4>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc8): si_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 91
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1d2>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xff): si_uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 92
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1e0>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ac): si_sigval
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 93
-DW_AT_type        : <0x14e>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><1ef>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 97
-DW_AT_sibling     : <0x23e>
-<2><1f7>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc8): si_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 99
-DW_AT_type        : <0x79>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><205>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xff): si_uid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 100
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><213>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ed): si_status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 101
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><221>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x233): si_utime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 102
-DW_AT_type        : <0x159>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><22f>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13f): si_stime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 103
-DW_AT_type        : <0x159>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<1><23e>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 107
-DW_AT_sibling     : <0x263>
-<2><246>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb1): si_addr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 109
-DW_AT_type        : <0x96>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><254>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf): si_addr_lsb
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 110
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><263>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 114
-DW_AT_sibling     : <0x288>
-<2><26b>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x259): si_band
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 116
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><279>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bb): si_fd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 117
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><288>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 121
-DW_AT_sibling     : <0x2bb>
-<2><290>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b): _call_addr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 123
-DW_AT_type        : <0x96>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><29e>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x148): _syscall
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 124
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><2ac>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc2): _arch
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><2bb>
-Abbrev Number: 16 (DW_TAG_union_type)
-DW_AT_byte_size   : 116
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 69
-DW_AT_sibling     : <0x31c>
-<2><2c3>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x129): _pad
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 71
-DW_AT_type        : <0x31c>
-<2><2ce>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): _kill
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 78
-DW_AT_type        : <0x164>
-<2><2d9>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e6): _timer
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 86
-DW_AT_type        : <0x189>
-<2><2e4>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : _rt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 94
-DW_AT_type        : <0x1bc>
-<2><2ef>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22a): _sigchld
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 104
-DW_AT_type        : <0x1ef>
-<2><2fa>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c1): _sigfault
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 111
-DW_AT_type        : <0x23e>
-<2><305>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x292): _sigpoll
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 118
-DW_AT_type        : <0x263>
-<2><310>
-Abbrev Number: 14 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2bb): _sigsys
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x288>
-<1><31c>
-Abbrev Number: 18 (DW_TAG_array_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x32c>
-<2><325>
-Abbrev Number: 19 (DW_TAG_subrange_type)
-DW_AT_type        : <0x84>
-DW_AT_upper_bound : 28
-<1><32c>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_byte_size   : 128
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 62
-DW_AT_sibling     : <0x36d>
-<2><334>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): si_signo
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><342>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x195): si_errno
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 65
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><350>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f7): si_code
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 67
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><35e>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x171): _sifields
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 127
-DW_AT_type        : <0x2bb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><36d>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x210): siginfo_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 128
-DW_AT_type        : <0x32c>
-<1><378>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12e): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><386>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x118): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x119>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><394>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11f): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3a2>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17b): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x36d>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/stack_t.c b/mpers-mx32/stack_t.c
index 2146a66..a958819 100644
--- a/mpers-mx32/stack_t.c
+++ b/mpers-mx32/stack_t.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/stack_t.d1 b/mpers-mx32/stack_t.d1
deleted file mode 100644
index 6479900..0000000
--- a/mpers-mx32/stack_t.d1
+++ /dev/null
@@ -1,192 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x185 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xd): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x74): mpers-mx32/stack_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x125): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1a9): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x186): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x172): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xaa): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x58): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x105): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x93): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1a0): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xc4): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x169): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x120): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_typedef)
-    <74>   DW_AT_name        : (indirect string, offset: 0x0): size_t	
-    <78>   DW_AT_decl_file   : 2	
-    <79>   DW_AT_decl_line   : 212	
-    <7a>   DW_AT_type        : <0x47>	
- <1><7e>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <7f>   DW_AT_byte_size   : 4	
-    <80>   DW_AT_type        : <0x84>	
- <1><84>: Abbrev Number: 7 (DW_TAG_const_type)
-    <85>   DW_AT_type        : <0x6c>	
- <1><89>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <8a>   DW_AT_name        : (indirect string, offset: 0xd6): sysent	
-    <8e>   DW_AT_byte_size   : 20	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 4	
-    <91>   DW_AT_sibling     : <0xdc>	
- <2><95>: Abbrev Number: 9 (DW_TAG_member)
-    <96>   DW_AT_name        : (indirect string, offset: 0xee): nargs	
-    <9a>   DW_AT_decl_file   : 1	
-    <9b>   DW_AT_decl_line   : 5	
-    <9c>   DW_AT_type        : <0x47>	
-    <a0>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a3>: Abbrev Number: 9 (DW_TAG_member)
-    <a4>   DW_AT_name        : (indirect string, offset: 0x89): sys_flags	
-    <a8>   DW_AT_decl_file   : 1	
-    <a9>   DW_AT_decl_line   : 6	
-    <aa>   DW_AT_type        : <0x2b>	
-    <ae>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><b1>: Abbrev Number: 10 (DW_TAG_member)
-    <b2>   DW_AT_name        : sen	
-    <b6>   DW_AT_decl_file   : 1	
-    <b7>   DW_AT_decl_line   : 7	
-    <b8>   DW_AT_type        : <0x2b>	
-    <bc>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><bf>: Abbrev Number: 9 (DW_TAG_member)
-    <c0>   DW_AT_name        : (indirect string, offset: 0x1b5): sys_func	
-    <c4>   DW_AT_decl_file   : 1	
-    <c5>   DW_AT_decl_line   : 8	
-    <c6>   DW_AT_type        : <0xe7>	
-    <ca>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><cd>: Abbrev Number: 9 (DW_TAG_member)
-    <ce>   DW_AT_name        : (indirect string, offset: 0x6b): sys_name	
-    <d2>   DW_AT_decl_file   : 1	
-    <d3>   DW_AT_decl_line   : 9	
-    <d4>   DW_AT_type        : <0x7e>	
-    <d8>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 11 (DW_TAG_subroutine_type)
-    <dd>   DW_AT_type        : <0x2b>	
-    <e1>   DW_AT_sibling     : <0xe7>	
- <2><e5>: Abbrev Number: 12 (DW_TAG_unspecified_parameters)
- <2><e6>: Abbrev Number: 0
- <1><e7>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <e8>   DW_AT_byte_size   : 4	
-    <e9>   DW_AT_type        : <0xdc>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_typedef)
-    <ee>   DW_AT_name        : (indirect string, offset: 0x112): struct_sysent	
-    <f2>   DW_AT_decl_file   : 1	
-    <f3>   DW_AT_decl_line   : 10	
-    <f4>   DW_AT_type        : <0x89>	
- <1><f8>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <f9>   DW_AT_byte_size   : 4	
-    <fa>   DW_AT_type        : <0xfe>	
- <1><fe>: Abbrev Number: 7 (DW_TAG_const_type)
-    <ff>   DW_AT_type        : <0xed>	
- <1><103>: Abbrev Number: 2 (DW_TAG_base_type)
-    <104>   DW_AT_byte_size   : 1	
-    <105>   DW_AT_encoding    : 2	(boolean)
-    <106>   DW_AT_name        : (indirect string, offset: 0x7): _Bool	
- <1><10a>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <10b>   DW_AT_name        : (indirect string, offset: 0xb8): sigaltstack	
-    <10f>   DW_AT_byte_size   : 12	
-    <110>   DW_AT_decl_file   : 3	
-    <111>   DW_AT_decl_line   : 49	
-    <112>   DW_AT_sibling     : <0x141>	
- <2><116>: Abbrev Number: 9 (DW_TAG_member)
-    <117>   DW_AT_name        : (indirect string, offset: 0x180): ss_sp	
-    <11b>   DW_AT_decl_file   : 3	
-    <11c>   DW_AT_decl_line   : 51	
-    <11d>   DW_AT_type        : <0x6a>	
-    <121>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><124>: Abbrev Number: 9 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x160): ss_flags	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 52	
-    <12b>   DW_AT_type        : <0x2b>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><132>: Abbrev Number: 9 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x190): ss_size	
-    <137>   DW_AT_decl_file   : 3	
-    <138>   DW_AT_decl_line   : 53	
-    <139>   DW_AT_type        : <0x73>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><140>: Abbrev Number: 0
- <1><141>: Abbrev Number: 5 (DW_TAG_typedef)
-    <142>   DW_AT_name        : (indirect string, offset: 0x198): stack_t	
-    <146>   DW_AT_decl_file   : 3	
-    <147>   DW_AT_decl_line   : 54	
-    <148>   DW_AT_type        : <0x10a>	
- <1><14c>: Abbrev Number: 13 (DW_TAG_variable)
-    <14d>   DW_AT_name        : (indirect string, offset: 0xdd): current_wordsize	
-    <151>   DW_AT_decl_file   : 4	
-    <152>   DW_AT_decl_line   : 757	
-    <154>   DW_AT_type        : <0x47>	
-    <158>   DW_AT_external    : 1	
-    <159>   DW_AT_declaration : 1	
- <1><15a>: Abbrev Number: 13 (DW_TAG_variable)
-    <15b>   DW_AT_name        : (indirect string, offset: 0xd6): sysent	
-    <15f>   DW_AT_decl_file   : 4	
-    <160>   DW_AT_decl_line   : 892	
-    <162>   DW_AT_type        : <0xf8>	
-    <166>   DW_AT_external    : 1	
-    <167>   DW_AT_declaration : 1	
- <1><168>: Abbrev Number: 13 (DW_TAG_variable)
-    <169>   DW_AT_name        : (indirect string, offset: 0x156): nsyscalls	
-    <16d>   DW_AT_decl_file   : 4	
-    <16e>   DW_AT_decl_line   : 903	
-    <170>   DW_AT_type        : <0x47>	
-    <174>   DW_AT_external    : 1	
-    <175>   DW_AT_declaration : 1	
- <1><176>: Abbrev Number: 14 (DW_TAG_variable)
-    <177>   DW_AT_name        : (indirect string, offset: 0xf4): mpers_target_var	
-    <17b>   DW_AT_decl_file   : 5	
-    <17c>   DW_AT_decl_line   : 38	
-    <17d>   DW_AT_type        : <0x141>	
-    <181>   DW_AT_external    : 1	
-    <182>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><188>: Abbrev Number: 0
-
diff --git a/mpers-mx32/stack_t.d2 b/mpers-mx32/stack_t.d2
deleted file mode 100644
index 50bf259..0000000
--- a/mpers-mx32/stack_t.d2
+++ /dev/null
@@ -1,212 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a9): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x186): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x172): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xaa): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x58): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x105): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x93): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a0): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc4): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x169): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x120): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><7e>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x84>
-<1><84>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><89>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd6): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xdc>
-<2><95>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xee): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a3>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x89): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><b1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><bf>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b5): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe7>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><cd>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6b): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><dc>
-Abbrev Number: 11 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe7>
-<2><e5>
-Abbrev Number: 12 (DW_TAG_unspecified_parameters)
-<1><e7>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xdc>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x112): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x89>
-<1><f8>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfe>
-<1><fe>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0xed>
-<1><103>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x7): _Bool
-<1><10a>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xb8): sigaltstack
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 49
-DW_AT_sibling     : <0x141>
-<2><116>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x180): ss_sp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><124>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x160): ss_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><132>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x190): ss_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><141>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x198): stack_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x10a>
-<1><14c>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xdd): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><15a>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd6): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf8>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><168>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x156): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><176>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf4): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x141>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-mx32/struct_blk_user_trace_setup.d1 b/mpers-mx32/struct_blk_user_trace_setup.d1
deleted file mode 100644
index 8f08e47..0000000
--- a/mpers-mx32/struct_blk_user_trace_setup.d1
+++ /dev/null
@@ -1,231 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1e1 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x1f): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x12e): mpers-mx32/struct_blk_user_trace_setup.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x15c): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e7): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1bc): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1a0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xbc): unsigned char	
- <1><40>: Abbrev Number: 4 (DW_TAG_typedef)
-    <41>   DW_AT_name        : (indirect string, offset: 0x1cc): uint16_t	
-    <45>   DW_AT_decl_file   : 1	
-    <46>   DW_AT_decl_line   : 49	
-    <47>   DW_AT_type        : <0x4b>	
- <1><4b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4c>   DW_AT_byte_size   : 2	
-    <4d>   DW_AT_encoding    : 7	(unsigned)
-    <4e>   DW_AT_name        : (indirect string, offset: 0x85): short unsigned int	
- <1><52>: Abbrev Number: 4 (DW_TAG_typedef)
-    <53>   DW_AT_name        : (indirect string, offset: 0x1d5): uint32_t	
-    <57>   DW_AT_decl_file   : 1	
-    <58>   DW_AT_decl_line   : 51	
-    <59>   DW_AT_type        : <0x5d>	
- <1><5d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5e>   DW_AT_byte_size   : 4	
-    <5f>   DW_AT_encoding    : 7	(unsigned)
-    <60>   DW_AT_name        : (indirect string, offset: 0x121): unsigned int	
- <1><64>: Abbrev Number: 4 (DW_TAG_typedef)
-    <65>   DW_AT_name        : (indirect string, offset: 0x98): uint64_t	
-    <69>   DW_AT_decl_file   : 1	
-    <6a>   DW_AT_decl_line   : 58	
-    <6b>   DW_AT_type        : <0x6f>	
- <1><6f>: Abbrev Number: 2 (DW_TAG_base_type)
-    <70>   DW_AT_byte_size   : 8	
-    <71>   DW_AT_encoding    : 7	(unsigned)
-    <72>   DW_AT_name        : (indirect string, offset: 0x1fc): long long unsigned int	
- <1><76>: Abbrev Number: 2 (DW_TAG_base_type)
-    <77>   DW_AT_byte_size   : 4	
-    <78>   DW_AT_encoding    : 5	(signed)
-    <79>   DW_AT_name        : (indirect string, offset: 0x1de): long int	
- <1><7d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7e>   DW_AT_byte_size   : 4	
-    <7f>   DW_AT_encoding    : 7	(unsigned)
-    <80>   DW_AT_name        : (indirect string, offset: 0xca): long unsigned int	
- <1><84>: Abbrev Number: 2 (DW_TAG_base_type)
-    <85>   DW_AT_byte_size   : 4	
-    <86>   DW_AT_encoding    : 7	(unsigned)
-    <87>   DW_AT_name        : (indirect string, offset: 0x197): sizetype	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x157): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_array_type)
-    <93>   DW_AT_type        : <0x8b>	
-    <97>   DW_AT_sibling     : <0xa2>	
- <2><9b>: Abbrev Number: 6 (DW_TAG_subrange_type)
-    <9c>   DW_AT_type        : <0x84>	
-    <a0>   DW_AT_upper_bound : 31	
- <2><a1>: Abbrev Number: 0
- <1><a2>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <a3>   DW_AT_byte_size   : 4	
-    <a4>   DW_AT_type        : <0xa8>	
- <1><a8>: Abbrev Number: 8 (DW_TAG_const_type)
-    <a9>   DW_AT_type        : <0x8b>	
- <1><ad>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <ae>   DW_AT_name        : (indirect string, offset: 0xdc): sysent	
-    <b2>   DW_AT_byte_size   : 20	
-    <b3>   DW_AT_decl_file   : 2	
-    <b4>   DW_AT_decl_line   : 4	
-    <b5>   DW_AT_sibling     : <0x100>	
- <2><b9>: Abbrev Number: 10 (DW_TAG_member)
-    <ba>   DW_AT_name        : (indirect string, offset: 0x1c6): nargs	
-    <be>   DW_AT_decl_file   : 2	
-    <bf>   DW_AT_decl_line   : 5	
-    <c0>   DW_AT_type        : <0x5d>	
-    <c4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c7>: Abbrev Number: 10 (DW_TAG_member)
-    <c8>   DW_AT_name        : (indirect string, offset: 0xaa): sys_flags	
-    <cc>   DW_AT_decl_file   : 2	
-    <cd>   DW_AT_decl_line   : 6	
-    <ce>   DW_AT_type        : <0x2b>	
-    <d2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d5>: Abbrev Number: 11 (DW_TAG_member)
-    <d6>   DW_AT_name        : sen	
-    <da>   DW_AT_decl_file   : 2	
-    <db>   DW_AT_decl_line   : 7	
-    <dc>   DW_AT_type        : <0x2b>	
-    <e0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><e3>: Abbrev Number: 10 (DW_TAG_member)
-    <e4>   DW_AT_name        : (indirect string, offset: 0x1f3): sys_func	
-    <e8>   DW_AT_decl_file   : 2	
-    <e9>   DW_AT_decl_line   : 8	
-    <ea>   DW_AT_type        : <0x10b>	
-    <ee>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><f1>: Abbrev Number: 10 (DW_TAG_member)
-    <f2>   DW_AT_name        : (indirect string, offset: 0xa1): sys_name	
-    <f6>   DW_AT_decl_file   : 2	
-    <f7>   DW_AT_decl_line   : 9	
-    <f8>   DW_AT_type        : <0xa2>	
-    <fc>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ff>: Abbrev Number: 0
- <1><100>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <101>   DW_AT_type        : <0x2b>	
-    <105>   DW_AT_sibling     : <0x10b>	
- <2><109>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><10a>: Abbrev Number: 0
- <1><10b>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <10c>   DW_AT_byte_size   : 4	
-    <10d>   DW_AT_type        : <0x100>	
- <1><111>: Abbrev Number: 4 (DW_TAG_typedef)
-    <112>   DW_AT_name        : (indirect string, offset: 0x70): struct_sysent	
-    <116>   DW_AT_decl_file   : 2	
-    <117>   DW_AT_decl_line   : 10	
-    <118>   DW_AT_type        : <0xad>	
- <1><11c>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <11d>   DW_AT_byte_size   : 4	
-    <11e>   DW_AT_type        : <0x122>	
- <1><122>: Abbrev Number: 8 (DW_TAG_const_type)
-    <123>   DW_AT_type        : <0x111>	
- <1><127>: Abbrev Number: 2 (DW_TAG_base_type)
-    <128>   DW_AT_byte_size   : 1	
-    <129>   DW_AT_encoding    : 2	(boolean)
-    <12a>   DW_AT_name        : (indirect string, offset: 0x6a): _Bool	
- <1><12e>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <12f>   DW_AT_name        : (indirect string, offset: 0x0): blk_user_trace_setup	
-    <133>   DW_AT_byte_size   : 72	
-    <134>   DW_AT_decl_file   : 3	
-    <135>   DW_AT_decl_line   : 54	
-    <136>   DW_AT_sibling     : <0x19d>	
- <2><13a>: Abbrev Number: 10 (DW_TAG_member)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x1ae): name	
-    <13f>   DW_AT_decl_file   : 3	
-    <140>   DW_AT_decl_line   : 55	
-    <141>   DW_AT_type        : <0x92>	
-    <145>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><148>: Abbrev Number: 10 (DW_TAG_member)
-    <149>   DW_AT_name        : (indirect string, offset: 0x213): act_mask	
-    <14d>   DW_AT_decl_file   : 3	
-    <14e>   DW_AT_decl_line   : 56	
-    <14f>   DW_AT_type        : <0x40>	
-    <153>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x1b3): buf_size	
-    <15b>   DW_AT_decl_file   : 3	
-    <15c>   DW_AT_decl_line   : 57	
-    <15d>   DW_AT_type        : <0x52>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><164>: Abbrev Number: 10 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x7e): buf_nr	
-    <169>   DW_AT_decl_file   : 3	
-    <16a>   DW_AT_decl_line   : 58	
-    <16b>   DW_AT_type        : <0x52>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><172>: Abbrev Number: 10 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x15): start_lba	
-    <177>   DW_AT_decl_file   : 3	
-    <178>   DW_AT_decl_line   : 59	
-    <179>   DW_AT_type        : <0x64>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><180>: Abbrev Number: 10 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0xb4): end_lba	
-    <185>   DW_AT_decl_file   : 3	
-    <186>   DW_AT_decl_line   : 60	
-    <187>   DW_AT_type        : <0x64>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><18e>: Abbrev Number: 11 (DW_TAG_member)
-    <18f>   DW_AT_name        : pid	
-    <193>   DW_AT_decl_file   : 3	
-    <194>   DW_AT_decl_line   : 61	
-    <195>   DW_AT_type        : <0x52>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><19c>: Abbrev Number: 0
- <1><19d>: Abbrev Number: 4 (DW_TAG_typedef)
-    <19e>   DW_AT_name        : (indirect string, offset: 0xf4): struct_blk_user_trace_setup	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 62	
-    <1a4>   DW_AT_type        : <0x12e>	
- <1><1a8>: Abbrev Number: 14 (DW_TAG_variable)
-    <1a9>   DW_AT_name        : (indirect string, offset: 0xe3): current_wordsize	
-    <1ad>   DW_AT_decl_file   : 4	
-    <1ae>   DW_AT_decl_line   : 757	
-    <1b0>   DW_AT_type        : <0x5d>	
-    <1b4>   DW_AT_external    : 1	
-    <1b5>   DW_AT_declaration : 1	
- <1><1b6>: Abbrev Number: 14 (DW_TAG_variable)
-    <1b7>   DW_AT_name        : (indirect string, offset: 0xdc): sysent	
-    <1bb>   DW_AT_decl_file   : 4	
-    <1bc>   DW_AT_decl_line   : 892	
-    <1be>   DW_AT_type        : <0x11c>	
-    <1c2>   DW_AT_external    : 1	
-    <1c3>   DW_AT_declaration : 1	
- <1><1c4>: Abbrev Number: 14 (DW_TAG_variable)
-    <1c5>   DW_AT_name        : (indirect string, offset: 0x18d): nsyscalls	
-    <1c9>   DW_AT_decl_file   : 4	
-    <1ca>   DW_AT_decl_line   : 903	
-    <1cc>   DW_AT_type        : <0x5d>	
-    <1d0>   DW_AT_external    : 1	
-    <1d1>   DW_AT_declaration : 1	
- <1><1d2>: Abbrev Number: 15 (DW_TAG_variable)
-    <1d3>   DW_AT_name        : (indirect string, offset: 0x110): mpers_target_var	
-    <1d7>   DW_AT_decl_file   : 3	
-    <1d8>   DW_AT_decl_line   : 64	
-    <1d9>   DW_AT_type        : <0x19d>	
-    <1dd>   DW_AT_external    : 1	
-    <1de>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1e4>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_blk_user_trace_setup.d2 b/mpers-mx32/struct_blk_user_trace_setup.d2
deleted file mode 100644
index c426ba2..0000000
--- a/mpers-mx32/struct_blk_user_trace_setup.d2
+++ /dev/null
@@ -1,257 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e7): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1bc): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xbc): unsigned char
-<1><40>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1cc): uint16_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x4b>
-<1><4b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x85): short unsigned int
-<1><52>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d5): uint32_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x5d>
-<1><5d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x121): unsigned int
-<1><64>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x98): uint64_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x6f>
-<1><6f>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1fc): long long unsigned int
-<1><76>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1de): long int
-<1><7d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xca): long unsigned int
-<1><84>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x197): sizetype
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x157): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_array_type)
-DW_AT_type        : <0x8b>
-DW_AT_sibling     : <0xa2>
-<2><9b>
-Abbrev Number: 6 (DW_TAG_subrange_type)
-DW_AT_type        : <0x84>
-DW_AT_upper_bound : 31
-<1><a2>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xa8>
-<1><a8>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><ad>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xdc): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x100>
-<2><b9>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c6): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x5d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c7>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xaa): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d5>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><e3>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f3): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x10b>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><f1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa1): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xa2>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><100>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x10b>
-<2><109>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><10b>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x100>
-<1><111>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x70): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xad>
-<1><11c>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x122>
-<1><122>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x111>
-<1><127>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x6a): _Bool
-<1><12e>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): blk_user_trace_setup
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_sibling     : <0x19d>
-<2><13a>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ae): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><148>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x213): act_mask
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b3): buf_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><164>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7e): buf_nr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><172>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15): start_lba
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x64>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><180>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb4): end_lba
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 60
-DW_AT_type        : <0x64>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><18e>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<1><19d>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf4): struct_blk_user_trace_setup
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 62
-DW_AT_type        : <0x12e>
-<1><1a8>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe3): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x5d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1b6>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xdc): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x11c>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1c4>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x18d): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x5d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1d2>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x110): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x19d>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_blkpg_ioctl_arg.d1 b/mpers-mx32/struct_blkpg_ioctl_arg.d1
deleted file mode 100644
index 5adeb52..0000000
--- a/mpers-mx32/struct_blkpg_ioctl_arg.d1
+++ /dev/null
@@ -1,192 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x183 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xe): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x162): mpers-mx32/struct_blkpg_ioctl_arg.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x127): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1b0): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x19d): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x18f): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x9b): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x59): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x101): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x84): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1a7): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xa9): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x186): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x122): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xbb): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0xd3): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x7a): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x1bc): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x71): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x114): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><ff>: Abbrev Number: 13 (DW_TAG_structure_type)
-    <100>   DW_AT_byte_size   : 16	
-    <101>   DW_AT_decl_file   : 2	
-    <102>   DW_AT_decl_line   : 35	
-    <103>   DW_AT_sibling     : <0x13f>	
- <2><107>: Abbrev Number: 9 (DW_TAG_member)
-    <108>   DW_AT_name        : op	
-    <10b>   DW_AT_decl_file   : 2	
-    <10c>   DW_AT_decl_line   : 36	
-    <10d>   DW_AT_type        : <0x2b>	
-    <111>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><114>: Abbrev Number: 8 (DW_TAG_member)
-    <115>   DW_AT_name        : (indirect string, offset: 0x10e): flags	
-    <119>   DW_AT_decl_file   : 2	
-    <11a>   DW_AT_decl_line   : 37	
-    <11b>   DW_AT_type        : <0x2b>	
-    <11f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><122>: Abbrev Number: 8 (DW_TAG_member)
-    <123>   DW_AT_name        : (indirect string, offset: 0x6): datalen	
-    <127>   DW_AT_decl_file   : 2	
-    <128>   DW_AT_decl_line   : 38	
-    <129>   DW_AT_type        : <0x2b>	
-    <12d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><130>: Abbrev Number: 8 (DW_TAG_member)
-    <131>   DW_AT_name        : (indirect string, offset: 0x6c): data	
-    <135>   DW_AT_decl_file   : 2	
-    <136>   DW_AT_decl_line   : 39	
-    <137>   DW_AT_type        : <0x6a>	
-    <13b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><13e>: Abbrev Number: 0
- <1><13f>: Abbrev Number: 12 (DW_TAG_typedef)
-    <140>   DW_AT_name        : (indirect string, offset: 0xea): struct_blkpg_ioctl_arg	
-    <144>   DW_AT_decl_file   : 2	
-    <145>   DW_AT_decl_line   : 40	
-    <146>   DW_AT_type        : <0xff>	
- <1><14a>: Abbrev Number: 14 (DW_TAG_variable)
-    <14b>   DW_AT_name        : (indirect string, offset: 0xc2): current_wordsize	
-    <14f>   DW_AT_decl_file   : 3	
-    <150>   DW_AT_decl_line   : 757	
-    <152>   DW_AT_type        : <0x47>	
-    <156>   DW_AT_external    : 1	
-    <157>   DW_AT_declaration : 1	
- <1><158>: Abbrev Number: 14 (DW_TAG_variable)
-    <159>   DW_AT_name        : (indirect string, offset: 0xbb): sysent	
-    <15d>   DW_AT_decl_file   : 3	
-    <15e>   DW_AT_decl_line   : 892	
-    <160>   DW_AT_type        : <0xed>	
-    <164>   DW_AT_external    : 1	
-    <165>   DW_AT_declaration : 1	
- <1><166>: Abbrev Number: 14 (DW_TAG_variable)
-    <167>   DW_AT_name        : (indirect string, offset: 0x158): nsyscalls	
-    <16b>   DW_AT_decl_file   : 3	
-    <16c>   DW_AT_decl_line   : 903	
-    <16e>   DW_AT_type        : <0x47>	
-    <172>   DW_AT_external    : 1	
-    <173>   DW_AT_declaration : 1	
- <1><174>: Abbrev Number: 15 (DW_TAG_variable)
-    <175>   DW_AT_name        : (indirect string, offset: 0xd9): mpers_target_var	
-    <179>   DW_AT_decl_file   : 2	
-    <17a>   DW_AT_decl_line   : 64	
-    <17b>   DW_AT_type        : <0x13f>	
-    <17f>   DW_AT_external    : 1	
-    <180>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><186>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_blkpg_ioctl_arg.d2 b/mpers-mx32/struct_blkpg_ioctl_arg.d2
deleted file mode 100644
index bfbc25f..0000000
--- a/mpers-mx32/struct_blkpg_ioctl_arg.d2
+++ /dev/null
@@ -1,212 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b0): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19d): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18f): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x9b): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x59): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x101): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x84): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a7): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa9): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x186): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x122): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xbb): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd3): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7a): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bc): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x71): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x114): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><ff>
-Abbrev Number: 13 (DW_TAG_structure_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 35
-DW_AT_sibling     : <0x13f>
-<2><107>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : op
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><114>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10e): flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><122>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): datalen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><130>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6c): data
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><13f>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xea): struct_blkpg_ioctl_arg
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 40
-DW_AT_type        : <0xff>
-<1><14a>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc2): current_wordsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><158>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xbb): sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><166>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x158): nsyscalls
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><174>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd9): mpers_target_var
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x13f>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/struct_blkpg_partition.d1 b/mpers-mx32/struct_blkpg_partition.d1
deleted file mode 100644
index aaf6cb1..0000000
--- a/mpers-mx32/struct_blkpg_partition.d1
+++ /dev/null
@@ -1,208 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1ab (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x38): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x0): mpers-mx32/struct_blkpg_partition.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x137): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x19c): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x189): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 4 (DW_TAG_typedef)
-    <33>   DW_AT_name        : (indirect string, offset: 0x24): int64_t	
-    <37>   DW_AT_decl_file   : 2	
-    <38>   DW_AT_decl_line   : 43	
-    <39>   DW_AT_type        : <0x3d>	
- <1><3d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3e>   DW_AT_byte_size   : 8	
-    <3f>   DW_AT_encoding    : 5	(signed)
-    <40>   DW_AT_name        : (indirect string, offset: 0x17b): long long int	
- <1><44>: Abbrev Number: 2 (DW_TAG_base_type)
-    <45>   DW_AT_byte_size   : 1	
-    <46>   DW_AT_encoding    : 8	(unsigned char)
-    <47>   DW_AT_name        : (indirect string, offset: 0xc8): unsigned char	
- <1><4b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4c>   DW_AT_byte_size   : 2	
-    <4d>   DW_AT_encoding    : 7	(unsigned)
-    <4e>   DW_AT_name        : (indirect string, offset: 0x83): short unsigned int	
- <1><52>: Abbrev Number: 2 (DW_TAG_base_type)
-    <53>   DW_AT_byte_size   : 4	
-    <54>   DW_AT_encoding    : 7	(unsigned)
-    <55>   DW_AT_name        : (indirect string, offset: 0x117): unsigned int	
- <1><59>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5a>   DW_AT_byte_size   : 8	
-    <5b>   DW_AT_encoding    : 7	(unsigned)
-    <5c>   DW_AT_name        : (indirect string, offset: 0x1b8): long long unsigned int	
- <1><60>: Abbrev Number: 2 (DW_TAG_base_type)
-    <61>   DW_AT_byte_size   : 4	
-    <62>   DW_AT_encoding    : 5	(signed)
-    <63>   DW_AT_name        : (indirect string, offset: 0x193): long int	
- <1><67>: Abbrev Number: 2 (DW_TAG_base_type)
-    <68>   DW_AT_byte_size   : 4	
-    <69>   DW_AT_encoding    : 7	(unsigned)
-    <6a>   DW_AT_name        : (indirect string, offset: 0xd6): long unsigned int	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x172): sizetype	
- <1><75>: Abbrev Number: 2 (DW_TAG_base_type)
-    <76>   DW_AT_byte_size   : 1	
-    <77>   DW_AT_encoding    : 6	(signed char)
-    <78>   DW_AT_name        : (indirect string, offset: 0x132): char	
- <1><7c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <7d>   DW_AT_byte_size   : 4	
-    <7e>   DW_AT_type        : <0x82>	
- <1><82>: Abbrev Number: 6 (DW_TAG_const_type)
-    <83>   DW_AT_type        : <0x75>	
- <1><87>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <88>   DW_AT_name        : (indirect string, offset: 0xe8): sysent	
-    <8c>   DW_AT_byte_size   : 20	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 4	
-    <8f>   DW_AT_sibling     : <0xda>	
- <2><93>: Abbrev Number: 8 (DW_TAG_member)
-    <94>   DW_AT_name        : (indirect string, offset: 0x100): nargs	
-    <98>   DW_AT_decl_file   : 1	
-    <99>   DW_AT_decl_line   : 5	
-    <9a>   DW_AT_type        : <0x52>	
-    <9e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a1>: Abbrev Number: 8 (DW_TAG_member)
-    <a2>   DW_AT_name        : (indirect string, offset: 0xb6): sys_flags	
-    <a6>   DW_AT_decl_file   : 1	
-    <a7>   DW_AT_decl_line   : 6	
-    <a8>   DW_AT_type        : <0x2b>	
-    <ac>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><af>: Abbrev Number: 9 (DW_TAG_member)
-    <b0>   DW_AT_name        : sen	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 7	
-    <b6>   DW_AT_type        : <0x2b>	
-    <ba>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><bd>: Abbrev Number: 8 (DW_TAG_member)
-    <be>   DW_AT_name        : (indirect string, offset: 0x1a8): sys_func	
-    <c2>   DW_AT_decl_file   : 1	
-    <c3>   DW_AT_decl_line   : 8	
-    <c4>   DW_AT_type        : <0xe5>	
-    <c8>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><cb>: Abbrev Number: 8 (DW_TAG_member)
-    <cc>   DW_AT_name        : (indirect string, offset: 0xad): sys_name	
-    <d0>   DW_AT_decl_file   : 1	
-    <d1>   DW_AT_decl_line   : 9	
-    <d2>   DW_AT_type        : <0x7c>	
-    <d6>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <db>   DW_AT_type        : <0x2b>	
-    <df>   DW_AT_sibling     : <0xe5>	
- <2><e3>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <e6>   DW_AT_byte_size   : 4	
-    <e7>   DW_AT_type        : <0xda>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_typedef)
-    <ec>   DW_AT_name        : (indirect string, offset: 0x124): struct_sysent	
-    <f0>   DW_AT_decl_file   : 1	
-    <f1>   DW_AT_decl_line   : 10	
-    <f2>   DW_AT_type        : <0x87>	
- <1><f6>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f7>   DW_AT_byte_size   : 4	
-    <f8>   DW_AT_type        : <0xfc>	
- <1><fc>: Abbrev Number: 6 (DW_TAG_const_type)
-    <fd>   DW_AT_type        : <0xeb>	
- <1><101>: Abbrev Number: 2 (DW_TAG_base_type)
-    <102>   DW_AT_byte_size   : 1	
-    <103>   DW_AT_encoding    : 2	(boolean)
-    <104>   DW_AT_name        : (indirect string, offset: 0x2c): _Bool	
- <1><108>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <109>   DW_AT_byte_size   : 152	
-    <10a>   DW_AT_decl_file   : 3	
-    <10b>   DW_AT_decl_line   : 44	
-    <10c>   DW_AT_sibling     : <0x157>	
- <2><110>: Abbrev Number: 8 (DW_TAG_member)
-    <111>   DW_AT_name        : (indirect string, offset: 0x32): start	
-    <115>   DW_AT_decl_file   : 3	
-    <116>   DW_AT_decl_line   : 45	
-    <117>   DW_AT_type        : <0x32>	
-    <11b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><11e>: Abbrev Number: 8 (DW_TAG_member)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x1b1): length	
-    <123>   DW_AT_decl_file   : 3	
-    <124>   DW_AT_decl_line   : 46	
-    <125>   DW_AT_type        : <0x32>	
-    <129>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><12c>: Abbrev Number: 9 (DW_TAG_member)
-    <12d>   DW_AT_name        : pno	
-    <131>   DW_AT_decl_file   : 3	
-    <132>   DW_AT_decl_line   : 47	
-    <133>   DW_AT_type        : <0x2b>	
-    <137>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><13a>: Abbrev Number: 8 (DW_TAG_member)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x1cf): devname	
-    <13f>   DW_AT_decl_file   : 3	
-    <140>   DW_AT_decl_line   : 48	
-    <141>   DW_AT_type        : <0x157>	
-    <145>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><148>: Abbrev Number: 8 (DW_TAG_member)
-    <149>   DW_AT_name        : (indirect string, offset: 0xc0): volname	
-    <14d>   DW_AT_decl_file   : 3	
-    <14e>   DW_AT_decl_line   : 50	
-    <14f>   DW_AT_type        : <0x157>	
-    <153>   DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
- <2><156>: Abbrev Number: 0
- <1><157>: Abbrev Number: 13 (DW_TAG_array_type)
-    <158>   DW_AT_type        : <0x75>	
-    <15c>   DW_AT_sibling     : <0x167>	
- <2><160>: Abbrev Number: 14 (DW_TAG_subrange_type)
-    <161>   DW_AT_type        : <0x6e>	
-    <165>   DW_AT_upper_bound : 63	
- <2><166>: Abbrev Number: 0
- <1><167>: Abbrev Number: 4 (DW_TAG_typedef)
-    <168>   DW_AT_name        : (indirect string, offset: 0x96): struct_blkpg_partition	
-    <16c>   DW_AT_decl_file   : 3	
-    <16d>   DW_AT_decl_line   : 51	
-    <16e>   DW_AT_type        : <0x108>	
- <1><172>: Abbrev Number: 15 (DW_TAG_variable)
-    <173>   DW_AT_name        : (indirect string, offset: 0xef): current_wordsize	
-    <177>   DW_AT_decl_file   : 4	
-    <178>   DW_AT_decl_line   : 757	
-    <17a>   DW_AT_type        : <0x52>	
-    <17e>   DW_AT_external    : 1	
-    <17f>   DW_AT_declaration : 1	
- <1><180>: Abbrev Number: 15 (DW_TAG_variable)
-    <181>   DW_AT_name        : (indirect string, offset: 0xe8): sysent	
-    <185>   DW_AT_decl_file   : 4	
-    <186>   DW_AT_decl_line   : 892	
-    <188>   DW_AT_type        : <0xf6>	
-    <18c>   DW_AT_external    : 1	
-    <18d>   DW_AT_declaration : 1	
- <1><18e>: Abbrev Number: 15 (DW_TAG_variable)
-    <18f>   DW_AT_name        : (indirect string, offset: 0x168): nsyscalls	
-    <193>   DW_AT_decl_file   : 4	
-    <194>   DW_AT_decl_line   : 903	
-    <196>   DW_AT_type        : <0x52>	
-    <19a>   DW_AT_external    : 1	
-    <19b>   DW_AT_declaration : 1	
- <1><19c>: Abbrev Number: 16 (DW_TAG_variable)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x106): mpers_target_var	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 64	
-    <1a3>   DW_AT_type        : <0x167>	
-    <1a7>   DW_AT_external    : 1	
-    <1a8>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1ae>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_blkpg_partition.d2 b/mpers-mx32/struct_blkpg_partition.d2
deleted file mode 100644
index 2f00af5..0000000
--- a/mpers-mx32/struct_blkpg_partition.d2
+++ /dev/null
@@ -1,230 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x19c): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x189): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x24): int64_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x3d>
-<1><3d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x17b): long long int
-<1><44>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xc8): unsigned char
-<1><4b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x83): short unsigned int
-<1><52>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x117): unsigned int
-<1><59>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1b8): long long unsigned int
-<1><60>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x193): long int
-<1><67>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd6): long unsigned int
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x172): sizetype
-<1><75>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x132): char
-<1><7c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x82>
-<1><82>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x75>
-<1><87>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe8): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xda>
-<2><93>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x100): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x52>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb6): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><af>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><bd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a8): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe5>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><cb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xad): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><da>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe5>
-<2><e3>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><e5>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xda>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x124): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x87>
-<1><f6>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfc>
-<1><fc>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xeb>
-<1><101>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2c): _Bool
-<1><108>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_byte_size   : 152
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_sibling     : <0x157>
-<2><110>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x32): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x32>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><11e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b1): length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x32>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><12c>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : pno
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><13a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cf): devname
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x157>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><148>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc0): volname
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x157>
-DW_AT_data_member_location: 2 byte block: 23 54 	(DW_OP_plus_uconst: 84)
-<1><157>
-Abbrev Number: 13 (DW_TAG_array_type)
-DW_AT_type        : <0x75>
-DW_AT_sibling     : <0x167>
-<2><160>
-Abbrev Number: 14 (DW_TAG_subrange_type)
-DW_AT_type        : <0x6e>
-DW_AT_upper_bound : 63
-<1><167>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x96): struct_blkpg_partition
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x108>
-<1><172>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xef): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x52>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><180>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe8): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf6>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18e>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x168): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x52>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><19c>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x106): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x167>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.c b/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.c
index c907ffb..6caef1a 100644
--- a/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.c
+++ b/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.d1 b/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.d1
deleted file mode 100644
index 600bdc5..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.d1
+++ /dev/null
@@ -1,327 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2b3 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x7f): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x29c): mpers-mx32/struct_btrfs_ioctl_dev_replace_args.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x238): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x366): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x328): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x13f): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x390): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1fb): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x11a): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x338): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x14d): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x293): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x216): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x15f): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x177): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x110): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x3a3): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0xfa): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x208): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x50): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x2e6): __u8	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 20	
-    <104>   DW_AT_type        : <0x39>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x28d): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x341): btrfs_ioctl_dev_replace_start_params	
-    <118>   DW_AT_byte_size   : 2072	
-    <11a>   DW_AT_decl_file   : 3	
-    <11b>   DW_AT_decl_line   : 131	
-    <11c>   DW_AT_sibling     : <0x15a>	
- <2><120>: Abbrev Number: 7 (DW_TAG_member)
-    <121>   DW_AT_name        : (indirect string, offset: 0x70): srcdevid	
-    <125>   DW_AT_decl_file   : 3	
-    <126>   DW_AT_decl_line   : 132	
-    <127>   DW_AT_type        : <0x108>	
-    <12b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12e>: Abbrev Number: 7 (DW_TAG_member)
-    <12f>   DW_AT_name        : (indirect string, offset: 0x372): cont_reading_from_srcdev_mode	
-    <133>   DW_AT_decl_file   : 3	
-    <134>   DW_AT_decl_line   : 133	
-    <135>   DW_AT_type        : <0x108>	
-    <139>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13c>: Abbrev Number: 7 (DW_TAG_member)
-    <13d>   DW_AT_name        : (indirect string, offset: 0xca): srcdev_name	
-    <141>   DW_AT_decl_file   : 3	
-    <142>   DW_AT_decl_line   : 135	
-    <143>   DW_AT_type        : <0x15a>	
-    <147>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><14a>: Abbrev Number: 7 (DW_TAG_member)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x3ac): tgtdev_name	
-    <14f>   DW_AT_decl_file   : 3	
-    <150>   DW_AT_decl_line   : 136	
-    <151>   DW_AT_type        : <0x15a>	
-    <155>   DW_AT_data_member_location: 3 byte block: 23 91 8 	(DW_OP_plus_uconst: 1041)
- <2><159>: Abbrev Number: 0
- <1><15a>: Abbrev Number: 13 (DW_TAG_array_type)
-    <15b>   DW_AT_type        : <0xfd>	
-    <15f>   DW_AT_sibling     : <0x16b>	
- <2><163>: Abbrev Number: 14 (DW_TAG_subrange_type)
-    <164>   DW_AT_type        : <0x63>	
-    <168>   DW_AT_upper_bound : 1024	
- <2><16a>: Abbrev Number: 0
- <1><16b>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <16c>   DW_AT_name        : (indirect string, offset: 0x1ad): btrfs_ioctl_dev_replace_status_params	
-    <170>   DW_AT_byte_size   : 48	
-    <171>   DW_AT_decl_file   : 3	
-    <172>   DW_AT_decl_line   : 144	
-    <173>   DW_AT_sibling     : <0x1cc>	
- <2><177>: Abbrev Number: 7 (DW_TAG_member)
-    <178>   DW_AT_name        : (indirect string, offset: 0x131): replace_state	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 145	
-    <17e>   DW_AT_type        : <0x108>	
-    <182>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><185>: Abbrev Number: 7 (DW_TAG_member)
-    <186>   DW_AT_name        : (indirect string, offset: 0xe): progress_1000	
-    <18a>   DW_AT_decl_file   : 3	
-    <18b>   DW_AT_decl_line   : 146	
-    <18c>   DW_AT_type        : <0x108>	
-    <190>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><193>: Abbrev Number: 7 (DW_TAG_member)
-    <194>   DW_AT_name        : (indirect string, offset: 0x103): time_started	
-    <198>   DW_AT_decl_file   : 3	
-    <199>   DW_AT_decl_line   : 147	
-    <19a>   DW_AT_type        : <0x108>	
-    <19e>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1a1>: Abbrev Number: 7 (DW_TAG_member)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x2eb): time_stopped	
-    <1a6>   DW_AT_decl_file   : 3	
-    <1a7>   DW_AT_decl_line   : 148	
-    <1a8>   DW_AT_type        : <0x108>	
-    <1ac>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1af>: Abbrev Number: 7 (DW_TAG_member)
-    <1b0>   DW_AT_name        : (indirect string, offset: 0x317): num_write_errors	
-    <1b4>   DW_AT_decl_file   : 3	
-    <1b5>   DW_AT_decl_line   : 149	
-    <1b6>   DW_AT_type        : <0x108>	
-    <1ba>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1bd>: Abbrev Number: 7 (DW_TAG_member)
-    <1be>   DW_AT_name        : (indirect string, offset: 0x1dd): num_uncorrectable_read_errors	
-    <1c2>   DW_AT_decl_file   : 3	
-    <1c3>   DW_AT_decl_line   : 150	
-    <1c4>   DW_AT_type        : <0x108>	
-    <1c8>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1cb>: Abbrev Number: 0
- <1><1cc>: Abbrev Number: 15 (DW_TAG_union_type)
-    <1cd>   DW_AT_byte_size   : 2072	
-    <1cf>   DW_AT_decl_file   : 3	
-    <1d0>   DW_AT_decl_line   : 163	
-    <1d1>   DW_AT_sibling     : <0x1ec>	
- <2><1d5>: Abbrev Number: 16 (DW_TAG_member)
-    <1d6>   DW_AT_name        : (indirect string, offset: 0x79): start	
-    <1da>   DW_AT_decl_file   : 3	
-    <1db>   DW_AT_decl_line   : 164	
-    <1dc>   DW_AT_type        : <0x113>	
- <2><1e0>: Abbrev Number: 16 (DW_TAG_member)
-    <1e1>   DW_AT_name        : (indirect string, offset: 0xf3): status	
-    <1e5>   DW_AT_decl_file   : 3	
-    <1e6>   DW_AT_decl_line   : 165	
-    <1e7>   DW_AT_type        : <0x16b>	
- <2><1eb>: Abbrev Number: 0
- <1><1ec>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <1ed>   DW_AT_name        : (indirect string, offset: 0xd6): btrfs_ioctl_dev_replace_args	
-    <1f1>   DW_AT_byte_size   : 2600	
-    <1f3>   DW_AT_decl_file   : 3	
-    <1f4>   DW_AT_decl_line   : 159	
-    <1f5>   DW_AT_sibling     : <0x22d>	
- <2><1f9>: Abbrev Number: 8 (DW_TAG_member)
-    <1fa>   DW_AT_name        : cmd	
-    <1fe>   DW_AT_decl_file   : 3	
-    <1ff>   DW_AT_decl_line   : 160	
-    <200>   DW_AT_type        : <0x108>	
-    <204>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><207>: Abbrev Number: 7 (DW_TAG_member)
-    <208>   DW_AT_name        : (indirect string, offset: 0x231): result	
-    <20c>   DW_AT_decl_file   : 3	
-    <20d>   DW_AT_decl_line   : 161	
-    <20e>   DW_AT_type        : <0x108>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><215>: Abbrev Number: 17 (DW_TAG_member)
-    <216>   DW_AT_type        : <0x1cc>	
-    <21a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><21d>: Abbrev Number: 7 (DW_TAG_member)
-    <21e>   DW_AT_name        : (indirect string, offset: 0x332): spare	
-    <222>   DW_AT_decl_file   : 3	
-    <223>   DW_AT_decl_line   : 168	
-    <224>   DW_AT_type        : <0x22d>	
-    <228>   DW_AT_data_member_location: 3 byte block: 23 a8 10 	(DW_OP_plus_uconst: 2088)
- <2><22c>: Abbrev Number: 0
- <1><22d>: Abbrev Number: 13 (DW_TAG_array_type)
-    <22e>   DW_AT_type        : <0x108>	
-    <232>   DW_AT_sibling     : <0x23d>	
- <2><236>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <237>   DW_AT_type        : <0x63>	
-    <23b>   DW_AT_upper_bound : 63	
- <2><23c>: Abbrev Number: 0
- <1><23d>: Abbrev Number: 19 (DW_TAG_enumeration_type)
-    <23e>   DW_AT_name        : (indirect string, offset: 0x21b): btrfs_dev_stat_values	
-    <242>   DW_AT_byte_size   : 4	
-    <243>   DW_AT_decl_file   : 3	
-    <244>   DW_AT_decl_line   : 369	
-    <246>   DW_AT_sibling     : <0x26f>	
- <2><24a>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <24b>   DW_AT_name        : (indirect string, offset: 0x56): BTRFS_DEV_STAT_WRITE_ERRS	
-    <24f>   DW_AT_const_value : 0	
- <2><250>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <251>   DW_AT_name        : (indirect string, offset: 0x2cd): BTRFS_DEV_STAT_READ_ERRS	
-    <255>   DW_AT_const_value : 1	
- <2><256>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <257>   DW_AT_name        : (indirect string, offset: 0x1c): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <25b>   DW_AT_const_value : 2	
- <2><25c>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <25d>   DW_AT_name        : (indirect string, offset: 0x18e): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <261>   DW_AT_const_value : 3	
- <2><262>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <263>   DW_AT_name        : (indirect string, offset: 0x2f8): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <267>   DW_AT_const_value : 4	
- <2><268>: Abbrev Number: 20 (DW_TAG_enumerator)
-    <269>   DW_AT_name        : (indirect string, offset: 0x36): BTRFS_DEV_STAT_VALUES_MAX	
-    <26d>   DW_AT_const_value : 5	
- <2><26e>: Abbrev Number: 0
- <1><26f>: Abbrev Number: 11 (DW_TAG_typedef)
-    <270>   DW_AT_name        : (indirect string, offset: 0x269): struct_btrfs_ioctl_dev_replace_args	
-    <274>   DW_AT_decl_file   : 4	
-    <275>   DW_AT_decl_line   : 36	
-    <276>   DW_AT_type        : <0x1ec>	
- <1><27a>: Abbrev Number: 21 (DW_TAG_variable)
-    <27b>   DW_AT_name        : (indirect string, offset: 0x166): current_wordsize	
-    <27f>   DW_AT_decl_file   : 5	
-    <280>   DW_AT_decl_line   : 757	
-    <282>   DW_AT_type        : <0x47>	
-    <286>   DW_AT_external    : 1	
-    <287>   DW_AT_declaration : 1	
- <1><288>: Abbrev Number: 21 (DW_TAG_variable)
-    <289>   DW_AT_name        : (indirect string, offset: 0x15f): sysent	
-    <28d>   DW_AT_decl_file   : 5	
-    <28e>   DW_AT_decl_line   : 892	
-    <290>   DW_AT_type        : <0xeb>	
-    <294>   DW_AT_external    : 1	
-    <295>   DW_AT_declaration : 1	
- <1><296>: Abbrev Number: 21 (DW_TAG_variable)
-    <297>   DW_AT_name        : (indirect string, offset: 0x1d3): nsyscalls	
-    <29b>   DW_AT_decl_file   : 5	
-    <29c>   DW_AT_decl_line   : 903	
-    <29e>   DW_AT_type        : <0x47>	
-    <2a2>   DW_AT_external    : 1	
-    <2a3>   DW_AT_declaration : 1	
- <1><2a4>: Abbrev Number: 22 (DW_TAG_variable)
-    <2a5>   DW_AT_name        : (indirect string, offset: 0x17d): mpers_target_var	
-    <2a9>   DW_AT_decl_file   : 4	
-    <2aa>   DW_AT_decl_line   : 46	
-    <2ab>   DW_AT_type        : <0x26f>	
-    <2af>   DW_AT_external    : 1	
-    <2b0>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><2b6>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.d2 b/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.d2
deleted file mode 100644
index 5018cb6..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_dev_replace_args.d2
+++ /dev/null
@@ -1,368 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x366): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x328): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x13f): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x390): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1fb): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x11a): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x338): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x14d): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x293): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x216): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x15f): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x177): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x110): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a3): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfa): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x208): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x50): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2e6): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x28d): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x341): btrfs_ioctl_dev_replace_start_params
-DW_AT_byte_size   : 2072
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 131
-DW_AT_sibling     : <0x15a>
-<2><120>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x70): srcdevid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 132
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x372): cont_reading_from_srcdev_mode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><13c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xca): srcdev_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 135
-DW_AT_type        : <0x15a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><14a>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3ac): tgtdev_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 136
-DW_AT_type        : <0x15a>
-DW_AT_data_member_location: 3 byte block: 23 91 8 	(DW_OP_plus_uconst: 1041)
-<1><15a>
-Abbrev Number: 13 (DW_TAG_array_type)
-DW_AT_type        : <0xfd>
-DW_AT_sibling     : <0x16b>
-<2><163>
-Abbrev Number: 14 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1024
-<1><16b>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1ad): btrfs_ioctl_dev_replace_status_params
-DW_AT_byte_size   : 48
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 144
-DW_AT_sibling     : <0x1cc>
-<2><177>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x131): replace_state
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 145
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><185>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe): progress_1000
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 146
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><193>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x103): time_started
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 147
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1a1>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2eb): time_stopped
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 148
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1af>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x317): num_write_errors
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 149
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1bd>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1dd): num_uncorrectable_read_errors
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 150
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<1><1cc>
-Abbrev Number: 15 (DW_TAG_union_type)
-DW_AT_byte_size   : 2072
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 163
-DW_AT_sibling     : <0x1ec>
-<2><1d5>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x79): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 164
-DW_AT_type        : <0x113>
-<2><1e0>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf3): status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 165
-DW_AT_type        : <0x16b>
-<1><1ec>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd6): btrfs_ioctl_dev_replace_args
-DW_AT_byte_size   : 2600
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 159
-DW_AT_sibling     : <0x22d>
-<2><1f9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : cmd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 160
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><207>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x231): result
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 161
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><215>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_type        : <0x1cc>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><21d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x332): spare
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 168
-DW_AT_type        : <0x22d>
-DW_AT_data_member_location: 3 byte block: 23 a8 10 	(DW_OP_plus_uconst: 2088)
-<1><22d>
-Abbrev Number: 13 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x23d>
-<2><236>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 63
-<1><23d>
-Abbrev Number: 19 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x21b): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x26f>
-<2><24a>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x56): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><250>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2cd): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><256>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1c): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><25c>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x18e): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><262>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2f8): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><268>
-Abbrev Number: 20 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x36): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><26f>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x269): struct_btrfs_ioctl_dev_replace_args
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x1ec>
-<1><27a>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x166): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><288>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x15f): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><296>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1d3): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2a4>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17d): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x26f>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.c b/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.c
index a62dfd3..4f54da8 100644
--- a/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.c
+++ b/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.d1 b/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.d1
deleted file mode 100644
index fcd8846..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.d1
+++ /dev/null
@@ -1,277 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x24c (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x7c): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x292): mpers-mx32/struct_btrfs_ioctl_received_subvol_args.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1f1): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x2e0): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x2c7): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x121): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x2ec): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1be): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x101): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x2d1): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x144): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x232): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x1d6): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x156): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x188): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xf7): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x2ff): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0xcd): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x6e): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x50): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x56): __u32	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 26	
-    <104>   DW_AT_type        : <0x47>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x22c): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x1db): btrfs_dev_stat_values	
-    <118>   DW_AT_byte_size   : 4	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 369	
-    <11c>   DW_AT_sibling     : <0x145>	
- <2><120>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <121>   DW_AT_name        : (indirect string, offset: 0x15d): BTRFS_DEV_STAT_WRITE_ERRS	
-    <125>   DW_AT_const_value : 0	
- <2><126>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <127>   DW_AT_name        : (indirect string, offset: 0x255): BTRFS_DEV_STAT_READ_ERRS	
-    <12b>   DW_AT_const_value : 1	
- <2><12c>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <12d>   DW_AT_name        : (indirect string, offset: 0x23b): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <131>   DW_AT_const_value : 2	
- <2><132>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <133>   DW_AT_name        : (indirect string, offset: 0x19f): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <137>   DW_AT_const_value : 3	
- <2><138>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <139>   DW_AT_name        : (indirect string, offset: 0x273): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <13d>   DW_AT_const_value : 4	
- <2><13e>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <13f>   DW_AT_name        : (indirect string, offset: 0xe): BTRFS_DEV_STAT_VALUES_MAX	
-    <143>   DW_AT_const_value : 5	
- <2><144>: Abbrev Number: 0
- <1><145>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <146>   DW_AT_name        : (indirect string, offset: 0x12f): btrfs_ioctl_timespec	
-    <14a>   DW_AT_byte_size   : 16	
-    <14b>   DW_AT_decl_file   : 3	
-    <14c>   DW_AT_decl_line   : 426	
-    <14e>   DW_AT_sibling     : <0x171>	
- <2><152>: Abbrev Number: 15 (DW_TAG_member)
-    <153>   DW_AT_name        : sec	
-    <157>   DW_AT_decl_file   : 3	
-    <158>   DW_AT_decl_line   : 427	
-    <15a>   DW_AT_type        : <0x108>	
-    <15e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><161>: Abbrev Number: 16 (DW_TAG_member)
-    <162>   DW_AT_name        : (indirect string, offset: 0x26e): nsec	
-    <166>   DW_AT_decl_file   : 3	
-    <167>   DW_AT_decl_line   : 428	
-    <169>   DW_AT_type        : <0xfd>	
-    <16d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><170>: Abbrev Number: 0
- <1><171>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <172>   DW_AT_name        : (indirect string, offset: 0xd6): btrfs_ioctl_received_subvol_args	
-    <176>   DW_AT_byte_size   : 200	
-    <177>   DW_AT_decl_file   : 3	
-    <178>   DW_AT_decl_line   : 431	
-    <17a>   DW_AT_sibling     : <0x1e8>	
- <2><17e>: Abbrev Number: 16 (DW_TAG_member)
-    <17f>   DW_AT_name        : (indirect string, offset: 0x1d1): uuid	
-    <183>   DW_AT_decl_file   : 3	
-    <184>   DW_AT_decl_line   : 432	
-    <186>   DW_AT_type        : <0x1e8>	
-    <18a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><18d>: Abbrev Number: 16 (DW_TAG_member)
-    <18e>   DW_AT_name        : (indirect string, offset: 0x65): stransid	
-    <192>   DW_AT_decl_file   : 3	
-    <193>   DW_AT_decl_line   : 433	
-    <195>   DW_AT_type        : <0x108>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 16 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x118): rtransid	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 434	
-    <1a4>   DW_AT_type        : <0x108>	
-    <1a8>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1ab>: Abbrev Number: 16 (DW_TAG_member)
-    <1ac>   DW_AT_name        : (indirect string, offset: 0xc7): stime	
-    <1b0>   DW_AT_decl_file   : 3	
-    <1b1>   DW_AT_decl_line   : 435	
-    <1b3>   DW_AT_type        : <0x145>	
-    <1b7>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1ba>: Abbrev Number: 16 (DW_TAG_member)
-    <1bb>   DW_AT_name        : (indirect string, offset: 0x2da): rtime	
-    <1bf>   DW_AT_decl_file   : 3	
-    <1c0>   DW_AT_decl_line   : 436	
-    <1c2>   DW_AT_type        : <0x145>	
-    <1c6>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1c9>: Abbrev Number: 16 (DW_TAG_member)
-    <1ca>   DW_AT_name        : (indirect string, offset: 0x1cb): flags	
-    <1ce>   DW_AT_decl_file   : 3	
-    <1cf>   DW_AT_decl_line   : 437	
-    <1d1>   DW_AT_type        : <0x108>	
-    <1d5>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1d8>: Abbrev Number: 16 (DW_TAG_member)
-    <1d9>   DW_AT_name        : (indirect string, offset: 0x5c): reserved	
-    <1dd>   DW_AT_decl_file   : 3	
-    <1de>   DW_AT_decl_line   : 438	
-    <1e0>   DW_AT_type        : <0x1f8>	
-    <1e4>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1e7>: Abbrev Number: 0
- <1><1e8>: Abbrev Number: 17 (DW_TAG_array_type)
-    <1e9>   DW_AT_type        : <0x6a>	
-    <1ed>   DW_AT_sibling     : <0x1f8>	
- <2><1f1>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <1f2>   DW_AT_type        : <0x63>	
-    <1f6>   DW_AT_upper_bound : 15	
- <2><1f7>: Abbrev Number: 0
- <1><1f8>: Abbrev Number: 17 (DW_TAG_array_type)
-    <1f9>   DW_AT_type        : <0x108>	
-    <1fd>   DW_AT_sibling     : <0x208>	
- <2><201>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <202>   DW_AT_type        : <0x63>	
-    <206>   DW_AT_upper_bound : 15	
- <2><207>: Abbrev Number: 0
- <1><208>: Abbrev Number: 11 (DW_TAG_typedef)
-    <209>   DW_AT_name        : (indirect string, offset: 0x28): struct_btrfs_ioctl_received_subvol_args	
-    <20d>   DW_AT_decl_file   : 4	
-    <20e>   DW_AT_decl_line   : 40	
-    <20f>   DW_AT_type        : <0x171>	
- <1><213>: Abbrev Number: 19 (DW_TAG_variable)
-    <214>   DW_AT_name        : (indirect string, offset: 0x177): current_wordsize	
-    <218>   DW_AT_decl_file   : 5	
-    <219>   DW_AT_decl_line   : 757	
-    <21b>   DW_AT_type        : <0x47>	
-    <21f>   DW_AT_external    : 1	
-    <220>   DW_AT_declaration : 1	
- <1><221>: Abbrev Number: 19 (DW_TAG_variable)
-    <222>   DW_AT_name        : (indirect string, offset: 0x156): sysent	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 892	
-    <229>   DW_AT_type        : <0xeb>	
-    <22d>   DW_AT_external    : 1	
-    <22e>   DW_AT_declaration : 1	
- <1><22f>: Abbrev Number: 19 (DW_TAG_variable)
-    <230>   DW_AT_name        : (indirect string, offset: 0x222): nsyscalls	
-    <234>   DW_AT_decl_file   : 5	
-    <235>   DW_AT_decl_line   : 903	
-    <237>   DW_AT_type        : <0x47>	
-    <23b>   DW_AT_external    : 1	
-    <23c>   DW_AT_declaration : 1	
- <1><23d>: Abbrev Number: 20 (DW_TAG_variable)
-    <23e>   DW_AT_name        : (indirect string, offset: 0x18e): mpers_target_var	
-    <242>   DW_AT_decl_file   : 4	
-    <243>   DW_AT_decl_line   : 46	
-    <244>   DW_AT_type        : <0x208>	
-    <248>   DW_AT_external    : 1	
-    <249>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><24f>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.d2 b/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.d2
deleted file mode 100644
index fe6cf7f..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_received_subvol_args.d2
+++ /dev/null
@@ -1,311 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x2e0): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2c7): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x121): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2ec): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1be): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x101): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2d1): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x144): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x232): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1d6): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x156): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x188): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf7): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ff): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcd): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6e): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x50): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x56): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x22c): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x1db): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x145>
-<2><120>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x15d): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><126>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x255): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><12c>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x23b): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><132>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x19f): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><138>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x273): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><13e>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xe): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><145>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x12f): btrfs_ioctl_timespec
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 426
-DW_AT_sibling     : <0x171>
-<2><152>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : sec
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 427
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><161>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26e): nsec
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 428
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><171>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd6): btrfs_ioctl_received_subvol_args
-DW_AT_byte_size   : 200
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 431
-DW_AT_sibling     : <0x1e8>
-<2><17e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d1): uuid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 432
-DW_AT_type        : <0x1e8>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><18d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x65): stransid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 433
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x118): rtransid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 434
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1ab>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc7): stime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 435
-DW_AT_type        : <0x145>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1ba>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2da): rtime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 436
-DW_AT_type        : <0x145>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1c9>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cb): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 437
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><1d8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5c): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 438
-DW_AT_type        : <0x1f8>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<1><1e8>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x1f8>
-<2><1f1>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><1f8>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x208>
-<2><201>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><208>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x28): struct_btrfs_ioctl_received_subvol_args
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x171>
-<1><213>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x177): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><221>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x156): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><22f>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x222): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><23d>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x18e): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x208>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_btrfs_ioctl_send_args.c b/mpers-mx32/struct_btrfs_ioctl_send_args.c
index 6a8a43a..0e1d924 100644
--- a/mpers-mx32/struct_btrfs_ioctl_send_args.c
+++ b/mpers-mx32/struct_btrfs_ioctl_send_args.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/struct_btrfs_ioctl_send_args.d1 b/mpers-mx32/struct_btrfs_ioctl_send_args.d1
deleted file mode 100644
index 6364845..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_send_args.d1
+++ /dev/null
@@ -1,248 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x207 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x4f): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x27b): mpers-mx32/struct_btrfs_ioctl_send_args.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1c3): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x2ae): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x150): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x104): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x112): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x9a): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x179): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x2c3): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x2a5): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x120): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x204): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x19a): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x132): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x14a): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xfa): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x2ba): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0xad): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x18c): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x26): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x2da): __s64	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 29	
-    <104>   DW_AT_type        : <0x32>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x1fe): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 12 (DW_TAG_array_type)
-    <114>   DW_AT_type        : <0x108>	
-    <118>   DW_AT_sibling     : <0x123>	
- <2><11c>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <11d>   DW_AT_type        : <0x63>	
-    <121>   DW_AT_upper_bound : 3	
- <2><122>: Abbrev Number: 0
- <1><123>: Abbrev Number: 14 (DW_TAG_enumeration_type)
-    <124>   DW_AT_name        : (indirect string, offset: 0x19f): btrfs_dev_stat_values	
-    <128>   DW_AT_byte_size   : 4	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 369	
-    <12c>   DW_AT_sibling     : <0x155>	
- <2><130>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <131>   DW_AT_name        : (indirect string, offset: 0x2c): BTRFS_DEV_STAT_WRITE_ERRS	
-    <135>   DW_AT_const_value : 0	
- <2><136>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <137>   DW_AT_name        : (indirect string, offset: 0x227): BTRFS_DEV_STAT_READ_ERRS	
-    <13b>   DW_AT_const_value : 1	
- <2><13c>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <13d>   DW_AT_name        : (indirect string, offset: 0x20d): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <141>   DW_AT_const_value : 2	
- <2><142>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <143>   DW_AT_name        : (indirect string, offset: 0x15a): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <147>   DW_AT_const_value : 3	
- <2><148>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <149>   DW_AT_name        : (indirect string, offset: 0x240): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <14d>   DW_AT_const_value : 4	
- <2><14e>: Abbrev Number: 15 (DW_TAG_enumerator)
-    <14f>   DW_AT_name        : (indirect string, offset: 0xc): BTRFS_DEV_STAT_VALUES_MAX	
-    <153>   DW_AT_const_value : 5	
- <2><154>: Abbrev Number: 0
- <1><155>: Abbrev Number: 16 (DW_TAG_structure_type)
-    <156>   DW_AT_name        : (indirect string, offset: 0xd3): btrfs_ioctl_send_args	
-    <15a>   DW_AT_byte_size   : 72	
-    <15b>   DW_AT_decl_file   : 3	
-    <15c>   DW_AT_decl_line   : 466	
-    <15e>   DW_AT_sibling     : <0x1bd>	
- <2><162>: Abbrev Number: 17 (DW_TAG_member)
-    <163>   DW_AT_name        : (indirect string, offset: 0x273): send_fd	
-    <167>   DW_AT_decl_file   : 3	
-    <168>   DW_AT_decl_line   : 467	
-    <16a>   DW_AT_type        : <0xfd>	
-    <16e>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><171>: Abbrev Number: 17 (DW_TAG_member)
-    <172>   DW_AT_name        : (indirect string, offset: 0x25f): clone_sources_count	
-    <176>   DW_AT_decl_file   : 3	
-    <177>   DW_AT_decl_line   : 468	
-    <179>   DW_AT_type        : <0x108>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 17 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x1b5): clone_sources	
-    <185>   DW_AT_decl_file   : 3	
-    <186>   DW_AT_decl_line   : 469	
-    <188>   DW_AT_type        : <0x1bd>	
-    <18c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><18f>: Abbrev Number: 17 (DW_TAG_member)
-    <190>   DW_AT_name        : (indirect string, offset: 0x0): parent_root	
-    <194>   DW_AT_decl_file   : 3	
-    <195>   DW_AT_decl_line   : 470	
-    <197>   DW_AT_type        : <0x108>	
-    <19b>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><19e>: Abbrev Number: 17 (DW_TAG_member)
-    <19f>   DW_AT_name        : (indirect string, offset: 0x186): flags	
-    <1a3>   DW_AT_decl_file   : 3	
-    <1a4>   DW_AT_decl_line   : 471	
-    <1a6>   DW_AT_type        : <0x108>	
-    <1aa>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1ad>: Abbrev Number: 17 (DW_TAG_member)
-    <1ae>   DW_AT_name        : (indirect string, offset: 0x46): reserved	
-    <1b2>   DW_AT_decl_file   : 3	
-    <1b3>   DW_AT_decl_line   : 472	
-    <1b5>   DW_AT_type        : <0x113>	
-    <1b9>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1bc>: Abbrev Number: 0
- <1><1bd>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <1be>   DW_AT_byte_size   : 4	
-    <1bf>   DW_AT_type        : <0x108>	
- <1><1c3>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1c4>   DW_AT_name        : (indirect string, offset: 0xb6): struct_btrfs_ioctl_send_args	
-    <1c8>   DW_AT_decl_file   : 4	
-    <1c9>   DW_AT_decl_line   : 38	
-    <1ca>   DW_AT_type        : <0x155>	
- <1><1ce>: Abbrev Number: 18 (DW_TAG_variable)
-    <1cf>   DW_AT_name        : (indirect string, offset: 0x139): current_wordsize	
-    <1d3>   DW_AT_decl_file   : 5	
-    <1d4>   DW_AT_decl_line   : 757	
-    <1d6>   DW_AT_type        : <0x47>	
-    <1da>   DW_AT_external    : 1	
-    <1db>   DW_AT_declaration : 1	
- <1><1dc>: Abbrev Number: 18 (DW_TAG_variable)
-    <1dd>   DW_AT_name        : (indirect string, offset: 0x132): sysent	
-    <1e1>   DW_AT_decl_file   : 5	
-    <1e2>   DW_AT_decl_line   : 892	
-    <1e4>   DW_AT_type        : <0xeb>	
-    <1e8>   DW_AT_external    : 1	
-    <1e9>   DW_AT_declaration : 1	
- <1><1ea>: Abbrev Number: 18 (DW_TAG_variable)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0x1f4): nsyscalls	
-    <1ef>   DW_AT_decl_file   : 5	
-    <1f0>   DW_AT_decl_line   : 903	
-    <1f2>   DW_AT_type        : <0x47>	
-    <1f6>   DW_AT_external    : 1	
-    <1f7>   DW_AT_declaration : 1	
- <1><1f8>: Abbrev Number: 19 (DW_TAG_variable)
-    <1f9>   DW_AT_name        : (indirect string, offset: 0xe9): mpers_target_var	
-    <1fd>   DW_AT_decl_file   : 4	
-    <1fe>   DW_AT_decl_line   : 46	
-    <1ff>   DW_AT_type        : <0x1c3>	
-    <203>   DW_AT_external    : 1	
-    <204>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><20a>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_btrfs_ioctl_send_args.d2 b/mpers-mx32/struct_btrfs_ioctl_send_args.d2
deleted file mode 100644
index f124cae..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_send_args.d2
+++ /dev/null
@@ -1,279 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x2ae): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x150): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x104): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x112): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x9a): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x179): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2c3): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2a5): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x120): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x204): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x19a): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x132): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14a): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfa): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ba): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xad): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x18c): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x26): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2da): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1fe): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x123>
-<2><11c>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><123>
-Abbrev Number: 14 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x19f): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x155>
-<2><130>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x2c): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><136>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x227): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><13c>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x20d): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><142>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x15a): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><148>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x240): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><14e>
-Abbrev Number: 15 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xc): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><155>
-Abbrev Number: 16 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xd3): btrfs_ioctl_send_args
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 466
-DW_AT_sibling     : <0x1bd>
-<2><162>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x273): send_fd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 467
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><171>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25f): clone_sources_count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 468
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b5): clone_sources
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 469
-DW_AT_type        : <0x1bd>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><18f>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): parent_root
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 470
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><19e>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x186): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 471
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1ad>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x46): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 472
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<1><1bd>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x108>
-<1><1c3>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xb6): struct_btrfs_ioctl_send_args
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x155>
-<1><1ce>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x139): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1dc>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x132): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1ea>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1f4): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1f8>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe9): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x1c3>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.c b/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.c
index 0229a3b..977a309 100644
--- a/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.c
+++ b/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Jeff Mahoney <jeffm@suse.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.d1 b/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.d1
deleted file mode 100644
index 0749928..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.d1
+++ /dev/null
@@ -1,363 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2fe (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x2a3): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xb6): mpers-mx32/struct_btrfs_ioctl_vol_args_v2.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1b9): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x32e): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x287): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa8): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x6b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x17d): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x91): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x306): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xeb): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x209): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x19e): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xfd): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x29d): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x87): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x33f): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x7e): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x190): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x4b): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x348): __s64	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 29	
-    <104>   DW_AT_type        : <0x32>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x203): __u64	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 30	
-    <10f>   DW_AT_type        : <0x4e>	
- <1><113>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x38): btrfs_qgroup_limit	
-    <118>   DW_AT_byte_size   : 40	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 44	
-    <11b>   DW_AT_sibling     : <0x166>	
- <2><11f>: Abbrev Number: 7 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0x18a): flags	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 45	
-    <126>   DW_AT_type        : <0x108>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 7 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0xe2): max_rfer	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 46	
-    <134>   DW_AT_type        : <0x108>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13b>: Abbrev Number: 7 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x165): max_excl	
-    <140>   DW_AT_decl_file   : 3	
-    <141>   DW_AT_decl_line   : 47	
-    <142>   DW_AT_type        : <0x108>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><149>: Abbrev Number: 7 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x27e): rsv_rfer	
-    <14e>   DW_AT_decl_file   : 3	
-    <14f>   DW_AT_decl_line   : 48	
-    <150>   DW_AT_type        : <0x108>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><157>: Abbrev Number: 7 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x104): rsv_excl	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 49	
-    <15e>   DW_AT_type        : <0x108>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><165>: Abbrev Number: 0
- <1><166>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <167>   DW_AT_name        : (indirect string, offset: 0x245): btrfs_qgroup_inherit	
-    <16b>   DW_AT_byte_size   : 72	
-    <16c>   DW_AT_decl_file   : 3	
-    <16d>   DW_AT_decl_line   : 52	
-    <16e>   DW_AT_sibling     : <0x1c7>	
- <2><172>: Abbrev Number: 7 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x18a): flags	
-    <177>   DW_AT_decl_file   : 3	
-    <178>   DW_AT_decl_line   : 53	
-    <179>   DW_AT_type        : <0x108>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><180>: Abbrev Number: 7 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x291): num_qgroups	
-    <185>   DW_AT_decl_file   : 3	
-    <186>   DW_AT_decl_line   : 54	
-    <187>   DW_AT_type        : <0x108>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><18e>: Abbrev Number: 7 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0x11e): num_ref_copies	
-    <193>   DW_AT_decl_file   : 3	
-    <194>   DW_AT_decl_line   : 55	
-    <195>   DW_AT_type        : <0x108>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 7 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0xe): num_excl_copies	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 56	
-    <1a3>   DW_AT_type        : <0x108>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1aa>: Abbrev Number: 8 (DW_TAG_member)
-    <1ab>   DW_AT_name        : lim	
-    <1af>   DW_AT_decl_file   : 3	
-    <1b0>   DW_AT_decl_line   : 57	
-    <1b1>   DW_AT_type        : <0x113>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1b8>: Abbrev Number: 7 (DW_TAG_member)
-    <1b9>   DW_AT_name        : (indirect string, offset: 0x1ea): qgroups	
-    <1bd>   DW_AT_decl_file   : 3	
-    <1be>   DW_AT_decl_line   : 58	
-    <1bf>   DW_AT_type        : <0x1c7>	
-    <1c3>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1c6>: Abbrev Number: 0
- <1><1c7>: Abbrev Number: 12 (DW_TAG_array_type)
-    <1c8>   DW_AT_type        : <0x108>	
-    <1cc>   DW_AT_sibling     : <0x1d6>	
- <2><1d0>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <1d1>   DW_AT_type        : <0x63>	
- <2><1d5>: Abbrev Number: 0
- <1><1d6>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <1d7>   DW_AT_byte_size   : 16	
-    <1d8>   DW_AT_decl_file   : 3	
-    <1d9>   DW_AT_decl_line   : 72	
-    <1da>   DW_AT_sibling     : <0x1fb>	
- <2><1de>: Abbrev Number: 7 (DW_TAG_member)
-    <1df>   DW_AT_name        : (indirect string, offset: 0x33a): size	
-    <1e3>   DW_AT_decl_file   : 3	
-    <1e4>   DW_AT_decl_line   : 73	
-    <1e5>   DW_AT_type        : <0x108>	
-    <1e9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1ec>: Abbrev Number: 7 (DW_TAG_member)
-    <1ed>   DW_AT_name        : (indirect string, offset: 0x16e): qgroup_inherit	
-    <1f1>   DW_AT_decl_file   : 3	
-    <1f2>   DW_AT_decl_line   : 74	
-    <1f3>   DW_AT_type        : <0x1fb>	
-    <1f7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1fa>: Abbrev Number: 0
- <1><1fb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <1fc>   DW_AT_byte_size   : 4	
-    <1fd>   DW_AT_type        : <0x166>	
- <1><201>: Abbrev Number: 15 (DW_TAG_union_type)
-    <202>   DW_AT_byte_size   : 32	
-    <203>   DW_AT_decl_file   : 3	
-    <204>   DW_AT_decl_line   : 71	
-    <205>   DW_AT_sibling     : <0x21a>	
- <2><209>: Abbrev Number: 16 (DW_TAG_member)
-    <20a>   DW_AT_type        : <0x1d6>	
- <2><20e>: Abbrev Number: 17 (DW_TAG_member)
-    <20f>   DW_AT_name        : (indirect string, offset: 0x1fc): unused	
-    <213>   DW_AT_decl_file   : 3	
-    <214>   DW_AT_decl_line   : 76	
-    <215>   DW_AT_type        : <0x21a>	
- <2><219>: Abbrev Number: 0
- <1><21a>: Abbrev Number: 12 (DW_TAG_array_type)
-    <21b>   DW_AT_type        : <0x108>	
-    <21f>   DW_AT_sibling     : <0x22a>	
- <2><223>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <224>   DW_AT_type        : <0x63>	
-    <228>   DW_AT_upper_bound : 3	
- <2><229>: Abbrev Number: 0
- <1><22a>: Abbrev Number: 19 (DW_TAG_structure_type)
-    <22b>   DW_AT_name        : (indirect string, offset: 0x2ee): btrfs_ioctl_vol_args_v2	
-    <22f>   DW_AT_byte_size   : 4096	
-    <231>   DW_AT_decl_file   : 3	
-    <232>   DW_AT_decl_line   : 67	
-    <233>   DW_AT_sibling     : <0x277>	
- <2><237>: Abbrev Number: 8 (DW_TAG_member)
-    <238>   DW_AT_name        : fd	
-    <23b>   DW_AT_decl_file   : 3	
-    <23c>   DW_AT_decl_line   : 68	
-    <23d>   DW_AT_type        : <0xfd>	
-    <241>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><244>: Abbrev Number: 7 (DW_TAG_member)
-    <245>   DW_AT_name        : (indirect string, offset: 0x12d): transid	
-    <249>   DW_AT_decl_file   : 3	
-    <24a>   DW_AT_decl_line   : 69	
-    <24b>   DW_AT_type        : <0x108>	
-    <24f>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><252>: Abbrev Number: 7 (DW_TAG_member)
-    <253>   DW_AT_name        : (indirect string, offset: 0x18a): flags	
-    <257>   DW_AT_decl_file   : 3	
-    <258>   DW_AT_decl_line   : 70	
-    <259>   DW_AT_type        : <0x108>	
-    <25d>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><260>: Abbrev Number: 20 (DW_TAG_member)
-    <261>   DW_AT_type        : <0x201>	
-    <265>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><268>: Abbrev Number: 7 (DW_TAG_member)
-    <269>   DW_AT_name        : (indirect string, offset: 0x25a): name	
-    <26d>   DW_AT_decl_file   : 3	
-    <26e>   DW_AT_decl_line   : 78	
-    <26f>   DW_AT_type        : <0x277>	
-    <273>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><276>: Abbrev Number: 0
- <1><277>: Abbrev Number: 12 (DW_TAG_array_type)
-    <278>   DW_AT_type        : <0x6a>	
-    <27c>   DW_AT_sibling     : <0x288>	
- <2><280>: Abbrev Number: 21 (DW_TAG_subrange_type)
-    <281>   DW_AT_type        : <0x63>	
-    <285>   DW_AT_upper_bound : 4039	
- <2><287>: Abbrev Number: 0
- <1><288>: Abbrev Number: 22 (DW_TAG_enumeration_type)
-    <289>   DW_AT_name        : (indirect string, offset: 0x1a3): btrfs_dev_stat_values	
-    <28d>   DW_AT_byte_size   : 4	
-    <28e>   DW_AT_decl_file   : 3	
-    <28f>   DW_AT_decl_line   : 369	
-    <291>   DW_AT_sibling     : <0x2ba>	
- <2><295>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <296>   DW_AT_name        : (indirect string, offset: 0x51): BTRFS_DEV_STAT_WRITE_ERRS	
-    <29a>   DW_AT_const_value : 0	
- <2><29b>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <29c>   DW_AT_name        : (indirect string, offset: 0x22c): BTRFS_DEV_STAT_READ_ERRS	
-    <2a0>   DW_AT_const_value : 1	
- <2><2a1>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2a2>   DW_AT_name        : (indirect string, offset: 0x212): BTRFS_DEV_STAT_FLUSH_ERRS	
-    <2a6>   DW_AT_const_value : 2	
- <2><2a7>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2a8>   DW_AT_name        : (indirect string, offset: 0x146): BTRFS_DEV_STAT_CORRUPTION_ERRS	
-    <2ac>   DW_AT_const_value : 3	
- <2><2ad>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2ae>   DW_AT_name        : (indirect string, offset: 0x25f): BTRFS_DEV_STAT_GENERATION_ERRS	
-    <2b2>   DW_AT_const_value : 4	
- <2><2b3>: Abbrev Number: 23 (DW_TAG_enumerator)
-    <2b4>   DW_AT_name        : (indirect string, offset: 0x1e): BTRFS_DEV_STAT_VALUES_MAX	
-    <2b8>   DW_AT_const_value : 5	
- <2><2b9>: Abbrev Number: 0
- <1><2ba>: Abbrev Number: 11 (DW_TAG_typedef)
-    <2bb>   DW_AT_name        : (indirect string, offset: 0x30f): struct_btrfs_ioctl_vol_args_v2	
-    <2bf>   DW_AT_decl_file   : 4	
-    <2c0>   DW_AT_decl_line   : 42	
-    <2c1>   DW_AT_type        : <0x22a>	
- <1><2c5>: Abbrev Number: 24 (DW_TAG_variable)
-    <2c6>   DW_AT_name        : (indirect string, offset: 0x10d): current_wordsize	
-    <2ca>   DW_AT_decl_file   : 5	
-    <2cb>   DW_AT_decl_line   : 757	
-    <2cd>   DW_AT_type        : <0x47>	
-    <2d1>   DW_AT_external    : 1	
-    <2d2>   DW_AT_declaration : 1	
- <1><2d3>: Abbrev Number: 24 (DW_TAG_variable)
-    <2d4>   DW_AT_name        : (indirect string, offset: 0xfd): sysent	
-    <2d8>   DW_AT_decl_file   : 5	
-    <2d9>   DW_AT_decl_line   : 892	
-    <2db>   DW_AT_type        : <0xeb>	
-    <2df>   DW_AT_external    : 1	
-    <2e0>   DW_AT_declaration : 1	
- <1><2e1>: Abbrev Number: 24 (DW_TAG_variable)
-    <2e2>   DW_AT_name        : (indirect string, offset: 0x1f2): nsyscalls	
-    <2e6>   DW_AT_decl_file   : 5	
-    <2e7>   DW_AT_decl_line   : 903	
-    <2e9>   DW_AT_type        : <0x47>	
-    <2ed>   DW_AT_external    : 1	
-    <2ee>   DW_AT_declaration : 1	
- <1><2ef>: Abbrev Number: 25 (DW_TAG_variable)
-    <2f0>   DW_AT_name        : (indirect string, offset: 0x135): mpers_target_var	
-    <2f4>   DW_AT_decl_file   : 4	
-    <2f5>   DW_AT_decl_line   : 46	
-    <2f6>   DW_AT_type        : <0x2ba>	
-    <2fa>   DW_AT_external    : 1	
-    <2fb>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><301>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.d2 b/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.d2
deleted file mode 100644
index 1144ada..0000000
--- a/mpers-mx32/struct_btrfs_ioctl_vol_args_v2.d2
+++ /dev/null
@@ -1,410 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x32e): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x287): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa8): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x17d): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x91): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x306): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xeb): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x209): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x19e): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xfd): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29d): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x87): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x33f): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7e): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x190): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x4b): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x348): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x203): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><113>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x38): btrfs_qgroup_limit
-DW_AT_byte_size   : 40
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_sibling     : <0x166>
-<2><11f>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18a): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe2): max_rfer
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><13b>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x165): max_excl
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><149>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x27e): rsv_rfer
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><157>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x104): rsv_excl
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<1><166>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x245): btrfs_qgroup_inherit
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 52
-DW_AT_sibling     : <0x1c7>
-<2><172>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18a): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 53
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><180>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x291): num_qgroups
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><18e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11e): num_ref_copies
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe): num_excl_copies
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : lim
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1b8>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ea): qgroups
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x1c7>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<1><1c7>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x1d6>
-<2><1d0>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-<1><1d6>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 72
-DW_AT_sibling     : <0x1fb>
-<2><1de>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x33a): size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 73
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1ec>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16e): qgroup_inherit
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 74
-DW_AT_type        : <0x1fb>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><1fb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x166>
-<1><201>
-Abbrev Number: 15 (DW_TAG_union_type)
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 71
-DW_AT_sibling     : <0x21a>
-<2><209>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_type        : <0x1d6>
-<2><20e>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fc): unused
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 76
-DW_AT_type        : <0x21a>
-<1><21a>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x22a>
-<2><223>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><22a>
-Abbrev Number: 19 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2ee): btrfs_ioctl_vol_args_v2
-DW_AT_byte_size   : 4096
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 67
-DW_AT_sibling     : <0x277>
-<2><237>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : fd
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 68
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><244>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12d): transid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 69
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><252>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18a): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 70
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><260>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_type        : <0x201>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><268>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25a): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 78
-DW_AT_type        : <0x277>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<1><277>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x288>
-<2><280>
-Abbrev Number: 21 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 4039
-<1><288>
-Abbrev Number: 22 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x1a3): btrfs_dev_stat_values
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 369
-DW_AT_sibling     : <0x2ba>
-<2><295>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x51): BTRFS_DEV_STAT_WRITE_ERRS
-DW_AT_const_value : 0
-<2><29b>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x22c): BTRFS_DEV_STAT_READ_ERRS
-DW_AT_const_value : 1
-<2><2a1>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x212): BTRFS_DEV_STAT_FLUSH_ERRS
-DW_AT_const_value : 2
-<2><2a7>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x146): BTRFS_DEV_STAT_CORRUPTION_ERRS
-DW_AT_const_value : 3
-<2><2ad>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x25f): BTRFS_DEV_STAT_GENERATION_ERRS
-DW_AT_const_value : 4
-<2><2b3>
-Abbrev Number: 23 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1e): BTRFS_DEV_STAT_VALUES_MAX
-DW_AT_const_value : 5
-<1><2ba>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x30f): struct_btrfs_ioctl_vol_args_v2
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x22a>
-<1><2c5>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x10d): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2d3>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xfd): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2e1>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1f2): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2ef>
-Abbrev Number: 25 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x135): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x2ba>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_ff_effect.d1 b/mpers-mx32/struct_ff_effect.d1
deleted file mode 100644
index 73a6ac6..0000000
--- a/mpers-mx32/struct_ff_effect.d1
+++ /dev/null
@@ -1,489 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x446 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x269): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xfa): mpers-mx32/struct_ff_effect.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x363): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1a7): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x33): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0xdb): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x193): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x20f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x339): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x1c4): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x11f): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x2b4): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x3d): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x238): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x31c): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x1a1): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x1f1): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0xb): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x7e): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x2de): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x25d): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x2c6): __s16	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 22	
-    <104>   DW_AT_type        : <0x24>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x263): __u16	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 23	
-    <10f>   DW_AT_type        : <0x40>	
- <1><113>: Abbrev Number: 11 (DW_TAG_typedef)
-    <114>   DW_AT_name        : (indirect string, offset: 0xb8): __u32	
-    <118>   DW_AT_decl_file   : 2	
-    <119>   DW_AT_decl_line   : 26	
-    <11a>   DW_AT_type        : <0x47>	
- <1><11e>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x32f): ff_replay	
-    <123>   DW_AT_byte_size   : 4	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 974	
-    <127>   DW_AT_sibling     : <0x14a>	
- <2><12b>: Abbrev Number: 13 (DW_TAG_member)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x181): length	
-    <130>   DW_AT_decl_file   : 3	
-    <131>   DW_AT_decl_line   : 975	
-    <133>   DW_AT_type        : <0x108>	
-    <137>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><13a>: Abbrev Number: 13 (DW_TAG_member)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x87): delay	
-    <13f>   DW_AT_decl_file   : 3	
-    <140>   DW_AT_decl_line   : 976	
-    <142>   DW_AT_type        : <0x108>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><149>: Abbrev Number: 0
- <1><14a>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x8d): ff_trigger	
-    <14f>   DW_AT_byte_size   : 4	
-    <150>   DW_AT_decl_file   : 3	
-    <151>   DW_AT_decl_line   : 984	
-    <153>   DW_AT_sibling     : <0x176>	
- <2><157>: Abbrev Number: 13 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x14c): button	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 985	
-    <15f>   DW_AT_type        : <0x108>	
-    <163>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><166>: Abbrev Number: 13 (DW_TAG_member)
-    <167>   DW_AT_name        : (indirect string, offset: 0x2d5): interval	
-    <16b>   DW_AT_decl_file   : 3	
-    <16c>   DW_AT_decl_line   : 986	
-    <16e>   DW_AT_type        : <0x108>	
-    <172>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><175>: Abbrev Number: 0
- <1><176>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <177>   DW_AT_name        : (indirect string, offset: 0x22c): ff_envelope	
-    <17b>   DW_AT_byte_size   : 8	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 1001	
-    <17f>   DW_AT_sibling     : <0x1c0>	
- <2><183>: Abbrev Number: 13 (DW_TAG_member)
-    <184>   DW_AT_name        : (indirect string, offset: 0xbe): attack_length	
-    <188>   DW_AT_decl_file   : 3	
-    <189>   DW_AT_decl_line   : 1002	
-    <18b>   DW_AT_type        : <0x108>	
-    <18f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><192>: Abbrev Number: 13 (DW_TAG_member)
-    <193>   DW_AT_name        : (indirect string, offset: 0x98): attack_level	
-    <197>   DW_AT_decl_file   : 3	
-    <198>   DW_AT_decl_line   : 1003	
-    <19a>   DW_AT_type        : <0x108>	
-    <19e>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><1a1>: Abbrev Number: 13 (DW_TAG_member)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0xac): fade_length	
-    <1a6>   DW_AT_decl_file   : 3	
-    <1a7>   DW_AT_decl_line   : 1004	
-    <1a9>   DW_AT_type        : <0x108>	
-    <1ad>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1b0>: Abbrev Number: 13 (DW_TAG_member)
-    <1b1>   DW_AT_name        : (indirect string, offset: 0x188): fade_level	
-    <1b5>   DW_AT_decl_file   : 3	
-    <1b6>   DW_AT_decl_line   : 1005	
-    <1b8>   DW_AT_type        : <0x108>	
-    <1bc>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><1bf>: Abbrev Number: 0
- <1><1c0>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <1c1>   DW_AT_name        : (indirect string, offset: 0x15a): ff_constant_effect	
-    <1c5>   DW_AT_byte_size   : 10	
-    <1c6>   DW_AT_decl_file   : 3	
-    <1c7>   DW_AT_decl_line   : 1013	
-    <1c9>   DW_AT_sibling     : <0x1ec>	
- <2><1cd>: Abbrev Number: 13 (DW_TAG_member)
-    <1ce>   DW_AT_name        : (indirect string, offset: 0x2ec): level	
-    <1d2>   DW_AT_decl_file   : 3	
-    <1d3>   DW_AT_decl_line   : 1014	
-    <1d5>   DW_AT_type        : <0xfd>	
-    <1d9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1dc>: Abbrev Number: 13 (DW_TAG_member)
-    <1dd>   DW_AT_name        : (indirect string, offset: 0x313): envelope	
-    <1e1>   DW_AT_decl_file   : 3	
-    <1e2>   DW_AT_decl_line   : 1015	
-    <1e4>   DW_AT_type        : <0x176>	
-    <1e8>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><1eb>: Abbrev Number: 0
- <1><1ec>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <1ed>   DW_AT_name        : (indirect string, offset: 0xcc): ff_ramp_effect	
-    <1f1>   DW_AT_byte_size   : 12	
-    <1f2>   DW_AT_decl_file   : 3	
-    <1f3>   DW_AT_decl_line   : 1024	
-    <1f5>   DW_AT_sibling     : <0x227>	
- <2><1f9>: Abbrev Number: 13 (DW_TAG_member)
-    <1fa>   DW_AT_name        : (indirect string, offset: 0x128): start_level	
-    <1fe>   DW_AT_decl_file   : 3	
-    <1ff>   DW_AT_decl_line   : 1025	
-    <201>   DW_AT_type        : <0xfd>	
-    <205>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><208>: Abbrev Number: 13 (DW_TAG_member)
-    <209>   DW_AT_name        : (indirect string, offset: 0x177): end_level	
-    <20d>   DW_AT_decl_file   : 3	
-    <20e>   DW_AT_decl_line   : 1026	
-    <210>   DW_AT_type        : <0xfd>	
-    <214>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><217>: Abbrev Number: 13 (DW_TAG_member)
-    <218>   DW_AT_name        : (indirect string, offset: 0x313): envelope	
-    <21c>   DW_AT_decl_file   : 3	
-    <21d>   DW_AT_decl_line   : 1027	
-    <21f>   DW_AT_type        : <0x176>	
-    <223>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><226>: Abbrev Number: 0
- <1><227>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <228>   DW_AT_name        : (indirect string, offset: 0x4f): ff_condition_effect	
-    <22c>   DW_AT_byte_size   : 12	
-    <22d>   DW_AT_decl_file   : 3	
-    <22e>   DW_AT_decl_line   : 1040	
-    <230>   DW_AT_sibling     : <0x28f>	
- <2><234>: Abbrev Number: 13 (DW_TAG_member)
-    <235>   DW_AT_name        : (indirect string, offset: 0x2f2): right_saturation	
-    <239>   DW_AT_decl_file   : 3	
-    <23a>   DW_AT_decl_line   : 1041	
-    <23c>   DW_AT_type        : <0x108>	
-    <240>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><243>: Abbrev Number: 13 (DW_TAG_member)
-    <244>   DW_AT_name        : (indirect string, offset: 0x303): left_saturation	
-    <248>   DW_AT_decl_file   : 3	
-    <249>   DW_AT_decl_line   : 1042	
-    <24b>   DW_AT_type        : <0x108>	
-    <24f>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><252>: Abbrev Number: 13 (DW_TAG_member)
-    <253>   DW_AT_name        : (indirect string, offset: 0x346): right_coeff	
-    <257>   DW_AT_decl_file   : 3	
-    <258>   DW_AT_decl_line   : 1044	
-    <25a>   DW_AT_type        : <0xfd>	
-    <25e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><261>: Abbrev Number: 13 (DW_TAG_member)
-    <262>   DW_AT_name        : (indirect string, offset: 0x0): left_coeff	
-    <266>   DW_AT_decl_file   : 3	
-    <267>   DW_AT_decl_line   : 1045	
-    <269>   DW_AT_type        : <0xfd>	
-    <26d>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><270>: Abbrev Number: 13 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x394): deadband	
-    <275>   DW_AT_decl_file   : 3	
-    <276>   DW_AT_decl_line   : 1047	
-    <278>   DW_AT_type        : <0x108>	
-    <27c>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><27f>: Abbrev Number: 13 (DW_TAG_member)
-    <280>   DW_AT_name        : (indirect string, offset: 0x19): center	
-    <284>   DW_AT_decl_file   : 3	
-    <285>   DW_AT_decl_line   : 1048	
-    <287>   DW_AT_type        : <0xfd>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><28e>: Abbrev Number: 0
- <1><28f>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <290>   DW_AT_name        : (indirect string, offset: 0x20): ff_periodic_effect	
-    <294>   DW_AT_byte_size   : 28	
-    <295>   DW_AT_decl_file   : 3	
-    <296>   DW_AT_decl_line   : 1069	
-    <298>   DW_AT_sibling     : <0x315>	
- <2><29c>: Abbrev Number: 13 (DW_TAG_member)
-    <29d>   DW_AT_name        : (indirect string, offset: 0x2cc): waveform	
-    <2a1>   DW_AT_decl_file   : 3	
-    <2a2>   DW_AT_decl_line   : 1070	
-    <2a4>   DW_AT_type        : <0x108>	
-    <2a8>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2ab>: Abbrev Number: 13 (DW_TAG_member)
-    <2ac>   DW_AT_name        : (indirect string, offset: 0x153): period	
-    <2b0>   DW_AT_decl_file   : 3	
-    <2b1>   DW_AT_decl_line   : 1071	
-    <2b3>   DW_AT_type        : <0x108>	
-    <2b7>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><2ba>: Abbrev Number: 13 (DW_TAG_member)
-    <2bb>   DW_AT_name        : (indirect string, offset: 0x16d): magnitude	
-    <2bf>   DW_AT_decl_file   : 3	
-    <2c0>   DW_AT_decl_line   : 1072	
-    <2c2>   DW_AT_type        : <0xfd>	
-    <2c6>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2c9>: Abbrev Number: 13 (DW_TAG_member)
-    <2ca>   DW_AT_name        : (indirect string, offset: 0x145): offset	
-    <2ce>   DW_AT_decl_file   : 3	
-    <2cf>   DW_AT_decl_line   : 1073	
-    <2d1>   DW_AT_type        : <0xfd>	
-    <2d5>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><2d8>: Abbrev Number: 13 (DW_TAG_member)
-    <2d9>   DW_AT_name        : (indirect string, offset: 0x6e): phase	
-    <2dd>   DW_AT_decl_file   : 3	
-    <2de>   DW_AT_decl_line   : 1074	
-    <2e0>   DW_AT_type        : <0x108>	
-    <2e4>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><2e7>: Abbrev Number: 13 (DW_TAG_member)
-    <2e8>   DW_AT_name        : (indirect string, offset: 0x313): envelope	
-    <2ec>   DW_AT_decl_file   : 3	
-    <2ed>   DW_AT_decl_line   : 1076	
-    <2ef>   DW_AT_type        : <0x176>	
-    <2f3>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><2f6>: Abbrev Number: 13 (DW_TAG_member)
-    <2f7>   DW_AT_name        : (indirect string, offset: 0x63): custom_len	
-    <2fb>   DW_AT_decl_file   : 3	
-    <2fc>   DW_AT_decl_line   : 1078	
-    <2fe>   DW_AT_type        : <0x113>	
-    <302>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><305>: Abbrev Number: 13 (DW_TAG_member)
-    <306>   DW_AT_name        : (indirect string, offset: 0x323): custom_data	
-    <30a>   DW_AT_decl_file   : 3	
-    <30b>   DW_AT_decl_line   : 1079	
-    <30d>   DW_AT_type        : <0x315>	
-    <311>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><314>: Abbrev Number: 0
- <1><315>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <316>   DW_AT_byte_size   : 4	
-    <317>   DW_AT_type        : <0xfd>	
- <1><31b>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <31c>   DW_AT_name        : (indirect string, offset: 0x1e0): ff_rumble_effect	
-    <320>   DW_AT_byte_size   : 4	
-    <321>   DW_AT_decl_file   : 3	
-    <322>   DW_AT_decl_line   : 1090	
-    <324>   DW_AT_sibling     : <0x347>	
- <2><328>: Abbrev Number: 13 (DW_TAG_member)
-    <329>   DW_AT_name        : (indirect string, offset: 0xe9): strong_magnitude	
-    <32d>   DW_AT_decl_file   : 3	
-    <32e>   DW_AT_decl_line   : 1091	
-    <330>   DW_AT_type        : <0x108>	
-    <334>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><337>: Abbrev Number: 13 (DW_TAG_member)
-    <338>   DW_AT_name        : (indirect string, offset: 0x246): weak_magnitude	
-    <33c>   DW_AT_decl_file   : 3	
-    <33d>   DW_AT_decl_line   : 1092	
-    <33f>   DW_AT_type        : <0x108>	
-    <343>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><346>: Abbrev Number: 0
- <1><347>: Abbrev Number: 14 (DW_TAG_union_type)
-    <348>   DW_AT_byte_size   : 28	
-    <349>   DW_AT_decl_file   : 3	
-    <34a>   DW_AT_decl_line   : 1125	
-    <34c>   DW_AT_sibling     : <0x38d>	
- <2><350>: Abbrev Number: 15 (DW_TAG_member)
-    <351>   DW_AT_name        : (indirect string, offset: 0x23d): constant	
-    <355>   DW_AT_decl_file   : 3	
-    <356>   DW_AT_decl_line   : 1126	
-    <358>   DW_AT_type        : <0x1c0>	
- <2><35c>: Abbrev Number: 15 (DW_TAG_member)
-    <35d>   DW_AT_name        : (indirect string, offset: 0x14): ramp	
-    <361>   DW_AT_decl_file   : 3	
-    <362>   DW_AT_decl_line   : 1127	
-    <364>   DW_AT_type        : <0x1ec>	
- <2><368>: Abbrev Number: 15 (DW_TAG_member)
-    <369>   DW_AT_name        : (indirect string, offset: 0x46): periodic	
-    <36d>   DW_AT_decl_file   : 3	
-    <36e>   DW_AT_decl_line   : 1128	
-    <370>   DW_AT_type        : <0x28f>	
- <2><374>: Abbrev Number: 15 (DW_TAG_member)
-    <375>   DW_AT_name        : (indirect string, offset: 0x222): condition	
-    <379>   DW_AT_decl_file   : 3	
-    <37a>   DW_AT_decl_line   : 1129	
-    <37c>   DW_AT_type        : <0x38d>	
- <2><380>: Abbrev Number: 15 (DW_TAG_member)
-    <381>   DW_AT_name        : (indirect string, offset: 0xa5): rumble	
-    <385>   DW_AT_decl_file   : 3	
-    <386>   DW_AT_decl_line   : 1130	
-    <388>   DW_AT_type        : <0x31b>	
- <2><38c>: Abbrev Number: 0
- <1><38d>: Abbrev Number: 16 (DW_TAG_array_type)
-    <38e>   DW_AT_type        : <0x227>	
-    <392>   DW_AT_sibling     : <0x39d>	
- <2><396>: Abbrev Number: 17 (DW_TAG_subrange_type)
-    <397>   DW_AT_type        : <0x63>	
-    <39b>   DW_AT_upper_bound : 1	
- <2><39c>: Abbrev Number: 0
- <1><39d>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <39e>   DW_AT_name        : (indirect string, offset: 0x1fb): ff_effect	
-    <3a2>   DW_AT_byte_size   : 44	
-    <3a3>   DW_AT_decl_file   : 3	
-    <3a4>   DW_AT_decl_line   : 1118	
-    <3a6>   DW_AT_sibling     : <0x402>	
- <2><3aa>: Abbrev Number: 13 (DW_TAG_member)
-    <3ab>   DW_AT_name        : (indirect string, offset: 0x1db): type	
-    <3af>   DW_AT_decl_file   : 3	
-    <3b0>   DW_AT_decl_line   : 1119	
-    <3b2>   DW_AT_type        : <0x108>	
-    <3b6>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><3b9>: Abbrev Number: 18 (DW_TAG_member)
-    <3ba>   DW_AT_name        : id	
-    <3bd>   DW_AT_decl_file   : 3	
-    <3be>   DW_AT_decl_line   : 1120	
-    <3c0>   DW_AT_type        : <0xfd>	
-    <3c4>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><3c7>: Abbrev Number: 13 (DW_TAG_member)
-    <3c8>   DW_AT_name        : (indirect string, offset: 0x74): direction	
-    <3cc>   DW_AT_decl_file   : 3	
-    <3cd>   DW_AT_decl_line   : 1121	
-    <3cf>   DW_AT_type        : <0x108>	
-    <3d3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3d6>: Abbrev Number: 13 (DW_TAG_member)
-    <3d7>   DW_AT_name        : (indirect string, offset: 0x255): trigger	
-    <3db>   DW_AT_decl_file   : 3	
-    <3dc>   DW_AT_decl_line   : 1122	
-    <3de>   DW_AT_type        : <0x14a>	
-    <3e2>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><3e5>: Abbrev Number: 13 (DW_TAG_member)
-    <3e6>   DW_AT_name        : (indirect string, offset: 0x118): replay	
-    <3ea>   DW_AT_decl_file   : 3	
-    <3eb>   DW_AT_decl_line   : 1123	
-    <3ed>   DW_AT_type        : <0x11e>	
-    <3f1>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><3f4>: Abbrev Number: 18 (DW_TAG_member)
-    <3f5>   DW_AT_name        : u	
-    <3f7>   DW_AT_decl_file   : 3	
-    <3f8>   DW_AT_decl_line   : 1131	
-    <3fa>   DW_AT_type        : <0x347>	
-    <3fe>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><401>: Abbrev Number: 0
- <1><402>: Abbrev Number: 11 (DW_TAG_typedef)
-    <403>   DW_AT_name        : (indirect string, offset: 0x352): struct_ff_effect	
-    <407>   DW_AT_decl_file   : 4	
-    <408>   DW_AT_decl_line   : 37	
-    <409>   DW_AT_type        : <0x39d>	
- <1><40d>: Abbrev Number: 19 (DW_TAG_variable)
-    <40e>   DW_AT_name        : (indirect string, offset: 0x1b3): current_wordsize	
-    <412>   DW_AT_decl_file   : 5	
-    <413>   DW_AT_decl_line   : 757	
-    <415>   DW_AT_type        : <0x47>	
-    <419>   DW_AT_external    : 1	
-    <41a>   DW_AT_declaration : 1	
- <1><41b>: Abbrev Number: 19 (DW_TAG_variable)
-    <41c>   DW_AT_name        : (indirect string, offset: 0x31c): sysent	
-    <420>   DW_AT_decl_file   : 5	
-    <421>   DW_AT_decl_line   : 892	
-    <423>   DW_AT_type        : <0xeb>	
-    <427>   DW_AT_external    : 1	
-    <428>   DW_AT_declaration : 1	
- <1><429>: Abbrev Number: 19 (DW_TAG_variable)
-    <42a>   DW_AT_name        : (indirect string, offset: 0x205): nsyscalls	
-    <42e>   DW_AT_decl_file   : 5	
-    <42f>   DW_AT_decl_line   : 903	
-    <431>   DW_AT_type        : <0x47>	
-    <435>   DW_AT_external    : 1	
-    <436>   DW_AT_declaration : 1	
- <1><437>: Abbrev Number: 20 (DW_TAG_variable)
-    <438>   DW_AT_name        : (indirect string, offset: 0x134): mpers_target_var	
-    <43c>   DW_AT_decl_file   : 4	
-    <43d>   DW_AT_decl_line   : 41	
-    <43e>   DW_AT_type        : <0x402>	
-    <442>   DW_AT_external    : 1	
-    <443>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><449>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_ff_effect.d2 b/mpers-mx32/struct_ff_effect.d2
deleted file mode 100644
index 2f7d8a4..0000000
--- a/mpers-mx32/struct_ff_effect.d2
+++ /dev/null
@@ -1,549 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a7): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x33): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xdb): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x193): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x20f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x339): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c4): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x11f): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2b4): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x3d): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x238): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x31c): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a1): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f1): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7e): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2de): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x25d): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2c6): __s16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 22
-DW_AT_type        : <0x24>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x263): __u16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><113>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xb8): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><11e>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x32f): ff_replay
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 974
-DW_AT_sibling     : <0x14a>
-<2><12b>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x181): length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 975
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><13a>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x87): delay
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 976
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><14a>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x8d): ff_trigger
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 984
-DW_AT_sibling     : <0x176>
-<2><157>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14c): button
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 985
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><166>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d5): interval
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 986
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><176>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x22c): ff_envelope
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1001
-DW_AT_sibling     : <0x1c0>
-<2><183>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbe): attack_length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1002
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><192>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x98): attack_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1003
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><1a1>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xac): fade_length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1004
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1b0>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x188): fade_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1005
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<1><1c0>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x15a): ff_constant_effect
-DW_AT_byte_size   : 10
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1013
-DW_AT_sibling     : <0x1ec>
-<2><1cd>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ec): level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1014
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1dc>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x313): envelope
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1015
-DW_AT_type        : <0x176>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><1ec>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xcc): ff_ramp_effect
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1024
-DW_AT_sibling     : <0x227>
-<2><1f9>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x128): start_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1025
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><208>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x177): end_level
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1026
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><217>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x313): envelope
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1027
-DW_AT_type        : <0x176>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><227>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x4f): ff_condition_effect
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1040
-DW_AT_sibling     : <0x28f>
-<2><234>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2f2): right_saturation
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1041
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><243>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x303): left_saturation
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1042
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><252>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x346): right_coeff
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1044
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><261>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): left_coeff
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1045
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><270>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x394): deadband
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1047
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><27f>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19): center
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1048
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<1><28f>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x20): ff_periodic_effect
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1069
-DW_AT_sibling     : <0x315>
-<2><29c>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2cc): waveform
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1070
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2ab>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x153): period
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1071
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><2ba>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16d): magnitude
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1072
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><2c9>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x145): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1073
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><2d8>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6e): phase
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1074
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><2e7>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x313): envelope
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1076
-DW_AT_type        : <0x176>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><2f6>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x63): custom_len
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1078
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><305>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x323): custom_data
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1079
-DW_AT_type        : <0x315>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><315>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfd>
-<1><31b>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1e0): ff_rumble_effect
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1090
-DW_AT_sibling     : <0x347>
-<2><328>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe9): strong_magnitude
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1091
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><337>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x246): weak_magnitude
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1092
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><347>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1125
-DW_AT_sibling     : <0x38d>
-<2><350>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23d): constant
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1126
-DW_AT_type        : <0x1c0>
-<2><35c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14): ramp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1127
-DW_AT_type        : <0x1ec>
-<2><368>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x46): periodic
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1128
-DW_AT_type        : <0x28f>
-<2><374>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x222): condition
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1129
-DW_AT_type        : <0x38d>
-<2><380>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa5): rumble
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1130
-DW_AT_type        : <0x31b>
-<1><38d>
-Abbrev Number: 16 (DW_TAG_array_type)
-DW_AT_type        : <0x227>
-DW_AT_sibling     : <0x39d>
-<2><396>
-Abbrev Number: 17 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><39d>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1fb): ff_effect
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1118
-DW_AT_sibling     : <0x402>
-<2><3aa>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1db): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1119
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><3b9>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1120
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><3c7>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x74): direction
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1121
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3d6>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x255): trigger
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1122
-DW_AT_type        : <0x14a>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<2><3e5>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x118): replay
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1123
-DW_AT_type        : <0x11e>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><3f4>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : u
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1131
-DW_AT_type        : <0x347>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><402>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x352): struct_ff_effect
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x39d>
-<1><40d>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b3): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><41b>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x31c): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><429>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x205): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><437>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x134): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x402>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_flock.c b/mpers-mx32/struct_flock.c
index 4859b6e..5aa82c9 100644
--- a/mpers-mx32/struct_flock.c
+++ b/mpers-mx32/struct_flock.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/mpers-mx32/struct_flock.d1 b/mpers-mx32/struct_flock.d1
deleted file mode 100644
index f265939..0000000
--- a/mpers-mx32/struct_flock.d1
+++ /dev/null
@@ -1,217 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1c0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x3a): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x148): mpers-mx32/struct_flock.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x162): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ef): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1c6): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1a6): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd8): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x85): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x12d): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xc1): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1d0): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xe6): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x19d): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x1b4): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x98): __kernel_long_t	
-    <81>   DW_AT_decl_file   : 1	
-    <82>   DW_AT_decl_line   : 13	
-    <83>   DW_AT_type        : <0x32>	
- <1><87>: Abbrev Number: 6 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x17): __kernel_pid_t	
-    <8c>   DW_AT_decl_file   : 2	
-    <8d>   DW_AT_decl_line   : 27	
-    <8e>   DW_AT_type        : <0x2b>	
- <1><92>: Abbrev Number: 6 (DW_TAG_typedef)
-    <93>   DW_AT_name        : (indirect string, offset: 0x1e0): __kernel_off_t	
-    <97>   DW_AT_decl_file   : 2	
-    <98>   DW_AT_decl_line   : 86	
-    <99>   DW_AT_type        : <0x7c>	
- <1><9d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <9e>   DW_AT_name        : (indirect string, offset: 0xf8): sysent	
-    <a2>   DW_AT_byte_size   : 20	
-    <a3>   DW_AT_decl_file   : 3	
-    <a4>   DW_AT_decl_line   : 4	
-    <a5>   DW_AT_sibling     : <0xf0>	
- <2><a9>: Abbrev Number: 8 (DW_TAG_member)
-    <aa>   DW_AT_name        : (indirect string, offset: 0x116): nargs	
-    <ae>   DW_AT_decl_file   : 3	
-    <af>   DW_AT_decl_line   : 5	
-    <b0>   DW_AT_type        : <0x47>	
-    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b7>: Abbrev Number: 8 (DW_TAG_member)
-    <b8>   DW_AT_name        : (indirect string, offset: 0xb7): sys_flags	
-    <bc>   DW_AT_decl_file   : 3	
-    <bd>   DW_AT_decl_line   : 6	
-    <be>   DW_AT_type        : <0x2b>	
-    <c2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c5>: Abbrev Number: 9 (DW_TAG_member)
-    <c6>   DW_AT_name        : sen	
-    <ca>   DW_AT_decl_file   : 3	
-    <cb>   DW_AT_decl_line   : 7	
-    <cc>   DW_AT_type        : <0x2b>	
-    <d0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d3>: Abbrev Number: 8 (DW_TAG_member)
-    <d4>   DW_AT_name        : (indirect string, offset: 0x1fb): sys_func	
-    <d8>   DW_AT_decl_file   : 3	
-    <d9>   DW_AT_decl_line   : 8	
-    <da>   DW_AT_type        : <0xfb>	
-    <de>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e1>: Abbrev Number: 8 (DW_TAG_member)
-    <e2>   DW_AT_name        : (indirect string, offset: 0xa8): sys_name	
-    <e6>   DW_AT_decl_file   : 3	
-    <e7>   DW_AT_decl_line   : 9	
-    <e8>   DW_AT_type        : <0x71>	
-    <ec>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <f1>   DW_AT_type        : <0x2b>	
-    <f5>   DW_AT_sibling     : <0xfb>	
- <2><f9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><fa>: Abbrev Number: 0
- <1><fb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <fc>   DW_AT_byte_size   : 4	
-    <fd>   DW_AT_type        : <0xf0>	
- <1><101>: Abbrev Number: 6 (DW_TAG_typedef)
-    <102>   DW_AT_name        : (indirect string, offset: 0x13a): struct_sysent	
-    <106>   DW_AT_decl_file   : 3	
-    <107>   DW_AT_decl_line   : 10	
-    <108>   DW_AT_type        : <0x9d>	
- <1><10c>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x112>	
- <1><112>: Abbrev Number: 5 (DW_TAG_const_type)
-    <113>   DW_AT_type        : <0x101>	
- <1><117>: Abbrev Number: 2 (DW_TAG_base_type)
-    <118>   DW_AT_byte_size   : 1	
-    <119>   DW_AT_encoding    : 2	(boolean)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x11): _Bool	
- <1><11e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0xb1): flock	
-    <123>   DW_AT_byte_size   : 32	
-    <124>   DW_AT_decl_file   : 4	
-    <125>   DW_AT_decl_line   : 179	
-    <126>   DW_AT_sibling     : <0x171>	
- <2><12a>: Abbrev Number: 8 (DW_TAG_member)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x1d9): l_type	
-    <12f>   DW_AT_decl_file   : 4	
-    <130>   DW_AT_decl_line   : 180	
-    <131>   DW_AT_type        : <0x24>	
-    <135>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><138>: Abbrev Number: 8 (DW_TAG_member)
-    <139>   DW_AT_name        : (indirect string, offset: 0x0): l_whence	
-    <13d>   DW_AT_decl_file   : 4	
-    <13e>   DW_AT_decl_line   : 181	
-    <13f>   DW_AT_type        : <0x24>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><146>: Abbrev Number: 8 (DW_TAG_member)
-    <147>   DW_AT_name        : (indirect string, offset: 0x9): l_start	
-    <14b>   DW_AT_decl_file   : 4	
-    <14c>   DW_AT_decl_line   : 182	
-    <14d>   DW_AT_type        : <0x92>	
-    <151>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><154>: Abbrev Number: 8 (DW_TAG_member)
-    <155>   DW_AT_name        : (indirect string, offset: 0x204): l_len	
-    <159>   DW_AT_decl_file   : 4	
-    <15a>   DW_AT_decl_line   : 183	
-    <15b>   DW_AT_type        : <0x92>	
-    <15f>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><162>: Abbrev Number: 8 (DW_TAG_member)
-    <163>   DW_AT_name        : (indirect string, offset: 0xff): l_pid	
-    <167>   DW_AT_decl_file   : 4	
-    <168>   DW_AT_decl_line   : 184	
-    <169>   DW_AT_type        : <0x87>	
-    <16d>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><170>: Abbrev Number: 0
- <1><171>: Abbrev Number: 6 (DW_TAG_typedef)
-    <172>   DW_AT_name        : (indirect string, offset: 0x26): struct_kernel_flock	
-    <176>   DW_AT_decl_file   : 5	
-    <177>   DW_AT_decl_line   : 34	
-    <178>   DW_AT_type        : <0x11e>	
- <1><17c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <17d>   DW_AT_name        : (indirect string, offset: 0x1b9): struct_flock	
-    <181>   DW_AT_decl_file   : 6	
-    <182>   DW_AT_decl_line   : 32	
-    <183>   DW_AT_type        : <0x171>	
- <1><187>: Abbrev Number: 12 (DW_TAG_variable)
-    <188>   DW_AT_name        : (indirect string, offset: 0x105): current_wordsize	
-    <18c>   DW_AT_decl_file   : 7	
-    <18d>   DW_AT_decl_line   : 757	
-    <18f>   DW_AT_type        : <0x47>	
-    <193>   DW_AT_external    : 1	
-    <194>   DW_AT_declaration : 1	
- <1><195>: Abbrev Number: 12 (DW_TAG_variable)
-    <196>   DW_AT_name        : (indirect string, offset: 0xf8): sysent	
-    <19a>   DW_AT_decl_file   : 7	
-    <19b>   DW_AT_decl_line   : 892	
-    <19d>   DW_AT_type        : <0x10c>	
-    <1a1>   DW_AT_external    : 1	
-    <1a2>   DW_AT_declaration : 1	
- <1><1a3>: Abbrev Number: 12 (DW_TAG_variable)
-    <1a4>   DW_AT_name        : (indirect string, offset: 0x193): nsyscalls	
-    <1a8>   DW_AT_decl_file   : 7	
-    <1a9>   DW_AT_decl_line   : 903	
-    <1ab>   DW_AT_type        : <0x47>	
-    <1af>   DW_AT_external    : 1	
-    <1b0>   DW_AT_declaration : 1	
- <1><1b1>: Abbrev Number: 13 (DW_TAG_variable)
-    <1b2>   DW_AT_name        : (indirect string, offset: 0x11c): mpers_target_var	
-    <1b6>   DW_AT_decl_file   : 6	
-    <1b7>   DW_AT_decl_line   : 35	
-    <1b8>   DW_AT_type        : <0x17c>	
-    <1bc>   DW_AT_external    : 1	
-    <1bd>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1c3>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_flock.d2 b/mpers-mx32/struct_flock.d2
deleted file mode 100644
index b72ffaf..0000000
--- a/mpers-mx32/struct_flock.d2
+++ /dev/null
@@ -1,241 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ef): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c6): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a6): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd8): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x85): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12d): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc1): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d0): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe6): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x19d): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b4): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x98): __kernel_long_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 13
-DW_AT_type        : <0x32>
-<1><87>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17): __kernel_pid_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x2b>
-<1><92>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1e0): __kernel_off_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 86
-DW_AT_type        : <0x7c>
-<1><9d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf8): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf0>
-<2><a9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x116): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb7): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fb): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa8): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfb>
-<2><f9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><fb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf0>
-<1><101>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x13a): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x9d>
-<1><10c>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x112>
-<1><112>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x101>
-<1><117>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x11): _Bool
-<1><11e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xb1): flock
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 179
-DW_AT_sibling     : <0x171>
-<2><12a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d9): l_type
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 180
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><138>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): l_whence
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 181
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><146>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): l_start
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 182
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><154>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x204): l_len
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><162>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xff): l_pid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 184
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><171>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x26): struct_kernel_flock
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x11e>
-<1><17c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b9): struct_flock
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x171>
-<1><187>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x105): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><195>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf8): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10c>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a3>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x193): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1b1>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11c): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x17c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_flock64.c b/mpers-mx32/struct_flock64.c
index 75f6189..3535de1 100644
--- a/mpers-mx32/struct_flock64.c
+++ b/mpers-mx32/struct_flock64.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/mpers-mx32/struct_flock64.d1 b/mpers-mx32/struct_flock64.d1
deleted file mode 100644
index c535f7d..0000000
--- a/mpers-mx32/struct_flock64.d1
+++ /dev/null
@@ -1,212 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1b5 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x26): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1b2): mpers-mx32/struct_flock64.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x14a): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e8): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1ce): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x18e): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xcd): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x71): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x12a): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xb6): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1d8): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xdb): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x185): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x145): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x17): __kernel_pid_t	
-    <81>   DW_AT_decl_file   : 1	
-    <82>   DW_AT_decl_line   : 27	
-    <83>   DW_AT_type        : <0x2b>	
- <1><87>: Abbrev Number: 6 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x84): __kernel_loff_t	
-    <8c>   DW_AT_decl_file   : 1	
-    <8d>   DW_AT_decl_line   : 87	
-    <8e>   DW_AT_type        : <0x32>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0xed): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x113): nargs	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0xac): sys_flags	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 2	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x1f4): sys_func	
-    <cd>   DW_AT_decl_file   : 2	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0xa3): sys_name	
-    <db>   DW_AT_decl_file   : 2	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x71>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 6 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0x137): struct_sysent	
-    <fb>   DW_AT_decl_file   : 2	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 5 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x11): _Bool	
- <1><113>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0xfa): flock64	
-    <118>   DW_AT_byte_size   : 32	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 196	
-    <11b>   DW_AT_sibling     : <0x166>	
- <2><11f>: Abbrev Number: 8 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0x1e1): l_type	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 197	
-    <126>   DW_AT_type        : <0x24>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 8 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x0): l_whence	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 198	
-    <134>   DW_AT_type        : <0x24>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><13b>: Abbrev Number: 8 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x9): l_start	
-    <140>   DW_AT_decl_file   : 3	
-    <141>   DW_AT_decl_line   : 199	
-    <142>   DW_AT_type        : <0x87>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><149>: Abbrev Number: 8 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x1fd): l_len	
-    <14e>   DW_AT_decl_file   : 3	
-    <14f>   DW_AT_decl_line   : 200	
-    <150>   DW_AT_type        : <0x87>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><157>: Abbrev Number: 8 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0xf4): l_pid	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 201	
-    <15e>   DW_AT_type        : <0x7c>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><165>: Abbrev Number: 0
- <1><166>: Abbrev Number: 6 (DW_TAG_typedef)
-    <167>   DW_AT_name        : (indirect string, offset: 0x19c): struct_kernel_flock64	
-    <16b>   DW_AT_decl_file   : 4	
-    <16c>   DW_AT_decl_line   : 42	
-    <16d>   DW_AT_type        : <0x113>	
- <1><171>: Abbrev Number: 6 (DW_TAG_typedef)
-    <172>   DW_AT_name        : (indirect string, offset: 0x94): struct_flock64	
-    <176>   DW_AT_decl_file   : 5	
-    <177>   DW_AT_decl_line   : 33	
-    <178>   DW_AT_type        : <0x166>	
- <1><17c>: Abbrev Number: 12 (DW_TAG_variable)
-    <17d>   DW_AT_name        : (indirect string, offset: 0x102): current_wordsize	
-    <181>   DW_AT_decl_file   : 6	
-    <182>   DW_AT_decl_line   : 757	
-    <184>   DW_AT_type        : <0x47>	
-    <188>   DW_AT_external    : 1	
-    <189>   DW_AT_declaration : 1	
- <1><18a>: Abbrev Number: 12 (DW_TAG_variable)
-    <18b>   DW_AT_name        : (indirect string, offset: 0xed): sysent	
-    <18f>   DW_AT_decl_file   : 6	
-    <190>   DW_AT_decl_line   : 892	
-    <192>   DW_AT_type        : <0x101>	
-    <196>   DW_AT_external    : 1	
-    <197>   DW_AT_declaration : 1	
- <1><198>: Abbrev Number: 12 (DW_TAG_variable)
-    <199>   DW_AT_name        : (indirect string, offset: 0x17b): nsyscalls	
-    <19d>   DW_AT_decl_file   : 6	
-    <19e>   DW_AT_decl_line   : 903	
-    <1a0>   DW_AT_type        : <0x47>	
-    <1a4>   DW_AT_external    : 1	
-    <1a5>   DW_AT_declaration : 1	
- <1><1a6>: Abbrev Number: 13 (DW_TAG_variable)
-    <1a7>   DW_AT_name        : (indirect string, offset: 0x119): mpers_target_var	
-    <1ab>   DW_AT_decl_file   : 5	
-    <1ac>   DW_AT_decl_line   : 35	
-    <1ad>   DW_AT_type        : <0x171>	
-    <1b1>   DW_AT_external    : 1	
-    <1b2>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1b8>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_flock64.d2 b/mpers-mx32/struct_flock64.d2
deleted file mode 100644
index 9b1eb39..0000000
--- a/mpers-mx32/struct_flock64.d2
+++ /dev/null
@@ -1,235 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e8): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ce): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18e): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xcd): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x71): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12a): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb6): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d8): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xdb): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x185): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x145): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17): __kernel_pid_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x2b>
-<1><87>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x84): __kernel_loff_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 87
-DW_AT_type        : <0x32>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xed): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x113): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xac): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f4): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa3): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x137): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x11): _Bool
-<1><113>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xfa): flock64
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 196
-DW_AT_sibling     : <0x166>
-<2><11f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e1): l_type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 197
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): l_whence
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 198
-DW_AT_type        : <0x24>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><13b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): l_start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 199
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><149>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fd): l_len
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 200
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><157>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf4): l_pid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 201
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><166>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x19c): struct_kernel_flock64
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x113>
-<1><171>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x94): struct_flock64
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x166>
-<1><17c>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x102): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18a>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xed): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><198>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17b): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a6>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x119): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x171>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_hd_geometry.d1 b/mpers-mx32/struct_hd_geometry.d1
deleted file mode 100644
index 776ac66..0000000
--- a/mpers-mx32/struct_hd_geometry.d1
+++ /dev/null
@@ -1,191 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x18b (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x22): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1ae): mpers-mx32/struct_hd_geometry.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x134): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x199): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x186): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x178): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xaa): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x6d): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x114): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x93): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x190): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb8): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x16f): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x12f): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xca): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xe2): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x89): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1a5): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x80): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x121): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x16): _Bool	
- <1><fd>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x0): hd_geometry	
-    <102>   DW_AT_byte_size   : 8	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 313	
-    <106>   DW_AT_sibling     : <0x147>	
- <2><10a>: Abbrev Number: 13 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x1ce): heads	
-    <10f>   DW_AT_decl_file   : 2	
-    <110>   DW_AT_decl_line   : 314	
-    <112>   DW_AT_type        : <0x39>	
-    <116>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><119>: Abbrev Number: 13 (DW_TAG_member)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x10c): sectors	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 315	
-    <121>   DW_AT_type        : <0x39>	
-    <125>   DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
- <2><128>: Abbrev Number: 13 (DW_TAG_member)
-    <129>   DW_AT_name        : (indirect string, offset: 0xc): cylinders	
-    <12d>   DW_AT_decl_file   : 2	
-    <12e>   DW_AT_decl_line   : 316	
-    <130>   DW_AT_type        : <0x40>	
-    <134>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><137>: Abbrev Number: 13 (DW_TAG_member)
-    <138>   DW_AT_name        : (indirect string, offset: 0x1c): start	
-    <13c>   DW_AT_decl_file   : 2	
-    <13d>   DW_AT_decl_line   : 317	
-    <13f>   DW_AT_type        : <0x5c>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><146>: Abbrev Number: 0
- <1><147>: Abbrev Number: 11 (DW_TAG_typedef)
-    <148>   DW_AT_name        : (indirect string, offset: 0xe8): struct_hd_geometry	
-    <14c>   DW_AT_decl_file   : 3	
-    <14d>   DW_AT_decl_line   : 34	
-    <14e>   DW_AT_type        : <0xfd>	
- <1><152>: Abbrev Number: 14 (DW_TAG_variable)
-    <153>   DW_AT_name        : (indirect string, offset: 0xd1): current_wordsize	
-    <157>   DW_AT_decl_file   : 4	
-    <158>   DW_AT_decl_line   : 757	
-    <15a>   DW_AT_type        : <0x47>	
-    <15e>   DW_AT_external    : 1	
-    <15f>   DW_AT_declaration : 1	
- <1><160>: Abbrev Number: 14 (DW_TAG_variable)
-    <161>   DW_AT_name        : (indirect string, offset: 0xca): sysent	
-    <165>   DW_AT_decl_file   : 4	
-    <166>   DW_AT_decl_line   : 892	
-    <168>   DW_AT_type        : <0xeb>	
-    <16c>   DW_AT_external    : 1	
-    <16d>   DW_AT_declaration : 1	
- <1><16e>: Abbrev Number: 14 (DW_TAG_variable)
-    <16f>   DW_AT_name        : (indirect string, offset: 0x165): nsyscalls	
-    <173>   DW_AT_decl_file   : 4	
-    <174>   DW_AT_decl_line   : 903	
-    <176>   DW_AT_type        : <0x47>	
-    <17a>   DW_AT_external    : 1	
-    <17b>   DW_AT_declaration : 1	
- <1><17c>: Abbrev Number: 15 (DW_TAG_variable)
-    <17d>   DW_AT_name        : (indirect string, offset: 0xfb): mpers_target_var	
-    <181>   DW_AT_decl_file   : 3	
-    <182>   DW_AT_decl_line   : 36	
-    <183>   DW_AT_type        : <0x147>	
-    <187>   DW_AT_external    : 1	
-    <188>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><18e>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_hd_geometry.d2 b/mpers-mx32/struct_hd_geometry.d2
deleted file mode 100644
index 5a7dd91..0000000
--- a/mpers-mx32/struct_hd_geometry.d2
+++ /dev/null
@@ -1,210 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x199): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x186): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x178): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xaa): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6d): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x114): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x93): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x190): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb8): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x16f): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x12f): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xca): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe2): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x89): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a5): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x80): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x121): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x16): _Bool
-<1><fd>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): hd_geometry
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 313
-DW_AT_sibling     : <0x147>
-<2><10a>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ce): heads
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 314
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><119>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10c): sectors
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 315
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
-<2><128>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc): cylinders
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 316
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><137>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c): start
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 317
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><147>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xe8): struct_hd_geometry
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0xfd>
-<1><152>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd1): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><160>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xca): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><16e>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x165): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17c>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xfb): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x147>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-mx32/struct_ifconf.c b/mpers-mx32/struct_ifconf.c
index ef821f8..10d0006 100644
--- a/mpers-mx32/struct_ifconf.c
+++ b/mpers-mx32/struct_ifconf.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/struct_ifconf.d1 b/mpers-mx32/struct_ifconf.d1
deleted file mode 100644
index 258bb92..0000000
--- a/mpers-mx32/struct_ifconf.d1
+++ /dev/null
@@ -1,383 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x31f (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x26): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xbc): mpers-mx32/struct_ifconf.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1d3): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x296): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x24d): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x230): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x14c): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x71): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1a2): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xe1): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x27c): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x116): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x227): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0xb2): __caddr_t	
-    <6f>   DW_AT_decl_file   : 2	
-    <70>   DW_AT_decl_line   : 183	
-    <71>   DW_AT_type        : <0x75>	
- <1><75>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <76>   DW_AT_byte_size   : 4	
-    <77>   DW_AT_type        : <0x7b>	
- <1><7b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7c>   DW_AT_byte_size   : 1	
-    <7d>   DW_AT_encoding    : 6	(signed char)
-    <7e>   DW_AT_name        : (indirect string, offset: 0x1bd): char	
- <1><82>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <83>   DW_AT_byte_size   : 4	
-    <84>   DW_AT_type        : <0x88>	
- <1><88>: Abbrev Number: 6 (DW_TAG_const_type)
-    <89>   DW_AT_type        : <0x7b>	
- <1><8d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x128): sysent	
-    <92>   DW_AT_byte_size   : 20	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 4	
-    <95>   DW_AT_sibling     : <0xe0>	
- <2><99>: Abbrev Number: 8 (DW_TAG_member)
-    <9a>   DW_AT_name        : (indirect string, offset: 0x257): nargs	
-    <9e>   DW_AT_decl_file   : 1	
-    <9f>   DW_AT_decl_line   : 5	
-    <a0>   DW_AT_type        : <0x47>	
-    <a4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a7>: Abbrev Number: 8 (DW_TAG_member)
-    <a8>   DW_AT_name        : (indirect string, offset: 0xd7): sys_flags	
-    <ac>   DW_AT_decl_file   : 1	
-    <ad>   DW_AT_decl_line   : 6	
-    <ae>   DW_AT_type        : <0x2b>	
-    <b2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><b5>: Abbrev Number: 9 (DW_TAG_member)
-    <b6>   DW_AT_name        : sen	
-    <ba>   DW_AT_decl_file   : 1	
-    <bb>   DW_AT_decl_line   : 7	
-    <bc>   DW_AT_type        : <0x2b>	
-    <c0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c3>: Abbrev Number: 8 (DW_TAG_member)
-    <c4>   DW_AT_name        : (indirect string, offset: 0x2c5): sys_func	
-    <c8>   DW_AT_decl_file   : 1	
-    <c9>   DW_AT_decl_line   : 8	
-    <ca>   DW_AT_type        : <0xeb>	
-    <ce>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d1>: Abbrev Number: 8 (DW_TAG_member)
-    <d2>   DW_AT_name        : (indirect string, offset: 0x91): sys_name	
-    <d6>   DW_AT_decl_file   : 1	
-    <d7>   DW_AT_decl_line   : 9	
-    <d8>   DW_AT_type        : <0x82>	
-    <dc>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e1>   DW_AT_type        : <0x2b>	
-    <e5>   DW_AT_sibling     : <0xeb>	
- <2><e9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ea>: Abbrev Number: 0
- <1><eb>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xe0>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x1af): struct_sysent	
-    <f6>   DW_AT_decl_file   : 1	
-    <f7>   DW_AT_decl_line   : 10	
-    <f8>   DW_AT_type        : <0x8d>	
- <1><fc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <fd>   DW_AT_byte_size   : 4	
-    <fe>   DW_AT_type        : <0x102>	
- <1><102>: Abbrev Number: 6 (DW_TAG_const_type)
-    <103>   DW_AT_type        : <0xf1>	
- <1><107>: Abbrev Number: 2 (DW_TAG_base_type)
-    <108>   DW_AT_byte_size   : 1	
-    <109>   DW_AT_encoding    : 2	(boolean)
-    <10a>   DW_AT_name        : (indirect string, offset: 0x20): _Bool	
- <1><10e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x140): sa_family_t	
-    <113>   DW_AT_decl_file   : 3	
-    <114>   DW_AT_decl_line   : 28	
-    <115>   DW_AT_type        : <0x40>	
- <1><119>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x285): sockaddr	
-    <11e>   DW_AT_byte_size   : 16	
-    <11f>   DW_AT_decl_file   : 4	
-    <120>   DW_AT_decl_line   : 149	
-    <121>   DW_AT_sibling     : <0x142>	
- <2><125>: Abbrev Number: 8 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0x23e): sa_family	
-    <12a>   DW_AT_decl_file   : 4	
-    <12b>   DW_AT_decl_line   : 151	
-    <12c>   DW_AT_type        : <0x10e>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><133>: Abbrev Number: 8 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0x28e): sa_data	
-    <138>   DW_AT_decl_file   : 4	
-    <139>   DW_AT_decl_line   : 152	
-    <13a>   DW_AT_type        : <0x142>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><141>: Abbrev Number: 0
- <1><142>: Abbrev Number: 12 (DW_TAG_array_type)
-    <143>   DW_AT_type        : <0x7b>	
-    <147>   DW_AT_sibling     : <0x152>	
- <2><14b>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <14c>   DW_AT_type        : <0x63>	
-    <150>   DW_AT_upper_bound : 13	
- <2><151>: Abbrev Number: 0
- <1><152>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <153>   DW_AT_name        : (indirect string, offset: 0x0): ifmap	
-    <157>   DW_AT_byte_size   : 16	
-    <158>   DW_AT_decl_file   : 5	
-    <159>   DW_AT_decl_line   : 111	
-    <15a>   DW_AT_sibling     : <0x1b3>	
- <2><15e>: Abbrev Number: 8 (DW_TAG_member)
-    <15f>   DW_AT_name        : (indirect string, offset: 0x2a2): mem_start	
-    <163>   DW_AT_decl_file   : 5	
-    <164>   DW_AT_decl_line   : 113	
-    <165>   DW_AT_type        : <0x5c>	
-    <169>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><16c>: Abbrev Number: 8 (DW_TAG_member)
-    <16d>   DW_AT_name        : (indirect string, offset: 0xf): mem_end	
-    <171>   DW_AT_decl_file   : 5	
-    <172>   DW_AT_decl_line   : 114	
-    <173>   DW_AT_type        : <0x5c>	
-    <177>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><17a>: Abbrev Number: 8 (DW_TAG_member)
-    <17b>   DW_AT_name        : (indirect string, offset: 0x18f): base_addr	
-    <17f>   DW_AT_decl_file   : 5	
-    <180>   DW_AT_decl_line   : 115	
-    <181>   DW_AT_type        : <0x40>	
-    <185>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><188>: Abbrev Number: 9 (DW_TAG_member)
-    <189>   DW_AT_name        : irq	
-    <18d>   DW_AT_decl_file   : 5	
-    <18e>   DW_AT_decl_line   : 116	
-    <18f>   DW_AT_type        : <0x39>	
-    <193>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><196>: Abbrev Number: 9 (DW_TAG_member)
-    <197>   DW_AT_name        : dma	
-    <19b>   DW_AT_decl_file   : 5	
-    <19c>   DW_AT_decl_line   : 117	
-    <19d>   DW_AT_type        : <0x39>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
- <2><1a4>: Abbrev Number: 8 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x248): port	
-    <1a9>   DW_AT_decl_file   : 5	
-    <1aa>   DW_AT_decl_line   : 118	
-    <1ab>   DW_AT_type        : <0x39>	
-    <1af>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1b2>: Abbrev Number: 0
- <1><1b3>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1b4>   DW_AT_byte_size   : 16	
-    <1b5>   DW_AT_decl_file   : 5	
-    <1b6>   DW_AT_decl_line   : 130	
-    <1b7>   DW_AT_sibling     : <0x1c7>	
- <2><1bb>: Abbrev Number: 15 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x15a): ifrn_name	
-    <1c0>   DW_AT_decl_file   : 5	
-    <1c1>   DW_AT_decl_line   : 132	
-    <1c2>   DW_AT_type        : <0x1c7>	
- <2><1c6>: Abbrev Number: 0
- <1><1c7>: Abbrev Number: 12 (DW_TAG_array_type)
-    <1c8>   DW_AT_type        : <0x7b>	
-    <1cc>   DW_AT_sibling     : <0x1d7>	
- <2><1d0>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <1d1>   DW_AT_type        : <0x63>	
-    <1d5>   DW_AT_upper_bound : 15	
- <2><1d6>: Abbrev Number: 0
- <1><1d7>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1d8>   DW_AT_byte_size   : 16	
-    <1d9>   DW_AT_decl_file   : 5	
-    <1da>   DW_AT_decl_line   : 135	
-    <1db>   DW_AT_sibling     : <0x264>	
- <2><1df>: Abbrev Number: 15 (DW_TAG_member)
-    <1e0>   DW_AT_name        : (indirect string, offset: 0xf8): ifru_addr	
-    <1e4>   DW_AT_decl_file   : 5	
-    <1e5>   DW_AT_decl_line   : 137	
-    <1e6>   DW_AT_type        : <0x119>	
- <2><1ea>: Abbrev Number: 15 (DW_TAG_member)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0x84): ifru_dstaddr	
-    <1ef>   DW_AT_decl_file   : 5	
-    <1f0>   DW_AT_decl_line   : 138	
-    <1f1>   DW_AT_type        : <0x119>	
- <2><1f5>: Abbrev Number: 15 (DW_TAG_member)
-    <1f6>   DW_AT_name        : (indirect string, offset: 0x9a): ifru_broadaddr	
-    <1fa>   DW_AT_decl_file   : 5	
-    <1fb>   DW_AT_decl_line   : 139	
-    <1fc>   DW_AT_type        : <0x119>	
- <2><200>: Abbrev Number: 15 (DW_TAG_member)
-    <201>   DW_AT_name        : (indirect string, offset: 0x2b8): ifru_netmask	
-    <205>   DW_AT_decl_file   : 5	
-    <206>   DW_AT_decl_line   : 140	
-    <207>   DW_AT_type        : <0x119>	
- <2><20b>: Abbrev Number: 15 (DW_TAG_member)
-    <20c>   DW_AT_name        : (indirect string, offset: 0x2ac): ifru_hwaddr	
-    <210>   DW_AT_decl_file   : 5	
-    <211>   DW_AT_decl_line   : 141	
-    <212>   DW_AT_type        : <0x119>	
- <2><216>: Abbrev Number: 15 (DW_TAG_member)
-    <217>   DW_AT_name        : (indirect string, offset: 0x102): ifru_flags	
-    <21b>   DW_AT_decl_file   : 5	
-    <21c>   DW_AT_decl_line   : 142	
-    <21d>   DW_AT_type        : <0x24>	
- <2><221>: Abbrev Number: 15 (DW_TAG_member)
-    <222>   DW_AT_name        : (indirect string, offset: 0x21b): ifru_ivalue	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 143	
-    <228>   DW_AT_type        : <0x2b>	
- <2><22c>: Abbrev Number: 15 (DW_TAG_member)
-    <22d>   DW_AT_name        : (indirect string, offset: 0x10d): ifru_mtu	
-    <231>   DW_AT_decl_file   : 5	
-    <232>   DW_AT_decl_line   : 144	
-    <233>   DW_AT_type        : <0x2b>	
- <2><237>: Abbrev Number: 15 (DW_TAG_member)
-    <238>   DW_AT_name        : (indirect string, offset: 0x17): ifru_map	
-    <23c>   DW_AT_decl_file   : 5	
-    <23d>   DW_AT_decl_line   : 145	
-    <23e>   DW_AT_type        : <0x152>	
- <2><242>: Abbrev Number: 15 (DW_TAG_member)
-    <243>   DW_AT_name        : (indirect string, offset: 0x25d): ifru_slave	
-    <247>   DW_AT_decl_file   : 5	
-    <248>   DW_AT_decl_line   : 146	
-    <249>   DW_AT_type        : <0x1c7>	
- <2><24d>: Abbrev Number: 15 (DW_TAG_member)
-    <24e>   DW_AT_name        : (indirect string, offset: 0x20e): ifru_newname	
-    <252>   DW_AT_decl_file   : 5	
-    <253>   DW_AT_decl_line   : 147	
-    <254>   DW_AT_type        : <0x1c7>	
- <2><258>: Abbrev Number: 15 (DW_TAG_member)
-    <259>   DW_AT_name        : (indirect string, offset: 0x17e): ifru_data	
-    <25d>   DW_AT_decl_file   : 5	
-    <25e>   DW_AT_decl_line   : 148	
-    <25f>   DW_AT_type        : <0x6a>	
- <2><263>: Abbrev Number: 0
- <1><264>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <265>   DW_AT_name        : (indirect string, offset: 0x268): ifreq	
-    <269>   DW_AT_byte_size   : 32	
-    <26a>   DW_AT_decl_file   : 5	
-    <26b>   DW_AT_decl_line   : 126	
-    <26c>   DW_AT_sibling     : <0x28d>	
- <2><270>: Abbrev Number: 8 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x199): ifr_ifrn	
-    <275>   DW_AT_decl_file   : 5	
-    <276>   DW_AT_decl_line   : 133	
-    <277>   DW_AT_type        : <0x1b3>	
-    <27b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><27e>: Abbrev Number: 8 (DW_TAG_member)
-    <27f>   DW_AT_name        : (indirect string, offset: 0x1c2): ifr_ifru	
-    <283>   DW_AT_decl_file   : 5	
-    <284>   DW_AT_decl_line   : 149	
-    <285>   DW_AT_type        : <0x1d7>	
-    <289>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><28c>: Abbrev Number: 0
- <1><28d>: Abbrev Number: 14 (DW_TAG_union_type)
-    <28e>   DW_AT_byte_size   : 4	
-    <28f>   DW_AT_decl_file   : 5	
-    <290>   DW_AT_decl_line   : 179	
-    <291>   DW_AT_sibling     : <0x2ac>	
- <2><295>: Abbrev Number: 15 (DW_TAG_member)
-    <296>   DW_AT_name        : (indirect string, offset: 0xa9): ifcu_buf	
-    <29a>   DW_AT_decl_file   : 5	
-    <29b>   DW_AT_decl_line   : 181	
-    <29c>   DW_AT_type        : <0x6a>	
- <2><2a0>: Abbrev Number: 15 (DW_TAG_member)
-    <2a1>   DW_AT_name        : (indirect string, offset: 0x164): ifcu_req	
-    <2a5>   DW_AT_decl_file   : 5	
-    <2a6>   DW_AT_decl_line   : 182	
-    <2a7>   DW_AT_type        : <0x2ac>	
- <2><2ab>: Abbrev Number: 0
- <1><2ac>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <2ad>   DW_AT_byte_size   : 4	
-    <2ae>   DW_AT_type        : <0x264>	
- <1><2b2>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <2b3>   DW_AT_name        : (indirect string, offset: 0x188): ifconf	
-    <2b7>   DW_AT_byte_size   : 8	
-    <2b8>   DW_AT_decl_file   : 5	
-    <2b9>   DW_AT_decl_line   : 176	
-    <2ba>   DW_AT_sibling     : <0x2db>	
- <2><2be>: Abbrev Number: 8 (DW_TAG_member)
-    <2bf>   DW_AT_name        : (indirect string, offset: 0x1cb): ifc_len	
-    <2c3>   DW_AT_decl_file   : 5	
-    <2c4>   DW_AT_decl_line   : 178	
-    <2c5>   DW_AT_type        : <0x2b>	
-    <2c9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2cc>: Abbrev Number: 8 (DW_TAG_member)
-    <2cd>   DW_AT_name        : (indirect string, offset: 0x6): ifc_ifcu	
-    <2d1>   DW_AT_decl_file   : 5	
-    <2d2>   DW_AT_decl_line   : 183	
-    <2d3>   DW_AT_type        : <0x28d>	
-    <2d7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2da>: Abbrev Number: 0
- <1><2db>: Abbrev Number: 4 (DW_TAG_typedef)
-    <2dc>   DW_AT_name        : (indirect string, offset: 0x26e): struct_ifconf	
-    <2e0>   DW_AT_decl_file   : 6	
-    <2e1>   DW_AT_decl_line   : 39	
-    <2e2>   DW_AT_type        : <0x2b2>	
- <1><2e6>: Abbrev Number: 16 (DW_TAG_variable)
-    <2e7>   DW_AT_name        : (indirect string, offset: 0x12f): current_wordsize	
-    <2eb>   DW_AT_decl_file   : 7	
-    <2ec>   DW_AT_decl_line   : 757	
-    <2ee>   DW_AT_type        : <0x47>	
-    <2f2>   DW_AT_external    : 1	
-    <2f3>   DW_AT_declaration : 1	
- <1><2f4>: Abbrev Number: 16 (DW_TAG_variable)
-    <2f5>   DW_AT_name        : (indirect string, offset: 0x128): sysent	
-    <2f9>   DW_AT_decl_file   : 7	
-    <2fa>   DW_AT_decl_line   : 892	
-    <2fc>   DW_AT_type        : <0xfc>	
-    <300>   DW_AT_external    : 1	
-    <301>   DW_AT_declaration : 1	
- <1><302>: Abbrev Number: 16 (DW_TAG_variable)
-    <303>   DW_AT_name        : (indirect string, offset: 0x204): nsyscalls	
-    <307>   DW_AT_decl_file   : 7	
-    <308>   DW_AT_decl_line   : 903	
-    <30a>   DW_AT_type        : <0x47>	
-    <30e>   DW_AT_external    : 1	
-    <30f>   DW_AT_declaration : 1	
- <1><310>: Abbrev Number: 17 (DW_TAG_variable)
-    <311>   DW_AT_name        : (indirect string, offset: 0x16d): mpers_target_var	
-    <315>   DW_AT_decl_file   : 6	
-    <316>   DW_AT_decl_line   : 42	
-    <317>   DW_AT_type        : <0x2db>	
-    <31b>   DW_AT_external    : 1	
-    <31c>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><322>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_ifconf.d2 b/mpers-mx32/struct_ifconf.d2
deleted file mode 100644
index 3b67331..0000000
--- a/mpers-mx32/struct_ifconf.d2
+++ /dev/null
@@ -1,431 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x296): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x24d): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x230): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x14c): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x71): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1a2): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe1): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x27c): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x116): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x227): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xb2): __caddr_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x75>
-<1><75>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7b>
-<1><7b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1bd): char
-<1><82>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x88>
-<1><88>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x7b>
-<1><8d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x128): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe0>
-<2><99>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x257): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd7): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><b5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c5): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xeb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x91): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x82>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xeb>
-<2><e9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><eb>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe0>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1af): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x8d>
-<1><fc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x102>
-<1><102>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf1>
-<1><107>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x20): _Bool
-<1><10e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x140): sa_family_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x40>
-<1><119>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x285): sockaddr
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 149
-DW_AT_sibling     : <0x142>
-<2><125>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23e): sa_family
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 151
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><133>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28e): sa_data
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 152
-DW_AT_type        : <0x142>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><142>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x152>
-<2><14b>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 13
-<1><152>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): ifmap
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 111
-DW_AT_sibling     : <0x1b3>
-<2><15e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2a2): mem_start
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 113
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><16c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf): mem_end
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 114
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><17a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18f): base_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 115
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><188>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : irq
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 116
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><196>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : dma
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 117
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
-<2><1a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x248): port
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 118
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1b3>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 130
-DW_AT_sibling     : <0x1c7>
-<2><1bb>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15a): ifrn_name
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 132
-DW_AT_type        : <0x1c7>
-<1><1c7>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x1d7>
-<2><1d0>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><1d7>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 135
-DW_AT_sibling     : <0x264>
-<2><1df>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf8): ifru_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 137
-DW_AT_type        : <0x119>
-<2><1ea>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x84): ifru_dstaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 138
-DW_AT_type        : <0x119>
-<2><1f5>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9a): ifru_broadaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x119>
-<2><200>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2b8): ifru_netmask
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 140
-DW_AT_type        : <0x119>
-<2><20b>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ac): ifru_hwaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x119>
-<2><216>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x102): ifru_flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 142
-DW_AT_type        : <0x24>
-<2><221>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21b): ifru_ivalue
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 143
-DW_AT_type        : <0x2b>
-<2><22c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10d): ifru_mtu
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<2><237>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17): ifru_map
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 145
-DW_AT_type        : <0x152>
-<2><242>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25d): ifru_slave
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 146
-DW_AT_type        : <0x1c7>
-<2><24d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20e): ifru_newname
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 147
-DW_AT_type        : <0x1c7>
-<2><258>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17e): ifru_data
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 148
-DW_AT_type        : <0x6a>
-<1><264>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x268): ifreq
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 126
-DW_AT_sibling     : <0x28d>
-<2><270>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x199): ifr_ifrn
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x1b3>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><27e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c2): ifr_ifru
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 149
-DW_AT_type        : <0x1d7>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><28d>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 179
-DW_AT_sibling     : <0x2ac>
-<2><295>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa9): ifcu_buf
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 181
-DW_AT_type        : <0x6a>
-<2><2a0>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x164): ifcu_req
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 182
-DW_AT_type        : <0x2ac>
-<1><2ac>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x264>
-<1><2b2>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x188): ifconf
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 176
-DW_AT_sibling     : <0x2db>
-<2><2be>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cb): ifc_len
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 178
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2cc>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): ifc_ifcu
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x28d>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><2db>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x26e): struct_ifconf
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x2b2>
-<1><2e6>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12f): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2f4>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x128): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xfc>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><302>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x204): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><310>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x16d): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x2db>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-mx32/struct_ifreq.c b/mpers-mx32/struct_ifreq.c
index 691cb13..31f73ea 100644
--- a/mpers-mx32/struct_ifreq.c
+++ b/mpers-mx32/struct_ifreq.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/struct_ifreq.d1 b/mpers-mx32/struct_ifreq.d1
deleted file mode 100644
index 4c65292..0000000
--- a/mpers-mx32/struct_ifreq.d1
+++ /dev/null
@@ -1,345 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2d1 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x14): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x88): mpers-mx32/struct_ifreq.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1a6): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x26a): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x220): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x203): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x137): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x17d): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x250): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xf4): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1fa): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6b>   DW_AT_name        : (indirect string, offset: 0xa2): __caddr_t	
-    <6f>   DW_AT_decl_file   : 2	
-    <70>   DW_AT_decl_line   : 183	
-    <71>   DW_AT_type        : <0x75>	
- <1><75>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <76>   DW_AT_byte_size   : 4	
-    <77>   DW_AT_type        : <0x7b>	
- <1><7b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7c>   DW_AT_byte_size   : 1	
-    <7d>   DW_AT_encoding    : 6	(signed char)
-    <7e>   DW_AT_name        : (indirect string, offset: 0x198): char	
- <1><82>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <83>   DW_AT_byte_size   : 4	
-    <84>   DW_AT_type        : <0x88>	
- <1><88>: Abbrev Number: 6 (DW_TAG_const_type)
-    <89>   DW_AT_type        : <0x7b>	
- <1><8d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x113): sysent	
-    <92>   DW_AT_byte_size   : 20	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 4	
-    <95>   DW_AT_sibling     : <0xe0>	
- <2><99>: Abbrev Number: 8 (DW_TAG_member)
-    <9a>   DW_AT_name        : (indirect string, offset: 0x22a): nargs	
-    <9e>   DW_AT_decl_file   : 1	
-    <9f>   DW_AT_decl_line   : 5	
-    <a0>   DW_AT_type        : <0x47>	
-    <a4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a7>: Abbrev Number: 8 (DW_TAG_member)
-    <a8>   DW_AT_name        : (indirect string, offset: 0xb5): sys_flags	
-    <ac>   DW_AT_decl_file   : 1	
-    <ad>   DW_AT_decl_line   : 6	
-    <ae>   DW_AT_type        : <0x2b>	
-    <b2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><b5>: Abbrev Number: 9 (DW_TAG_member)
-    <b6>   DW_AT_name        : sen	
-    <ba>   DW_AT_decl_file   : 1	
-    <bb>   DW_AT_decl_line   : 7	
-    <bc>   DW_AT_type        : <0x2b>	
-    <c0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c3>: Abbrev Number: 8 (DW_TAG_member)
-    <c4>   DW_AT_name        : (indirect string, offset: 0x299): sys_func	
-    <c8>   DW_AT_decl_file   : 1	
-    <c9>   DW_AT_decl_line   : 8	
-    <ca>   DW_AT_type        : <0xeb>	
-    <ce>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d1>: Abbrev Number: 8 (DW_TAG_member)
-    <d2>   DW_AT_name        : (indirect string, offset: 0x7f): sys_name	
-    <d6>   DW_AT_decl_file   : 1	
-    <d7>   DW_AT_decl_line   : 9	
-    <d8>   DW_AT_type        : <0x82>	
-    <dc>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e1>   DW_AT_type        : <0x2b>	
-    <e5>   DW_AT_sibling     : <0xeb>	
- <2><e9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ea>: Abbrev Number: 0
- <1><eb>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xe0>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f2>   DW_AT_name        : (indirect string, offset: 0x18a): struct_sysent	
-    <f6>   DW_AT_decl_file   : 1	
-    <f7>   DW_AT_decl_line   : 10	
-    <f8>   DW_AT_type        : <0x8d>	
- <1><fc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <fd>   DW_AT_byte_size   : 4	
-    <fe>   DW_AT_type        : <0x102>	
- <1><102>: Abbrev Number: 6 (DW_TAG_const_type)
-    <103>   DW_AT_type        : <0xf1>	
- <1><107>: Abbrev Number: 2 (DW_TAG_base_type)
-    <108>   DW_AT_byte_size   : 1	
-    <109>   DW_AT_encoding    : 2	(boolean)
-    <10a>   DW_AT_name        : (indirect string, offset: 0xe): _Bool	
- <1><10e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x12b): sa_family_t	
-    <113>   DW_AT_decl_file   : 3	
-    <114>   DW_AT_decl_line   : 28	
-    <115>   DW_AT_type        : <0x40>	
- <1><119>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x259): sockaddr	
-    <11e>   DW_AT_byte_size   : 16	
-    <11f>   DW_AT_decl_file   : 4	
-    <120>   DW_AT_decl_line   : 149	
-    <121>   DW_AT_sibling     : <0x142>	
- <2><125>: Abbrev Number: 8 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0x211): sa_family	
-    <12a>   DW_AT_decl_file   : 4	
-    <12b>   DW_AT_decl_line   : 151	
-    <12c>   DW_AT_type        : <0x10e>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><133>: Abbrev Number: 8 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0x262): sa_data	
-    <138>   DW_AT_decl_file   : 4	
-    <139>   DW_AT_decl_line   : 152	
-    <13a>   DW_AT_type        : <0x142>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><141>: Abbrev Number: 0
- <1><142>: Abbrev Number: 12 (DW_TAG_array_type)
-    <143>   DW_AT_type        : <0x7b>	
-    <147>   DW_AT_sibling     : <0x152>	
- <2><14b>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <14c>   DW_AT_type        : <0x63>	
-    <150>   DW_AT_upper_bound : 13	
- <2><151>: Abbrev Number: 0
- <1><152>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <153>   DW_AT_name        : (indirect string, offset: 0x0): ifmap	
-    <157>   DW_AT_byte_size   : 16	
-    <158>   DW_AT_decl_file   : 5	
-    <159>   DW_AT_decl_line   : 111	
-    <15a>   DW_AT_sibling     : <0x1b3>	
- <2><15e>: Abbrev Number: 8 (DW_TAG_member)
-    <15f>   DW_AT_name        : (indirect string, offset: 0x276): mem_start	
-    <163>   DW_AT_decl_file   : 5	
-    <164>   DW_AT_decl_line   : 113	
-    <165>   DW_AT_type        : <0x5c>	
-    <169>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><16c>: Abbrev Number: 8 (DW_TAG_member)
-    <16d>   DW_AT_name        : (indirect string, offset: 0x6): mem_end	
-    <171>   DW_AT_decl_file   : 5	
-    <172>   DW_AT_decl_line   : 114	
-    <173>   DW_AT_type        : <0x5c>	
-    <177>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><17a>: Abbrev Number: 8 (DW_TAG_member)
-    <17b>   DW_AT_name        : (indirect string, offset: 0x16a): base_addr	
-    <17f>   DW_AT_decl_file   : 5	
-    <180>   DW_AT_decl_line   : 115	
-    <181>   DW_AT_type        : <0x40>	
-    <185>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><188>: Abbrev Number: 9 (DW_TAG_member)
-    <189>   DW_AT_name        : irq	
-    <18d>   DW_AT_decl_file   : 5	
-    <18e>   DW_AT_decl_line   : 116	
-    <18f>   DW_AT_type        : <0x39>	
-    <193>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><196>: Abbrev Number: 9 (DW_TAG_member)
-    <197>   DW_AT_name        : dma	
-    <19b>   DW_AT_decl_file   : 5	
-    <19c>   DW_AT_decl_line   : 117	
-    <19d>   DW_AT_type        : <0x39>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
- <2><1a4>: Abbrev Number: 8 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x21b): port	
-    <1a9>   DW_AT_decl_file   : 5	
-    <1aa>   DW_AT_decl_line   : 118	
-    <1ab>   DW_AT_type        : <0x39>	
-    <1af>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1b2>: Abbrev Number: 0
- <1><1b3>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1b4>   DW_AT_byte_size   : 16	
-    <1b5>   DW_AT_decl_file   : 5	
-    <1b6>   DW_AT_decl_line   : 130	
-    <1b7>   DW_AT_sibling     : <0x1c7>	
- <2><1bb>: Abbrev Number: 15 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x145): ifrn_name	
-    <1c0>   DW_AT_decl_file   : 5	
-    <1c1>   DW_AT_decl_line   : 132	
-    <1c2>   DW_AT_type        : <0x1c7>	
- <2><1c6>: Abbrev Number: 0
- <1><1c7>: Abbrev Number: 12 (DW_TAG_array_type)
-    <1c8>   DW_AT_type        : <0x7b>	
-    <1cc>   DW_AT_sibling     : <0x1d7>	
- <2><1d0>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <1d1>   DW_AT_type        : <0x63>	
-    <1d5>   DW_AT_upper_bound : 15	
- <2><1d6>: Abbrev Number: 0
- <1><1d7>: Abbrev Number: 14 (DW_TAG_union_type)
-    <1d8>   DW_AT_byte_size   : 16	
-    <1d9>   DW_AT_decl_file   : 5	
-    <1da>   DW_AT_decl_line   : 135	
-    <1db>   DW_AT_sibling     : <0x264>	
- <2><1df>: Abbrev Number: 15 (DW_TAG_member)
-    <1e0>   DW_AT_name        : (indirect string, offset: 0xd6): ifru_addr	
-    <1e4>   DW_AT_decl_file   : 5	
-    <1e5>   DW_AT_decl_line   : 137	
-    <1e6>   DW_AT_type        : <0x119>	
- <2><1ea>: Abbrev Number: 15 (DW_TAG_member)
-    <1eb>   DW_AT_name        : (indirect string, offset: 0x72): ifru_dstaddr	
-    <1ef>   DW_AT_decl_file   : 5	
-    <1f0>   DW_AT_decl_line   : 138	
-    <1f1>   DW_AT_type        : <0x119>	
- <2><1f5>: Abbrev Number: 15 (DW_TAG_member)
-    <1f6>   DW_AT_name        : (indirect string, offset: 0x241): ifru_broadaddr	
-    <1fa>   DW_AT_decl_file   : 5	
-    <1fb>   DW_AT_decl_line   : 139	
-    <1fc>   DW_AT_type        : <0x119>	
- <2><200>: Abbrev Number: 15 (DW_TAG_member)
-    <201>   DW_AT_name        : (indirect string, offset: 0x28c): ifru_netmask	
-    <205>   DW_AT_decl_file   : 5	
-    <206>   DW_AT_decl_line   : 140	
-    <207>   DW_AT_type        : <0x119>	
- <2><20b>: Abbrev Number: 15 (DW_TAG_member)
-    <20c>   DW_AT_name        : (indirect string, offset: 0x280): ifru_hwaddr	
-    <210>   DW_AT_decl_file   : 5	
-    <211>   DW_AT_decl_line   : 141	
-    <212>   DW_AT_type        : <0x119>	
- <2><216>: Abbrev Number: 15 (DW_TAG_member)
-    <217>   DW_AT_name        : (indirect string, offset: 0xe0): ifru_flags	
-    <21b>   DW_AT_decl_file   : 5	
-    <21c>   DW_AT_decl_line   : 142	
-    <21d>   DW_AT_type        : <0x24>	
- <2><221>: Abbrev Number: 15 (DW_TAG_member)
-    <222>   DW_AT_name        : (indirect string, offset: 0x1ee): ifru_ivalue	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 143	
-    <228>   DW_AT_type        : <0x2b>	
- <2><22c>: Abbrev Number: 15 (DW_TAG_member)
-    <22d>   DW_AT_name        : (indirect string, offset: 0xeb): ifru_mtu	
-    <231>   DW_AT_decl_file   : 5	
-    <232>   DW_AT_decl_line   : 144	
-    <233>   DW_AT_type        : <0x2b>	
- <2><237>: Abbrev Number: 15 (DW_TAG_member)
-    <238>   DW_AT_name        : (indirect string, offset: 0xac): ifru_map	
-    <23c>   DW_AT_decl_file   : 5	
-    <23d>   DW_AT_decl_line   : 145	
-    <23e>   DW_AT_type        : <0x152>	
- <2><242>: Abbrev Number: 15 (DW_TAG_member)
-    <243>   DW_AT_name        : (indirect string, offset: 0x230): ifru_slave	
-    <247>   DW_AT_decl_file   : 5	
-    <248>   DW_AT_decl_line   : 146	
-    <249>   DW_AT_type        : <0x1c7>	
- <2><24d>: Abbrev Number: 15 (DW_TAG_member)
-    <24e>   DW_AT_name        : (indirect string, offset: 0x1e1): ifru_newname	
-    <252>   DW_AT_decl_file   : 5	
-    <253>   DW_AT_decl_line   : 147	
-    <254>   DW_AT_type        : <0x1c7>	
- <2><258>: Abbrev Number: 15 (DW_TAG_member)
-    <259>   DW_AT_name        : (indirect string, offset: 0x160): ifru_data	
-    <25d>   DW_AT_decl_file   : 5	
-    <25e>   DW_AT_decl_line   : 148	
-    <25f>   DW_AT_type        : <0x6a>	
- <2><263>: Abbrev Number: 0
- <1><264>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <265>   DW_AT_name        : (indirect string, offset: 0x23b): ifreq	
-    <269>   DW_AT_byte_size   : 32	
-    <26a>   DW_AT_decl_file   : 5	
-    <26b>   DW_AT_decl_line   : 126	
-    <26c>   DW_AT_sibling     : <0x28d>	
- <2><270>: Abbrev Number: 8 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x174): ifr_ifrn	
-    <275>   DW_AT_decl_file   : 5	
-    <276>   DW_AT_decl_line   : 133	
-    <277>   DW_AT_type        : <0x1b3>	
-    <27b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><27e>: Abbrev Number: 8 (DW_TAG_member)
-    <27f>   DW_AT_name        : (indirect string, offset: 0x19d): ifr_ifru	
-    <283>   DW_AT_decl_file   : 5	
-    <284>   DW_AT_decl_line   : 149	
-    <285>   DW_AT_type        : <0x1d7>	
-    <289>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><28c>: Abbrev Number: 0
- <1><28d>: Abbrev Number: 4 (DW_TAG_typedef)
-    <28e>   DW_AT_name        : (indirect string, offset: 0x106): struct_ifreq	
-    <292>   DW_AT_decl_file   : 6	
-    <293>   DW_AT_decl_line   : 40	
-    <294>   DW_AT_type        : <0x264>	
- <1><298>: Abbrev Number: 16 (DW_TAG_variable)
-    <299>   DW_AT_name        : (indirect string, offset: 0x11a): current_wordsize	
-    <29d>   DW_AT_decl_file   : 7	
-    <29e>   DW_AT_decl_line   : 757	
-    <2a0>   DW_AT_type        : <0x47>	
-    <2a4>   DW_AT_external    : 1	
-    <2a5>   DW_AT_declaration : 1	
- <1><2a6>: Abbrev Number: 16 (DW_TAG_variable)
-    <2a7>   DW_AT_name        : (indirect string, offset: 0x113): sysent	
-    <2ab>   DW_AT_decl_file   : 7	
-    <2ac>   DW_AT_decl_line   : 892	
-    <2ae>   DW_AT_type        : <0xfc>	
-    <2b2>   DW_AT_external    : 1	
-    <2b3>   DW_AT_declaration : 1	
- <1><2b4>: Abbrev Number: 16 (DW_TAG_variable)
-    <2b5>   DW_AT_name        : (indirect string, offset: 0x1d7): nsyscalls	
-    <2b9>   DW_AT_decl_file   : 7	
-    <2ba>   DW_AT_decl_line   : 903	
-    <2bc>   DW_AT_type        : <0x47>	
-    <2c0>   DW_AT_external    : 1	
-    <2c1>   DW_AT_declaration : 1	
- <1><2c2>: Abbrev Number: 17 (DW_TAG_variable)
-    <2c3>   DW_AT_name        : (indirect string, offset: 0x14f): mpers_target_var	
-    <2c7>   DW_AT_decl_file   : 6	
-    <2c8>   DW_AT_decl_line   : 42	
-    <2c9>   DW_AT_type        : <0x28d>	
-    <2cd>   DW_AT_external    : 1	
-    <2ce>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><2d4>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_ifreq.d2 b/mpers-mx32/struct_ifreq.d2
deleted file mode 100644
index d5e0e55..0000000
--- a/mpers-mx32/struct_ifreq.d2
+++ /dev/null
@@ -1,388 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x26a): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x220): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x203): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x137): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x17d): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x250): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf4): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1fa): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xa2): __caddr_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 183
-DW_AT_type        : <0x75>
-<1><75>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7b>
-<1><7b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x198): char
-<1><82>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x88>
-<1><88>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x7b>
-<1><8d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x113): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe0>
-<2><99>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22a): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><a7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb5): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><b5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x299): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xeb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7f): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x82>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xeb>
-<2><e9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><eb>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe0>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x18a): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x8d>
-<1><fc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x102>
-<1><102>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf1>
-<1><107>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xe): _Bool
-<1><10e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x12b): sa_family_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x40>
-<1><119>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x259): sockaddr
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 149
-DW_AT_sibling     : <0x142>
-<2><125>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x211): sa_family
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 151
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><133>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x262): sa_data
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 152
-DW_AT_type        : <0x142>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<1><142>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x152>
-<2><14b>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 13
-<1><152>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): ifmap
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 111
-DW_AT_sibling     : <0x1b3>
-<2><15e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x276): mem_start
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 113
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><16c>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): mem_end
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 114
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><17a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16a): base_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 115
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><188>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : irq
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 116
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><196>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : dma
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 117
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
-<2><1a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21b): port
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 118
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1b3>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 130
-DW_AT_sibling     : <0x1c7>
-<2><1bb>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x145): ifrn_name
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 132
-DW_AT_type        : <0x1c7>
-<1><1c7>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x7b>
-DW_AT_sibling     : <0x1d7>
-<2><1d0>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 15
-<1><1d7>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 135
-DW_AT_sibling     : <0x264>
-<2><1df>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd6): ifru_addr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 137
-DW_AT_type        : <0x119>
-<2><1ea>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x72): ifru_dstaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 138
-DW_AT_type        : <0x119>
-<2><1f5>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x241): ifru_broadaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x119>
-<2><200>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28c): ifru_netmask
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 140
-DW_AT_type        : <0x119>
-<2><20b>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x280): ifru_hwaddr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x119>
-<2><216>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe0): ifru_flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 142
-DW_AT_type        : <0x24>
-<2><221>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ee): ifru_ivalue
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 143
-DW_AT_type        : <0x2b>
-<2><22c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xeb): ifru_mtu
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 144
-DW_AT_type        : <0x2b>
-<2><237>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xac): ifru_map
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 145
-DW_AT_type        : <0x152>
-<2><242>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x230): ifru_slave
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 146
-DW_AT_type        : <0x1c7>
-<2><24d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e1): ifru_newname
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 147
-DW_AT_type        : <0x1c7>
-<2><258>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x160): ifru_data
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 148
-DW_AT_type        : <0x6a>
-<1><264>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x23b): ifreq
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 126
-DW_AT_sibling     : <0x28d>
-<2><270>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x174): ifr_ifrn
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 133
-DW_AT_type        : <0x1b3>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><27e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19d): ifr_ifru
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 149
-DW_AT_type        : <0x1d7>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><28d>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x106): struct_ifreq
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x264>
-<1><298>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11a): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2a6>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x113): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xfc>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2b4>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1d7): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2c2>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x14f): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x28d>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_loop_info.c b/mpers-mx32/struct_loop_info.c
index 25d76e1..a7116a1 100644
--- a/mpers-mx32/struct_loop_info.c
+++ b/mpers-mx32/struct_loop_info.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012 The Chromium OS Authors.
+ * Copyright (c) 2012-2017 The strace developers.
  * Written by Mike Frysinger <vapier@gentoo.org>.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/struct_loop_info.d1 b/mpers-mx32/struct_loop_info.d1
deleted file mode 100644
index 498ab55..0000000
--- a/mpers-mx32/struct_loop_info.d1
+++ /dev/null
@@ -1,272 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x243 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x23): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1e9): mpers-mx32/struct_loop_info.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x197): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x22c): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x219): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1db): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe0): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x6e): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x164): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xc1): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x223): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xee): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1d2): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x17f): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_array_type)
-    <72>   DW_AT_type        : <0x6a>	
-    <76>   DW_AT_sibling     : <0x81>	
- <2><7a>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <7b>   DW_AT_type        : <0x63>	
-    <7f>   DW_AT_upper_bound : 3	
- <2><80>: Abbrev Number: 0
- <1><81>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <82>   DW_AT_byte_size   : 4	
-    <83>   DW_AT_type        : <0x87>	
- <1><87>: Abbrev Number: 7 (DW_TAG_const_type)
-    <88>   DW_AT_type        : <0x6a>	
- <1><8c>: Abbrev Number: 8 (DW_TAG_typedef)
-    <8d>   DW_AT_name        : (indirect string, offset: 0x107): __kernel_old_dev_t	
-    <91>   DW_AT_decl_file   : 2	
-    <92>   DW_AT_decl_line   : 14	
-    <93>   DW_AT_type        : <0x5c>	
- <1><97>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <98>   DW_AT_name        : (indirect string, offset: 0x100): sysent	
-    <9c>   DW_AT_byte_size   : 20	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 4	
-    <9f>   DW_AT_sibling     : <0xea>	
- <2><a3>: Abbrev Number: 10 (DW_TAG_member)
-    <a4>   DW_AT_name        : (indirect string, offset: 0x13b): nargs	
-    <a8>   DW_AT_decl_file   : 1	
-    <a9>   DW_AT_decl_line   : 5	
-    <aa>   DW_AT_type        : <0x47>	
-    <ae>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b1>: Abbrev Number: 10 (DW_TAG_member)
-    <b2>   DW_AT_name        : (indirect string, offset: 0xb7): sys_flags	
-    <b6>   DW_AT_decl_file   : 1	
-    <b7>   DW_AT_decl_line   : 6	
-    <b8>   DW_AT_type        : <0x2b>	
-    <bc>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><bf>: Abbrev Number: 11 (DW_TAG_member)
-    <c0>   DW_AT_name        : sen	
-    <c4>   DW_AT_decl_file   : 1	
-    <c5>   DW_AT_decl_line   : 7	
-    <c6>   DW_AT_type        : <0x2b>	
-    <ca>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><cd>: Abbrev Number: 10 (DW_TAG_member)
-    <ce>   DW_AT_name        : (indirect string, offset: 0x241): sys_func	
-    <d2>   DW_AT_decl_file   : 1	
-    <d3>   DW_AT_decl_line   : 8	
-    <d4>   DW_AT_type        : <0xf5>	
-    <d8>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><db>: Abbrev Number: 10 (DW_TAG_member)
-    <dc>   DW_AT_name        : (indirect string, offset: 0x81): sys_name	
-    <e0>   DW_AT_decl_file   : 1	
-    <e1>   DW_AT_decl_line   : 9	
-    <e2>   DW_AT_type        : <0x81>	
-    <e6>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e9>: Abbrev Number: 0
- <1><ea>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <eb>   DW_AT_type        : <0x2b>	
-    <ef>   DW_AT_sibling     : <0xf5>	
- <2><f3>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><f4>: Abbrev Number: 0
- <1><f5>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <f6>   DW_AT_byte_size   : 4	
-    <f7>   DW_AT_type        : <0xea>	
- <1><fb>: Abbrev Number: 8 (DW_TAG_typedef)
-    <fc>   DW_AT_name        : (indirect string, offset: 0x171): struct_sysent	
-    <100>   DW_AT_decl_file   : 1	
-    <101>   DW_AT_decl_line   : 10	
-    <102>   DW_AT_type        : <0x97>	
- <1><106>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <107>   DW_AT_byte_size   : 4	
-    <108>   DW_AT_type        : <0x10c>	
- <1><10c>: Abbrev Number: 7 (DW_TAG_const_type)
-    <10d>   DW_AT_type        : <0xfb>	
- <1><111>: Abbrev Number: 2 (DW_TAG_base_type)
-    <112>   DW_AT_byte_size   : 1	
-    <113>   DW_AT_encoding    : 2	(boolean)
-    <114>   DW_AT_name        : (indirect string, offset: 0x14): _Bool	
- <1><118>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <119>   DW_AT_name        : (indirect string, offset: 0xa): loop_info	
-    <11d>   DW_AT_byte_size   : 140	
-    <11e>   DW_AT_decl_file   : 3	
-    <11f>   DW_AT_decl_line   : 30	
-    <120>   DW_AT_sibling     : <0x1cf>	
- <2><124>: Abbrev Number: 10 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x18d): lo_number	
-    <129>   DW_AT_decl_file   : 3	
-    <12a>   DW_AT_decl_line   : 31	
-    <12b>   DW_AT_type        : <0x2b>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><132>: Abbrev Number: 10 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x20f): lo_device	
-    <137>   DW_AT_decl_file   : 3	
-    <138>   DW_AT_decl_line   : 32	
-    <139>   DW_AT_type        : <0x8c>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><140>: Abbrev Number: 10 (DW_TAG_member)
-    <141>   DW_AT_name        : (indirect string, offset: 0x238): lo_inode	
-    <145>   DW_AT_decl_file   : 3	
-    <146>   DW_AT_decl_line   : 33	
-    <147>   DW_AT_type        : <0x5c>	
-    <14b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><14e>: Abbrev Number: 10 (DW_TAG_member)
-    <14f>   DW_AT_name        : (indirect string, offset: 0x8a): lo_rdevice	
-    <153>   DW_AT_decl_file   : 3	
-    <154>   DW_AT_decl_line   : 34	
-    <155>   DW_AT_type        : <0x8c>	
-    <159>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><15c>: Abbrev Number: 10 (DW_TAG_member)
-    <15d>   DW_AT_name        : (indirect string, offset: 0x0): lo_offset	
-    <161>   DW_AT_decl_file   : 3	
-    <162>   DW_AT_decl_line   : 35	
-    <163>   DW_AT_type        : <0x2b>	
-    <167>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><16a>: Abbrev Number: 10 (DW_TAG_member)
-    <16b>   DW_AT_name        : (indirect string, offset: 0x11a): lo_encrypt_type	
-    <16f>   DW_AT_decl_file   : 3	
-    <170>   DW_AT_decl_line   : 36	
-    <171>   DW_AT_type        : <0x2b>	
-    <175>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><178>: Abbrev Number: 10 (DW_TAG_member)
-    <179>   DW_AT_name        : (indirect string, offset: 0x141): lo_encrypt_key_size	
-    <17d>   DW_AT_decl_file   : 3	
-    <17e>   DW_AT_decl_line   : 37	
-    <17f>   DW_AT_type        : <0x2b>	
-    <183>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><186>: Abbrev Number: 10 (DW_TAG_member)
-    <187>   DW_AT_name        : (indirect string, offset: 0x184): lo_flags	
-    <18b>   DW_AT_decl_file   : 3	
-    <18c>   DW_AT_decl_line   : 38	
-    <18d>   DW_AT_type        : <0x2b>	
-    <191>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><194>: Abbrev Number: 10 (DW_TAG_member)
-    <195>   DW_AT_name        : (indirect string, offset: 0xd8): lo_name	
-    <199>   DW_AT_decl_file   : 3	
-    <19a>   DW_AT_decl_line   : 39	
-    <19b>   DW_AT_type        : <0x1cf>	
-    <19f>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1a2>: Abbrev Number: 10 (DW_TAG_member)
-    <1a3>   DW_AT_name        : (indirect string, offset: 0x155): lo_encrypt_key	
-    <1a7>   DW_AT_decl_file   : 3	
-    <1a8>   DW_AT_decl_line   : 40	
-    <1a9>   DW_AT_type        : <0x1df>	
-    <1ad>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><1b0>: Abbrev Number: 10 (DW_TAG_member)
-    <1b1>   DW_AT_name        : (indirect string, offset: 0x207): lo_init	
-    <1b5>   DW_AT_decl_file   : 3	
-    <1b6>   DW_AT_decl_line   : 41	
-    <1b7>   DW_AT_type        : <0x1ef>	
-    <1bb>   DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
- <2><1bf>: Abbrev Number: 10 (DW_TAG_member)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0x1a): reserved	
-    <1c4>   DW_AT_decl_file   : 3	
-    <1c5>   DW_AT_decl_line   : 42	
-    <1c6>   DW_AT_type        : <0x71>	
-    <1ca>   DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
- <2><1ce>: Abbrev Number: 0
- <1><1cf>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1d0>   DW_AT_type        : <0x6a>	
-    <1d4>   DW_AT_sibling     : <0x1df>	
- <2><1d8>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1d9>   DW_AT_type        : <0x63>	
-    <1dd>   DW_AT_upper_bound : 63	
- <2><1de>: Abbrev Number: 0
- <1><1df>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1e0>   DW_AT_type        : <0x39>	
-    <1e4>   DW_AT_sibling     : <0x1ef>	
- <2><1e8>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1e9>   DW_AT_type        : <0x63>	
-    <1ed>   DW_AT_upper_bound : 31	
- <2><1ee>: Abbrev Number: 0
- <1><1ef>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1f0>   DW_AT_type        : <0x5c>	
-    <1f4>   DW_AT_sibling     : <0x1ff>	
- <2><1f8>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1f9>   DW_AT_type        : <0x63>	
-    <1fd>   DW_AT_upper_bound : 1	
- <2><1fe>: Abbrev Number: 0
- <1><1ff>: Abbrev Number: 8 (DW_TAG_typedef)
-    <200>   DW_AT_name        : (indirect string, offset: 0x95): struct_loop_info	
-    <204>   DW_AT_decl_file   : 4	
-    <205>   DW_AT_decl_line   : 32	
-    <206>   DW_AT_type        : <0x118>	
- <1><20a>: Abbrev Number: 14 (DW_TAG_variable)
-    <20b>   DW_AT_name        : (indirect string, offset: 0x12a): current_wordsize	
-    <20f>   DW_AT_decl_file   : 5	
-    <210>   DW_AT_decl_line   : 757	
-    <212>   DW_AT_type        : <0x47>	
-    <216>   DW_AT_external    : 1	
-    <217>   DW_AT_declaration : 1	
- <1><218>: Abbrev Number: 14 (DW_TAG_variable)
-    <219>   DW_AT_name        : (indirect string, offset: 0x100): sysent	
-    <21d>   DW_AT_decl_file   : 5	
-    <21e>   DW_AT_decl_line   : 892	
-    <220>   DW_AT_type        : <0x106>	
-    <224>   DW_AT_external    : 1	
-    <225>   DW_AT_declaration : 1	
- <1><226>: Abbrev Number: 14 (DW_TAG_variable)
-    <227>   DW_AT_name        : (indirect string, offset: 0x1c8): nsyscalls	
-    <22b>   DW_AT_decl_file   : 5	
-    <22c>   DW_AT_decl_line   : 903	
-    <22e>   DW_AT_type        : <0x47>	
-    <232>   DW_AT_external    : 1	
-    <233>   DW_AT_declaration : 1	
- <1><234>: Abbrev Number: 15 (DW_TAG_variable)
-    <235>   DW_AT_name        : (indirect string, offset: 0xa6): mpers_target_var	
-    <239>   DW_AT_decl_file   : 4	
-    <23a>   DW_AT_decl_line   : 35	
-    <23b>   DW_AT_type        : <0x1ff>	
-    <23f>   DW_AT_external    : 1	
-    <240>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><246>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_loop_info.d2 b/mpers-mx32/struct_loop_info.d2
deleted file mode 100644
index 0b6e073..0000000
--- a/mpers-mx32/struct_loop_info.d2
+++ /dev/null
@@ -1,304 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x22c): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x219): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1db): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe0): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6e): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x164): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc1): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x223): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xee): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d2): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x17f): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x81>
-<2><7a>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><81>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x87>
-<1><87>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><8c>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x107): __kernel_old_dev_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x5c>
-<1><97>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x100): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xea>
-<2><a3>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13b): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b1>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb7): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><bf>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><cd>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x241): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf5>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><db>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x81): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x81>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><ea>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf5>
-<2><f3>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><f5>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xea>
-<1><fb>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x171): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x97>
-<1><106>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x10c>
-<1><10c>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0xfb>
-<1><111>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x14): _Bool
-<1><118>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xa): loop_info
-DW_AT_byte_size   : 140
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0x1cf>
-<2><124>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18d): lo_number
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><132>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20f): lo_device
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x8c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><140>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x238): lo_inode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><14e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8a): lo_rdevice
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x8c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><15c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): lo_offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><16a>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11a): lo_encrypt_type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><178>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x141): lo_encrypt_key_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><186>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x184): lo_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><194>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd8): lo_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x1cf>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1a2>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x155): lo_encrypt_key
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x1df>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><1b0>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x207): lo_init
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x1ef>
-DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
-<2><1bf>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
-<1><1cf>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x1df>
-<2><1d8>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 63
-<1><1df>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x39>
-DW_AT_sibling     : <0x1ef>
-<2><1e8>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 31
-<1><1ef>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x5c>
-DW_AT_sibling     : <0x1ff>
-<2><1f8>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><1ff>
-Abbrev Number: 8 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x95): struct_loop_info
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x118>
-<1><20a>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12a): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><218>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x100): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x106>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><226>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1c8): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><234>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xa6): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x1ff>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_mmsghdr.d1 b/mpers-mx32/struct_mmsghdr.d1
deleted file mode 100644
index 5c785e9..0000000
--- a/mpers-mx32/struct_mmsghdr.d1
+++ /dev/null
@@ -1,267 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x22c (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x3f): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x11e): mpers-mx32/struct_mmsghdr.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x18b): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x225): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1f4): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1da): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xce): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x8a): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x154): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xb7): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x206): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xdc): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1d1): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x16f): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_typedef)
-    <74>   DW_AT_name        : (indirect string, offset: 0x219): __socklen_t	
-    <78>   DW_AT_decl_file   : 1	
-    <79>   DW_AT_decl_line   : 189	
-    <7a>   DW_AT_type        : <0x47>	
- <1><7e>: Abbrev Number: 5 (DW_TAG_typedef)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xf): size_t	
-    <83>   DW_AT_decl_file   : 2	
-    <84>   DW_AT_decl_line   : 212	
-    <85>   DW_AT_type        : <0x47>	
- <1><89>: Abbrev Number: 6 (DW_TAG_typedef)
-    <8a>   DW_AT_name        : (indirect string, offset: 0x20f): socklen_t	
-    <8e>   DW_AT_decl_file   : 3	
-    <8f>   DW_AT_decl_line   : 274	
-    <91>   DW_AT_type        : <0x73>	
- <1><95>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <96>   DW_AT_byte_size   : 4	
-    <97>   DW_AT_type        : <0x9b>	
- <1><9b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <9c>   DW_AT_type        : <0x6c>	
- <1><a0>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a1>   DW_AT_name        : (indirect string, offset: 0xee): sysent	
-    <a5>   DW_AT_byte_size   : 20	
-    <a6>   DW_AT_decl_file   : 4	
-    <a7>   DW_AT_decl_line   : 4	
-    <a8>   DW_AT_sibling     : <0xf3>	
- <2><ac>: Abbrev Number: 10 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x112): nargs	
-    <b1>   DW_AT_decl_file   : 4	
-    <b2>   DW_AT_decl_line   : 5	
-    <b3>   DW_AT_type        : <0x47>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ba>: Abbrev Number: 10 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0xad): sys_flags	
-    <bf>   DW_AT_decl_file   : 4	
-    <c0>   DW_AT_decl_line   : 6	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c8>: Abbrev Number: 11 (DW_TAG_member)
-    <c9>   DW_AT_name        : sen	
-    <cd>   DW_AT_decl_file   : 4	
-    <ce>   DW_AT_decl_line   : 7	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d6>: Abbrev Number: 10 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x231): sys_func	
-    <db>   DW_AT_decl_file   : 4	
-    <dc>   DW_AT_decl_line   : 8	
-    <dd>   DW_AT_type        : <0xfe>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e4>: Abbrev Number: 10 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0x9d): sys_name	
-    <e9>   DW_AT_decl_file   : 4	
-    <ea>   DW_AT_decl_line   : 9	
-    <eb>   DW_AT_type        : <0x95>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><f2>: Abbrev Number: 0
- <1><f3>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <f4>   DW_AT_type        : <0x2b>	
-    <f8>   DW_AT_sibling     : <0xfe>	
- <2><fc>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><fd>: Abbrev Number: 0
- <1><fe>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <ff>   DW_AT_byte_size   : 4	
-    <100>   DW_AT_type        : <0xf3>	
- <1><104>: Abbrev Number: 5 (DW_TAG_typedef)
-    <105>   DW_AT_name        : (indirect string, offset: 0x161): struct_sysent	
-    <109>   DW_AT_decl_file   : 4	
-    <10a>   DW_AT_decl_line   : 10	
-    <10b>   DW_AT_type        : <0xa0>	
- <1><10f>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <110>   DW_AT_byte_size   : 4	
-    <111>   DW_AT_type        : <0x115>	
- <1><115>: Abbrev Number: 8 (DW_TAG_const_type)
-    <116>   DW_AT_type        : <0x104>	
- <1><11a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <11b>   DW_AT_byte_size   : 1	
-    <11c>   DW_AT_encoding    : 2	(boolean)
-    <11d>   DW_AT_name        : (indirect string, offset: 0x27): _Bool	
- <1><121>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <122>   DW_AT_name        : (indirect string, offset: 0x118): iovec	
-    <126>   DW_AT_byte_size   : 8	
-    <127>   DW_AT_decl_file   : 5	
-    <128>   DW_AT_decl_line   : 43	
-    <129>   DW_AT_sibling     : <0x14a>	
- <2><12d>: Abbrev Number: 10 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x14b): iov_base	
-    <132>   DW_AT_decl_file   : 5	
-    <133>   DW_AT_decl_line   : 45	
-    <134>   DW_AT_type        : <0x6a>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><13b>: Abbrev Number: 10 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x1f): iov_len	
-    <140>   DW_AT_decl_file   : 5	
-    <141>   DW_AT_decl_line   : 46	
-    <142>   DW_AT_type        : <0x7e>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><149>: Abbrev Number: 0
- <1><14a>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0xa6): msghdr	
-    <14f>   DW_AT_byte_size   : 28	
-    <150>   DW_AT_decl_file   : 6	
-    <151>   DW_AT_decl_line   : 224	
-    <152>   DW_AT_sibling     : <0x1b9>	
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x16): msg_name	
-    <15b>   DW_AT_decl_file   : 6	
-    <15c>   DW_AT_decl_line   : 226	
-    <15d>   DW_AT_type        : <0x6a>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><164>: Abbrev Number: 10 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x1e8): msg_namelen	
-    <169>   DW_AT_decl_file   : 6	
-    <16a>   DW_AT_decl_line   : 227	
-    <16b>   DW_AT_type        : <0x89>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><172>: Abbrev Number: 10 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x174): msg_iov	
-    <177>   DW_AT_decl_file   : 6	
-    <178>   DW_AT_decl_line   : 229	
-    <179>   DW_AT_type        : <0x1b9>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 10 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x1c6): msg_iovlen	
-    <185>   DW_AT_decl_file   : 6	
-    <186>   DW_AT_decl_line   : 230	
-    <187>   DW_AT_type        : <0x7e>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18e>: Abbrev Number: 10 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0x106): msg_control	
-    <193>   DW_AT_decl_file   : 6	
-    <194>   DW_AT_decl_line   : 232	
-    <195>   DW_AT_type        : <0x6a>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 10 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x0): msg_controllen	
-    <1a1>   DW_AT_decl_file   : 6	
-    <1a2>   DW_AT_decl_line   : 233	
-    <1a3>   DW_AT_type        : <0x7e>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1aa>: Abbrev Number: 10 (DW_TAG_member)
-    <1ab>   DW_AT_name        : (indirect string, offset: 0x35): msg_flags	
-    <1af>   DW_AT_decl_file   : 6	
-    <1b0>   DW_AT_decl_line   : 238	
-    <1b1>   DW_AT_type        : <0x2b>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1b8>: Abbrev Number: 0
- <1><1b9>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <1ba>   DW_AT_byte_size   : 4	
-    <1bb>   DW_AT_type        : <0x121>	
- <1><1bf>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0x1fe): mmsghdr	
-    <1c4>   DW_AT_byte_size   : 32	
-    <1c5>   DW_AT_decl_file   : 7	
-    <1c6>   DW_AT_decl_line   : 101	
-    <1c7>   DW_AT_sibling     : <0x1e8>	
- <2><1cb>: Abbrev Number: 10 (DW_TAG_member)
-    <1cc>   DW_AT_name        : (indirect string, offset: 0x2d): msg_hdr	
-    <1d0>   DW_AT_decl_file   : 7	
-    <1d1>   DW_AT_decl_line   : 103	
-    <1d2>   DW_AT_type        : <0x14a>	
-    <1d6>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1d9>: Abbrev Number: 10 (DW_TAG_member)
-    <1da>   DW_AT_name        : (indirect string, offset: 0x23a): msg_len	
-    <1de>   DW_AT_decl_file   : 7	
-    <1df>   DW_AT_decl_line   : 104	
-    <1e0>   DW_AT_type        : <0x47>	
-    <1e4>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1e7>: Abbrev Number: 0
- <1><1e8>: Abbrev Number: 5 (DW_TAG_typedef)
-    <1e9>   DW_AT_name        : (indirect string, offset: 0x17c): struct_mmsghdr	
-    <1ed>   DW_AT_decl_file   : 8	
-    <1ee>   DW_AT_decl_line   : 32	
-    <1ef>   DW_AT_type        : <0x1bf>	
- <1><1f3>: Abbrev Number: 14 (DW_TAG_variable)
-    <1f4>   DW_AT_name        : (indirect string, offset: 0xf5): current_wordsize	
-    <1f8>   DW_AT_decl_file   : 9	
-    <1f9>   DW_AT_decl_line   : 757	
-    <1fb>   DW_AT_type        : <0x47>	
-    <1ff>   DW_AT_external    : 1	
-    <200>   DW_AT_declaration : 1	
- <1><201>: Abbrev Number: 14 (DW_TAG_variable)
-    <202>   DW_AT_name        : (indirect string, offset: 0xee): sysent	
-    <206>   DW_AT_decl_file   : 9	
-    <207>   DW_AT_decl_line   : 892	
-    <209>   DW_AT_type        : <0x10f>	
-    <20d>   DW_AT_external    : 1	
-    <20e>   DW_AT_declaration : 1	
- <1><20f>: Abbrev Number: 14 (DW_TAG_variable)
-    <210>   DW_AT_name        : (indirect string, offset: 0x1bc): nsyscalls	
-    <214>   DW_AT_decl_file   : 9	
-    <215>   DW_AT_decl_line   : 903	
-    <217>   DW_AT_type        : <0x47>	
-    <21b>   DW_AT_external    : 1	
-    <21c>   DW_AT_declaration : 1	
- <1><21d>: Abbrev Number: 15 (DW_TAG_variable)
-    <21e>   DW_AT_name        : (indirect string, offset: 0x13a): mpers_target_var	
-    <222>   DW_AT_decl_file   : 8	
-    <223>   DW_AT_decl_line   : 34	
-    <224>   DW_AT_type        : <0x1e8>	
-    <228>   DW_AT_external    : 1	
-    <229>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><22f>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_mmsghdr.d2 b/mpers-mx32/struct_mmsghdr.d2
deleted file mode 100644
index d5045a9..0000000
--- a/mpers-mx32/struct_mmsghdr.d2
+++ /dev/null
@@ -1,298 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x225): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f4): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1da): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xce): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8a): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x154): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb7): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x206): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xdc): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d1): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x16f): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x219): __socklen_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 189
-DW_AT_type        : <0x47>
-<1><7e>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><89>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x20f): socklen_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_type        : <0x73>
-<1><95>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x9b>
-<1><9b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><a0>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xee): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf3>
-<2><ac>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x112): nargs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ba>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xad): sys_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c8>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x231): sys_func
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfe>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e4>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9d): sys_name
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x95>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f3>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfe>
-<2><fc>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><fe>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><104>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x161): struct_sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xa0>
-<1><10f>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x115>
-<1><115>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x104>
-<1><11a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x27): _Bool
-<1><121>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x118): iovec
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 43
-DW_AT_sibling     : <0x14a>
-<2><12d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14b): iov_base
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><13b>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): iov_len
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><14a>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xa6): msghdr
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 224
-DW_AT_sibling     : <0x1b9>
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16): msg_name
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 226
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><164>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e8): msg_namelen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 227
-DW_AT_type        : <0x89>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><172>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x174): msg_iov
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 229
-DW_AT_type        : <0x1b9>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c6): msg_iovlen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 230
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><18e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x106): msg_control
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 232
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): msg_controllen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 233
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1aa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x35): msg_flags
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 238
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><1b9>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x121>
-<1><1bf>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1fe): mmsghdr
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 101
-DW_AT_sibling     : <0x1e8>
-<2><1cb>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d): msg_hdr
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 103
-DW_AT_type        : <0x14a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1d9>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23a): msg_len
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 104
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><1e8>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17c): struct_mmsghdr
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x1bf>
-<1><1f3>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf5): current_wordsize
-DW_AT_decl_file   : 9
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><201>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xee): sysent
-DW_AT_decl_file   : 9
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10f>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><20f>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1bc): nsyscalls
-DW_AT_decl_file   : 9
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><21d>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x13a): mpers_target_var
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1e8>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_msghdr.d1 b/mpers-mx32/struct_msghdr.d1
deleted file mode 100644
index 8ec48e7..0000000
--- a/mpers-mx32/struct_msghdr.d1
+++ /dev/null
@@ -1,248 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x203 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x37): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x95): mpers-mx32/struct_msghdr.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x181): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x213): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1ea): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1d0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe1): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x82): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x159): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xca): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1f4): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xef): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1c7): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x174): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_typedef)
-    <74>   DW_AT_name        : (indirect string, offset: 0x207): __socklen_t	
-    <78>   DW_AT_decl_file   : 1	
-    <79>   DW_AT_decl_line   : 189	
-    <7a>   DW_AT_type        : <0x47>	
- <1><7e>: Abbrev Number: 5 (DW_TAG_typedef)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xf): size_t	
-    <83>   DW_AT_decl_file   : 2	
-    <84>   DW_AT_decl_line   : 212	
-    <85>   DW_AT_type        : <0x47>	
- <1><89>: Abbrev Number: 6 (DW_TAG_typedef)
-    <8a>   DW_AT_name        : (indirect string, offset: 0x1fd): socklen_t	
-    <8e>   DW_AT_decl_file   : 3	
-    <8f>   DW_AT_decl_line   : 274	
-    <91>   DW_AT_type        : <0x73>	
- <1><95>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <96>   DW_AT_byte_size   : 4	
-    <97>   DW_AT_type        : <0x9b>	
- <1><9b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <9c>   DW_AT_type        : <0x6c>	
- <1><a0>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <a1>   DW_AT_name        : (indirect string, offset: 0x101): sysent	
-    <a5>   DW_AT_byte_size   : 20	
-    <a6>   DW_AT_decl_file   : 4	
-    <a7>   DW_AT_decl_line   : 4	
-    <a8>   DW_AT_sibling     : <0xf3>	
- <2><ac>: Abbrev Number: 10 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x133): nargs	
-    <b1>   DW_AT_decl_file   : 4	
-    <b2>   DW_AT_decl_line   : 5	
-    <b3>   DW_AT_type        : <0x47>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ba>: Abbrev Number: 10 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0xc0): sys_flags	
-    <bf>   DW_AT_decl_file   : 4	
-    <c0>   DW_AT_decl_line   : 6	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c8>: Abbrev Number: 11 (DW_TAG_member)
-    <c9>   DW_AT_name        : sen	
-    <cd>   DW_AT_decl_file   : 4	
-    <ce>   DW_AT_decl_line   : 7	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d6>: Abbrev Number: 10 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x21f): sys_func	
-    <db>   DW_AT_decl_file   : 4	
-    <dc>   DW_AT_decl_line   : 8	
-    <dd>   DW_AT_type        : <0xfe>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e4>: Abbrev Number: 10 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0xb0): sys_name	
-    <e9>   DW_AT_decl_file   : 4	
-    <ea>   DW_AT_decl_line   : 9	
-    <eb>   DW_AT_type        : <0x95>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><f2>: Abbrev Number: 0
- <1><f3>: Abbrev Number: 12 (DW_TAG_subroutine_type)
-    <f4>   DW_AT_type        : <0x2b>	
-    <f8>   DW_AT_sibling     : <0xfe>	
- <2><fc>: Abbrev Number: 13 (DW_TAG_unspecified_parameters)
- <2><fd>: Abbrev Number: 0
- <1><fe>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <ff>   DW_AT_byte_size   : 4	
-    <100>   DW_AT_type        : <0xf3>	
- <1><104>: Abbrev Number: 5 (DW_TAG_typedef)
-    <105>   DW_AT_name        : (indirect string, offset: 0x166): struct_sysent	
-    <109>   DW_AT_decl_file   : 4	
-    <10a>   DW_AT_decl_line   : 10	
-    <10b>   DW_AT_type        : <0xa0>	
- <1><10f>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <110>   DW_AT_byte_size   : 4	
-    <111>   DW_AT_type        : <0x115>	
- <1><115>: Abbrev Number: 8 (DW_TAG_const_type)
-    <116>   DW_AT_type        : <0x104>	
- <1><11a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <11b>   DW_AT_byte_size   : 1	
-    <11c>   DW_AT_encoding    : 2	(boolean)
-    <11d>   DW_AT_name        : (indirect string, offset: 0x1f): _Bool	
- <1><121>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <122>   DW_AT_name        : (indirect string, offset: 0x139): iovec	
-    <126>   DW_AT_byte_size   : 8	
-    <127>   DW_AT_decl_file   : 5	
-    <128>   DW_AT_decl_line   : 43	
-    <129>   DW_AT_sibling     : <0x14a>	
- <2><12d>: Abbrev Number: 10 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x150): iov_base	
-    <132>   DW_AT_decl_file   : 5	
-    <133>   DW_AT_decl_line   : 45	
-    <134>   DW_AT_type        : <0x6a>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><13b>: Abbrev Number: 10 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x25): iov_len	
-    <140>   DW_AT_decl_file   : 5	
-    <141>   DW_AT_decl_line   : 46	
-    <142>   DW_AT_type        : <0x7e>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><149>: Abbrev Number: 0
- <1><14a>: Abbrev Number: 9 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0xb9): msghdr	
-    <14f>   DW_AT_byte_size   : 28	
-    <150>   DW_AT_decl_file   : 6	
-    <151>   DW_AT_decl_line   : 224	
-    <152>   DW_AT_sibling     : <0x1b9>	
- <2><156>: Abbrev Number: 10 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x16): msg_name	
-    <15b>   DW_AT_decl_file   : 6	
-    <15c>   DW_AT_decl_line   : 226	
-    <15d>   DW_AT_type        : <0x6a>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><164>: Abbrev Number: 10 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x1de): msg_namelen	
-    <169>   DW_AT_decl_file   : 6	
-    <16a>   DW_AT_decl_line   : 227	
-    <16b>   DW_AT_type        : <0x89>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><172>: Abbrev Number: 10 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x179): msg_iov	
-    <177>   DW_AT_decl_file   : 6	
-    <178>   DW_AT_decl_line   : 229	
-    <179>   DW_AT_type        : <0x1b9>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 10 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0x1bc): msg_iovlen	
-    <185>   DW_AT_decl_file   : 6	
-    <186>   DW_AT_decl_line   : 230	
-    <187>   DW_AT_type        : <0x7e>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18e>: Abbrev Number: 10 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0x119): msg_control	
-    <193>   DW_AT_decl_file   : 6	
-    <194>   DW_AT_decl_line   : 232	
-    <195>   DW_AT_type        : <0x6a>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><19c>: Abbrev Number: 10 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x0): msg_controllen	
-    <1a1>   DW_AT_decl_file   : 6	
-    <1a2>   DW_AT_decl_line   : 233	
-    <1a3>   DW_AT_type        : <0x7e>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1aa>: Abbrev Number: 10 (DW_TAG_member)
-    <1ab>   DW_AT_name        : (indirect string, offset: 0x2d): msg_flags	
-    <1af>   DW_AT_decl_file   : 6	
-    <1b0>   DW_AT_decl_line   : 238	
-    <1b1>   DW_AT_type        : <0x2b>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1b8>: Abbrev Number: 0
- <1><1b9>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <1ba>   DW_AT_byte_size   : 4	
-    <1bb>   DW_AT_type        : <0x121>	
- <1><1bf>: Abbrev Number: 5 (DW_TAG_typedef)
-    <1c0>   DW_AT_name        : (indirect string, offset: 0x125): struct_msghdr	
-    <1c4>   DW_AT_decl_file   : 7	
-    <1c5>   DW_AT_decl_line   : 32	
-    <1c6>   DW_AT_type        : <0x14a>	
- <1><1ca>: Abbrev Number: 14 (DW_TAG_variable)
-    <1cb>   DW_AT_name        : (indirect string, offset: 0x108): current_wordsize	
-    <1cf>   DW_AT_decl_file   : 8	
-    <1d0>   DW_AT_decl_line   : 757	
-    <1d2>   DW_AT_type        : <0x47>	
-    <1d6>   DW_AT_external    : 1	
-    <1d7>   DW_AT_declaration : 1	
- <1><1d8>: Abbrev Number: 14 (DW_TAG_variable)
-    <1d9>   DW_AT_name        : (indirect string, offset: 0x101): sysent	
-    <1dd>   DW_AT_decl_file   : 8	
-    <1de>   DW_AT_decl_line   : 892	
-    <1e0>   DW_AT_type        : <0x10f>	
-    <1e4>   DW_AT_external    : 1	
-    <1e5>   DW_AT_declaration : 1	
- <1><1e6>: Abbrev Number: 14 (DW_TAG_variable)
-    <1e7>   DW_AT_name        : (indirect string, offset: 0x1b2): nsyscalls	
-    <1eb>   DW_AT_decl_file   : 8	
-    <1ec>   DW_AT_decl_line   : 903	
-    <1ee>   DW_AT_type        : <0x47>	
-    <1f2>   DW_AT_external    : 1	
-    <1f3>   DW_AT_declaration : 1	
- <1><1f4>: Abbrev Number: 15 (DW_TAG_variable)
-    <1f5>   DW_AT_name        : (indirect string, offset: 0x13f): mpers_target_var	
-    <1f9>   DW_AT_decl_file   : 7	
-    <1fa>   DW_AT_decl_line   : 34	
-    <1fb>   DW_AT_type        : <0x1bf>	
-    <1ff>   DW_AT_external    : 1	
-    <200>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><206>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_msghdr.d2 b/mpers-mx32/struct_msghdr.d2
deleted file mode 100644
index eed6168..0000000
--- a/mpers-mx32/struct_msghdr.d2
+++ /dev/null
@@ -1,277 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x213): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ea): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe1): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x82): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x159): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xca): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f4): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xef): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c7): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x174): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x207): __socklen_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 189
-DW_AT_type        : <0x47>
-<1><7e>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xf): size_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 212
-DW_AT_type        : <0x47>
-<1><89>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1fd): socklen_t
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_type        : <0x73>
-<1><95>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x9b>
-<1><9b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><a0>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x101): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf3>
-<2><ac>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x133): nargs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ba>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc0): sys_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c8>
-Abbrev Number: 11 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d6>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21f): sys_func
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfe>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e4>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb0): sys_name
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x95>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f3>
-Abbrev Number: 12 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfe>
-<2><fc>
-Abbrev Number: 13 (DW_TAG_unspecified_parameters)
-<1><fe>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><104>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x166): struct_sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xa0>
-<1><10f>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x115>
-<1><115>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x104>
-<1><11a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1f): _Bool
-<1><121>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x139): iovec
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 43
-DW_AT_sibling     : <0x14a>
-<2><12d>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x150): iov_base
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><13b>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25): iov_len
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><14a>
-Abbrev Number: 9 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xb9): msghdr
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 224
-DW_AT_sibling     : <0x1b9>
-<2><156>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16): msg_name
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 226
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><164>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1de): msg_namelen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 227
-DW_AT_type        : <0x89>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><172>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x179): msg_iov
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 229
-DW_AT_type        : <0x1b9>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bc): msg_iovlen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 230
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><18e>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x119): msg_control
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 232
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><19c>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): msg_controllen
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 233
-DW_AT_type        : <0x7e>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1aa>
-Abbrev Number: 10 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d): msg_flags
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 238
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><1b9>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x121>
-<1><1bf>
-Abbrev Number: 5 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x125): struct_msghdr
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x14a>
-<1><1ca>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x108): current_wordsize
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1d8>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x101): sysent
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10f>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1e6>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b2): nsyscalls
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1f4>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x13f): mpers_target_var
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1bf>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/struct_mtd_oob_buf.c b/mpers-mx32/struct_mtd_oob_buf.c
index f781ae5..48fc9ab 100644
--- a/mpers-mx32/struct_mtd_oob_buf.c
+++ b/mpers-mx32/struct_mtd_oob_buf.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012 Mike Frysinger <vapier@gentoo.org>
+ * 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
diff --git a/mpers-mx32/struct_mtd_oob_buf.d1 b/mpers-mx32/struct_mtd_oob_buf.d1
deleted file mode 100644
index cd327b9..0000000
--- a/mpers-mx32/struct_mtd_oob_buf.d1
+++ /dev/null
@@ -1,193 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x189 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x12): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x116): mpers-mx32/struct_mtd_oob_buf.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x136): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ad): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x194): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x17a): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xad): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5d): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0xf6): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x96): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1a4): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xbb): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x171): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x111): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xcd): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x19e): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x8c): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1b9): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x70): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x103): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x6): __u32	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 26	
-    <104>   DW_AT_type        : <0x47>	
- <1><108>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <109>   DW_AT_name        : (indirect string, offset: 0x188): mtd_oob_buf	
-    <10d>   DW_AT_byte_size   : 12	
-    <10e>   DW_AT_decl_file   : 3	
-    <10f>   DW_AT_decl_line   : 35	
-    <110>   DW_AT_sibling     : <0x13f>	
- <2><114>: Abbrev Number: 7 (DW_TAG_member)
-    <115>   DW_AT_name        : (indirect string, offset: 0xc): start	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 36	
-    <11b>   DW_AT_type        : <0xfd>	
-    <11f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><122>: Abbrev Number: 7 (DW_TAG_member)
-    <123>   DW_AT_name        : (indirect string, offset: 0x1c2): length	
-    <127>   DW_AT_decl_file   : 3	
-    <128>   DW_AT_decl_line   : 37	
-    <129>   DW_AT_type        : <0xfd>	
-    <12d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><130>: Abbrev Number: 8 (DW_TAG_member)
-    <131>   DW_AT_name        : ptr	
-    <135>   DW_AT_decl_file   : 3	
-    <136>   DW_AT_decl_line   : 38	
-    <137>   DW_AT_type        : <0x13f>	
-    <13b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13e>: Abbrev Number: 0
- <1><13f>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <140>   DW_AT_byte_size   : 4	
-    <141>   DW_AT_type        : <0x39>	
- <1><145>: Abbrev Number: 11 (DW_TAG_typedef)
-    <146>   DW_AT_name        : (indirect string, offset: 0x79): struct_mtd_oob_buf	
-    <14a>   DW_AT_decl_file   : 4	
-    <14b>   DW_AT_decl_line   : 40	
-    <14c>   DW_AT_type        : <0x108>	
- <1><150>: Abbrev Number: 12 (DW_TAG_variable)
-    <151>   DW_AT_name        : (indirect string, offset: 0xd4): current_wordsize	
-    <155>   DW_AT_decl_file   : 5	
-    <156>   DW_AT_decl_line   : 757	
-    <158>   DW_AT_type        : <0x47>	
-    <15c>   DW_AT_external    : 1	
-    <15d>   DW_AT_declaration : 1	
- <1><15e>: Abbrev Number: 12 (DW_TAG_variable)
-    <15f>   DW_AT_name        : (indirect string, offset: 0xcd): sysent	
-    <163>   DW_AT_decl_file   : 5	
-    <164>   DW_AT_decl_line   : 892	
-    <166>   DW_AT_type        : <0xeb>	
-    <16a>   DW_AT_external    : 1	
-    <16b>   DW_AT_declaration : 1	
- <1><16c>: Abbrev Number: 12 (DW_TAG_variable)
-    <16d>   DW_AT_name        : (indirect string, offset: 0x167): nsyscalls	
-    <171>   DW_AT_decl_file   : 5	
-    <172>   DW_AT_decl_line   : 903	
-    <174>   DW_AT_type        : <0x47>	
-    <178>   DW_AT_external    : 1	
-    <179>   DW_AT_declaration : 1	
- <1><17a>: Abbrev Number: 13 (DW_TAG_variable)
-    <17b>   DW_AT_name        : (indirect string, offset: 0xe5): mpers_target_var	
-    <17f>   DW_AT_decl_file   : 4	
-    <180>   DW_AT_decl_line   : 42	
-    <181>   DW_AT_type        : <0x145>	
-    <185>   DW_AT_external    : 1	
-    <186>   DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
- <1><18c>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_mtd_oob_buf.d2 b/mpers-mx32/struct_mtd_oob_buf.d2
deleted file mode 100644
index 733de15..0000000
--- a/mpers-mx32/struct_mtd_oob_buf.d2
+++ /dev/null
@@ -1,213 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ad): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x194): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x17a): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xad): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5d): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf6): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x96): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a4): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbb): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x171): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x111): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xcd): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19e): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8c): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b9): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x70): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x103): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><108>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x188): mtd_oob_buf
-DW_AT_byte_size   : 12
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_sibling     : <0x13f>
-<2><114>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><122>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c2): length
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><130>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : ptr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x13f>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><13f>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x39>
-<1><145>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x79): struct_mtd_oob_buf
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x108>
-<1><150>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xd4): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><15e>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xcd): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><16c>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x167): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17a>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe5): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x145>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 4 0 0 0 	(DW_OP_addr: 4)
diff --git a/mpers-mx32/struct_rt_sigframe.c b/mpers-mx32/struct_rt_sigframe.c
new file mode 100644
index 0000000..e5a0b48
--- /dev/null
+++ b/mpers-mx32/struct_rt_sigframe.c
@@ -0,0 +1,33 @@
+/*
+ * 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 "defs.h"
+
+
+#include "rt_sigframe.h"
+
+struct_rt_sigframe mpers_target_var;
diff --git a/mpers-mx32/struct_rt_sigframe.h b/mpers-mx32/struct_rt_sigframe.h
new file mode 100644
index 0000000..5bbd4c4
--- /dev/null
+++ b/mpers-mx32/struct_rt_sigframe.h
@@ -0,0 +1,45 @@
+#include <inttypes.h>
+typedef uint32_t mpers_ptr_t;
+typedef
+struct {
+uint64_t pretcode;
+struct {
+uint32_t uc_flags;
+mpers_ptr_t uc_link;
+struct {
+mpers_ptr_t ss_sp;
+int32_t ss_flags;
+uint32_t ss_size;
+} ATTRIBUTE_PACKED uc_stack;
+unsigned char mpers_filler_1[4];
+struct {
+int64_t gregs[23];
+mpers_ptr_t fpregs;
+unsigned char mpers_filler_2[4];
+uint64_t __reserved1[8];
+} ATTRIBUTE_PACKED uc_mcontext;
+struct {
+uint32_t __val[32];
+} ATTRIBUTE_PACKED uc_sigmask;
+struct {
+uint16_t cwd;
+uint16_t swd;
+uint16_t ftw;
+uint16_t fop;
+uint64_t rip;
+uint64_t rdp;
+uint32_t mxcsr;
+uint32_t mxcr_mask;
+struct {
+uint16_t significand[4];
+uint16_t exponent;
+uint16_t padding[3];
+} ATTRIBUTE_PACKED _st[8];
+struct {
+uint32_t element[4];
+} ATTRIBUTE_PACKED _xmm[16];
+uint32_t padding[24];
+} ATTRIBUTE_PACKED __fpregs_mem;
+} ATTRIBUTE_PACKED uc;
+} ATTRIBUTE_PACKED mx32_struct_rt_sigframe;
+#define MPERS_mx32_struct_rt_sigframe mx32_struct_rt_sigframe
diff --git a/mpers-mx32/struct_rtc_pll_info.d1 b/mpers-mx32/struct_rtc_pll_info.d1
deleted file mode 100644
index 033071f..0000000
--- a/mpers-mx32/struct_rtc_pll_info.d1
+++ /dev/null
@@ -1,209 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1b0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x26): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x127): mpers-mx32/struct_rtc_pll_info.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x165): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e9): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1bf): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1b1): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xc7): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x71): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x84): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xb0): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1d6): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xd5): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1a0): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x156): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xe7): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xff): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xa6): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1f5): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x9d): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x148): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x20): _Bool	
- <1><fd>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x1c9): rtc_pll_info	
-    <102>   DW_AT_byte_size   : 28	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 55	
-    <105>   DW_AT_sibling     : <0x16c>	
- <2><109>: Abbrev Number: 7 (DW_TAG_member)
-    <10a>   DW_AT_name        : (indirect string, offset: 0x105): pll_ctrl	
-    <10e>   DW_AT_decl_file   : 2	
-    <10f>   DW_AT_decl_line   : 56	
-    <110>   DW_AT_type        : <0x2b>	
-    <114>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><117>: Abbrev Number: 7 (DW_TAG_member)
-    <118>   DW_AT_name        : (indirect string, offset: 0x15b): pll_value	
-    <11c>   DW_AT_decl_file   : 2	
-    <11d>   DW_AT_decl_line   : 57	
-    <11e>   DW_AT_type        : <0x2b>	
-    <122>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><125>: Abbrev Number: 7 (DW_TAG_member)
-    <126>   DW_AT_name        : (indirect string, offset: 0x11f): pll_max	
-    <12a>   DW_AT_decl_file   : 2	
-    <12b>   DW_AT_decl_line   : 58	
-    <12c>   DW_AT_type        : <0x2b>	
-    <130>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><133>: Abbrev Number: 7 (DW_TAG_member)
-    <134>   DW_AT_name        : (indirect string, offset: 0x1a9): pll_min	
-    <138>   DW_AT_decl_file   : 2	
-    <139>   DW_AT_decl_line   : 59	
-    <13a>   DW_AT_type        : <0x2b>	
-    <13e>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><141>: Abbrev Number: 7 (DW_TAG_member)
-    <142>   DW_AT_name        : (indirect string, offset: 0x91): pll_posmult	
-    <146>   DW_AT_decl_file   : 2	
-    <147>   DW_AT_decl_line   : 60	
-    <148>   DW_AT_type        : <0x2b>	
-    <14c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><14f>: Abbrev Number: 7 (DW_TAG_member)
-    <150>   DW_AT_name        : (indirect string, offset: 0x0): pll_negmult	
-    <154>   DW_AT_decl_file   : 2	
-    <155>   DW_AT_decl_line   : 61	
-    <156>   DW_AT_type        : <0x2b>	
-    <15a>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><15d>: Abbrev Number: 7 (DW_TAG_member)
-    <15e>   DW_AT_name        : (indirect string, offset: 0x1df): pll_clock	
-    <162>   DW_AT_decl_file   : 2	
-    <163>   DW_AT_decl_line   : 62	
-    <164>   DW_AT_type        : <0x55>	
-    <168>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><16b>: Abbrev Number: 0
- <1><16c>: Abbrev Number: 11 (DW_TAG_typedef)
-    <16d>   DW_AT_name        : (indirect string, offset: 0xc): struct_rtc_pll_info	
-    <171>   DW_AT_decl_file   : 3	
-    <172>   DW_AT_decl_line   : 35	
-    <173>   DW_AT_type        : <0xfd>	
- <1><177>: Abbrev Number: 12 (DW_TAG_variable)
-    <178>   DW_AT_name        : (indirect string, offset: 0xee): current_wordsize	
-    <17c>   DW_AT_decl_file   : 4	
-    <17d>   DW_AT_decl_line   : 757	
-    <17f>   DW_AT_type        : <0x47>	
-    <183>   DW_AT_external    : 1	
-    <184>   DW_AT_declaration : 1	
- <1><185>: Abbrev Number: 12 (DW_TAG_variable)
-    <186>   DW_AT_name        : (indirect string, offset: 0xe7): sysent	
-    <18a>   DW_AT_decl_file   : 4	
-    <18b>   DW_AT_decl_line   : 892	
-    <18d>   DW_AT_type        : <0xeb>	
-    <191>   DW_AT_external    : 1	
-    <192>   DW_AT_declaration : 1	
- <1><193>: Abbrev Number: 12 (DW_TAG_variable)
-    <194>   DW_AT_name        : (indirect string, offset: 0x196): nsyscalls	
-    <198>   DW_AT_decl_file   : 4	
-    <199>   DW_AT_decl_line   : 903	
-    <19b>   DW_AT_type        : <0x47>	
-    <19f>   DW_AT_external    : 1	
-    <1a0>   DW_AT_declaration : 1	
- <1><1a1>: Abbrev Number: 13 (DW_TAG_variable)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x10e): mpers_target_var	
-    <1a6>   DW_AT_decl_file   : 3	
-    <1a7>   DW_AT_decl_line   : 37	
-    <1a8>   DW_AT_type        : <0x16c>	
-    <1ac>   DW_AT_external    : 1	
-    <1ad>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><1b3>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_rtc_pll_info.d2 b/mpers-mx32/struct_rtc_pll_info.d2
deleted file mode 100644
index 64c048b..0000000
--- a/mpers-mx32/struct_rtc_pll_info.d2
+++ /dev/null
@@ -1,231 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e9): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1bf): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1b1): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xc7): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x71): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x84): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb0): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d6): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd5): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1a0): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x156): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe7): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xff): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa6): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f5): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9d): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x148): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x20): _Bool
-<1><fd>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1c9): rtc_pll_info
-DW_AT_byte_size   : 28
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 55
-DW_AT_sibling     : <0x16c>
-<2><109>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x105): pll_ctrl
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><117>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15b): pll_value
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><125>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11f): pll_max
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><133>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a9): pll_min
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><141>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x91): pll_posmult
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 60
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><14f>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): pll_negmult
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><15d>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1df): pll_clock
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 62
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><16c>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xc): struct_rtc_pll_info
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xfd>
-<1><177>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xee): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><185>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe7): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><193>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x196): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a1>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x10e): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x16c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/struct_sg_io_hdr.d1 b/mpers-mx32/struct_sg_io_hdr.d1
deleted file mode 100644
index d7283b1..0000000
--- a/mpers-mx32/struct_sg_io_hdr.d1
+++ /dev/null
@@ -1,304 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x28a (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x1d): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xcc): mpers-mx32/struct_sg_io_hdr.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x185): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0xa8): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x20f): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1dd): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xb4): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x68): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x15f): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x260): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x236): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xf6): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1ca): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x180): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0x108): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x219): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x9e): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x257): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x87): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x172): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x6): _Bool	
- <1><ff>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <100>   DW_AT_name        : (indirect string, offset: 0xc2): sg_io_hdr	
-    <104>   DW_AT_byte_size   : 64	
-    <105>   DW_AT_decl_file   : 2	
-    <106>   DW_AT_decl_line   : 44	
-    <107>   DW_AT_sibling     : <0x240>	
- <2><10b>: Abbrev Number: 8 (DW_TAG_member)
-    <10c>   DW_AT_name        : (indirect string, offset: 0x1eb): interface_id	
-    <110>   DW_AT_decl_file   : 2	
-    <111>   DW_AT_decl_line   : 46	
-    <112>   DW_AT_type        : <0x2b>	
-    <116>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><119>: Abbrev Number: 8 (DW_TAG_member)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x10f): dxfer_direction	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 47	
-    <120>   DW_AT_type        : <0x2b>	
-    <124>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><127>: Abbrev Number: 8 (DW_TAG_member)
-    <128>   DW_AT_name        : (indirect string, offset: 0x157): cmd_len	
-    <12c>   DW_AT_decl_file   : 2	
-    <12d>   DW_AT_decl_line   : 48	
-    <12e>   DW_AT_type        : <0x39>	
-    <132>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><135>: Abbrev Number: 8 (DW_TAG_member)
-    <136>   DW_AT_name        : (indirect string, offset: 0x1c0): mx_sb_len	
-    <13a>   DW_AT_decl_file   : 2	
-    <13b>   DW_AT_decl_line   : 49	
-    <13c>   DW_AT_type        : <0x39>	
-    <140>   DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
- <2><143>: Abbrev Number: 8 (DW_TAG_member)
-    <144>   DW_AT_name        : (indirect string, offset: 0xea): iovec_count	
-    <148>   DW_AT_decl_file   : 2	
-    <149>   DW_AT_decl_line   : 50	
-    <14a>   DW_AT_type        : <0x40>	
-    <14e>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><151>: Abbrev Number: 8 (DW_TAG_member)
-    <152>   DW_AT_name        : (indirect string, offset: 0x1d3): dxfer_len	
-    <156>   DW_AT_decl_file   : 2	
-    <157>   DW_AT_decl_line   : 51	
-    <158>   DW_AT_type        : <0x47>	
-    <15c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><15f>: Abbrev Number: 8 (DW_TAG_member)
-    <160>   DW_AT_name        : (indirect string, offset: 0x208): dxferp	
-    <164>   DW_AT_decl_file   : 2	
-    <165>   DW_AT_decl_line   : 52	
-    <166>   DW_AT_type        : <0x6a>	
-    <16a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><16d>: Abbrev Number: 8 (DW_TAG_member)
-    <16e>   DW_AT_name        : (indirect string, offset: 0x7b): cmdp	
-    <172>   DW_AT_decl_file   : 2	
-    <173>   DW_AT_decl_line   : 54	
-    <174>   DW_AT_type        : <0x240>	
-    <178>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><17b>: Abbrev Number: 9 (DW_TAG_member)
-    <17c>   DW_AT_name        : sbp	
-    <180>   DW_AT_decl_file   : 2	
-    <181>   DW_AT_decl_line   : 55	
-    <182>   DW_AT_type        : <0x240>	
-    <186>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><189>: Abbrev Number: 8 (DW_TAG_member)
-    <18a>   DW_AT_name        : (indirect string, offset: 0xc): timeout	
-    <18e>   DW_AT_decl_file   : 2	
-    <18f>   DW_AT_decl_line   : 56	
-    <190>   DW_AT_type        : <0x47>	
-    <194>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><197>: Abbrev Number: 8 (DW_TAG_member)
-    <198>   DW_AT_name        : (indirect string, offset: 0x16c): flags	
-    <19c>   DW_AT_decl_file   : 2	
-    <19d>   DW_AT_decl_line   : 57	
-    <19e>   DW_AT_type        : <0x47>	
-    <1a2>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1a5>: Abbrev Number: 8 (DW_TAG_member)
-    <1a6>   DW_AT_name        : (indirect string, offset: 0x1f8): pack_id	
-    <1aa>   DW_AT_decl_file   : 2	
-    <1ab>   DW_AT_decl_line   : 58	
-    <1ac>   DW_AT_type        : <0x2b>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1b3>: Abbrev Number: 8 (DW_TAG_member)
-    <1b4>   DW_AT_name        : (indirect string, offset: 0x200): usr_ptr	
-    <1b8>   DW_AT_decl_file   : 2	
-    <1b9>   DW_AT_decl_line   : 59	
-    <1ba>   DW_AT_type        : <0x6a>	
-    <1be>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1c1>: Abbrev Number: 8 (DW_TAG_member)
-    <1c2>   DW_AT_name        : (indirect string, offset: 0x80): status	
-    <1c6>   DW_AT_decl_file   : 2	
-    <1c7>   DW_AT_decl_line   : 60	
-    <1c8>   DW_AT_type        : <0x39>	
-    <1cc>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1cf>: Abbrev Number: 8 (DW_TAG_member)
-    <1d0>   DW_AT_name        : (indirect string, offset: 0x249): masked_status	
-    <1d4>   DW_AT_decl_file   : 2	
-    <1d5>   DW_AT_decl_line   : 61	
-    <1d6>   DW_AT_type        : <0x39>	
-    <1da>   DW_AT_data_member_location: 2 byte block: 23 2d 	(DW_OP_plus_uconst: 45)
- <2><1dd>: Abbrev Number: 8 (DW_TAG_member)
-    <1de>   DW_AT_name        : (indirect string, offset: 0x22b): msg_status	
-    <1e2>   DW_AT_decl_file   : 2	
-    <1e3>   DW_AT_decl_line   : 62	
-    <1e4>   DW_AT_type        : <0x39>	
-    <1e8>   DW_AT_data_member_location: 2 byte block: 23 2e 	(DW_OP_plus_uconst: 46)
- <2><1eb>: Abbrev Number: 8 (DW_TAG_member)
-    <1ec>   DW_AT_name        : (indirect string, offset: 0x23f): sb_len_wr	
-    <1f0>   DW_AT_decl_file   : 2	
-    <1f1>   DW_AT_decl_line   : 63	
-    <1f2>   DW_AT_type        : <0x39>	
-    <1f6>   DW_AT_data_member_location: 2 byte block: 23 2f 	(DW_OP_plus_uconst: 47)
- <2><1f9>: Abbrev Number: 8 (DW_TAG_member)
-    <1fa>   DW_AT_name        : (indirect string, offset: 0x21f): host_status	
-    <1fe>   DW_AT_decl_file   : 2	
-    <1ff>   DW_AT_decl_line   : 64	
-    <200>   DW_AT_type        : <0x40>	
-    <204>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><207>: Abbrev Number: 8 (DW_TAG_member)
-    <208>   DW_AT_name        : (indirect string, offset: 0x90): driver_status	
-    <20c>   DW_AT_decl_file   : 2	
-    <20d>   DW_AT_decl_line   : 65	
-    <20e>   DW_AT_type        : <0x40>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 32 	(DW_OP_plus_uconst: 50)
- <2><215>: Abbrev Number: 8 (DW_TAG_member)
-    <216>   DW_AT_name        : (indirect string, offset: 0x0): resid	
-    <21a>   DW_AT_decl_file   : 2	
-    <21b>   DW_AT_decl_line   : 66	
-    <21c>   DW_AT_type        : <0x2b>	
-    <220>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><223>: Abbrev Number: 8 (DW_TAG_member)
-    <224>   DW_AT_name        : (indirect string, offset: 0x14): duration	
-    <228>   DW_AT_decl_file   : 2	
-    <229>   DW_AT_decl_line   : 67	
-    <22a>   DW_AT_type        : <0x47>	
-    <22e>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><231>: Abbrev Number: 8 (DW_TAG_member)
-    <232>   DW_AT_name        : (indirect string, offset: 0x130): info	
-    <236>   DW_AT_decl_file   : 2	
-    <237>   DW_AT_decl_line   : 68	
-    <238>   DW_AT_type        : <0x47>	
-    <23c>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><23f>: Abbrev Number: 0
- <1><240>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <241>   DW_AT_byte_size   : 4	
-    <242>   DW_AT_type        : <0x39>	
- <1><246>: Abbrev Number: 12 (DW_TAG_typedef)
-    <247>   DW_AT_name        : (indirect string, offset: 0x146): struct_sg_io_hdr	
-    <24b>   DW_AT_decl_file   : 3	
-    <24c>   DW_AT_decl_line   : 37	
-    <24d>   DW_AT_type        : <0xff>	
- <1><251>: Abbrev Number: 13 (DW_TAG_variable)
-    <252>   DW_AT_name        : (indirect string, offset: 0x11f): current_wordsize	
-    <256>   DW_AT_decl_file   : 4	
-    <257>   DW_AT_decl_line   : 757	
-    <259>   DW_AT_type        : <0x47>	
-    <25d>   DW_AT_external    : 1	
-    <25e>   DW_AT_declaration : 1	
- <1><25f>: Abbrev Number: 13 (DW_TAG_variable)
-    <260>   DW_AT_name        : (indirect string, offset: 0x108): sysent	
-    <264>   DW_AT_decl_file   : 4	
-    <265>   DW_AT_decl_line   : 892	
-    <267>   DW_AT_type        : <0xed>	
-    <26b>   DW_AT_external    : 1	
-    <26c>   DW_AT_declaration : 1	
- <1><26d>: Abbrev Number: 13 (DW_TAG_variable)
-    <26e>   DW_AT_name        : (indirect string, offset: 0x1b6): nsyscalls	
-    <272>   DW_AT_decl_file   : 4	
-    <273>   DW_AT_decl_line   : 903	
-    <275>   DW_AT_type        : <0x47>	
-    <279>   DW_AT_external    : 1	
-    <27a>   DW_AT_declaration : 1	
- <1><27b>: Abbrev Number: 14 (DW_TAG_variable)
-    <27c>   DW_AT_name        : (indirect string, offset: 0x135): mpers_target_var	
-    <280>   DW_AT_decl_file   : 3	
-    <281>   DW_AT_decl_line   : 41	
-    <282>   DW_AT_type        : <0x246>	
-    <286>   DW_AT_external    : 1	
-    <287>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><28d>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_sg_io_hdr.d2 b/mpers-mx32/struct_sg_io_hdr.d2
deleted file mode 100644
index b0dc22a..0000000
--- a/mpers-mx32/struct_sg_io_hdr.d2
+++ /dev/null
@@ -1,343 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0xa8): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x20f): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1dd): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xb4): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x68): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x15f): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x260): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x236): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf6): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1ca): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x180): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x108): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x219): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9e): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x257): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x87): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x172): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x6): _Bool
-<1><ff>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc2): sg_io_hdr
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 44
-DW_AT_sibling     : <0x240>
-<2><10b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1eb): interface_id
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><119>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10f): dxfer_direction
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><127>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x157): cmd_len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><135>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c0): mx_sb_len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
-<2><143>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xea): iovec_count
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><151>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d3): dxfer_len
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><15f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x208): dxferp
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><16d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7b): cmdp
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x240>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><17b>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sbp
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x240>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><189>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc): timeout
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><197>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16c): flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1a5>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f8): pack_id
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 58
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1b3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x200): usr_ptr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1c1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x80): status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 60
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1cf>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x249): masked_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2d 	(DW_OP_plus_uconst: 45)
-<2><1dd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22b): msg_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 62
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2e 	(DW_OP_plus_uconst: 46)
-<2><1eb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23f): sb_len_wr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 63
-DW_AT_type        : <0x39>
-DW_AT_data_member_location: 2 byte block: 23 2f 	(DW_OP_plus_uconst: 47)
-<2><1f9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21f): host_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 64
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><207>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x90): driver_status
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 65
-DW_AT_type        : <0x40>
-DW_AT_data_member_location: 2 byte block: 23 32 	(DW_OP_plus_uconst: 50)
-<2><215>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): resid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 66
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<2><223>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14): duration
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 67
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><231>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x130): info
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 68
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<1><240>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x39>
-<1><246>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x146): struct_sg_io_hdr
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0xff>
-<1><251>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11f): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><25f>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x108): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><26d>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b6): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><27b>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x135): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x246>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_sg_req_info.d1 b/mpers-mx32/struct_sg_req_info.d1
deleted file mode 100644
index 64e80e7..0000000
--- a/mpers-mx32/struct_sg_req_info.d1
+++ /dev/null
@@ -1,217 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1c0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0xf): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xf8): mpers-mx32/struct_sg_req_info.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x14f): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1e6): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1c4): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x19a): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xb4): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5a): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x12f): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x9d): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1d5): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xce): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x191): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x14a): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0xe0): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x118): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x93): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x1f2): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x8a): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x13c): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><ff>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <100>   DW_AT_name        : (indirect string, offset: 0x1b8): sg_req_info	
-    <104>   DW_AT_byte_size   : 20	
-    <105>   DW_AT_decl_file   : 2	
-    <106>   DW_AT_decl_line   : 120	
-    <107>   DW_AT_sibling     : <0x17c>	
- <2><10b>: Abbrev Number: 8 (DW_TAG_member)
-    <10c>   DW_AT_name        : (indirect string, offset: 0x6d): req_state	
-    <110>   DW_AT_decl_file   : 2	
-    <111>   DW_AT_decl_line   : 121	
-    <112>   DW_AT_type        : <0x6c>	
-    <116>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><119>: Abbrev Number: 8 (DW_TAG_member)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x1ce): orphan	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 122	
-    <120>   DW_AT_type        : <0x6c>	
-    <124>   DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
- <2><127>: Abbrev Number: 8 (DW_TAG_member)
-    <128>   DW_AT_name        : (indirect string, offset: 0xc2): sg_io_owned	
-    <12c>   DW_AT_decl_file   : 2	
-    <12d>   DW_AT_decl_line   : 123	
-    <12e>   DW_AT_type        : <0x6c>	
-    <132>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><135>: Abbrev Number: 8 (DW_TAG_member)
-    <136>   DW_AT_name        : (indirect string, offset: 0x1de): problem	
-    <13a>   DW_AT_decl_file   : 2	
-    <13b>   DW_AT_decl_line   : 124	
-    <13c>   DW_AT_type        : <0x6c>	
-    <140>   DW_AT_data_member_location: 2 byte block: 23 3 	(DW_OP_plus_uconst: 3)
- <2><143>: Abbrev Number: 8 (DW_TAG_member)
-    <144>   DW_AT_name        : (indirect string, offset: 0x1a8): pack_id	
-    <148>   DW_AT_decl_file   : 2	
-    <149>   DW_AT_decl_line   : 125	
-    <14a>   DW_AT_type        : <0x2b>	
-    <14e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><151>: Abbrev Number: 8 (DW_TAG_member)
-    <152>   DW_AT_name        : (indirect string, offset: 0x1b0): usr_ptr	
-    <156>   DW_AT_decl_file   : 2	
-    <157>   DW_AT_decl_line   : 126	
-    <158>   DW_AT_type        : <0x6a>	
-    <15c>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><15f>: Abbrev Number: 8 (DW_TAG_member)
-    <160>   DW_AT_name        : (indirect string, offset: 0x6): duration	
-    <164>   DW_AT_decl_file   : 2	
-    <165>   DW_AT_decl_line   : 127	
-    <166>   DW_AT_type        : <0x47>	
-    <16a>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><16d>: Abbrev Number: 8 (DW_TAG_member)
-    <16e>   DW_AT_name        : (indirect string, offset: 0x18a): unused	
-    <172>   DW_AT_decl_file   : 2	
-    <173>   DW_AT_decl_line   : 129	
-    <174>   DW_AT_type        : <0x2b>	
-    <178>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><17b>: Abbrev Number: 0
- <1><17c>: Abbrev Number: 12 (DW_TAG_typedef)
-    <17d>   DW_AT_name        : (indirect string, offset: 0x77): struct_sg_req_info	
-    <181>   DW_AT_decl_file   : 3	
-    <182>   DW_AT_decl_line   : 37	
-    <183>   DW_AT_type        : <0xff>	
- <1><187>: Abbrev Number: 13 (DW_TAG_variable)
-    <188>   DW_AT_name        : (indirect string, offset: 0xe7): current_wordsize	
-    <18c>   DW_AT_decl_file   : 4	
-    <18d>   DW_AT_decl_line   : 757	
-    <18f>   DW_AT_type        : <0x47>	
-    <193>   DW_AT_external    : 1	
-    <194>   DW_AT_declaration : 1	
- <1><195>: Abbrev Number: 13 (DW_TAG_variable)
-    <196>   DW_AT_name        : (indirect string, offset: 0xe0): sysent	
-    <19a>   DW_AT_decl_file   : 4	
-    <19b>   DW_AT_decl_line   : 892	
-    <19d>   DW_AT_type        : <0xed>	
-    <1a1>   DW_AT_external    : 1	
-    <1a2>   DW_AT_declaration : 1	
- <1><1a3>: Abbrev Number: 13 (DW_TAG_variable)
-    <1a4>   DW_AT_name        : (indirect string, offset: 0x180): nsyscalls	
-    <1a8>   DW_AT_decl_file   : 4	
-    <1a9>   DW_AT_decl_line   : 903	
-    <1ab>   DW_AT_type        : <0x47>	
-    <1af>   DW_AT_external    : 1	
-    <1b0>   DW_AT_declaration : 1	
- <1><1b1>: Abbrev Number: 14 (DW_TAG_variable)
-    <1b2>   DW_AT_name        : (indirect string, offset: 0x11e): mpers_target_var	
-    <1b6>   DW_AT_decl_file   : 3	
-    <1b7>   DW_AT_decl_line   : 41	
-    <1b8>   DW_AT_type        : <0x17c>	
-    <1bc>   DW_AT_external    : 1	
-    <1bd>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><1c3>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_sg_req_info.d2 b/mpers-mx32/struct_sg_req_info.d2
deleted file mode 100644
index eef79c9..0000000
--- a/mpers-mx32/struct_sg_req_info.d2
+++ /dev/null
@@ -1,241 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1e6): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c4): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19a): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xb4): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5a): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12f): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x9d): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d5): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xce): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x191): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x14a): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe0): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x118): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x93): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f2): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8a): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x13c): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><ff>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x1b8): sg_req_info
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 120
-DW_AT_sibling     : <0x17c>
-<2><10b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6d): req_state
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 121
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><119>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ce): orphan
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 122
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 1 	(DW_OP_plus_uconst: 1)
-<2><127>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc2): sg_io_owned
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 123
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><135>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1de): problem
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 124
-DW_AT_type        : <0x6c>
-DW_AT_data_member_location: 2 byte block: 23 3 	(DW_OP_plus_uconst: 3)
-<2><143>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a8): pack_id
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 125
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><151>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b0): usr_ptr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 126
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><15f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6): duration
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 127
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><16d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18a): unused
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 129
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><17c>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x77): struct_sg_req_info
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0xff>
-<1><187>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe7): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><195>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe0): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a3>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x180): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1b1>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11e): mpers_target_var
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x17c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/struct_sigevent.d1 b/mpers-mx32/struct_sigevent.d1
deleted file mode 100644
index 55d7558..0000000
--- a/mpers-mx32/struct_sigevent.d1
+++ /dev/null
@@ -1,240 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1e5 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x14): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1ab): mpers-mx32/struct_sigevent.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x134): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1de): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x182): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x0): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xac): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x114): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x85): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1c8): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x102): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x179): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x12f): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xc7): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0xdf): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x7b): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x1ea): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x72): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x121): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0xe): _Bool	
- <1><fd>: Abbrev Number: 12 (DW_TAG_union_type)
-    <fe>   DW_AT_byte_size   : 4	
-    <ff>   DW_AT_decl_file   : 2	
-    <100>   DW_AT_decl_line   : 32	
-    <101>   DW_AT_sibling     : <0x11c>	
- <2><105>: Abbrev Number: 13 (DW_TAG_member)
-    <106>   DW_AT_name        : (indirect string, offset: 0x18c): sival_int	
-    <10a>   DW_AT_decl_file   : 2	
-    <10b>   DW_AT_decl_line   : 33	
-    <10c>   DW_AT_type        : <0x2b>	
- <2><110>: Abbrev Number: 13 (DW_TAG_member)
-    <111>   DW_AT_name        : (indirect string, offset: 0x1fc): sival_ptr	
-    <115>   DW_AT_decl_file   : 2	
-    <116>   DW_AT_decl_line   : 34	
-    <117>   DW_AT_type        : <0x5c>	
- <2><11b>: Abbrev Number: 0
- <1><11c>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <11d>   DW_AT_byte_size   : 8	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 40	
-    <120>   DW_AT_sibling     : <0x141>	
- <2><124>: Abbrev Number: 7 (DW_TAG_member)
-    <125>   DW_AT_name        : (indirect string, offset: 0x1f3): function	
-    <129>   DW_AT_decl_file   : 2	
-    <12a>   DW_AT_decl_line   : 41	
-    <12b>   DW_AT_type        : <0x5c>	
-    <12f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><132>: Abbrev Number: 7 (DW_TAG_member)
-    <133>   DW_AT_name        : (indirect string, offset: 0x16f): attribute	
-    <137>   DW_AT_decl_file   : 2	
-    <138>   DW_AT_decl_line   : 42	
-    <139>   DW_AT_type        : <0x5c>	
-    <13d>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><140>: Abbrev Number: 0
- <1><141>: Abbrev Number: 12 (DW_TAG_union_type)
-    <142>   DW_AT_byte_size   : 8	
-    <143>   DW_AT_decl_file   : 2	
-    <144>   DW_AT_decl_line   : 38	
-    <145>   DW_AT_sibling     : <0x160>	
- <2><149>: Abbrev Number: 15 (DW_TAG_member)
-    <14a>   DW_AT_name        : tid	
-    <14e>   DW_AT_decl_file   : 2	
-    <14f>   DW_AT_decl_line   : 39	
-    <150>   DW_AT_type        : <0x2b>	
- <2><154>: Abbrev Number: 13 (DW_TAG_member)
-    <155>   DW_AT_name        : (indirect string, offset: 0x1d1): sigev_thread	
-    <159>   DW_AT_decl_file   : 2	
-    <15a>   DW_AT_decl_line   : 43	
-    <15b>   DW_AT_type        : <0x11c>	
- <2><15f>: Abbrev Number: 0
- <1><160>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <161>   DW_AT_byte_size   : 20	
-    <162>   DW_AT_decl_file   : 2	
-    <163>   DW_AT_decl_line   : 31	
-    <164>   DW_AT_sibling     : <0x1a1>	
- <2><168>: Abbrev Number: 7 (DW_TAG_member)
-    <169>   DW_AT_name        : (indirect string, offset: 0x196): sigev_value	
-    <16d>   DW_AT_decl_file   : 2	
-    <16e>   DW_AT_decl_line   : 35	
-    <16f>   DW_AT_type        : <0xfd>	
-    <173>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><176>: Abbrev Number: 7 (DW_TAG_member)
-    <177>   DW_AT_name        : (indirect string, offset: 0xe5): sigev_signo	
-    <17b>   DW_AT_decl_file   : 2	
-    <17c>   DW_AT_decl_line   : 36	
-    <17d>   DW_AT_type        : <0x2b>	
-    <181>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><184>: Abbrev Number: 7 (DW_TAG_member)
-    <185>   DW_AT_name        : (indirect string, offset: 0xba): sigev_notify	
-    <189>   DW_AT_decl_file   : 2	
-    <18a>   DW_AT_decl_line   : 37	
-    <18b>   DW_AT_type        : <0x2b>	
-    <18f>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><192>: Abbrev Number: 7 (DW_TAG_member)
-    <193>   DW_AT_name        : (indirect string, offset: 0x1a2): sigev_un	
-    <197>   DW_AT_decl_file   : 2	
-    <198>   DW_AT_decl_line   : 44	
-    <199>   DW_AT_type        : <0x141>	
-    <19d>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1a0>: Abbrev Number: 0
- <1><1a1>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x9c): struct_sigevent	
-    <1a6>   DW_AT_decl_file   : 2	
-    <1a7>   DW_AT_decl_line   : 45	
-    <1a8>   DW_AT_type        : <0x160>	
- <1><1ac>: Abbrev Number: 16 (DW_TAG_variable)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0xce): current_wordsize	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 757	
-    <1b4>   DW_AT_type        : <0x47>	
-    <1b8>   DW_AT_external    : 1	
-    <1b9>   DW_AT_declaration : 1	
- <1><1ba>: Abbrev Number: 16 (DW_TAG_variable)
-    <1bb>   DW_AT_name        : (indirect string, offset: 0xc7): sysent	
-    <1bf>   DW_AT_decl_file   : 3	
-    <1c0>   DW_AT_decl_line   : 892	
-    <1c2>   DW_AT_type        : <0xeb>	
-    <1c6>   DW_AT_external    : 1	
-    <1c7>   DW_AT_declaration : 1	
- <1><1c8>: Abbrev Number: 16 (DW_TAG_variable)
-    <1c9>   DW_AT_name        : (indirect string, offset: 0x165): nsyscalls	
-    <1cd>   DW_AT_decl_file   : 3	
-    <1ce>   DW_AT_decl_line   : 903	
-    <1d0>   DW_AT_type        : <0x47>	
-    <1d4>   DW_AT_external    : 1	
-    <1d5>   DW_AT_declaration : 1	
- <1><1d6>: Abbrev Number: 17 (DW_TAG_variable)
-    <1d7>   DW_AT_name        : (indirect string, offset: 0xf1): mpers_target_var	
-    <1db>   DW_AT_decl_file   : 4	
-    <1dc>   DW_AT_decl_line   : 32	
-    <1dd>   DW_AT_type        : <0x1a1>	
-    <1e1>   DW_AT_external    : 1	
-    <1e2>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><1e8>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_sigevent.d2 b/mpers-mx32/struct_sigevent.d2
deleted file mode 100644
index 7b9ac48..0000000
--- a/mpers-mx32/struct_sigevent.d2
+++ /dev/null
@@ -1,265 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1de): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x182): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x0): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xac): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x114): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x85): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c8): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x102): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x179): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x12f): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc7): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xdf): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7b): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ea): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x72): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x121): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xe): _Bool
-<1><fd>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_sibling     : <0x11c>
-<2><105>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18c): sival_int
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x2b>
-<2><110>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fc): sival_ptr
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x5c>
-<1><11c>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 40
-DW_AT_sibling     : <0x141>
-<2><124>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f3): function
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><132>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16f): attribute
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x5c>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><141>
-Abbrev Number: 12 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 38
-DW_AT_sibling     : <0x160>
-<2><149>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : tid
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x2b>
-<2><154>
-Abbrev Number: 13 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d1): sigev_thread
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x11c>
-<1><160>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 31
-DW_AT_sibling     : <0x1a1>
-<2><168>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x196): sigev_value
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xfd>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><176>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe5): sigev_signo
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><184>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xba): sigev_notify
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><192>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a2): sigev_un
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x141>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1a1>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x9c): struct_sigevent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x160>
-<1><1ac>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xce): current_wordsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1ba>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc7): sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1c8>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x165): nsyscalls
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1d6>
-Abbrev Number: 17 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf1): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x1a1>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/struct_stat.c b/mpers-mx32/struct_stat.c
index 80d1412..e10cfd9 100644
--- a/mpers-mx32/struct_stat.c
+++ b/mpers-mx32/struct_stat.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
diff --git a/mpers-mx32/struct_stat.d1 b/mpers-mx32/struct_stat.d1
deleted file mode 100644
index 1f7173b..0000000
--- a/mpers-mx32/struct_stat.d1
+++ /dev/null
@@ -1,302 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x286 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x40): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x147): mpers-mx32/struct_stat.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x243): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x237): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1f9): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1eb): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xf7): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x8b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x184): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xd9): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x220): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x10f): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1d4): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x19f): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xa6): __kernel_long_t	
-    <81>   DW_AT_decl_file   : 1	
-    <82>   DW_AT_decl_line   : 13	
-    <83>   DW_AT_type        : <0x32>	
- <1><87>: Abbrev Number: 6 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x1b2): __kernel_ulong_t	
-    <8c>   DW_AT_decl_file   : 1	
-    <8d>   DW_AT_decl_line   : 14	
-    <8e>   DW_AT_type        : <0x4e>	
- <1><92>: Abbrev Number: 6 (DW_TAG_typedef)
-    <93>   DW_AT_name        : (indirect string, offset: 0x229): kernel_long_t	
-    <97>   DW_AT_decl_file   : 2	
-    <98>   DW_AT_decl_line   : 35	
-    <99>   DW_AT_type        : <0x7c>	
- <1><9d>: Abbrev Number: 6 (DW_TAG_typedef)
-    <9e>   DW_AT_name        : (indirect string, offset: 0x211): kernel_ulong_t	
-    <a2>   DW_AT_decl_file   : 2	
-    <a3>   DW_AT_decl_line   : 36	
-    <a4>   DW_AT_type        : <0x87>	
- <1><a8>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <a9>   DW_AT_name        : (indirect string, offset: 0x129): sysent	
-    <ad>   DW_AT_byte_size   : 20	
-    <ae>   DW_AT_decl_file   : 3	
-    <af>   DW_AT_decl_line   : 4	
-    <b0>   DW_AT_sibling     : <0xfb>	
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x141): nargs	
-    <b9>   DW_AT_decl_file   : 3	
-    <ba>   DW_AT_decl_line   : 5	
-    <bb>   DW_AT_type        : <0x47>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x160): sys_flags	
-    <c7>   DW_AT_decl_file   : 3	
-    <c8>   DW_AT_decl_line   : 6	
-    <c9>   DW_AT_type        : <0x2b>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d0>: Abbrev Number: 9 (DW_TAG_member)
-    <d1>   DW_AT_name        : sen	
-    <d5>   DW_AT_decl_file   : 3	
-    <d6>   DW_AT_decl_line   : 7	
-    <d7>   DW_AT_type        : <0x2b>	
-    <db>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><de>: Abbrev Number: 8 (DW_TAG_member)
-    <df>   DW_AT_name        : (indirect string, offset: 0x27b): sys_func	
-    <e3>   DW_AT_decl_file   : 3	
-    <e4>   DW_AT_decl_line   : 8	
-    <e5>   DW_AT_type        : <0x106>	
-    <e9>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><ec>: Abbrev Number: 8 (DW_TAG_member)
-    <ed>   DW_AT_name        : (indirect string, offset: 0xb6): sys_name	
-    <f1>   DW_AT_decl_file   : 3	
-    <f2>   DW_AT_decl_line   : 9	
-    <f3>   DW_AT_type        : <0x71>	
-    <f7>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><fa>: Abbrev Number: 0
- <1><fb>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <fc>   DW_AT_type        : <0x2b>	
-    <100>   DW_AT_sibling     : <0x106>	
- <2><104>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><105>: Abbrev Number: 0
- <1><106>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <107>   DW_AT_byte_size   : 4	
-    <108>   DW_AT_type        : <0xfb>	
- <1><10c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <10d>   DW_AT_name        : (indirect string, offset: 0x191): struct_sysent	
-    <111>   DW_AT_decl_file   : 3	
-    <112>   DW_AT_decl_line   : 10	
-    <113>   DW_AT_type        : <0xa8>	
- <1><117>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <118>   DW_AT_byte_size   : 4	
-    <119>   DW_AT_type        : <0x11d>	
- <1><11d>: Abbrev Number: 5 (DW_TAG_const_type)
-    <11e>   DW_AT_type        : <0x10c>	
- <1><122>: Abbrev Number: 2 (DW_TAG_base_type)
-    <123>   DW_AT_byte_size   : 1	
-    <124>   DW_AT_encoding    : 2	(boolean)
-    <125>   DW_AT_name        : (indirect string, offset: 0x25): _Bool	
- <1><129>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <12a>   DW_AT_name        : (indirect string, offset: 0x17): stat	
-    <12e>   DW_AT_byte_size   : 144	
-    <12f>   DW_AT_decl_file   : 4	
-    <130>   DW_AT_decl_line   : 16	
-    <131>   DW_AT_sibling     : <0x232>	
- <2><135>: Abbrev Number: 8 (DW_TAG_member)
-    <136>   DW_AT_name        : (indirect string, offset: 0x203): st_dev	
-    <13a>   DW_AT_decl_file   : 4	
-    <13b>   DW_AT_decl_line   : 17	
-    <13c>   DW_AT_type        : <0x9d>	
-    <140>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><143>: Abbrev Number: 8 (DW_TAG_member)
-    <144>   DW_AT_name        : (indirect string, offset: 0xbf): st_ino	
-    <148>   DW_AT_decl_file   : 4	
-    <149>   DW_AT_decl_line   : 18	
-    <14a>   DW_AT_type        : <0x9d>	
-    <14e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><151>: Abbrev Number: 8 (DW_TAG_member)
-    <152>   DW_AT_name        : (indirect string, offset: 0x37): st_nlink	
-    <156>   DW_AT_decl_file   : 4	
-    <157>   DW_AT_decl_line   : 19	
-    <158>   DW_AT_type        : <0x9d>	
-    <15c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><15f>: Abbrev Number: 8 (DW_TAG_member)
-    <160>   DW_AT_name        : (indirect string, offset: 0x121): st_mode	
-    <164>   DW_AT_decl_file   : 4	
-    <165>   DW_AT_decl_line   : 20	
-    <166>   DW_AT_type        : <0x47>	
-    <16a>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><16d>: Abbrev Number: 8 (DW_TAG_member)
-    <16e>   DW_AT_name        : (indirect string, offset: 0x1cd): st_uid	
-    <172>   DW_AT_decl_file   : 4	
-    <173>   DW_AT_decl_line   : 21	
-    <174>   DW_AT_type        : <0x47>	
-    <178>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><17b>: Abbrev Number: 8 (DW_TAG_member)
-    <17c>   DW_AT_name        : (indirect string, offset: 0x20a): st_gid	
-    <180>   DW_AT_decl_file   : 4	
-    <181>   DW_AT_decl_line   : 22	
-    <182>   DW_AT_type        : <0x47>	
-    <186>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><189>: Abbrev Number: 8 (DW_TAG_member)
-    <18a>   DW_AT_name        : (indirect string, offset: 0x274): pad0__	
-    <18e>   DW_AT_decl_file   : 4	
-    <18f>   DW_AT_decl_line   : 23	
-    <190>   DW_AT_type        : <0x47>	
-    <194>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><197>: Abbrev Number: 8 (DW_TAG_member)
-    <198>   DW_AT_name        : (indirect string, offset: 0xd1): st_rdev	
-    <19c>   DW_AT_decl_file   : 4	
-    <19d>   DW_AT_decl_line   : 24	
-    <19e>   DW_AT_type        : <0x9d>	
-    <1a2>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1a5>: Abbrev Number: 8 (DW_TAG_member)
-    <1a6>   DW_AT_name        : (indirect string, offset: 0x9e): st_size	
-    <1aa>   DW_AT_decl_file   : 4	
-    <1ab>   DW_AT_decl_line   : 25	
-    <1ac>   DW_AT_type        : <0x92>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1b3>: Abbrev Number: 8 (DW_TAG_member)
-    <1b4>   DW_AT_name        : (indirect string, offset: 0xc6): st_blksize	
-    <1b8>   DW_AT_decl_file   : 4	
-    <1b9>   DW_AT_decl_line   : 26	
-    <1ba>   DW_AT_type        : <0x92>	
-    <1be>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1c1>: Abbrev Number: 8 (DW_TAG_member)
-    <1c2>   DW_AT_name        : (indirect string, offset: 0x105): st_blocks	
-    <1c6>   DW_AT_decl_file   : 4	
-    <1c7>   DW_AT_decl_line   : 27	
-    <1c8>   DW_AT_type        : <0x92>	
-    <1cc>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1cf>: Abbrev Number: 8 (DW_TAG_member)
-    <1d0>   DW_AT_name        : (indirect string, offset: 0x1c): st_atime	
-    <1d4>   DW_AT_decl_file   : 4	
-    <1d5>   DW_AT_decl_line   : 28	
-    <1d6>   DW_AT_type        : <0x9d>	
-    <1da>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1dd>: Abbrev Number: 8 (DW_TAG_member)
-    <1de>   DW_AT_name        : (indirect string, offset: 0x1dd): st_atime_nsec	
-    <1e2>   DW_AT_decl_file   : 4	
-    <1e3>   DW_AT_decl_line   : 29	
-    <1e4>   DW_AT_type        : <0x9d>	
-    <1e8>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><1eb>: Abbrev Number: 8 (DW_TAG_member)
-    <1ec>   DW_AT_name        : (indirect string, offset: 0x0): st_mtime	
-    <1f0>   DW_AT_decl_file   : 4	
-    <1f1>   DW_AT_decl_line   : 30	
-    <1f2>   DW_AT_type        : <0x9d>	
-    <1f6>   DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
- <2><1f9>: Abbrev Number: 8 (DW_TAG_member)
-    <1fa>   DW_AT_name        : (indirect string, offset: 0x1a4): st_mtime_nsec	
-    <1fe>   DW_AT_decl_file   : 4	
-    <1ff>   DW_AT_decl_line   : 31	
-    <200>   DW_AT_type        : <0x9d>	
-    <204>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><207>: Abbrev Number: 8 (DW_TAG_member)
-    <208>   DW_AT_name        : (indirect string, offset: 0x17b): st_ctime	
-    <20c>   DW_AT_decl_file   : 4	
-    <20d>   DW_AT_decl_line   : 32	
-    <20e>   DW_AT_type        : <0x9d>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><215>: Abbrev Number: 8 (DW_TAG_member)
-    <216>   DW_AT_name        : (indirect string, offset: 0x9): st_ctime_nsec	
-    <21a>   DW_AT_decl_file   : 4	
-    <21b>   DW_AT_decl_line   : 33	
-    <21c>   DW_AT_type        : <0x9d>	
-    <220>   DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
- <2><223>: Abbrev Number: 8 (DW_TAG_member)
-    <224>   DW_AT_name        : (indirect string, offset: 0xf0): pad1__	
-    <228>   DW_AT_decl_file   : 4	
-    <229>   DW_AT_decl_line   : 34	
-    <22a>   DW_AT_type        : <0x232>	
-    <22e>   DW_AT_data_member_location: 2 byte block: 23 78 	(DW_OP_plus_uconst: 120)
- <2><231>: Abbrev Number: 0
- <1><232>: Abbrev Number: 12 (DW_TAG_array_type)
-    <233>   DW_AT_type        : <0x92>	
-    <237>   DW_AT_sibling     : <0x242>	
- <2><23b>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <23c>   DW_AT_type        : <0x63>	
-    <240>   DW_AT_upper_bound : 2	
- <2><241>: Abbrev Number: 0
- <1><242>: Abbrev Number: 6 (DW_TAG_typedef)
-    <243>   DW_AT_name        : (indirect string, offset: 0x2b): struct_stat	
-    <247>   DW_AT_decl_file   : 5	
-    <248>   DW_AT_decl_line   : 59	
-    <249>   DW_AT_type        : <0x129>	
- <1><24d>: Abbrev Number: 14 (DW_TAG_variable)
-    <24e>   DW_AT_name        : (indirect string, offset: 0x130): current_wordsize	
-    <252>   DW_AT_decl_file   : 6	
-    <253>   DW_AT_decl_line   : 757	
-    <255>   DW_AT_type        : <0x47>	
-    <259>   DW_AT_external    : 1	
-    <25a>   DW_AT_declaration : 1	
- <1><25b>: Abbrev Number: 14 (DW_TAG_variable)
-    <25c>   DW_AT_name        : (indirect string, offset: 0x129): sysent	
-    <260>   DW_AT_decl_file   : 6	
-    <261>   DW_AT_decl_line   : 892	
-    <263>   DW_AT_type        : <0x117>	
-    <267>   DW_AT_external    : 1	
-    <268>   DW_AT_declaration : 1	
- <1><269>: Abbrev Number: 14 (DW_TAG_variable)
-    <26a>   DW_AT_name        : (indirect string, offset: 0x1c3): nsyscalls	
-    <26e>   DW_AT_decl_file   : 6	
-    <26f>   DW_AT_decl_line   : 903	
-    <271>   DW_AT_type        : <0x47>	
-    <275>   DW_AT_external    : 1	
-    <276>   DW_AT_declaration : 1	
- <1><277>: Abbrev Number: 15 (DW_TAG_variable)
-    <278>   DW_AT_name        : (indirect string, offset: 0x16a): mpers_target_var	
-    <27c>   DW_AT_decl_file   : 5	
-    <27d>   DW_AT_decl_line   : 61	
-    <27e>   DW_AT_type        : <0x242>	
-    <282>   DW_AT_external    : 1	
-    <283>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><289>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_stat.d2 b/mpers-mx32/struct_stat.d2
deleted file mode 100644
index a05036f..0000000
--- a/mpers-mx32/struct_stat.d2
+++ /dev/null
@@ -1,340 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x237): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1f9): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1eb): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xf7): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x184): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd9): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x220): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x10f): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d4): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x19f): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xa6): __kernel_long_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 13
-DW_AT_type        : <0x32>
-<1><87>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b2): __kernel_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x4e>
-<1><92>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x229): kernel_long_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x7c>
-<1><9d>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x211): kernel_ulong_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x87>
-<1><a8>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x129): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xfb>
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x141): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x160): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d0>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><de>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x27b): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x106>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><ec>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb6): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><fb>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x106>
-<2><104>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><106>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xfb>
-<1><10c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x191): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xa8>
-<1><117>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x11d>
-<1><11d>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x10c>
-<1><122>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x25): _Bool
-<1><129>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x17): stat
-DW_AT_byte_size   : 144
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 16
-DW_AT_sibling     : <0x232>
-<2><135>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x203): st_dev
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 17
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><143>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbf): st_ino
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 18
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><151>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x37): st_nlink
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 19
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><15f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x121): st_mode
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><16d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cd): st_uid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 21
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><17b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x20a): st_gid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 22
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><189>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x274): pad0__
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><197>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd1): st_rdev
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 24
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1a5>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9e): st_size
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1b3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc6): st_blksize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1c1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x105): st_blocks
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><1cf>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c): st_atime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><1dd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1dd): st_atime_nsec
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<2><1eb>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): st_mtime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
-<2><1f9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a4): st_mtime_nsec
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><207>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17b): st_ctime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<2><215>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9): st_ctime_nsec
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
-<2><223>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf0): pad1__
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x232>
-DW_AT_data_member_location: 2 byte block: 23 78 	(DW_OP_plus_uconst: 120)
-<1><232>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x92>
-DW_AT_sibling     : <0x242>
-<2><23b>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 2
-<1><242>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2b): struct_stat
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x129>
-<1><24d>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x130): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><25b>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x129): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x117>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><269>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1c3): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><277>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x16a): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 61
-DW_AT_type        : <0x242>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_stat64.c b/mpers-mx32/struct_stat64.c
index cfececc..0f0480b 100644
--- a/mpers-mx32/struct_stat64.c
+++ b/mpers-mx32/struct_stat64.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
diff --git a/mpers-mx32/struct_stat64.d1 b/mpers-mx32/struct_stat64.d1
deleted file mode 100644
index 9e12e5f..0000000
--- a/mpers-mx32/struct_stat64.d1
+++ /dev/null
@@ -1,165 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x149 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x28): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x18c): mpers-mx32/struct_stat64.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0xbe): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x152): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x182): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x124): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xef): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x13f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x15e): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xa7): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x102): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x84): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x16b): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0xfd): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x132): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x139): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0x114): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x10b): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x7): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x10): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x11e): _Bool	
- <1><fd>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x0): stat64	
-    <102>   DW_AT_byte_size   : 0	
-    <103>   DW_AT_decl_file   : 2	
-    <104>   DW_AT_decl_line   : 54	
- <1><105>: Abbrev Number: 11 (DW_TAG_typedef)
-    <106>   DW_AT_name        : (indirect string, offset: 0x174): struct_stat64	
-    <10a>   DW_AT_decl_file   : 2	
-    <10b>   DW_AT_decl_line   : 57	
-    <10c>   DW_AT_type        : <0xfd>	
- <1><110>: Abbrev Number: 13 (DW_TAG_variable)
-    <111>   DW_AT_name        : (indirect string, offset: 0x96): current_wordsize	
-    <115>   DW_AT_decl_file   : 3	
-    <116>   DW_AT_decl_line   : 757	
-    <118>   DW_AT_type        : <0x47>	
-    <11c>   DW_AT_external    : 1	
-    <11d>   DW_AT_declaration : 1	
- <1><11e>: Abbrev Number: 13 (DW_TAG_variable)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x132): sysent	
-    <123>   DW_AT_decl_file   : 3	
-    <124>   DW_AT_decl_line   : 892	
-    <126>   DW_AT_type        : <0xeb>	
-    <12a>   DW_AT_external    : 1	
-    <12b>   DW_AT_declaration : 1	
- <1><12c>: Abbrev Number: 13 (DW_TAG_variable)
-    <12d>   DW_AT_name        : (indirect string, offset: 0x1e): nsyscalls	
-    <131>   DW_AT_decl_file   : 3	
-    <132>   DW_AT_decl_line   : 903	
-    <134>   DW_AT_type        : <0x47>	
-    <138>   DW_AT_external    : 1	
-    <139>   DW_AT_declaration : 1	
- <1><13a>: Abbrev Number: 14 (DW_TAG_variable)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x73): mpers_target_var	
-    <13f>   DW_AT_decl_file   : 2	
-    <140>   DW_AT_decl_line   : 59	
-    <141>   DW_AT_type        : <0x105>	
-    <145>   DW_AT_external    : 1	
-    <146>   DW_AT_location    : 5 byte block: 3 1 0 0 0 	(DW_OP_addr: 1)
- <1><14c>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_stat64.d2 b/mpers-mx32/struct_stat64.d2
deleted file mode 100644
index 746114e..0000000
--- a/mpers-mx32/struct_stat64.d2
+++ /dev/null
@@ -1,181 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x152): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x182): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x124): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xef): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x13f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x15e): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa7): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x102): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x84): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x16b): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0xfd): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x132): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x139): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x114): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10b): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x10): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x11e): _Bool
-<1><fd>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): stat64
-DW_AT_byte_size   : 0
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 54
-<1><105>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x174): struct_stat64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 57
-DW_AT_type        : <0xfd>
-<1><110>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x96): current_wordsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><11e>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x132): sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><12c>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1e): nsyscalls
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><13a>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x73): mpers_target_var
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x105>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 1 0 0 0 	(DW_OP_addr: 1)
diff --git a/mpers-mx32/struct_statfs.d1 b/mpers-mx32/struct_statfs.d1
deleted file mode 100644
index 685802a..0000000
--- a/mpers-mx32/struct_statfs.d1
+++ /dev/null
@@ -1,270 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x238 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x25): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1f6): mpers-mx32/struct_statfs.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x185): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ea): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1d7): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1c9): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd2): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x70): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x154): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xb4): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1e1): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xea): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_array_type)
-    <64>   DW_AT_type        : <0x2b>	
-    <68>   DW_AT_sibling     : <0x73>	
- <2><6c>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <6d>   DW_AT_type        : <0x73>	
-    <71>   DW_AT_upper_bound : 1	
- <2><72>: Abbrev Number: 0
- <1><73>: Abbrev Number: 2 (DW_TAG_base_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_encoding    : 7	(unsigned)
-    <76>   DW_AT_name        : (indirect string, offset: 0x1c0): sizetype	
- <1><7a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7b>   DW_AT_byte_size   : 1	
-    <7c>   DW_AT_encoding    : 6	(signed char)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x16f): char	
- <1><81>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <82>   DW_AT_byte_size   : 4	
-    <83>   DW_AT_type        : <0x87>	
- <1><87>: Abbrev Number: 7 (DW_TAG_const_type)
-    <88>   DW_AT_type        : <0x7a>	
- <1><8c>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <8d>   DW_AT_byte_size   : 8	
-    <8e>   DW_AT_decl_file   : 2	
-    <8f>   DW_AT_decl_line   : 78	
-    <90>   DW_AT_sibling     : <0xa3>	
- <2><94>: Abbrev Number: 9 (DW_TAG_member)
-    <95>   DW_AT_name        : val	
-    <99>   DW_AT_decl_file   : 2	
-    <9a>   DW_AT_decl_line   : 79	
-    <9b>   DW_AT_type        : <0x63>	
-    <9f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a2>: Abbrev Number: 0
- <1><a3>: Abbrev Number: 10 (DW_TAG_typedef)
-    <a4>   DW_AT_name        : (indirect string, offset: 0x113): __kernel_fsid_t	
-    <a8>   DW_AT_decl_file   : 2	
-    <a9>   DW_AT_decl_line   : 80	
-    <aa>   DW_AT_type        : <0x8c>	
- <1><ae>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <af>   DW_AT_name        : (indirect string, offset: 0x104): sysent	
-    <b3>   DW_AT_byte_size   : 20	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 4	
-    <b6>   DW_AT_sibling     : <0x101>	
- <2><ba>: Abbrev Number: 12 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0x134): nargs	
-    <bf>   DW_AT_decl_file   : 1	
-    <c0>   DW_AT_decl_line   : 5	
-    <c1>   DW_AT_type        : <0x47>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c8>: Abbrev Number: 12 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0xaa): sys_flags	
-    <cd>   DW_AT_decl_file   : 1	
-    <ce>   DW_AT_decl_line   : 6	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d6>: Abbrev Number: 9 (DW_TAG_member)
-    <d7>   DW_AT_name        : sen	
-    <db>   DW_AT_decl_file   : 1	
-    <dc>   DW_AT_decl_line   : 7	
-    <dd>   DW_AT_type        : <0x2b>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><e4>: Abbrev Number: 12 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0x211): sys_func	
-    <e9>   DW_AT_decl_file   : 1	
-    <ea>   DW_AT_decl_line   : 8	
-    <eb>   DW_AT_type        : <0x10c>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><f2>: Abbrev Number: 12 (DW_TAG_member)
-    <f3>   DW_AT_name        : (indirect string, offset: 0x83): sys_name	
-    <f7>   DW_AT_decl_file   : 1	
-    <f8>   DW_AT_decl_line   : 9	
-    <f9>   DW_AT_type        : <0x81>	
-    <fd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><100>: Abbrev Number: 0
- <1><101>: Abbrev Number: 13 (DW_TAG_subroutine_type)
-    <102>   DW_AT_type        : <0x2b>	
-    <106>   DW_AT_sibling     : <0x10c>	
- <2><10a>: Abbrev Number: 14 (DW_TAG_unspecified_parameters)
- <2><10b>: Abbrev Number: 0
- <1><10c>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x101>	
- <1><112>: Abbrev Number: 10 (DW_TAG_typedef)
-    <113>   DW_AT_name        : (indirect string, offset: 0x161): struct_sysent	
-    <117>   DW_AT_decl_file   : 1	
-    <118>   DW_AT_decl_line   : 10	
-    <119>   DW_AT_type        : <0xae>	
- <1><11d>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <11e>   DW_AT_byte_size   : 4	
-    <11f>   DW_AT_type        : <0x123>	
- <1><123>: Abbrev Number: 7 (DW_TAG_const_type)
-    <124>   DW_AT_type        : <0x112>	
- <1><128>: Abbrev Number: 2 (DW_TAG_base_type)
-    <129>   DW_AT_byte_size   : 1	
-    <12a>   DW_AT_encoding    : 2	(boolean)
-    <12b>   DW_AT_name        : (indirect string, offset: 0xf): _Bool	
- <1><12f>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <130>   DW_AT_name        : (indirect string, offset: 0xcb): statfs	
-    <134>   DW_AT_byte_size   : 64	
-    <135>   DW_AT_decl_file   : 3	
-    <136>   DW_AT_decl_line   : 22	
-    <137>   DW_AT_sibling     : <0x1e4>	
- <2><13b>: Abbrev Number: 12 (DW_TAG_member)
-    <13c>   DW_AT_name        : (indirect string, offset: 0x0): f_type	
-    <140>   DW_AT_decl_file   : 3	
-    <141>   DW_AT_decl_line   : 23	
-    <142>   DW_AT_type        : <0x55>	
-    <146>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><149>: Abbrev Number: 12 (DW_TAG_member)
-    <14a>   DW_AT_name        : (indirect string, offset: 0x15): f_bsize	
-    <14e>   DW_AT_decl_file   : 3	
-    <14f>   DW_AT_decl_line   : 24	
-    <150>   DW_AT_type        : <0x55>	
-    <154>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><157>: Abbrev Number: 12 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0xa1): f_blocks	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 25	
-    <15e>   DW_AT_type        : <0x55>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><165>: Abbrev Number: 12 (DW_TAG_member)
-    <166>   DW_AT_name        : (indirect string, offset: 0x10b): f_bfree	
-    <16a>   DW_AT_decl_file   : 3	
-    <16b>   DW_AT_decl_line   : 26	
-    <16c>   DW_AT_type        : <0x55>	
-    <170>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><173>: Abbrev Number: 12 (DW_TAG_member)
-    <174>   DW_AT_name        : (indirect string, offset: 0x14b): f_bavail	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 27	
-    <17a>   DW_AT_type        : <0x55>	
-    <17e>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><181>: Abbrev Number: 12 (DW_TAG_member)
-    <182>   DW_AT_name        : (indirect string, offset: 0x7): f_files	
-    <186>   DW_AT_decl_file   : 3	
-    <187>   DW_AT_decl_line   : 28	
-    <188>   DW_AT_type        : <0x55>	
-    <18c>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><18f>: Abbrev Number: 12 (DW_TAG_member)
-    <190>   DW_AT_name        : (indirect string, offset: 0xfc): f_ffree	
-    <194>   DW_AT_decl_file   : 3	
-    <195>   DW_AT_decl_line   : 29	
-    <196>   DW_AT_type        : <0x55>	
-    <19a>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><19d>: Abbrev Number: 12 (DW_TAG_member)
-    <19e>   DW_AT_name        : (indirect string, offset: 0x9a): f_fsid	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 30	
-    <1a4>   DW_AT_type        : <0xa3>	
-    <1a8>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1ab>: Abbrev Number: 12 (DW_TAG_member)
-    <1ac>   DW_AT_name        : (indirect string, offset: 0xe0): f_namelen	
-    <1b0>   DW_AT_decl_file   : 3	
-    <1b1>   DW_AT_decl_line   : 31	
-    <1b2>   DW_AT_type        : <0x55>	
-    <1b6>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1b9>: Abbrev Number: 12 (DW_TAG_member)
-    <1ba>   DW_AT_name        : (indirect string, offset: 0x174): f_frsize	
-    <1be>   DW_AT_decl_file   : 3	
-    <1bf>   DW_AT_decl_line   : 32	
-    <1c0>   DW_AT_type        : <0x55>	
-    <1c4>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1c7>: Abbrev Number: 12 (DW_TAG_member)
-    <1c8>   DW_AT_name        : (indirect string, offset: 0x1d): f_flags	
-    <1cc>   DW_AT_decl_file   : 3	
-    <1cd>   DW_AT_decl_line   : 33	
-    <1ce>   DW_AT_type        : <0x55>	
-    <1d2>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1d5>: Abbrev Number: 12 (DW_TAG_member)
-    <1d6>   DW_AT_name        : (indirect string, offset: 0x17d): f_spare	
-    <1da>   DW_AT_decl_file   : 3	
-    <1db>   DW_AT_decl_line   : 34	
-    <1dc>   DW_AT_type        : <0x1e4>	
-    <1e0>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1e3>: Abbrev Number: 0
- <1><1e4>: Abbrev Number: 4 (DW_TAG_array_type)
-    <1e5>   DW_AT_type        : <0x55>	
-    <1e9>   DW_AT_sibling     : <0x1f4>	
- <2><1ed>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <1ee>   DW_AT_type        : <0x73>	
-    <1f2>   DW_AT_upper_bound : 3	
- <2><1f3>: Abbrev Number: 0
- <1><1f4>: Abbrev Number: 10 (DW_TAG_typedef)
-    <1f5>   DW_AT_name        : (indirect string, offset: 0x8c): struct_statfs	
-    <1f9>   DW_AT_decl_file   : 4	
-    <1fa>   DW_AT_decl_line   : 33	
-    <1fb>   DW_AT_type        : <0x12f>	
- <1><1ff>: Abbrev Number: 15 (DW_TAG_variable)
-    <200>   DW_AT_name        : (indirect string, offset: 0x123): current_wordsize	
-    <204>   DW_AT_decl_file   : 5	
-    <205>   DW_AT_decl_line   : 757	
-    <207>   DW_AT_type        : <0x47>	
-    <20b>   DW_AT_external    : 1	
-    <20c>   DW_AT_declaration : 1	
- <1><20d>: Abbrev Number: 15 (DW_TAG_variable)
-    <20e>   DW_AT_name        : (indirect string, offset: 0x104): sysent	
-    <212>   DW_AT_decl_file   : 5	
-    <213>   DW_AT_decl_line   : 892	
-    <215>   DW_AT_type        : <0x11d>	
-    <219>   DW_AT_external    : 1	
-    <21a>   DW_AT_declaration : 1	
- <1><21b>: Abbrev Number: 15 (DW_TAG_variable)
-    <21c>   DW_AT_name        : (indirect string, offset: 0x1b6): nsyscalls	
-    <220>   DW_AT_decl_file   : 5	
-    <221>   DW_AT_decl_line   : 903	
-    <223>   DW_AT_type        : <0x47>	
-    <227>   DW_AT_external    : 1	
-    <228>   DW_AT_declaration : 1	
- <1><229>: Abbrev Number: 16 (DW_TAG_variable)
-    <22a>   DW_AT_name        : (indirect string, offset: 0x13a): mpers_target_var	
-    <22e>   DW_AT_decl_file   : 4	
-    <22f>   DW_AT_decl_line   : 36	
-    <230>   DW_AT_type        : <0x1f4>	
-    <234>   DW_AT_external    : 1	
-    <235>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><23b>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_statfs.d2 b/mpers-mx32/struct_statfs.d2
deleted file mode 100644
index a8c4b68..0000000
--- a/mpers-mx32/struct_statfs.d2
+++ /dev/null
@@ -1,301 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ea): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d7): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c9): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd2): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x70): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x154): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb4): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e1): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xea): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x73>
-<2><6c>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 1
-<1><73>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c0): sizetype
-<1><7a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x16f): char
-<1><81>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x87>
-<1><87>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x7a>
-<1><8c>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 78
-DW_AT_sibling     : <0xa3>
-<2><94>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : val
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 79
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<1><a3>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x113): __kernel_fsid_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 80
-DW_AT_type        : <0x8c>
-<1><ae>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x104): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x101>
-<2><ba>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x134): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c8>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xaa): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><e4>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x211): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x10c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><f2>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x83): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x81>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><101>
-Abbrev Number: 13 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x10c>
-<2><10a>
-Abbrev Number: 14 (DW_TAG_unspecified_parameters)
-<1><10c>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x101>
-<1><112>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x161): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xae>
-<1><11d>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x123>
-<1><123>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x112>
-<1><128>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xf): _Bool
-<1><12f>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xcb): statfs
-DW_AT_byte_size   : 64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 22
-DW_AT_sibling     : <0x1e4>
-<2><13b>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): f_type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><149>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15): f_bsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 24
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><157>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa1): f_blocks
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><165>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10b): f_bfree
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><173>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14b): f_bavail
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><181>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7): f_files
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><18f>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfc): f_ffree
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><19d>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9a): f_fsid
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_type        : <0xa3>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><1ab>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe0): f_namelen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1b9>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x174): f_frsize
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1c7>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d): f_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1d5>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x17d): f_spare
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x1e4>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<1><1e4>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x55>
-DW_AT_sibling     : <0x1f4>
-<2><1ed>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 3
-<1><1f4>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x8c): struct_statfs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x12f>
-<1><1ff>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x123): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><20d>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x104): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x11d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><21b>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1b6): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><229>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x13a): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x1f4>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_statfs64.d1 b/mpers-mx32/struct_statfs64.d1
deleted file mode 100644
index b593c98..0000000
--- a/mpers-mx32/struct_statfs64.d1
+++ /dev/null
@@ -1,275 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x243 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x25): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1eb): mpers-mx32/struct_statfs64.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x179): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x211): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1e1): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1c3): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xbd): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x70): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x148): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xa6): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x208): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xd5): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_array_type)
-    <64>   DW_AT_type        : <0x2b>	
-    <68>   DW_AT_sibling     : <0x73>	
- <2><6c>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <6d>   DW_AT_type        : <0x73>	
-    <71>   DW_AT_upper_bound : 1	
- <2><72>: Abbrev Number: 0
- <1><73>: Abbrev Number: 2 (DW_TAG_base_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_encoding    : 7	(unsigned)
-    <76>   DW_AT_name        : (indirect string, offset: 0x1ba): sizetype	
- <1><7a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7b>   DW_AT_byte_size   : 1	
-    <7c>   DW_AT_encoding    : 6	(signed char)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x163): char	
- <1><81>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <82>   DW_AT_byte_size   : 4	
-    <83>   DW_AT_type        : <0x87>	
- <1><87>: Abbrev Number: 7 (DW_TAG_const_type)
-    <88>   DW_AT_type        : <0x7a>	
- <1><8c>: Abbrev Number: 8 (DW_TAG_structure_type)
-    <8d>   DW_AT_byte_size   : 8	
-    <8e>   DW_AT_decl_file   : 2	
-    <8f>   DW_AT_decl_line   : 78	
-    <90>   DW_AT_sibling     : <0xa3>	
- <2><94>: Abbrev Number: 9 (DW_TAG_member)
-    <95>   DW_AT_name        : val	
-    <99>   DW_AT_decl_file   : 2	
-    <9a>   DW_AT_decl_line   : 79	
-    <9b>   DW_AT_type        : <0x63>	
-    <9f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><a2>: Abbrev Number: 0
- <1><a3>: Abbrev Number: 10 (DW_TAG_typedef)
-    <a4>   DW_AT_name        : (indirect string, offset: 0x1d1): __kernel_fsid_t	
-    <a8>   DW_AT_decl_file   : 2	
-    <a9>   DW_AT_decl_line   : 80	
-    <aa>   DW_AT_type        : <0x8c>	
- <1><ae>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <af>   DW_AT_name        : (indirect string, offset: 0xef): sysent	
-    <b3>   DW_AT_byte_size   : 20	
-    <b4>   DW_AT_decl_file   : 1	
-    <b5>   DW_AT_decl_line   : 4	
-    <b6>   DW_AT_sibling     : <0x101>	
- <2><ba>: Abbrev Number: 12 (DW_TAG_member)
-    <bb>   DW_AT_name        : (indirect string, offset: 0x128): nargs	
-    <bf>   DW_AT_decl_file   : 1	
-    <c0>   DW_AT_decl_line   : 5	
-    <c1>   DW_AT_type        : <0x47>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><c8>: Abbrev Number: 12 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x9c): sys_flags	
-    <cd>   DW_AT_decl_file   : 1	
-    <ce>   DW_AT_decl_line   : 6	
-    <cf>   DW_AT_type        : <0x2b>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><d6>: Abbrev Number: 9 (DW_TAG_member)
-    <d7>   DW_AT_name        : sen	
-    <db>   DW_AT_decl_file   : 1	
-    <dc>   DW_AT_decl_line   : 7	
-    <dd>   DW_AT_type        : <0x2b>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><e4>: Abbrev Number: 12 (DW_TAG_member)
-    <e5>   DW_AT_name        : (indirect string, offset: 0x21d): sys_func	
-    <e9>   DW_AT_decl_file   : 1	
-    <ea>   DW_AT_decl_line   : 8	
-    <eb>   DW_AT_type        : <0x10c>	
-    <ef>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><f2>: Abbrev Number: 12 (DW_TAG_member)
-    <f3>   DW_AT_name        : (indirect string, offset: 0x83): sys_name	
-    <f7>   DW_AT_decl_file   : 1	
-    <f8>   DW_AT_decl_line   : 9	
-    <f9>   DW_AT_type        : <0x81>	
-    <fd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><100>: Abbrev Number: 0
- <1><101>: Abbrev Number: 13 (DW_TAG_subroutine_type)
-    <102>   DW_AT_type        : <0x2b>	
-    <106>   DW_AT_sibling     : <0x10c>	
- <2><10a>: Abbrev Number: 14 (DW_TAG_unspecified_parameters)
- <2><10b>: Abbrev Number: 0
- <1><10c>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x101>	
- <1><112>: Abbrev Number: 10 (DW_TAG_typedef)
-    <113>   DW_AT_name        : (indirect string, offset: 0x155): struct_sysent	
-    <117>   DW_AT_decl_file   : 1	
-    <118>   DW_AT_decl_line   : 10	
-    <119>   DW_AT_type        : <0xae>	
- <1><11d>: Abbrev Number: 6 (DW_TAG_pointer_type)
-    <11e>   DW_AT_byte_size   : 4	
-    <11f>   DW_AT_type        : <0x123>	
- <1><123>: Abbrev Number: 7 (DW_TAG_const_type)
-    <124>   DW_AT_type        : <0x112>	
- <1><128>: Abbrev Number: 2 (DW_TAG_base_type)
-    <129>   DW_AT_byte_size   : 1	
-    <12a>   DW_AT_encoding    : 2	(boolean)
-    <12b>   DW_AT_name        : (indirect string, offset: 0xf): _Bool	
- <1><12f>: Abbrev Number: 10 (DW_TAG_typedef)
-    <130>   DW_AT_name        : (indirect string, offset: 0x1b4): __u64	
-    <134>   DW_AT_decl_file   : 3	
-    <135>   DW_AT_decl_line   : 30	
-    <136>   DW_AT_type        : <0x4e>	
- <1><13a>: Abbrev Number: 4 (DW_TAG_array_type)
-    <13b>   DW_AT_type        : <0x55>	
-    <13f>   DW_AT_sibling     : <0x14a>	
- <2><143>: Abbrev Number: 5 (DW_TAG_subrange_type)
-    <144>   DW_AT_type        : <0x73>	
-    <148>   DW_AT_upper_bound : 3	
- <2><149>: Abbrev Number: 0
- <1><14a>: Abbrev Number: 11 (DW_TAG_structure_type)
-    <14b>   DW_AT_name        : (indirect string, offset: 0xf6): statfs64	
-    <14f>   DW_AT_byte_size   : 88	
-    <150>   DW_AT_decl_file   : 4	
-    <151>   DW_AT_decl_line   : 45	
-    <152>   DW_AT_sibling     : <0x1ff>	
- <2><156>: Abbrev Number: 12 (DW_TAG_member)
-    <157>   DW_AT_name        : (indirect string, offset: 0x0): f_type	
-    <15b>   DW_AT_decl_file   : 4	
-    <15c>   DW_AT_decl_line   : 46	
-    <15d>   DW_AT_type        : <0x55>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><164>: Abbrev Number: 12 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x15): f_bsize	
-    <169>   DW_AT_decl_file   : 4	
-    <16a>   DW_AT_decl_line   : 47	
-    <16b>   DW_AT_type        : <0x55>	
-    <16f>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><172>: Abbrev Number: 12 (DW_TAG_member)
-    <173>   DW_AT_name        : (indirect string, offset: 0x93): f_blocks	
-    <177>   DW_AT_decl_file   : 4	
-    <178>   DW_AT_decl_line   : 48	
-    <179>   DW_AT_type        : <0x12f>	
-    <17d>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><180>: Abbrev Number: 12 (DW_TAG_member)
-    <181>   DW_AT_name        : (indirect string, offset: 0xff): f_bfree	
-    <185>   DW_AT_decl_file   : 4	
-    <186>   DW_AT_decl_line   : 49	
-    <187>   DW_AT_type        : <0x12f>	
-    <18b>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><18e>: Abbrev Number: 12 (DW_TAG_member)
-    <18f>   DW_AT_name        : (indirect string, offset: 0x13f): f_bavail	
-    <193>   DW_AT_decl_file   : 4	
-    <194>   DW_AT_decl_line   : 50	
-    <195>   DW_AT_type        : <0x12f>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><19c>: Abbrev Number: 12 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x7): f_files	
-    <1a1>   DW_AT_decl_file   : 4	
-    <1a2>   DW_AT_decl_line   : 51	
-    <1a3>   DW_AT_type        : <0x12f>	
-    <1a7>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><1aa>: Abbrev Number: 12 (DW_TAG_member)
-    <1ab>   DW_AT_name        : (indirect string, offset: 0xe7): f_ffree	
-    <1af>   DW_AT_decl_file   : 4	
-    <1b0>   DW_AT_decl_line   : 52	
-    <1b1>   DW_AT_type        : <0x12f>	
-    <1b5>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1b8>: Abbrev Number: 12 (DW_TAG_member)
-    <1b9>   DW_AT_name        : (indirect string, offset: 0x8c): f_fsid	
-    <1bd>   DW_AT_decl_file   : 4	
-    <1be>   DW_AT_decl_line   : 53	
-    <1bf>   DW_AT_type        : <0xa3>	
-    <1c3>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1c6>: Abbrev Number: 12 (DW_TAG_member)
-    <1c7>   DW_AT_name        : (indirect string, offset: 0xcb): f_namelen	
-    <1cb>   DW_AT_decl_file   : 4	
-    <1cc>   DW_AT_decl_line   : 54	
-    <1cd>   DW_AT_type        : <0x55>	
-    <1d1>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1d4>: Abbrev Number: 12 (DW_TAG_member)
-    <1d5>   DW_AT_name        : (indirect string, offset: 0x168): f_frsize	
-    <1d9>   DW_AT_decl_file   : 4	
-    <1da>   DW_AT_decl_line   : 55	
-    <1db>   DW_AT_type        : <0x55>	
-    <1df>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><1e2>: Abbrev Number: 12 (DW_TAG_member)
-    <1e3>   DW_AT_name        : (indirect string, offset: 0x1d): f_flags	
-    <1e7>   DW_AT_decl_file   : 4	
-    <1e8>   DW_AT_decl_line   : 56	
-    <1e9>   DW_AT_type        : <0x55>	
-    <1ed>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1f0>: Abbrev Number: 12 (DW_TAG_member)
-    <1f1>   DW_AT_name        : (indirect string, offset: 0x171): f_spare	
-    <1f5>   DW_AT_decl_file   : 4	
-    <1f6>   DW_AT_decl_line   : 57	
-    <1f7>   DW_AT_type        : <0x13a>	
-    <1fb>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><1fe>: Abbrev Number: 0
- <1><1ff>: Abbrev Number: 10 (DW_TAG_typedef)
-    <200>   DW_AT_name        : (indirect string, offset: 0x107): struct_statfs64	
-    <204>   DW_AT_decl_file   : 5	
-    <205>   DW_AT_decl_line   : 34	
-    <206>   DW_AT_type        : <0x14a>	
- <1><20a>: Abbrev Number: 15 (DW_TAG_variable)
-    <20b>   DW_AT_name        : (indirect string, offset: 0x117): current_wordsize	
-    <20f>   DW_AT_decl_file   : 6	
-    <210>   DW_AT_decl_line   : 757	
-    <212>   DW_AT_type        : <0x47>	
-    <216>   DW_AT_external    : 1	
-    <217>   DW_AT_declaration : 1	
- <1><218>: Abbrev Number: 15 (DW_TAG_variable)
-    <219>   DW_AT_name        : (indirect string, offset: 0xef): sysent	
-    <21d>   DW_AT_decl_file   : 6	
-    <21e>   DW_AT_decl_line   : 892	
-    <220>   DW_AT_type        : <0x11d>	
-    <224>   DW_AT_external    : 1	
-    <225>   DW_AT_declaration : 1	
- <1><226>: Abbrev Number: 15 (DW_TAG_variable)
-    <227>   DW_AT_name        : (indirect string, offset: 0x1aa): nsyscalls	
-    <22b>   DW_AT_decl_file   : 6	
-    <22c>   DW_AT_decl_line   : 903	
-    <22e>   DW_AT_type        : <0x47>	
-    <232>   DW_AT_external    : 1	
-    <233>   DW_AT_declaration : 1	
- <1><234>: Abbrev Number: 16 (DW_TAG_variable)
-    <235>   DW_AT_name        : (indirect string, offset: 0x12e): mpers_target_var	
-    <239>   DW_AT_decl_file   : 5	
-    <23a>   DW_AT_decl_line   : 36	
-    <23b>   DW_AT_type        : <0x1ff>	
-    <23f>   DW_AT_external    : 1	
-    <240>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><246>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_statfs64.d2 b/mpers-mx32/struct_statfs64.d2
deleted file mode 100644
index 7ceffe0..0000000
--- a/mpers-mx32/struct_statfs64.d2
+++ /dev/null
@@ -1,307 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x211): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e1): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1c3): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xbd): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x70): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x148): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa6): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x208): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd5): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x73>
-<2><6c>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 1
-<1><73>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1ba): sizetype
-<1><7a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x163): char
-<1><81>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x87>
-<1><87>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x7a>
-<1><8c>
-Abbrev Number: 8 (DW_TAG_structure_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 78
-DW_AT_sibling     : <0xa3>
-<2><94>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : val
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 79
-DW_AT_type        : <0x63>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<1><a3>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1d1): __kernel_fsid_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 80
-DW_AT_type        : <0x8c>
-<1><ae>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xef): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x101>
-<2><ba>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x128): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><c8>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9c): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><d6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><e4>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21d): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x10c>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><f2>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x83): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x81>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><101>
-Abbrev Number: 13 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x10c>
-<2><10a>
-Abbrev Number: 14 (DW_TAG_unspecified_parameters)
-<1><10c>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x101>
-<1><112>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x155): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xae>
-<1><11d>
-Abbrev Number: 6 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x123>
-<1><123>
-Abbrev Number: 7 (DW_TAG_const_type)
-DW_AT_type        : <0x112>
-<1><128>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xf): _Bool
-<1><12f>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b4): __u64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><13a>
-Abbrev Number: 4 (DW_TAG_array_type)
-DW_AT_type        : <0x55>
-DW_AT_sibling     : <0x14a>
-<2><143>
-Abbrev Number: 5 (DW_TAG_subrange_type)
-DW_AT_type        : <0x73>
-DW_AT_upper_bound : 3
-<1><14a>
-Abbrev Number: 11 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf6): statfs64
-DW_AT_byte_size   : 88
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 45
-DW_AT_sibling     : <0x1ff>
-<2><156>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): f_type
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 46
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><164>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15): f_bsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><172>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x93): f_blocks
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 48
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><180>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xff): f_bfree
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 49
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><18e>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13f): f_bavail
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 50
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><19c>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7): f_files
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 51
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><1aa>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe7): f_ffree
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 52
-DW_AT_type        : <0x12f>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1b8>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8c): f_fsid
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 53
-DW_AT_type        : <0xa3>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1c6>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xcb): f_namelen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 54
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1d4>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x168): f_frsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><1e2>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d): f_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x55>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><1f0>
-Abbrev Number: 12 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x171): f_spare
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 57
-DW_AT_type        : <0x13a>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<1><1ff>
-Abbrev Number: 10 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x107): struct_statfs64
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x14a>
-<1><20a>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x117): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><218>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xef): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x11d>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><226>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1aa): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><234>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12e): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x1ff>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_timex.c b/mpers-mx32/struct_timex.c
index d66cba4..bf8298f 100644
--- a/mpers-mx32/struct_timex.c
+++ b/mpers-mx32/struct_timex.c
@@ -3,6 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 2006-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
diff --git a/mpers-mx32/struct_timex.d1 b/mpers-mx32/struct_timex.d1
deleted file mode 100644
index e32023a..0000000
--- a/mpers-mx32/struct_timex.d1
+++ /dev/null
@@ -1,326 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x2c0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x37): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x20a): mpers-mx32/struct_timex.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x195): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x24b): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x22b): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1e8): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xe4): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x82): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x15d): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x23c): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xf2): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x14c): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x1d8): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x11b): __time_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 139	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0x17f): __suseconds_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 141	
-    <87>   DW_AT_type        : <0x63>	
- <1><8b>: Abbrev Number: 4 (DW_TAG_typedef)
-    <8c>   DW_AT_name        : (indirect string, offset: 0x260): __syscall_slong_t	
-    <90>   DW_AT_decl_file   : 1	
-    <91>   DW_AT_decl_line   : 175	
-    <92>   DW_AT_type        : <0x63>	
- <1><96>: Abbrev Number: 2 (DW_TAG_base_type)
-    <97>   DW_AT_byte_size   : 1	
-    <98>   DW_AT_encoding    : 6	(signed char)
-    <99>   DW_AT_name        : (indirect string, offset: 0x17a): char	
- <1><9d>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <9e>   DW_AT_name        : (indirect string, offset: 0x155): timeval	
-    <a2>   DW_AT_byte_size   : 16	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 30	
-    <a5>   DW_AT_sibling     : <0xc6>	
- <2><a9>: Abbrev Number: 6 (DW_TAG_member)
-    <aa>   DW_AT_name        : (indirect string, offset: 0x1e1): tv_sec	
-    <ae>   DW_AT_decl_file   : 2	
-    <af>   DW_AT_decl_line   : 32	
-    <b0>   DW_AT_type        : <0x75>	
-    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b7>: Abbrev Number: 6 (DW_TAG_member)
-    <b8>   DW_AT_name        : (indirect string, offset: 0x18d): tv_usec	
-    <bc>   DW_AT_decl_file   : 2	
-    <bd>   DW_AT_decl_line   : 33	
-    <be>   DW_AT_type        : <0x80>	
-    <c2>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c5>: Abbrev Number: 0
- <1><c6>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <c7>   DW_AT_byte_size   : 4	
-    <c8>   DW_AT_type        : <0xcc>	
- <1><cc>: Abbrev Number: 8 (DW_TAG_const_type)
-    <cd>   DW_AT_type        : <0x96>	
- <1><d1>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <d2>   DW_AT_name        : (indirect string, offset: 0x104): timex	
-    <d6>   DW_AT_byte_size   : 208	
-    <d7>   DW_AT_decl_file   : 3	
-    <d8>   DW_AT_decl_line   : 25	
-    <d9>   DW_AT_sibling     : <0x1fb>	
- <2><dd>: Abbrev Number: 6 (DW_TAG_member)
-    <de>   DW_AT_name        : (indirect string, offset: 0x245): modes	
-    <e2>   DW_AT_decl_file   : 3	
-    <e3>   DW_AT_decl_line   : 27	
-    <e4>   DW_AT_type        : <0x47>	
-    <e8>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><eb>: Abbrev Number: 6 (DW_TAG_member)
-    <ec>   DW_AT_name        : (indirect string, offset: 0x224): offset	
-    <f0>   DW_AT_decl_file   : 3	
-    <f1>   DW_AT_decl_line   : 28	
-    <f2>   DW_AT_type        : <0x8b>	
-    <f6>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><f9>: Abbrev Number: 6 (DW_TAG_member)
-    <fa>   DW_AT_name        : (indirect string, offset: 0x140): freq	
-    <fe>   DW_AT_decl_file   : 3	
-    <ff>   DW_AT_decl_line   : 29	
-    <100>   DW_AT_type        : <0x8b>	
-    <104>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><107>: Abbrev Number: 6 (DW_TAG_member)
-    <108>   DW_AT_name        : (indirect string, offset: 0xac): maxerror	
-    <10c>   DW_AT_decl_file   : 3	
-    <10d>   DW_AT_decl_line   : 30	
-    <10e>   DW_AT_type        : <0x8b>	
-    <112>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><115>: Abbrev Number: 6 (DW_TAG_member)
-    <116>   DW_AT_name        : (indirect string, offset: 0x13): esterror	
-    <11a>   DW_AT_decl_file   : 3	
-    <11b>   DW_AT_decl_line   : 31	
-    <11c>   DW_AT_type        : <0x8b>	
-    <120>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><123>: Abbrev Number: 6 (DW_TAG_member)
-    <124>   DW_AT_name        : (indirect string, offset: 0x9c): status	
-    <128>   DW_AT_decl_file   : 3	
-    <129>   DW_AT_decl_line   : 32	
-    <12a>   DW_AT_type        : <0x2b>	
-    <12e>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><131>: Abbrev Number: 6 (DW_TAG_member)
-    <132>   DW_AT_name        : (indirect string, offset: 0x16a): constant	
-    <136>   DW_AT_decl_file   : 3	
-    <137>   DW_AT_decl_line   : 33	
-    <138>   DW_AT_type        : <0x8b>	
-    <13c>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><13f>: Abbrev Number: 6 (DW_TAG_member)
-    <140>   DW_AT_name        : (indirect string, offset: 0x1f6): precision	
-    <144>   DW_AT_decl_file   : 3	
-    <145>   DW_AT_decl_line   : 34	
-    <146>   DW_AT_type        : <0x8b>	
-    <14a>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><14d>: Abbrev Number: 6 (DW_TAG_member)
-    <14e>   DW_AT_name        : (indirect string, offset: 0x200): tolerance	
-    <152>   DW_AT_decl_file   : 3	
-    <153>   DW_AT_decl_line   : 35	
-    <154>   DW_AT_type        : <0x8b>	
-    <158>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><15b>: Abbrev Number: 6 (DW_TAG_member)
-    <15c>   DW_AT_name        : (indirect string, offset: 0x272): time	
-    <160>   DW_AT_decl_file   : 3	
-    <161>   DW_AT_decl_line   : 36	
-    <162>   DW_AT_type        : <0x9d>	
-    <166>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><169>: Abbrev Number: 6 (DW_TAG_member)
-    <16a>   DW_AT_name        : (indirect string, offset: 0x124): tick	
-    <16e>   DW_AT_decl_file   : 3	
-    <16f>   DW_AT_decl_line   : 37	
-    <170>   DW_AT_type        : <0x8b>	
-    <174>   DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
- <2><177>: Abbrev Number: 6 (DW_TAG_member)
-    <178>   DW_AT_name        : (indirect string, offset: 0x1d0): ppsfreq	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 38	
-    <17e>   DW_AT_type        : <0x8b>	
-    <182>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><185>: Abbrev Number: 6 (DW_TAG_member)
-    <186>   DW_AT_name        : (indirect string, offset: 0xdd): jitter	
-    <18a>   DW_AT_decl_file   : 3	
-    <18b>   DW_AT_decl_line   : 39	
-    <18c>   DW_AT_type        : <0x8b>	
-    <190>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><193>: Abbrev Number: 6 (DW_TAG_member)
-    <194>   DW_AT_name        : (indirect string, offset: 0xd): shift	
-    <198>   DW_AT_decl_file   : 3	
-    <199>   DW_AT_decl_line   : 40	
-    <19a>   DW_AT_type        : <0x2b>	
-    <19e>   DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
- <2><1a1>: Abbrev Number: 6 (DW_TAG_member)
-    <1a2>   DW_AT_name        : (indirect string, offset: 0x173): stabil	
-    <1a6>   DW_AT_decl_file   : 3	
-    <1a7>   DW_AT_decl_line   : 41	
-    <1a8>   DW_AT_type        : <0x8b>	
-    <1ac>   DW_AT_data_member_location: 2 byte block: 23 78 	(DW_OP_plus_uconst: 120)
- <2><1af>: Abbrev Number: 6 (DW_TAG_member)
-    <1b0>   DW_AT_name        : (indirect string, offset: 0x95): jitcnt	
-    <1b4>   DW_AT_decl_file   : 3	
-    <1b5>   DW_AT_decl_line   : 42	
-    <1b6>   DW_AT_type        : <0x8b>	
-    <1ba>   DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
- <2><1be>: Abbrev Number: 6 (DW_TAG_member)
-    <1bf>   DW_AT_name        : (indirect string, offset: 0xd6): calcnt	
-    <1c3>   DW_AT_decl_file   : 3	
-    <1c4>   DW_AT_decl_line   : 43	
-    <1c5>   DW_AT_type        : <0x8b>	
-    <1c9>   DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
- <2><1cd>: Abbrev Number: 6 (DW_TAG_member)
-    <1ce>   DW_AT_name        : (indirect string, offset: 0x22): errcnt	
-    <1d2>   DW_AT_decl_file   : 3	
-    <1d3>   DW_AT_decl_line   : 44	
-    <1d4>   DW_AT_type        : <0x8b>	
-    <1d8>   DW_AT_data_member_location: 3 byte block: 23 90 1 	(DW_OP_plus_uconst: 144)
- <2><1dc>: Abbrev Number: 6 (DW_TAG_member)
-    <1dd>   DW_AT_name        : (indirect string, offset: 0x235): stbcnt	
-    <1e1>   DW_AT_decl_file   : 3	
-    <1e2>   DW_AT_decl_line   : 45	
-    <1e3>   DW_AT_type        : <0x8b>	
-    <1e7>   DW_AT_data_member_location: 3 byte block: 23 98 1 	(DW_OP_plus_uconst: 152)
- <2><1eb>: Abbrev Number: 9 (DW_TAG_member)
-    <1ec>   DW_AT_name        : tai	
-    <1f0>   DW_AT_decl_file   : 3	
-    <1f1>   DW_AT_decl_line   : 47	
-    <1f2>   DW_AT_type        : <0x2b>	
-    <1f6>   DW_AT_data_member_location: 3 byte block: 23 a0 1 	(DW_OP_plus_uconst: 160)
- <2><1fa>: Abbrev Number: 0
- <1><1fb>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <1fc>   DW_AT_name        : (indirect string, offset: 0x145): sysent	
-    <200>   DW_AT_byte_size   : 20	
-    <201>   DW_AT_decl_file   : 4	
-    <202>   DW_AT_decl_line   : 4	
-    <203>   DW_AT_sibling     : <0x24e>	
- <2><207>: Abbrev Number: 6 (DW_TAG_member)
-    <208>   DW_AT_name        : (indirect string, offset: 0x129): nargs	
-    <20c>   DW_AT_decl_file   : 4	
-    <20d>   DW_AT_decl_line   : 5	
-    <20e>   DW_AT_type        : <0x47>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><215>: Abbrev Number: 6 (DW_TAG_member)
-    <216>   DW_AT_name        : (indirect string, offset: 0xb5): sys_flags	
-    <21a>   DW_AT_decl_file   : 4	
-    <21b>   DW_AT_decl_line   : 6	
-    <21c>   DW_AT_type        : <0x2b>	
-    <220>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><223>: Abbrev Number: 9 (DW_TAG_member)
-    <224>   DW_AT_name        : sen	
-    <228>   DW_AT_decl_file   : 4	
-    <229>   DW_AT_decl_line   : 7	
-    <22a>   DW_AT_type        : <0x2b>	
-    <22e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><231>: Abbrev Number: 6 (DW_TAG_member)
-    <232>   DW_AT_name        : (indirect string, offset: 0x257): sys_func	
-    <236>   DW_AT_decl_file   : 4	
-    <237>   DW_AT_decl_line   : 8	
-    <238>   DW_AT_type        : <0x259>	
-    <23c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><23f>: Abbrev Number: 6 (DW_TAG_member)
-    <240>   DW_AT_name        : (indirect string, offset: 0xa3): sys_name	
-    <244>   DW_AT_decl_file   : 4	
-    <245>   DW_AT_decl_line   : 9	
-    <246>   DW_AT_type        : <0xc6>	
-    <24a>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><24d>: Abbrev Number: 0
- <1><24e>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <24f>   DW_AT_type        : <0x2b>	
-    <253>   DW_AT_sibling     : <0x259>	
- <2><257>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><258>: Abbrev Number: 0
- <1><259>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <25a>   DW_AT_byte_size   : 4	
-    <25b>   DW_AT_type        : <0x24e>	
- <1><25f>: Abbrev Number: 4 (DW_TAG_typedef)
-    <260>   DW_AT_name        : (indirect string, offset: 0x29): struct_sysent	
-    <264>   DW_AT_decl_file   : 4	
-    <265>   DW_AT_decl_line   : 10	
-    <266>   DW_AT_type        : <0x1fb>	
- <1><26a>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <26b>   DW_AT_byte_size   : 4	
-    <26c>   DW_AT_type        : <0x270>	
- <1><270>: Abbrev Number: 8 (DW_TAG_const_type)
-    <271>   DW_AT_type        : <0x25f>	
- <1><275>: Abbrev Number: 2 (DW_TAG_base_type)
-    <276>   DW_AT_byte_size   : 1	
-    <277>   DW_AT_encoding    : 2	(boolean)
-    <278>   DW_AT_name        : (indirect string, offset: 0x1c): _Bool	
- <1><27c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <27d>   DW_AT_name        : (indirect string, offset: 0x0): struct_timex	
-    <281>   DW_AT_decl_file   : 5	
-    <282>   DW_AT_decl_line   : 35	
-    <283>   DW_AT_type        : <0xd1>	
- <1><287>: Abbrev Number: 12 (DW_TAG_variable)
-    <288>   DW_AT_name        : (indirect string, offset: 0x10a): current_wordsize	
-    <28c>   DW_AT_decl_file   : 6	
-    <28d>   DW_AT_decl_line   : 757	
-    <28f>   DW_AT_type        : <0x47>	
-    <293>   DW_AT_external    : 1	
-    <294>   DW_AT_declaration : 1	
- <1><295>: Abbrev Number: 12 (DW_TAG_variable)
-    <296>   DW_AT_name        : (indirect string, offset: 0x145): sysent	
-    <29a>   DW_AT_decl_file   : 6	
-    <29b>   DW_AT_decl_line   : 892	
-    <29d>   DW_AT_type        : <0x26a>	
-    <2a1>   DW_AT_external    : 1	
-    <2a2>   DW_AT_declaration : 1	
- <1><2a3>: Abbrev Number: 12 (DW_TAG_variable)
-    <2a4>   DW_AT_name        : (indirect string, offset: 0x1c6): nsyscalls	
-    <2a8>   DW_AT_decl_file   : 6	
-    <2a9>   DW_AT_decl_line   : 903	
-    <2ab>   DW_AT_type        : <0x47>	
-    <2af>   DW_AT_external    : 1	
-    <2b0>   DW_AT_declaration : 1	
- <1><2b1>: Abbrev Number: 13 (DW_TAG_variable)
-    <2b2>   DW_AT_name        : (indirect string, offset: 0x12f): mpers_target_var	
-    <2b6>   DW_AT_decl_file   : 5	
-    <2b7>   DW_AT_decl_line   : 37	
-    <2b8>   DW_AT_type        : <0x27c>	
-    <2bc>   DW_AT_external    : 1	
-    <2bd>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><2c3>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_timex.d2 b/mpers-mx32/struct_timex.d2
deleted file mode 100644
index 94fb801..0000000
--- a/mpers-mx32/struct_timex.d2
+++ /dev/null
@@ -1,367 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x24b): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x22b): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e8): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xe4): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x82): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x15d): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x23c): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xf2): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x14c): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d8): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11b): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17f): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x63>
-<1><8b>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x260): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x63>
-<1><96>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x17a): char
-<1><9d>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x155): timeval
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xc6>
-<2><a9>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e1): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b7>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18d): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><c6>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcc>
-<1><cc>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x96>
-<1><d1>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x104): timex
-DW_AT_byte_size   : 208
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 25
-DW_AT_sibling     : <0x1fb>
-<2><dd>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x245): modes
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><eb>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x224): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><f9>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x140): freq
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><107>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xac): maxerror
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><115>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13): esterror
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><123>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9c): status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><131>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16a): constant
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><13f>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f6): precision
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><14d>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x200): tolerance
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 35
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><15b>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x272): time
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x9d>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><169>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x124): tick
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
-<2><177>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d0): ppsfreq
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><185>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xdd): jitter
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<2><193>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd): shift
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 70 	(DW_OP_plus_uconst: 112)
-<2><1a1>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x173): stabil
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 2 byte block: 23 78 	(DW_OP_plus_uconst: 120)
-<2><1af>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x95): jitcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 3 byte block: 23 80 1 	(DW_OP_plus_uconst: 128)
-<2><1be>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd6): calcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 3 byte block: 23 88 1 	(DW_OP_plus_uconst: 136)
-<2><1cd>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22): errcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 3 byte block: 23 90 1 	(DW_OP_plus_uconst: 144)
-<2><1dc>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x235): stbcnt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x8b>
-DW_AT_data_member_location: 3 byte block: 23 98 1 	(DW_OP_plus_uconst: 152)
-<2><1eb>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : tai
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 3 byte block: 23 a0 1 	(DW_OP_plus_uconst: 160)
-<1><1fb>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x145): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x24e>
-<2><207>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x129): nargs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><215>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb5): sys_flags
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><223>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><231>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x257): sys_func
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x259>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><23f>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa3): sys_name
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xc6>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><24e>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x259>
-<2><257>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><259>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x24e>
-<1><25f>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x29): struct_sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x1fb>
-<1><26a>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x270>
-<1><270>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x25f>
-<1><275>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1c): _Bool
-<1><27c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): struct_timex
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 35
-DW_AT_type        : <0xd1>
-<1><287>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x10a): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><295>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x145): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x26a>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2a3>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1c6): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><2b1>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12f): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x27c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_ustat.d1 b/mpers-mx32/struct_ustat.d1
deleted file mode 100644
index 26d6f6c..0000000
--- a/mpers-mx32/struct_ustat.d1
+++ /dev/null
@@ -1,213 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1b7 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x2e): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x6): mpers-mx32/struct_ustat.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x147): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1b4): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1a1): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x18b): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa8): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x79): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x112): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x1cb): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1ab): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xc9): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x1c0): __u_quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 56	
-    <6a>   DW_AT_type        : <0x4e>	
- <1><6e>: Abbrev Number: 4 (DW_TAG_typedef)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x20): __ino_t	
-    <73>   DW_AT_decl_file   : 1	
-    <74>   DW_AT_decl_line   : 127	
-    <75>   DW_AT_type        : <0x63>	
- <1><79>: Abbrev Number: 2 (DW_TAG_base_type)
-    <7a>   DW_AT_byte_size   : 4	
-    <7b>   DW_AT_encoding    : 7	(unsigned)
-    <7c>   DW_AT_name        : (indirect string, offset: 0x182): sizetype	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0xbf): __daddr_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 143	
-    <87>   DW_AT_type        : <0x2b>	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x135): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <93>   DW_AT_byte_size   : 4	
-    <94>   DW_AT_type        : <0x98>	
- <1><98>: Abbrev Number: 6 (DW_TAG_const_type)
-    <99>   DW_AT_type        : <0x8b>	
- <1><9d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <9e>   DW_AT_name        : (indirect string, offset: 0xdb): sysent	
-    <a2>   DW_AT_byte_size   : 20	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 4	
-    <a5>   DW_AT_sibling     : <0xf0>	
- <2><a9>: Abbrev Number: 8 (DW_TAG_member)
-    <aa>   DW_AT_name        : (indirect string, offset: 0xfb): nargs	
-    <ae>   DW_AT_decl_file   : 2	
-    <af>   DW_AT_decl_line   : 5	
-    <b0>   DW_AT_type        : <0x47>	
-    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b7>: Abbrev Number: 8 (DW_TAG_member)
-    <b8>   DW_AT_name        : (indirect string, offset: 0x95): sys_flags	
-    <bc>   DW_AT_decl_file   : 2	
-    <bd>   DW_AT_decl_line   : 6	
-    <be>   DW_AT_type        : <0x2b>	
-    <c2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c5>: Abbrev Number: 9 (DW_TAG_member)
-    <c6>   DW_AT_name        : sen	
-    <ca>   DW_AT_decl_file   : 2	
-    <cb>   DW_AT_decl_line   : 7	
-    <cc>   DW_AT_type        : <0x2b>	
-    <d0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d3>: Abbrev Number: 8 (DW_TAG_member)
-    <d4>   DW_AT_name        : (indirect string, offset: 0xb6): sys_func	
-    <d8>   DW_AT_decl_file   : 2	
-    <d9>   DW_AT_decl_line   : 8	
-    <da>   DW_AT_type        : <0xfb>	
-    <de>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e1>: Abbrev Number: 8 (DW_TAG_member)
-    <e2>   DW_AT_name        : (indirect string, offset: 0x8c): sys_name	
-    <e6>   DW_AT_decl_file   : 2	
-    <e7>   DW_AT_decl_line   : 9	
-    <e8>   DW_AT_type        : <0x92>	
-    <ec>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <f1>   DW_AT_type        : <0x2b>	
-    <f5>   DW_AT_sibling     : <0xfb>	
- <2><f9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><fa>: Abbrev Number: 0
- <1><fb>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <fc>   DW_AT_byte_size   : 4	
-    <fd>   DW_AT_type        : <0xf0>	
- <1><101>: Abbrev Number: 4 (DW_TAG_typedef)
-    <102>   DW_AT_name        : (indirect string, offset: 0x11f): struct_sysent	
-    <106>   DW_AT_decl_file   : 2	
-    <107>   DW_AT_decl_line   : 10	
-    <108>   DW_AT_type        : <0x9d>	
- <1><10c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x112>	
- <1><112>: Abbrev Number: 6 (DW_TAG_const_type)
-    <113>   DW_AT_type        : <0x101>	
- <1><117>: Abbrev Number: 2 (DW_TAG_base_type)
-    <118>   DW_AT_byte_size   : 1	
-    <119>   DW_AT_encoding    : 2	(boolean)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x28): _Bool	
- <1><11e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x0): ustat	
-    <123>   DW_AT_byte_size   : 32	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 24	
-    <126>   DW_AT_sibling     : <0x163>	
- <2><12a>: Abbrev Number: 8 (DW_TAG_member)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x199): f_tfree	
-    <12f>   DW_AT_decl_file   : 3	
-    <130>   DW_AT_decl_line   : 26	
-    <131>   DW_AT_type        : <0x80>	
-    <135>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><138>: Abbrev Number: 8 (DW_TAG_member)
-    <139>   DW_AT_name        : (indirect string, offset: 0x9f): f_tinode	
-    <13d>   DW_AT_decl_file   : 3	
-    <13e>   DW_AT_decl_line   : 27	
-    <13f>   DW_AT_type        : <0x6e>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><146>: Abbrev Number: 8 (DW_TAG_member)
-    <147>   DW_AT_name        : (indirect string, offset: 0xe2): f_fname	
-    <14b>   DW_AT_decl_file   : 3	
-    <14c>   DW_AT_decl_line   : 28	
-    <14d>   DW_AT_type        : <0x163>	
-    <151>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><154>: Abbrev Number: 8 (DW_TAG_member)
-    <155>   DW_AT_name        : (indirect string, offset: 0x12d): f_fpack	
-    <159>   DW_AT_decl_file   : 3	
-    <15a>   DW_AT_decl_line   : 29	
-    <15b>   DW_AT_type        : <0x163>	
-    <15f>   DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
- <2><162>: Abbrev Number: 0
- <1><163>: Abbrev Number: 12 (DW_TAG_array_type)
-    <164>   DW_AT_type        : <0x8b>	
-    <168>   DW_AT_sibling     : <0x173>	
- <2><16c>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <16d>   DW_AT_type        : <0x79>	
-    <171>   DW_AT_upper_bound : 5	
- <2><172>: Abbrev Number: 0
- <1><173>: Abbrev Number: 4 (DW_TAG_typedef)
-    <174>   DW_AT_name        : (indirect string, offset: 0x13a): struct_ustat	
-    <178>   DW_AT_decl_file   : 4	
-    <179>   DW_AT_decl_line   : 31	
-    <17a>   DW_AT_type        : <0x11e>	
- <1><17e>: Abbrev Number: 14 (DW_TAG_variable)
-    <17f>   DW_AT_name        : (indirect string, offset: 0xea): current_wordsize	
-    <183>   DW_AT_decl_file   : 5	
-    <184>   DW_AT_decl_line   : 757	
-    <186>   DW_AT_type        : <0x47>	
-    <18a>   DW_AT_external    : 1	
-    <18b>   DW_AT_declaration : 1	
- <1><18c>: Abbrev Number: 14 (DW_TAG_variable)
-    <18d>   DW_AT_name        : (indirect string, offset: 0xdb): sysent	
-    <191>   DW_AT_decl_file   : 5	
-    <192>   DW_AT_decl_line   : 892	
-    <194>   DW_AT_type        : <0x10c>	
-    <198>   DW_AT_external    : 1	
-    <199>   DW_AT_declaration : 1	
- <1><19a>: Abbrev Number: 14 (DW_TAG_variable)
-    <19b>   DW_AT_name        : (indirect string, offset: 0x178): nsyscalls	
-    <19f>   DW_AT_decl_file   : 5	
-    <1a0>   DW_AT_decl_line   : 903	
-    <1a2>   DW_AT_type        : <0x47>	
-    <1a6>   DW_AT_external    : 1	
-    <1a7>   DW_AT_declaration : 1	
- <1><1a8>: Abbrev Number: 15 (DW_TAG_variable)
-    <1a9>   DW_AT_name        : (indirect string, offset: 0x101): mpers_target_var	
-    <1ad>   DW_AT_decl_file   : 4	
-    <1ae>   DW_AT_decl_line   : 34	
-    <1af>   DW_AT_type        : <0x173>	
-    <1b3>   DW_AT_external    : 1	
-    <1b4>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1ba>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_ustat.d2 b/mpers-mx32/struct_ustat.d2
deleted file mode 100644
index af6f99c..0000000
--- a/mpers-mx32/struct_ustat.d2
+++ /dev/null
@@ -1,236 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b4): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a1): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18b): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa8): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x79): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x112): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1cb): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ab): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc9): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c0): __u_quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 56
-DW_AT_type        : <0x4e>
-<1><6e>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x20): __ino_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 127
-DW_AT_type        : <0x63>
-<1><79>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x182): sizetype
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xbf): __daddr_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 143
-DW_AT_type        : <0x2b>
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x135): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x98>
-<1><98>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><9d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xdb): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf0>
-<2><a9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xfb): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x95): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb6): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x8c): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfb>
-<2><f9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><fb>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf0>
-<1><101>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11f): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x9d>
-<1><10c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x112>
-<1><112>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x101>
-<1><117>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x28): _Bool
-<1><11e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): ustat
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 24
-DW_AT_sibling     : <0x163>
-<2><12a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x199): f_tfree
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><138>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9f): f_tinode
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 27
-DW_AT_type        : <0x6e>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><146>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe2): f_fname
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 28
-DW_AT_type        : <0x163>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><154>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x12d): f_fpack
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x163>
-DW_AT_data_member_location: 2 byte block: 23 16 	(DW_OP_plus_uconst: 22)
-<1><163>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x8b>
-DW_AT_sibling     : <0x173>
-<2><16c>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x79>
-DW_AT_upper_bound : 5
-<1><173>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x13a): struct_ustat
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x11e>
-<1><17e>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xea): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18c>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xdb): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10c>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><19a>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x178): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1a8>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x101): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_type        : <0x173>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_v4l2_buffer.c b/mpers-mx32/struct_v4l2_buffer.c
index d2d5cf1..dd68e07 100644
--- a/mpers-mx32/struct_v4l2_buffer.c
+++ b/mpers-mx32/struct_v4l2_buffer.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_buffer.d1 b/mpers-mx32/struct_v4l2_buffer.d1
deleted file mode 100644
index 3409b30..0000000
--- a/mpers-mx32/struct_v4l2_buffer.d1
+++ /dev/null
@@ -1,460 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x3f5 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x1f9): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x25b): mpers-mx32/struct_v4l2_buffer.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x2f0): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x141): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x47): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0xb5): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x11a): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x1af): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x161): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xc3): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0xda): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x249): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x11): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x51): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x27b): __time_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 139	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0x2d9): __suseconds_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 141	
-    <87>   DW_AT_type        : <0x63>	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x1d0): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0x284): timeval	
-    <97>   DW_AT_byte_size   : 16	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 30	
-    <9a>   DW_AT_sibling     : <0xbb>	
- <2><9e>: Abbrev Number: 6 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x40): tv_sec	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 32	
-    <a5>   DW_AT_type        : <0x75>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 6 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x2ab): tv_usec	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 33	
-    <b3>   DW_AT_type        : <0x80>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><ba>: Abbrev Number: 0
- <1><bb>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <bc>   DW_AT_byte_size   : 4	
-    <bd>   DW_AT_type        : <0xc1>	
- <1><c1>: Abbrev Number: 8 (DW_TAG_const_type)
-    <c2>   DW_AT_type        : <0x8b>	
- <1><c6>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <c7>   DW_AT_name        : (indirect string, offset: 0x2cc): sysent	
-    <cb>   DW_AT_byte_size   : 20	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 4	
-    <ce>   DW_AT_sibling     : <0x119>	
- <2><d2>: Abbrev Number: 6 (DW_TAG_member)
-    <d3>   DW_AT_name        : (indirect string, offset: 0x13b): nargs	
-    <d7>   DW_AT_decl_file   : 3	
-    <d8>   DW_AT_decl_line   : 5	
-    <d9>   DW_AT_type        : <0x47>	
-    <dd>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><e0>: Abbrev Number: 6 (DW_TAG_member)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x91): sys_flags	
-    <e5>   DW_AT_decl_file   : 3	
-    <e6>   DW_AT_decl_line   : 6	
-    <e7>   DW_AT_type        : <0x2b>	
-    <eb>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ee>: Abbrev Number: 9 (DW_TAG_member)
-    <ef>   DW_AT_name        : sen	
-    <f3>   DW_AT_decl_file   : 3	
-    <f4>   DW_AT_decl_line   : 7	
-    <f5>   DW_AT_type        : <0x2b>	
-    <f9>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><fc>: Abbrev Number: 6 (DW_TAG_member)
-    <fd>   DW_AT_name        : (indirect string, offset: 0x24): sys_func	
-    <101>   DW_AT_decl_file   : 3	
-    <102>   DW_AT_decl_line   : 8	
-    <103>   DW_AT_type        : <0x124>	
-    <107>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><10a>: Abbrev Number: 6 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x88): sys_name	
-    <10f>   DW_AT_decl_file   : 3	
-    <110>   DW_AT_decl_line   : 9	
-    <111>   DW_AT_type        : <0xbb>	
-    <115>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><118>: Abbrev Number: 0
- <1><119>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <11a>   DW_AT_type        : <0x2b>	
-    <11e>   DW_AT_sibling     : <0x124>	
- <2><122>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><123>: Abbrev Number: 0
- <1><124>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <125>   DW_AT_byte_size   : 4	
-    <126>   DW_AT_type        : <0x119>	
- <1><12a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x29d): struct_sysent	
-    <12f>   DW_AT_decl_file   : 3	
-    <130>   DW_AT_decl_line   : 10	
-    <131>   DW_AT_type        : <0xc6>	
- <1><135>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <136>   DW_AT_byte_size   : 4	
-    <137>   DW_AT_type        : <0x13b>	
- <1><13b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <13c>   DW_AT_type        : <0x12a>	
- <1><140>: Abbrev Number: 2 (DW_TAG_base_type)
-    <141>   DW_AT_byte_size   : 1	
-    <142>   DW_AT_encoding    : 2	(boolean)
-    <143>   DW_AT_name        : (indirect string, offset: 0x1df): _Bool	
- <1><147>: Abbrev Number: 4 (DW_TAG_typedef)
-    <148>   DW_AT_name        : (indirect string, offset: 0x244): __u8	
-    <14c>   DW_AT_decl_file   : 4	
-    <14d>   DW_AT_decl_line   : 20	
-    <14e>   DW_AT_type        : <0x39>	
- <1><152>: Abbrev Number: 4 (DW_TAG_typedef)
-    <153>   DW_AT_name        : (indirect string, offset: 0x28c): __s32	
-    <157>   DW_AT_decl_file   : 4	
-    <158>   DW_AT_decl_line   : 25	
-    <159>   DW_AT_type        : <0x2b>	
- <1><15d>: Abbrev Number: 4 (DW_TAG_typedef)
-    <15e>   DW_AT_name        : (indirect string, offset: 0xa1): __u32	
-    <162>   DW_AT_decl_file   : 4	
-    <163>   DW_AT_decl_line   : 26	
-    <164>   DW_AT_type        : <0x47>	
- <1><168>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <169>   DW_AT_name        : (indirect string, offset: 0x2bb): v4l2_preemphasis	
-    <16d>   DW_AT_byte_size   : 4	
-    <16e>   DW_AT_decl_file   : 8	
-    <16f>   DW_AT_decl_line   : 763	
-    <171>   DW_AT_sibling     : <0x188>	
- <2><175>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <176>   DW_AT_name        : (indirect string, offset: 0x6e): V4L2_PREEMPHASIS_DISABLED	
-    <17a>   DW_AT_const_value : 0	
- <2><17b>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <17c>   DW_AT_name        : (indirect string, offset: 0x185): V4L2_PREEMPHASIS_50_uS	
-    <180>   DW_AT_const_value : 1	
- <2><181>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <182>   DW_AT_name        : (indirect string, offset: 0x16e): V4L2_PREEMPHASIS_75_uS	
-    <186>   DW_AT_const_value : 2	
- <2><187>: Abbrev Number: 0
- <1><188>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <189>   DW_AT_name        : (indirect string, offset: 0xf4): v4l2_timecode	
-    <18d>   DW_AT_byte_size   : 16	
-    <18e>   DW_AT_decl_file   : 5	
-    <18f>   DW_AT_decl_line   : 519	
-    <191>   DW_AT_sibling     : <0x1ff>	
- <2><195>: Abbrev Number: 15 (DW_TAG_member)
-    <196>   DW_AT_name        : (indirect string, offset: 0x15c): type	
-    <19a>   DW_AT_decl_file   : 5	
-    <19b>   DW_AT_decl_line   : 520	
-    <19d>   DW_AT_type        : <0x15d>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1a4>: Abbrev Number: 15 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x14d): flags	
-    <1a9>   DW_AT_decl_file   : 5	
-    <1aa>   DW_AT_decl_line   : 521	
-    <1ac>   DW_AT_type        : <0x15d>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1b3>: Abbrev Number: 15 (DW_TAG_member)
-    <1b4>   DW_AT_name        : (indirect string, offset: 0x2d): frames	
-    <1b8>   DW_AT_decl_file   : 5	
-    <1b9>   DW_AT_decl_line   : 522	
-    <1bb>   DW_AT_type        : <0x147>	
-    <1bf>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1c2>: Abbrev Number: 15 (DW_TAG_member)
-    <1c3>   DW_AT_name        : (indirect string, offset: 0x1c2): seconds	
-    <1c7>   DW_AT_decl_file   : 5	
-    <1c8>   DW_AT_decl_line   : 523	
-    <1ca>   DW_AT_type        : <0x147>	
-    <1ce>   DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
- <2><1d1>: Abbrev Number: 15 (DW_TAG_member)
-    <1d2>   DW_AT_name        : (indirect string, offset: 0x2b3): minutes	
-    <1d6>   DW_AT_decl_file   : 5	
-    <1d7>   DW_AT_decl_line   : 524	
-    <1d9>   DW_AT_type        : <0x147>	
-    <1dd>   DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
- <2><1e0>: Abbrev Number: 15 (DW_TAG_member)
-    <1e1>   DW_AT_name        : (indirect string, offset: 0x1ca): hours	
-    <1e5>   DW_AT_decl_file   : 5	
-    <1e6>   DW_AT_decl_line   : 525	
-    <1e8>   DW_AT_type        : <0x147>	
-    <1ec>   DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
- <2><1ef>: Abbrev Number: 15 (DW_TAG_member)
-    <1f0>   DW_AT_name        : (indirect string, offset: 0x1f0): userbits	
-    <1f4>   DW_AT_decl_file   : 5	
-    <1f5>   DW_AT_decl_line   : 526	
-    <1f7>   DW_AT_type        : <0x1ff>	
-    <1fb>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1fe>: Abbrev Number: 0
- <1><1ff>: Abbrev Number: 16 (DW_TAG_array_type)
-    <200>   DW_AT_type        : <0x147>	
-    <204>   DW_AT_sibling     : <0x20f>	
- <2><208>: Abbrev Number: 17 (DW_TAG_subrange_type)
-    <209>   DW_AT_type        : <0x6e>	
-    <20d>   DW_AT_upper_bound : 3	
- <2><20e>: Abbrev Number: 0
- <1><20f>: Abbrev Number: 18 (DW_TAG_union_type)
-    <210>   DW_AT_byte_size   : 4	
-    <211>   DW_AT_decl_file   : 5	
-    <212>   DW_AT_decl_line   : 606	
-    <214>   DW_AT_sibling     : <0x23c>	
- <2><218>: Abbrev Number: 19 (DW_TAG_member)
-    <219>   DW_AT_name        : (indirect string, offset: 0x1e5): mem_offset	
-    <21d>   DW_AT_decl_file   : 5	
-    <21e>   DW_AT_decl_line   : 607	
-    <220>   DW_AT_type        : <0x15d>	
- <2><224>: Abbrev Number: 19 (DW_TAG_member)
-    <225>   DW_AT_name        : (indirect string, offset: 0x5a): userptr	
-    <229>   DW_AT_decl_file   : 5	
-    <22a>   DW_AT_decl_line   : 608	
-    <22c>   DW_AT_type        : <0x5c>	
- <2><230>: Abbrev Number: 20 (DW_TAG_member)
-    <231>   DW_AT_name        : fd	
-    <234>   DW_AT_decl_file   : 5	
-    <235>   DW_AT_decl_line   : 609	
-    <237>   DW_AT_type        : <0x152>	
- <2><23b>: Abbrev Number: 0
- <1><23c>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <23d>   DW_AT_name        : (indirect string, offset: 0x292): v4l2_plane	
-    <241>   DW_AT_byte_size   : 60	
-    <242>   DW_AT_decl_file   : 5	
-    <243>   DW_AT_decl_line   : 603	
-    <245>   DW_AT_sibling     : <0x293>	
- <2><249>: Abbrev Number: 15 (DW_TAG_member)
-    <24a>   DW_AT_name        : (indirect string, offset: 0x1d5): bytesused	
-    <24e>   DW_AT_decl_file   : 5	
-    <24f>   DW_AT_decl_line   : 604	
-    <251>   DW_AT_type        : <0x15d>	
-    <255>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><258>: Abbrev Number: 15 (DW_TAG_member)
-    <259>   DW_AT_name        : (indirect string, offset: 0x113): length	
-    <25d>   DW_AT_decl_file   : 5	
-    <25e>   DW_AT_decl_line   : 605	
-    <260>   DW_AT_type        : <0x15d>	
-    <264>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><267>: Abbrev Number: 21 (DW_TAG_member)
-    <268>   DW_AT_name        : m	
-    <26a>   DW_AT_decl_file   : 5	
-    <26b>   DW_AT_decl_line   : 610	
-    <26d>   DW_AT_type        : <0x20f>	
-    <271>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><274>: Abbrev Number: 15 (DW_TAG_member)
-    <275>   DW_AT_name        : (indirect string, offset: 0x34): data_offset	
-    <279>   DW_AT_decl_file   : 5	
-    <27a>   DW_AT_decl_line   : 611	
-    <27c>   DW_AT_type        : <0x15d>	
-    <280>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><283>: Abbrev Number: 15 (DW_TAG_member)
-    <284>   DW_AT_name        : (indirect string, offset: 0x2e7): reserved	
-    <288>   DW_AT_decl_file   : 5	
-    <289>   DW_AT_decl_line   : 612	
-    <28b>   DW_AT_type        : <0x293>	
-    <28f>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><292>: Abbrev Number: 0
- <1><293>: Abbrev Number: 16 (DW_TAG_array_type)
-    <294>   DW_AT_type        : <0x15d>	
-    <298>   DW_AT_sibling     : <0x2a3>	
- <2><29c>: Abbrev Number: 17 (DW_TAG_subrange_type)
-    <29d>   DW_AT_type        : <0x6e>	
-    <2a1>   DW_AT_upper_bound : 10	
- <2><2a2>: Abbrev Number: 0
- <1><2a3>: Abbrev Number: 18 (DW_TAG_union_type)
-    <2a4>   DW_AT_byte_size   : 4	
-    <2a5>   DW_AT_decl_file   : 5	
-    <2a6>   DW_AT_decl_line   : 658	
-    <2a8>   DW_AT_sibling     : <0x2dc>	
- <2><2ac>: Abbrev Number: 19 (DW_TAG_member)
-    <2ad>   DW_AT_name        : (indirect string, offset: 0xed): offset	
-    <2b1>   DW_AT_decl_file   : 5	
-    <2b2>   DW_AT_decl_line   : 659	
-    <2b4>   DW_AT_type        : <0x15d>	
- <2><2b8>: Abbrev Number: 19 (DW_TAG_member)
-    <2b9>   DW_AT_name        : (indirect string, offset: 0x5a): userptr	
-    <2bd>   DW_AT_decl_file   : 5	
-    <2be>   DW_AT_decl_line   : 660	
-    <2c0>   DW_AT_type        : <0x5c>	
- <2><2c4>: Abbrev Number: 19 (DW_TAG_member)
-    <2c5>   DW_AT_name        : (indirect string, offset: 0xa7): planes	
-    <2c9>   DW_AT_decl_file   : 5	
-    <2ca>   DW_AT_decl_line   : 661	
-    <2cc>   DW_AT_type        : <0x2dc>	
- <2><2d0>: Abbrev Number: 20 (DW_TAG_member)
-    <2d1>   DW_AT_name        : fd	
-    <2d4>   DW_AT_decl_file   : 5	
-    <2d5>   DW_AT_decl_line   : 662	
-    <2d7>   DW_AT_type        : <0x152>	
- <2><2db>: Abbrev Number: 0
- <1><2dc>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <2dd>   DW_AT_byte_size   : 4	
-    <2de>   DW_AT_type        : <0x23c>	
- <1><2e2>: Abbrev Number: 14 (DW_TAG_structure_type)
-    <2e3>   DW_AT_name        : (indirect string, offset: 0x62): v4l2_buffer	
-    <2e7>   DW_AT_byte_size   : 80	
-    <2e8>   DW_AT_decl_file   : 5	
-    <2e9>   DW_AT_decl_line   : 646	
-    <2eb>   DW_AT_sibling     : <0x3b1>	
- <2><2ef>: Abbrev Number: 15 (DW_TAG_member)
-    <2f0>   DW_AT_name        : (indirect string, offset: 0x9b): index	
-    <2f4>   DW_AT_decl_file   : 5	
-    <2f5>   DW_AT_decl_line   : 647	
-    <2f7>   DW_AT_type        : <0x15d>	
-    <2fb>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2fe>: Abbrev Number: 15 (DW_TAG_member)
-    <2ff>   DW_AT_name        : (indirect string, offset: 0x15c): type	
-    <303>   DW_AT_decl_file   : 5	
-    <304>   DW_AT_decl_line   : 648	
-    <306>   DW_AT_type        : <0x15d>	
-    <30a>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><30d>: Abbrev Number: 15 (DW_TAG_member)
-    <30e>   DW_AT_name        : (indirect string, offset: 0x1d5): bytesused	
-    <312>   DW_AT_decl_file   : 5	
-    <313>   DW_AT_decl_line   : 649	
-    <315>   DW_AT_type        : <0x15d>	
-    <319>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><31c>: Abbrev Number: 15 (DW_TAG_member)
-    <31d>   DW_AT_name        : (indirect string, offset: 0x14d): flags	
-    <321>   DW_AT_decl_file   : 5	
-    <322>   DW_AT_decl_line   : 650	
-    <324>   DW_AT_type        : <0x15d>	
-    <328>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><32b>: Abbrev Number: 15 (DW_TAG_member)
-    <32c>   DW_AT_name        : (indirect string, offset: 0x2d3): field	
-    <330>   DW_AT_decl_file   : 5	
-    <331>   DW_AT_decl_line   : 651	
-    <333>   DW_AT_type        : <0x15d>	
-    <337>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><33a>: Abbrev Number: 15 (DW_TAG_member)
-    <33b>   DW_AT_name        : (indirect string, offset: 0x1a): timestamp	
-    <33f>   DW_AT_decl_file   : 5	
-    <340>   DW_AT_decl_line   : 652	
-    <342>   DW_AT_type        : <0x92>	
-    <346>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><349>: Abbrev Number: 15 (DW_TAG_member)
-    <34a>   DW_AT_name        : (indirect string, offset: 0x19c): timecode	
-    <34e>   DW_AT_decl_file   : 5	
-    <34f>   DW_AT_decl_line   : 653	
-    <351>   DW_AT_type        : <0x188>	
-    <355>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><358>: Abbrev Number: 15 (DW_TAG_member)
-    <359>   DW_AT_name        : (indirect string, offset: 0x153): sequence	
-    <35d>   DW_AT_decl_file   : 5	
-    <35e>   DW_AT_decl_line   : 654	
-    <360>   DW_AT_type        : <0x15d>	
-    <364>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><367>: Abbrev Number: 15 (DW_TAG_member)
-    <368>   DW_AT_name        : (indirect string, offset: 0xae): memory	
-    <36c>   DW_AT_decl_file   : 5	
-    <36d>   DW_AT_decl_line   : 657	
-    <36f>   DW_AT_type        : <0x15d>	
-    <373>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><376>: Abbrev Number: 21 (DW_TAG_member)
-    <377>   DW_AT_name        : m	
-    <379>   DW_AT_decl_file   : 5	
-    <37a>   DW_AT_decl_line   : 663	
-    <37c>   DW_AT_type        : <0x2a3>	
-    <380>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><383>: Abbrev Number: 15 (DW_TAG_member)
-    <384>   DW_AT_name        : (indirect string, offset: 0x113): length	
-    <388>   DW_AT_decl_file   : 5	
-    <389>   DW_AT_decl_line   : 664	
-    <38b>   DW_AT_type        : <0x15d>	
-    <38f>   DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
- <2><392>: Abbrev Number: 15 (DW_TAG_member)
-    <393>   DW_AT_name        : (indirect string, offset: 0xe3): reserved2	
-    <397>   DW_AT_decl_file   : 5	
-    <398>   DW_AT_decl_line   : 665	
-    <39a>   DW_AT_type        : <0x15d>	
-    <39e>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><3a1>: Abbrev Number: 15 (DW_TAG_member)
-    <3a2>   DW_AT_name        : (indirect string, offset: 0x2e7): reserved	
-    <3a6>   DW_AT_decl_file   : 5	
-    <3a7>   DW_AT_decl_line   : 666	
-    <3a9>   DW_AT_type        : <0x15d>	
-    <3ad>   DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
- <2><3b0>: Abbrev Number: 0
- <1><3b1>: Abbrev Number: 4 (DW_TAG_typedef)
-    <3b2>   DW_AT_name        : (indirect string, offset: 0x128): struct_v4l2_buffer	
-    <3b6>   DW_AT_decl_file   : 6	
-    <3b7>   DW_AT_decl_line   : 38	
-    <3b8>   DW_AT_type        : <0x2e2>	
- <1><3bc>: Abbrev Number: 22 (DW_TAG_variable)
-    <3bd>   DW_AT_name        : (indirect string, offset: 0x102): current_wordsize	
-    <3c1>   DW_AT_decl_file   : 7	
-    <3c2>   DW_AT_decl_line   : 757	
-    <3c4>   DW_AT_type        : <0x47>	
-    <3c8>   DW_AT_external    : 1	
-    <3c9>   DW_AT_declaration : 1	
- <1><3ca>: Abbrev Number: 22 (DW_TAG_variable)
-    <3cb>   DW_AT_name        : (indirect string, offset: 0x2cc): sysent	
-    <3cf>   DW_AT_decl_file   : 7	
-    <3d0>   DW_AT_decl_line   : 892	
-    <3d2>   DW_AT_type        : <0x135>	
-    <3d6>   DW_AT_external    : 1	
-    <3d7>   DW_AT_declaration : 1	
- <1><3d8>: Abbrev Number: 22 (DW_TAG_variable)
-    <3d9>   DW_AT_name        : (indirect string, offset: 0x1a5): nsyscalls	
-    <3dd>   DW_AT_decl_file   : 7	
-    <3de>   DW_AT_decl_line   : 903	
-    <3e0>   DW_AT_type        : <0x47>	
-    <3e4>   DW_AT_external    : 1	
-    <3e5>   DW_AT_declaration : 1	
- <1><3e6>: Abbrev Number: 23 (DW_TAG_variable)
-    <3e7>   DW_AT_name        : (indirect string, offset: 0x0): mpers_target_var	
-    <3eb>   DW_AT_decl_file   : 6	
-    <3ec>   DW_AT_decl_line   : 47	
-    <3ed>   DW_AT_type        : <0x3b1>	
-    <3f1>   DW_AT_external    : 1	
-    <3f2>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><3f8>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_buffer.d2 b/mpers-mx32/struct_v4l2_buffer.d2
deleted file mode 100644
index 9f4a980..0000000
--- a/mpers-mx32/struct_v4l2_buffer.d2
+++ /dev/null
@@ -1,521 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x141): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x47): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xb5): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x11a): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1af): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x161): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xc3): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xda): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x249): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x51): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x27b): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2d9): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x63>
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1d0): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x284): timeval
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xbb>
-<2><9e>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x40): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2ab): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><bb>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xc1>
-<1><c1>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><c6>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x2cc): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x119>
-<2><d2>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13b): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><e0>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x91): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ee>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><fc>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x24): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x124>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><10a>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x88): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xbb>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><119>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x124>
-<2><122>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><124>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x119>
-<1><12a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x29d): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xc6>
-<1><135>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x13b>
-<1><13b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x12a>
-<1><140>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1df): _Bool
-<1><147>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x244): __u8
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><152>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x28c): __s32
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><15d>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xa1): __u32
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><168>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x2bb): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 8
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x188>
-<2><175>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x6e): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><17b>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x185): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><181>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x16e): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><188>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf4): v4l2_timecode
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 519
-DW_AT_sibling     : <0x1ff>
-<2><195>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15c): type
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 520
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1a4>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14d): flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 521
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1b3>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d): frames
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 522
-DW_AT_type        : <0x147>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1c2>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c2): seconds
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 523
-DW_AT_type        : <0x147>
-DW_AT_data_member_location: 2 byte block: 23 9 	(DW_OP_plus_uconst: 9)
-<2><1d1>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2b3): minutes
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 524
-DW_AT_type        : <0x147>
-DW_AT_data_member_location: 2 byte block: 23 a 	(DW_OP_plus_uconst: 10)
-<2><1e0>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ca): hours
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 525
-DW_AT_type        : <0x147>
-DW_AT_data_member_location: 2 byte block: 23 b 	(DW_OP_plus_uconst: 11)
-<2><1ef>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f0): userbits
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 526
-DW_AT_type        : <0x1ff>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1ff>
-Abbrev Number: 16 (DW_TAG_array_type)
-DW_AT_type        : <0x147>
-DW_AT_sibling     : <0x20f>
-<2><208>
-Abbrev Number: 17 (DW_TAG_subrange_type)
-DW_AT_type        : <0x6e>
-DW_AT_upper_bound : 3
-<1><20f>
-Abbrev Number: 18 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 606
-DW_AT_sibling     : <0x23c>
-<2><218>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e5): mem_offset
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 607
-DW_AT_type        : <0x15d>
-<2><224>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5a): userptr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 608
-DW_AT_type        : <0x5c>
-<2><230>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : fd
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 609
-DW_AT_type        : <0x152>
-<1><23c>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x292): v4l2_plane
-DW_AT_byte_size   : 60
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 603
-DW_AT_sibling     : <0x293>
-<2><249>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d5): bytesused
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 604
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><258>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x113): length
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 605
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><267>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : m
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 610
-DW_AT_type        : <0x20f>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><274>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x34): data_offset
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 611
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><283>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e7): reserved
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 612
-DW_AT_type        : <0x293>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><293>
-Abbrev Number: 16 (DW_TAG_array_type)
-DW_AT_type        : <0x15d>
-DW_AT_sibling     : <0x2a3>
-<2><29c>
-Abbrev Number: 17 (DW_TAG_subrange_type)
-DW_AT_type        : <0x6e>
-DW_AT_upper_bound : 10
-<1><2a3>
-Abbrev Number: 18 (DW_TAG_union_type)
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 658
-DW_AT_sibling     : <0x2dc>
-<2><2ac>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xed): offset
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 659
-DW_AT_type        : <0x15d>
-<2><2b8>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5a): userptr
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 660
-DW_AT_type        : <0x5c>
-<2><2c4>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa7): planes
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 661
-DW_AT_type        : <0x2dc>
-<2><2d0>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : fd
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 662
-DW_AT_type        : <0x152>
-<1><2dc>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x23c>
-<1><2e2>
-Abbrev Number: 14 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x62): v4l2_buffer
-DW_AT_byte_size   : 80
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 646
-DW_AT_sibling     : <0x3b1>
-<2><2ef>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9b): index
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 647
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2fe>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15c): type
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 648
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><30d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d5): bytesused
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 649
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><31c>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14d): flags
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 650
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><32b>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2d3): field
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 651
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><33a>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a): timestamp
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 652
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><349>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19c): timecode
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 653
-DW_AT_type        : <0x188>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><358>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x153): sequence
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 654
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><367>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xae): memory
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 657
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><376>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : m
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 663
-DW_AT_type        : <0x2a3>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><383>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x113): length
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 664
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 44 	(DW_OP_plus_uconst: 68)
-<2><392>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe3): reserved2
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 665
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><3a1>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2e7): reserved
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 666
-DW_AT_type        : <0x15d>
-DW_AT_data_member_location: 2 byte block: 23 4c 	(DW_OP_plus_uconst: 76)
-<1><3b1>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x128): struct_v4l2_buffer
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x2e2>
-<1><3bc>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x102): current_wordsize
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3ca>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x2cc): sysent
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x135>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3d8>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1a5): nsyscalls
-DW_AT_decl_file   : 7
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><3e6>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x0): mpers_target_var
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x3b1>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_v4l2_clip.c b/mpers-mx32/struct_v4l2_clip.c
new file mode 100644
index 0000000..cd89a04
--- /dev/null
+++ b/mpers-mx32/struct_v4l2_clip.c
@@ -0,0 +1,49 @@
+/*
+ * 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.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "defs.h"
+
+
+#include <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;
+typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
+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;
+typedef struct v4l2_framebuffer struct_v4l2_framebuffer;
+typedef struct v4l2_input struct_v4l2_input;
+typedef struct v4l2_standard struct_v4l2_standard;
+
+struct_v4l2_clip mpers_target_var;
diff --git a/mpers-mx32/struct_v4l2_clip.h b/mpers-mx32/struct_v4l2_clip.h
new file mode 100644
index 0000000..10a4b64
--- /dev/null
+++ b/mpers-mx32/struct_v4l2_clip.h
@@ -0,0 +1,13 @@
+#include <inttypes.h>
+typedef uint32_t mpers_ptr_t;
+typedef
+struct {
+struct {
+int32_t left;
+int32_t top;
+int32_t width;
+int32_t height;
+} ATTRIBUTE_PACKED c;
+mpers_ptr_t next;
+} ATTRIBUTE_PACKED mx32_struct_v4l2_clip;
+#define MPERS_mx32_struct_v4l2_clip mx32_struct_v4l2_clip
diff --git a/mpers-mx32/struct_v4l2_create_buffers.c b/mpers-mx32/struct_v4l2_create_buffers.c
index 7ecdafd..0fc1469 100644
--- a/mpers-mx32/struct_v4l2_create_buffers.c
+++ b/mpers-mx32/struct_v4l2_create_buffers.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_create_buffers.d1 b/mpers-mx32/struct_v4l2_create_buffers.d1
deleted file mode 100644
index 66c63fc..0000000
--- a/mpers-mx32/struct_v4l2_create_buffers.d1
+++ /dev/null
@@ -1,672 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x5f0 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x297): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x2f9): mpers-mx32/struct_v4l2_create_buffers.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x3d1): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1aa): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x2e): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x3b5): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x168): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x244): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1df): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x1bc): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0xf3): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x2e7): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x38): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x265): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0x37b): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x321): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x6f): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x16): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x55): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x333): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x26f): _Bool	
- <1><ff>: Abbrev Number: 12 (DW_TAG_typedef)
-    <100>   DW_AT_name        : (indirect string, offset: 0x2e2): __u8	
-    <104>   DW_AT_decl_file   : 2	
-    <105>   DW_AT_decl_line   : 20	
-    <106>   DW_AT_type        : <0x39>	
- <1><10a>: Abbrev Number: 12 (DW_TAG_typedef)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x291): __u16	
-    <10f>   DW_AT_decl_file   : 2	
-    <110>   DW_AT_decl_line   : 23	
-    <111>   DW_AT_type        : <0x40>	
- <1><115>: Abbrev Number: 12 (DW_TAG_typedef)
-    <116>   DW_AT_name        : (indirect string, offset: 0x327): __s32	
-    <11a>   DW_AT_decl_file   : 2	
-    <11b>   DW_AT_decl_line   : 25	
-    <11c>   DW_AT_type        : <0x2b>	
- <1><120>: Abbrev Number: 12 (DW_TAG_typedef)
-    <121>   DW_AT_name        : (indirect string, offset: 0xaf): __u32	
-    <125>   DW_AT_decl_file   : 2	
-    <126>   DW_AT_decl_line   : 26	
-    <127>   DW_AT_type        : <0x47>	
- <1><12b>: Abbrev Number: 13 (DW_TAG_enumeration_type)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x35c): v4l2_preemphasis	
-    <130>   DW_AT_byte_size   : 4	
-    <131>   DW_AT_decl_file   : 6	
-    <132>   DW_AT_decl_line   : 763	
-    <134>   DW_AT_sibling     : <0x14b>	
- <2><138>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <139>   DW_AT_name        : (indirect string, offset: 0x21a): V4L2_PREEMPHASIS_DISABLED	
-    <13d>   DW_AT_const_value : 0	
- <2><13e>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <13f>   DW_AT_name        : (indirect string, offset: 0x1f7): V4L2_PREEMPHASIS_50_uS	
-    <143>   DW_AT_const_value : 1	
- <2><144>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <145>   DW_AT_name        : (indirect string, offset: 0x89): V4L2_PREEMPHASIS_75_uS	
-    <149>   DW_AT_const_value : 2	
- <2><14a>: Abbrev Number: 0
- <1><14b>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <14c>   DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect	
-    <150>   DW_AT_byte_size   : 16	
-    <151>   DW_AT_decl_file   : 3	
-    <152>   DW_AT_decl_line   : 205	
-    <153>   DW_AT_sibling     : <0x190>	
- <2><157>: Abbrev Number: 8 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x26a): left	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 206	
-    <15e>   DW_AT_type        : <0x115>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><165>: Abbrev Number: 9 (DW_TAG_member)
-    <166>   DW_AT_name        : top	
-    <16a>   DW_AT_decl_file   : 3	
-    <16b>   DW_AT_decl_line   : 207	
-    <16c>   DW_AT_type        : <0x115>	
-    <170>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><173>: Abbrev Number: 8 (DW_TAG_member)
-    <174>   DW_AT_name        : (indirect string, offset: 0xd2): width	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 208	
-    <17a>   DW_AT_type        : <0x115>	
-    <17e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><181>: Abbrev Number: 8 (DW_TAG_member)
-    <182>   DW_AT_name        : (indirect string, offset: 0x1d8): height	
-    <186>   DW_AT_decl_file   : 3	
-    <187>   DW_AT_decl_line   : 209	
-    <188>   DW_AT_type        : <0x115>	
-    <18c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18f>: Abbrev Number: 0
- <1><190>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <191>   DW_AT_name        : (indirect string, offset: 0x281): v4l2_pix_format	
-    <195>   DW_AT_byte_size   : 32	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 274	
-    <199>   DW_AT_sibling     : <0x216>	
- <2><19d>: Abbrev Number: 16 (DW_TAG_member)
-    <19e>   DW_AT_name        : (indirect string, offset: 0xd2): width	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 275	
-    <1a5>   DW_AT_type        : <0x120>	
-    <1a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1ac>: Abbrev Number: 16 (DW_TAG_member)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0x1d8): height	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 276	
-    <1b4>   DW_AT_type        : <0x120>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1bb>: Abbrev Number: 16 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x41): pixelformat	
-    <1c0>   DW_AT_decl_file   : 3	
-    <1c1>   DW_AT_decl_line   : 277	
-    <1c3>   DW_AT_type        : <0x120>	
-    <1c7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ca>: Abbrev Number: 16 (DW_TAG_member)
-    <1cb>   DW_AT_name        : (indirect string, offset: 0x382): field	
-    <1cf>   DW_AT_decl_file   : 3	
-    <1d0>   DW_AT_decl_line   : 278	
-    <1d2>   DW_AT_type        : <0x120>	
-    <1d6>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1d9>: Abbrev Number: 16 (DW_TAG_member)
-    <1da>   DW_AT_name        : (indirect string, offset: 0xe6): bytesperline	
-    <1de>   DW_AT_decl_file   : 3	
-    <1df>   DW_AT_decl_line   : 279	
-    <1e1>   DW_AT_type        : <0x120>	
-    <1e5>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1e8>: Abbrev Number: 16 (DW_TAG_member)
-    <1e9>   DW_AT_name        : (indirect string, offset: 0x1f): sizeimage	
-    <1ed>   DW_AT_decl_file   : 3	
-    <1ee>   DW_AT_decl_line   : 280	
-    <1f0>   DW_AT_type        : <0x120>	
-    <1f4>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1f7>: Abbrev Number: 16 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0x125): colorspace	
-    <1fc>   DW_AT_decl_file   : 3	
-    <1fd>   DW_AT_decl_line   : 281	
-    <1ff>   DW_AT_type        : <0x120>	
-    <203>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><206>: Abbrev Number: 16 (DW_TAG_member)
-    <207>   DW_AT_name        : (indirect string, offset: 0x0): priv	
-    <20b>   DW_AT_decl_file   : 3	
-    <20c>   DW_AT_decl_line   : 282	
-    <20e>   DW_AT_type        : <0x120>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><215>: Abbrev Number: 0
- <1><216>: Abbrev Number: 17 (DW_TAG_array_type)
-    <217>   DW_AT_type        : <0x120>	
-    <21b>   DW_AT_sibling     : <0x226>	
- <2><21f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <220>   DW_AT_type        : <0x63>	
-    <224>   DW_AT_upper_bound : 1	
- <2><225>: Abbrev Number: 0
- <1><226>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <227>   DW_AT_name        : (indirect string, offset: 0x388): v4l2_clip	
-    <22b>   DW_AT_byte_size   : 20	
-    <22c>   DW_AT_decl_file   : 3	
-    <22d>   DW_AT_decl_line   : 745	
-    <22f>   DW_AT_sibling     : <0x250>	
- <2><233>: Abbrev Number: 19 (DW_TAG_member)
-    <234>   DW_AT_name        : c	
-    <236>   DW_AT_decl_file   : 3	
-    <237>   DW_AT_decl_line   : 746	
-    <239>   DW_AT_type        : <0x14b>	
-    <23d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><240>: Abbrev Number: 16 (DW_TAG_member)
-    <241>   DW_AT_name        : (indirect string, offset: 0x29): next	
-    <245>   DW_AT_decl_file   : 3	
-    <246>   DW_AT_decl_line   : 747	
-    <248>   DW_AT_type        : <0x250>	
-    <24c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><24f>: Abbrev Number: 0
- <1><250>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <251>   DW_AT_byte_size   : 4	
-    <252>   DW_AT_type        : <0x226>	
- <1><256>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <257>   DW_AT_name        : (indirect string, offset: 0xc6): v4l2_window	
-    <25b>   DW_AT_byte_size   : 40	
-    <25c>   DW_AT_decl_file   : 3	
-    <25d>   DW_AT_decl_line   : 750	
-    <25f>   DW_AT_sibling     : <0x2cb>	
- <2><263>: Abbrev Number: 19 (DW_TAG_member)
-    <264>   DW_AT_name        : w	
-    <266>   DW_AT_decl_file   : 3	
-    <267>   DW_AT_decl_line   : 751	
-    <269>   DW_AT_type        : <0x14b>	
-    <26d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><270>: Abbrev Number: 16 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x382): field	
-    <275>   DW_AT_decl_file   : 3	
-    <276>   DW_AT_decl_line   : 752	
-    <278>   DW_AT_type        : <0x120>	
-    <27c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><27f>: Abbrev Number: 16 (DW_TAG_member)
-    <280>   DW_AT_name        : (indirect string, offset: 0x39c): chromakey	
-    <284>   DW_AT_decl_file   : 3	
-    <285>   DW_AT_decl_line   : 753	
-    <287>   DW_AT_type        : <0x120>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><28e>: Abbrev Number: 16 (DW_TAG_member)
-    <28f>   DW_AT_name        : (indirect string, offset: 0x3af): clips	
-    <293>   DW_AT_decl_file   : 3	
-    <294>   DW_AT_decl_line   : 754	
-    <296>   DW_AT_type        : <0x250>	
-    <29a>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><29d>: Abbrev Number: 16 (DW_TAG_member)
-    <29e>   DW_AT_name        : (indirect string, offset: 0xbc): clipcount	
-    <2a2>   DW_AT_decl_file   : 3	
-    <2a3>   DW_AT_decl_line   : 755	
-    <2a5>   DW_AT_type        : <0x120>	
-    <2a9>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><2ac>: Abbrev Number: 16 (DW_TAG_member)
-    <2ad>   DW_AT_name        : (indirect string, offset: 0xb5): bitmap	
-    <2b1>   DW_AT_decl_file   : 3	
-    <2b2>   DW_AT_decl_line   : 756	
-    <2b4>   DW_AT_type        : <0x6a>	
-    <2b8>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><2bb>: Abbrev Number: 16 (DW_TAG_member)
-    <2bc>   DW_AT_name        : (indirect string, offset: 0x130): global_alpha	
-    <2c0>   DW_AT_decl_file   : 3	
-    <2c1>   DW_AT_decl_line   : 757	
-    <2c3>   DW_AT_type        : <0xff>	
-    <2c7>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><2ca>: Abbrev Number: 0
- <1><2cb>: Abbrev Number: 17 (DW_TAG_array_type)
-    <2cc>   DW_AT_type        : <0x120>	
-    <2d0>   DW_AT_sibling     : <0x2db>	
- <2><2d4>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <2d5>   DW_AT_type        : <0x63>	
-    <2d9>   DW_AT_upper_bound : 7	
- <2><2da>: Abbrev Number: 0
- <1><2db>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <2dc>   DW_AT_name        : (indirect string, offset: 0x79): v4l2_vbi_format	
-    <2e0>   DW_AT_byte_size   : 44	
-    <2e1>   DW_AT_decl_file   : 3	
-    <2e2>   DW_AT_decl_line   : 1541	
-    <2e4>   DW_AT_sibling     : <0x361>	
- <2><2e8>: Abbrev Number: 16 (DW_TAG_member)
-    <2e9>   DW_AT_name        : (indirect string, offset: 0x257): sampling_rate	
-    <2ed>   DW_AT_decl_file   : 3	
-    <2ee>   DW_AT_decl_line   : 1542	
-    <2f0>   DW_AT_type        : <0x120>	
-    <2f4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2f7>: Abbrev Number: 16 (DW_TAG_member)
-    <2f8>   DW_AT_name        : (indirect string, offset: 0x10d): offset	
-    <2fc>   DW_AT_decl_file   : 3	
-    <2fd>   DW_AT_decl_line   : 1543	
-    <2ff>   DW_AT_type        : <0x120>	
-    <303>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><306>: Abbrev Number: 16 (DW_TAG_member)
-    <307>   DW_AT_name        : (indirect string, offset: 0x5e): samples_per_line	
-    <30b>   DW_AT_decl_file   : 3	
-    <30c>   DW_AT_decl_line   : 1544	
-    <30e>   DW_AT_type        : <0x120>	
-    <312>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><315>: Abbrev Number: 16 (DW_TAG_member)
-    <316>   DW_AT_name        : (indirect string, offset: 0x3c3): sample_format	
-    <31a>   DW_AT_decl_file   : 3	
-    <31b>   DW_AT_decl_line   : 1545	
-    <31d>   DW_AT_type        : <0x120>	
-    <321>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><324>: Abbrev Number: 16 (DW_TAG_member)
-    <325>   DW_AT_name        : (indirect string, offset: 0x23e): start	
-    <329>   DW_AT_decl_file   : 3	
-    <32a>   DW_AT_decl_line   : 1546	
-    <32c>   DW_AT_type        : <0x361>	
-    <330>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><333>: Abbrev Number: 16 (DW_TAG_member)
-    <334>   DW_AT_name        : (indirect string, offset: 0x32d): count	
-    <338>   DW_AT_decl_file   : 3	
-    <339>   DW_AT_decl_line   : 1547	
-    <33b>   DW_AT_type        : <0x216>	
-    <33f>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><342>: Abbrev Number: 16 (DW_TAG_member)
-    <343>   DW_AT_name        : (indirect string, offset: 0x1b6): flags	
-    <347>   DW_AT_decl_file   : 3	
-    <348>   DW_AT_decl_line   : 1548	
-    <34a>   DW_AT_type        : <0x120>	
-    <34e>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><351>: Abbrev Number: 16 (DW_TAG_member)
-    <352>   DW_AT_name        : (indirect string, offset: 0x3a6): reserved	
-    <356>   DW_AT_decl_file   : 3	
-    <357>   DW_AT_decl_line   : 1549	
-    <359>   DW_AT_type        : <0x216>	
-    <35d>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><360>: Abbrev Number: 0
- <1><361>: Abbrev Number: 17 (DW_TAG_array_type)
-    <362>   DW_AT_type        : <0x115>	
-    <366>   DW_AT_sibling     : <0x371>	
- <2><36a>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <36b>   DW_AT_type        : <0x63>	
-    <36f>   DW_AT_upper_bound : 1	
- <2><370>: Abbrev Number: 0
- <1><371>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <372>   DW_AT_name        : (indirect string, offset: 0x18c): v4l2_sliced_vbi_format	
-    <376>   DW_AT_byte_size   : 112	
-    <377>   DW_AT_decl_file   : 3	
-    <378>   DW_AT_decl_line   : 1563	
-    <37a>   DW_AT_sibling     : <0x3bb>	
- <2><37e>: Abbrev Number: 16 (DW_TAG_member)
-    <37f>   DW_AT_name        : (indirect string, offset: 0x275): service_set	
-    <383>   DW_AT_decl_file   : 3	
-    <384>   DW_AT_decl_line   : 1564	
-    <386>   DW_AT_type        : <0x10a>	
-    <38a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><38d>: Abbrev Number: 16 (DW_TAG_member)
-    <38e>   DW_AT_name        : (indirect string, offset: 0x36d): service_lines	
-    <392>   DW_AT_decl_file   : 3	
-    <393>   DW_AT_decl_line   : 1569	
-    <395>   DW_AT_type        : <0x3bb>	
-    <399>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><39c>: Abbrev Number: 16 (DW_TAG_member)
-    <39d>   DW_AT_name        : (indirect string, offset: 0x4d): io_size	
-    <3a1>   DW_AT_decl_file   : 3	
-    <3a2>   DW_AT_decl_line   : 1570	
-    <3a4>   DW_AT_type        : <0x120>	
-    <3a8>   DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
- <2><3ab>: Abbrev Number: 16 (DW_TAG_member)
-    <3ac>   DW_AT_name        : (indirect string, offset: 0x3a6): reserved	
-    <3b0>   DW_AT_decl_file   : 3	
-    <3b1>   DW_AT_decl_line   : 1571	
-    <3b3>   DW_AT_type        : <0x216>	
-    <3b7>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><3ba>: Abbrev Number: 0
- <1><3bb>: Abbrev Number: 17 (DW_TAG_array_type)
-    <3bc>   DW_AT_type        : <0x10a>	
-    <3c0>   DW_AT_sibling     : <0x3d1>	
- <2><3c4>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3c5>   DW_AT_type        : <0x63>	
-    <3c9>   DW_AT_upper_bound : 1	
- <2><3ca>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3cb>   DW_AT_type        : <0x63>	
-    <3cf>   DW_AT_upper_bound : 23	
- <2><3d0>: Abbrev Number: 0
- <1><3d1>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <3d2>   DW_AT_name        : (indirect string, offset: 0x176): v4l2_plane_pix_format	
-    <3d6>   DW_AT_byte_size   : 20	
-    <3d7>   DW_AT_decl_file   : 3	
-    <3d8>   DW_AT_decl_line   : 1664	
-    <3da>   DW_AT_sibling     : <0x40c>	
- <2><3de>: Abbrev Number: 16 (DW_TAG_member)
-    <3df>   DW_AT_name        : (indirect string, offset: 0x1f): sizeimage	
-    <3e3>   DW_AT_decl_file   : 3	
-    <3e4>   DW_AT_decl_line   : 1665	
-    <3e6>   DW_AT_type        : <0x120>	
-    <3ea>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><3ed>: Abbrev Number: 16 (DW_TAG_member)
-    <3ee>   DW_AT_name        : (indirect string, offset: 0xe6): bytesperline	
-    <3f2>   DW_AT_decl_file   : 3	
-    <3f3>   DW_AT_decl_line   : 1666	
-    <3f5>   DW_AT_type        : <0x10a>	
-    <3f9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3fc>: Abbrev Number: 16 (DW_TAG_member)
-    <3fd>   DW_AT_name        : (indirect string, offset: 0x3a6): reserved	
-    <401>   DW_AT_decl_file   : 3	
-    <402>   DW_AT_decl_line   : 1667	
-    <404>   DW_AT_type        : <0x40c>	
-    <408>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><40b>: Abbrev Number: 0
- <1><40c>: Abbrev Number: 17 (DW_TAG_array_type)
-    <40d>   DW_AT_type        : <0x10a>	
-    <411>   DW_AT_sibling     : <0x41c>	
- <2><415>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <416>   DW_AT_type        : <0x63>	
-    <41a>   DW_AT_upper_bound : 6	
- <2><41b>: Abbrev Number: 0
- <1><41c>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <41d>   DW_AT_name        : (indirect string, offset: 0x151): v4l2_pix_format_mplane	
-    <421>   DW_AT_byte_size   : 192	
-    <422>   DW_AT_decl_file   : 3	
-    <423>   DW_AT_decl_line   : 1680	
-    <425>   DW_AT_sibling     : <0x4a4>	
- <2><429>: Abbrev Number: 16 (DW_TAG_member)
-    <42a>   DW_AT_name        : (indirect string, offset: 0xd2): width	
-    <42e>   DW_AT_decl_file   : 3	
-    <42f>   DW_AT_decl_line   : 1681	
-    <431>   DW_AT_type        : <0x120>	
-    <435>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><438>: Abbrev Number: 16 (DW_TAG_member)
-    <439>   DW_AT_name        : (indirect string, offset: 0x1d8): height	
-    <43d>   DW_AT_decl_file   : 3	
-    <43e>   DW_AT_decl_line   : 1682	
-    <440>   DW_AT_type        : <0x120>	
-    <444>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><447>: Abbrev Number: 16 (DW_TAG_member)
-    <448>   DW_AT_name        : (indirect string, offset: 0x41): pixelformat	
-    <44c>   DW_AT_decl_file   : 3	
-    <44d>   DW_AT_decl_line   : 1683	
-    <44f>   DW_AT_type        : <0x120>	
-    <453>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><456>: Abbrev Number: 16 (DW_TAG_member)
-    <457>   DW_AT_name        : (indirect string, offset: 0x382): field	
-    <45b>   DW_AT_decl_file   : 3	
-    <45c>   DW_AT_decl_line   : 1684	
-    <45e>   DW_AT_type        : <0x120>	
-    <462>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><465>: Abbrev Number: 16 (DW_TAG_member)
-    <466>   DW_AT_name        : (indirect string, offset: 0x125): colorspace	
-    <46a>   DW_AT_decl_file   : 3	
-    <46b>   DW_AT_decl_line   : 1685	
-    <46d>   DW_AT_type        : <0x120>	
-    <471>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><474>: Abbrev Number: 16 (DW_TAG_member)
-    <475>   DW_AT_name        : (indirect string, offset: 0x392): plane_fmt	
-    <479>   DW_AT_decl_file   : 3	
-    <47a>   DW_AT_decl_line   : 1687	
-    <47c>   DW_AT_type        : <0x4a4>	
-    <480>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><483>: Abbrev Number: 16 (DW_TAG_member)
-    <484>   DW_AT_name        : (indirect string, offset: 0x1ec): num_planes	
-    <488>   DW_AT_decl_file   : 3	
-    <489>   DW_AT_decl_line   : 1688	
-    <48b>   DW_AT_type        : <0xff>	
-    <48f>   DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
- <2><493>: Abbrev Number: 16 (DW_TAG_member)
-    <494>   DW_AT_name        : (indirect string, offset: 0x3a6): reserved	
-    <498>   DW_AT_decl_file   : 3	
-    <499>   DW_AT_decl_line   : 1689	
-    <49b>   DW_AT_type        : <0x4b4>	
-    <49f>   DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
- <2><4a3>: Abbrev Number: 0
- <1><4a4>: Abbrev Number: 17 (DW_TAG_array_type)
-    <4a5>   DW_AT_type        : <0x3d1>	
-    <4a9>   DW_AT_sibling     : <0x4b4>	
- <2><4ad>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <4ae>   DW_AT_type        : <0x63>	
-    <4b2>   DW_AT_upper_bound : 7	
- <2><4b3>: Abbrev Number: 0
- <1><4b4>: Abbrev Number: 17 (DW_TAG_array_type)
-    <4b5>   DW_AT_type        : <0xff>	
-    <4b9>   DW_AT_sibling     : <0x4c4>	
- <2><4bd>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <4be>   DW_AT_type        : <0x63>	
-    <4c2>   DW_AT_upper_bound : 10	
- <2><4c3>: Abbrev Number: 0
- <1><4c4>: Abbrev Number: 20 (DW_TAG_union_type)
-    <4c5>   DW_AT_byte_size   : 200	
-    <4c6>   DW_AT_decl_file   : 3	
-    <4c7>   DW_AT_decl_line   : 1704	
-    <4c9>   DW_AT_sibling     : <0x516>	
- <2><4cd>: Abbrev Number: 21 (DW_TAG_member)
-    <4ce>   DW_AT_name        : pix	
-    <4d2>   DW_AT_decl_file   : 3	
-    <4d3>   DW_AT_decl_line   : 1705	
-    <4d5>   DW_AT_type        : <0x190>	
- <2><4d9>: Abbrev Number: 22 (DW_TAG_member)
-    <4da>   DW_AT_name        : (indirect string, offset: 0x5): pix_mp	
-    <4de>   DW_AT_decl_file   : 3	
-    <4df>   DW_AT_decl_line   : 1706	
-    <4e1>   DW_AT_type        : <0x41c>	
- <2><4e5>: Abbrev Number: 21 (DW_TAG_member)
-    <4e6>   DW_AT_name        : win	
-    <4ea>   DW_AT_decl_file   : 3	
-    <4eb>   DW_AT_decl_line   : 1707	
-    <4ed>   DW_AT_type        : <0x256>	
- <2><4f1>: Abbrev Number: 21 (DW_TAG_member)
-    <4f2>   DW_AT_name        : vbi	
-    <4f6>   DW_AT_decl_file   : 3	
-    <4f7>   DW_AT_decl_line   : 1708	
-    <4f9>   DW_AT_type        : <0x2db>	
- <2><4fd>: Abbrev Number: 22 (DW_TAG_member)
-    <4fe>   DW_AT_name        : (indirect string, offset: 0x1a3): sliced	
-    <502>   DW_AT_decl_file   : 3	
-    <503>   DW_AT_decl_line   : 1709	
-    <505>   DW_AT_type        : <0x371>	
- <2><509>: Abbrev Number: 22 (DW_TAG_member)
-    <50a>   DW_AT_name        : (indirect string, offset: 0xa6): raw_data	
-    <50e>   DW_AT_decl_file   : 3	
-    <50f>   DW_AT_decl_line   : 1710	
-    <511>   DW_AT_type        : <0x516>	
- <2><515>: Abbrev Number: 0
- <1><516>: Abbrev Number: 17 (DW_TAG_array_type)
-    <517>   DW_AT_type        : <0xff>	
-    <51b>   DW_AT_sibling     : <0x526>	
- <2><51f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <520>   DW_AT_type        : <0x63>	
-    <524>   DW_AT_upper_bound : 199	
- <2><525>: Abbrev Number: 0
- <1><526>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <527>   DW_AT_name        : (indirect string, offset: 0x20e): v4l2_format	
-    <52b>   DW_AT_byte_size   : 204	
-    <52c>   DW_AT_decl_file   : 3	
-    <52d>   DW_AT_decl_line   : 1702	
-    <52f>   DW_AT_sibling     : <0x552>	
- <2><533>: Abbrev Number: 16 (DW_TAG_member)
-    <534>   DW_AT_name        : (indirect string, offset: 0x1d3): type	
-    <538>   DW_AT_decl_file   : 3	
-    <539>   DW_AT_decl_line   : 1703	
-    <53b>   DW_AT_type        : <0x120>	
-    <53f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><542>: Abbrev Number: 19 (DW_TAG_member)
-    <543>   DW_AT_name        : fmt	
-    <547>   DW_AT_decl_file   : 3	
-    <548>   DW_AT_decl_line   : 1711	
-    <54a>   DW_AT_type        : <0x4c4>	
-    <54e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><551>: Abbrev Number: 0
- <1><552>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <553>   DW_AT_name        : (indirect string, offset: 0x13d): v4l2_create_buffers	
-    <557>   DW_AT_byte_size   : 248	
-    <558>   DW_AT_decl_file   : 3	
-    <559>   DW_AT_decl_line   : 1843	
-    <55b>   DW_AT_sibling     : <0x5ac>	
- <2><55f>: Abbrev Number: 16 (DW_TAG_member)
-    <560>   DW_AT_name        : (indirect string, offset: 0xa0): index	
-    <564>   DW_AT_decl_file   : 3	
-    <565>   DW_AT_decl_line   : 1844	
-    <567>   DW_AT_type        : <0x120>	
-    <56b>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><56e>: Abbrev Number: 16 (DW_TAG_member)
-    <56f>   DW_AT_name        : (indirect string, offset: 0x32d): count	
-    <573>   DW_AT_decl_file   : 3	
-    <574>   DW_AT_decl_line   : 1845	
-    <576>   DW_AT_type        : <0x120>	
-    <57a>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><57d>: Abbrev Number: 16 (DW_TAG_member)
-    <57e>   DW_AT_name        : (indirect string, offset: 0xd8): memory	
-    <582>   DW_AT_decl_file   : 3	
-    <583>   DW_AT_decl_line   : 1846	
-    <585>   DW_AT_type        : <0x120>	
-    <589>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><58c>: Abbrev Number: 16 (DW_TAG_member)
-    <58d>   DW_AT_name        : (indirect string, offset: 0xdf): format	
-    <591>   DW_AT_decl_file   : 3	
-    <592>   DW_AT_decl_line   : 1847	
-    <594>   DW_AT_type        : <0x526>	
-    <598>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><59b>: Abbrev Number: 16 (DW_TAG_member)
-    <59c>   DW_AT_name        : (indirect string, offset: 0x3a6): reserved	
-    <5a0>   DW_AT_decl_file   : 3	
-    <5a1>   DW_AT_decl_line   : 1848	
-    <5a3>   DW_AT_type        : <0x2cb>	
-    <5a7>   DW_AT_data_member_location: 3 byte block: 23 d8 1 	(DW_OP_plus_uconst: 216)
- <2><5ab>: Abbrev Number: 0
- <1><5ac>: Abbrev Number: 12 (DW_TAG_typedef)
-    <5ad>   DW_AT_name        : (indirect string, offset: 0x341): struct_v4l2_create_buffers	
-    <5b1>   DW_AT_decl_file   : 4	
-    <5b2>   DW_AT_decl_line   : 39	
-    <5b3>   DW_AT_type        : <0x552>	
- <1><5b7>: Abbrev Number: 23 (DW_TAG_variable)
-    <5b8>   DW_AT_name        : (indirect string, offset: 0x114): current_wordsize	
-    <5bc>   DW_AT_decl_file   : 5	
-    <5bd>   DW_AT_decl_line   : 757	
-    <5bf>   DW_AT_type        : <0x47>	
-    <5c3>   DW_AT_external    : 1	
-    <5c4>   DW_AT_declaration : 1	
- <1><5c5>: Abbrev Number: 23 (DW_TAG_variable)
-    <5c6>   DW_AT_name        : (indirect string, offset: 0x37b): sysent	
-    <5ca>   DW_AT_decl_file   : 5	
-    <5cb>   DW_AT_decl_line   : 892	
-    <5cd>   DW_AT_type        : <0xed>	
-    <5d1>   DW_AT_external    : 1	
-    <5d2>   DW_AT_declaration : 1	
- <1><5d3>: Abbrev Number: 23 (DW_TAG_variable)
-    <5d4>   DW_AT_name        : (indirect string, offset: 0x234): nsyscalls	
-    <5d8>   DW_AT_decl_file   : 5	
-    <5d9>   DW_AT_decl_line   : 903	
-    <5db>   DW_AT_type        : <0x47>	
-    <5df>   DW_AT_external    : 1	
-    <5e0>   DW_AT_declaration : 1	
- <1><5e1>: Abbrev Number: 24 (DW_TAG_variable)
-    <5e2>   DW_AT_name        : (indirect string, offset: 0xfc): mpers_target_var	
-    <5e6>   DW_AT_decl_file   : 4	
-    <5e7>   DW_AT_decl_line   : 47	
-    <5e8>   DW_AT_type        : <0x5ac>	
-    <5ec>   DW_AT_external    : 1	
-    <5ed>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><5f3>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_create_buffers.d2 b/mpers-mx32/struct_v4l2_create_buffers.d2
deleted file mode 100644
index a3ef10a..0000000
--- a/mpers-mx32/struct_v4l2_create_buffers.d2
+++ /dev/null
@@ -1,762 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1aa): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x2e): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x3b5): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x168): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x244): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1df): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1bc): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xf3): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x2e7): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x38): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x265): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x37b): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x321): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6f): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x55): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x333): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x26f): _Bool
-<1><ff>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2e2): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><10a>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x291): __u16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><115>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x327): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><120>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xaf): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><12b>
-Abbrev Number: 13 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x35c): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x14b>
-<2><138>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x21a): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><13e>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1f7): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><144>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x89): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><14b>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 205
-DW_AT_sibling     : <0x190>
-<2><157>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26a): left
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 206
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><165>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : top
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 207
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><173>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd2): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 208
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><181>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d8): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 209
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><190>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x281): v4l2_pix_format
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_sibling     : <0x216>
-<2><19d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd2): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 275
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d8): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 276
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x41): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 277
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ca>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x382): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 278
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><1d9>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe6): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 279
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1e8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 280
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1f7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x125): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 281
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><206>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): priv
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 282
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><216>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x120>
-DW_AT_sibling     : <0x226>
-<2><21f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><226>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x388): v4l2_clip
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 745
-DW_AT_sibling     : <0x250>
-<2><233>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : c
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 746
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><240>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x29): next
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 747
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><250>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x226>
-<1><256>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc6): v4l2_window
-DW_AT_byte_size   : 40
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 750
-DW_AT_sibling     : <0x2cb>
-<2><263>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : w
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 751
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><270>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x382): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 752
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><27f>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x39c): chromakey
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 753
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><28e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3af): clips
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 754
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><29d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbc): clipcount
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 755
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><2ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb5): bitmap
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 756
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><2bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x130): global_alpha
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><2cb>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x120>
-DW_AT_sibling     : <0x2db>
-<2><2d4>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 7
-<1><2db>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x79): v4l2_vbi_format
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1541
-DW_AT_sibling     : <0x361>
-<2><2e8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x257): sampling_rate
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1542
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2f7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10d): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1543
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><306>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5e): samples_per_line
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1544
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><315>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3c3): sample_format
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1545
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><324>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23e): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1546
-DW_AT_type        : <0x361>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><333>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x32d): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1547
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><342>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b6): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1548
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><351>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a6): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1549
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><361>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x115>
-DW_AT_sibling     : <0x371>
-<2><36a>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><371>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x18c): v4l2_sliced_vbi_format
-DW_AT_byte_size   : 112
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1563
-DW_AT_sibling     : <0x3bb>
-<2><37e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x275): service_set
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1564
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><38d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x36d): service_lines
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1569
-DW_AT_type        : <0x3bb>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><39c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x4d): io_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1570
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
-<2><3ab>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a6): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1571
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<1><3bb>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x3d1>
-<2><3c4>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<2><3ca>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 23
-<1><3d1>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x176): v4l2_plane_pix_format
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1664
-DW_AT_sibling     : <0x40c>
-<2><3de>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1665
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><3ed>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe6): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1666
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3fc>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a6): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1667
-DW_AT_type        : <0x40c>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<1><40c>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x41c>
-<2><415>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 6
-<1><41c>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x151): v4l2_pix_format_mplane
-DW_AT_byte_size   : 192
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1680
-DW_AT_sibling     : <0x4a4>
-<2><429>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd2): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1681
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><438>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d8): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1682
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><447>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x41): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1683
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><456>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x382): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1684
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><465>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x125): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1685
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><474>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x392): plane_fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1687
-DW_AT_type        : <0x4a4>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><483>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ec): num_planes
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1688
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
-<2><493>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a6): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1689
-DW_AT_type        : <0x4b4>
-DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
-<1><4a4>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x3d1>
-DW_AT_sibling     : <0x4b4>
-<2><4ad>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 7
-<1><4b4>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x4c4>
-<2><4bd>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 10
-<1><4c4>
-Abbrev Number: 20 (DW_TAG_union_type)
-DW_AT_byte_size   : 200
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1704
-DW_AT_sibling     : <0x516>
-<2><4cd>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : pix
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1705
-DW_AT_type        : <0x190>
-<2><4d9>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5): pix_mp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1706
-DW_AT_type        : <0x41c>
-<2><4e5>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : win
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1707
-DW_AT_type        : <0x256>
-<2><4f1>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : vbi
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1708
-DW_AT_type        : <0x2db>
-<2><4fd>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a3): sliced
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1709
-DW_AT_type        : <0x371>
-<2><509>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa6): raw_data
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1710
-DW_AT_type        : <0x516>
-<1><516>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x526>
-<2><51f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 199
-<1><526>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x20e): v4l2_format
-DW_AT_byte_size   : 204
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1702
-DW_AT_sibling     : <0x552>
-<2><533>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1d3): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1703
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><542>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1711
-DW_AT_type        : <0x4c4>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><552>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x13d): v4l2_create_buffers
-DW_AT_byte_size   : 248
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1843
-DW_AT_sibling     : <0x5ac>
-<2><55f>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa0): index
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1844
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><56e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x32d): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1845
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><57d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd8): memory
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1846
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><58c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xdf): format
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1847
-DW_AT_type        : <0x526>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><59b>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3a6): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1848
-DW_AT_type        : <0x2cb>
-DW_AT_data_member_location: 3 byte block: 23 d8 1 	(DW_OP_plus_uconst: 216)
-<1><5ac>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x341): struct_v4l2_create_buffers
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x552>
-<1><5b7>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x114): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><5c5>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x37b): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><5d3>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x234): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><5e1>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xfc): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x5ac>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_v4l2_create_buffers.h b/mpers-mx32/struct_v4l2_create_buffers.h
index e1c0784..7c0b20e 100644
--- a/mpers-mx32/struct_v4l2_create_buffers.h
+++ b/mpers-mx32/struct_v4l2_create_buffers.h
@@ -59,8 +59,8 @@
 } ATTRIBUTE_PACKED vbi;
 struct {
 uint16_t service_set;
-uint16_t service_lines[24];
-unsigned char mpers_filler_2[50];
+uint16_t service_lines[2][24];
+unsigned char mpers_filler_2[2];
 uint32_t io_size;
 uint32_t reserved[2];
 } ATTRIBUTE_PACKED sliced;
diff --git a/mpers-mx32/struct_v4l2_ext_control.c b/mpers-mx32/struct_v4l2_ext_control.c
index d5365dd..2696feb 100644
--- a/mpers-mx32/struct_v4l2_ext_control.c
+++ b/mpers-mx32/struct_v4l2_ext_control.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_ext_control.d1 b/mpers-mx32/struct_v4l2_ext_control.d1
deleted file mode 100644
index 9c38b0d..0000000
--- a/mpers-mx32/struct_v4l2_ext_control.d1
+++ /dev/null
@@ -1,250 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x208 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x4f): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x229): mpers-mx32/struct_v4l2_ext_control.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1aa): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x20f): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x158): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1ee): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xfd): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x9a): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x173): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xde): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x206): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x10b): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1e5): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
-    <6c>   DW_AT_type        : <0x70>	
- <1><70>: Abbrev Number: 2 (DW_TAG_base_type)
-    <71>   DW_AT_byte_size   : 1	
-    <72>   DW_AT_encoding    : 6	(signed char)
-    <73>   DW_AT_name        : (indirect string, offset: 0x1a5): char	
- <1><77>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <78>   DW_AT_byte_size   : 4	
-    <79>   DW_AT_type        : <0x7d>	
- <1><7d>: Abbrev Number: 5 (DW_TAG_const_type)
-    <7e>   DW_AT_type        : <0x70>	
- <1><82>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <83>   DW_AT_name        : (indirect string, offset: 0x11d): sysent	
-    <87>   DW_AT_byte_size   : 20	
-    <88>   DW_AT_decl_file   : 1	
-    <89>   DW_AT_decl_line   : 4	
-    <8a>   DW_AT_sibling     : <0xd5>	
- <2><8e>: Abbrev Number: 7 (DW_TAG_member)
-    <8f>   DW_AT_name        : (indirect string, offset: 0x152): nargs	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 5	
-    <95>   DW_AT_type        : <0x47>	
-    <99>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><9c>: Abbrev Number: 7 (DW_TAG_member)
-    <9d>   DW_AT_name        : (indirect string, offset: 0xd4): sys_flags	
-    <a1>   DW_AT_decl_file   : 1	
-    <a2>   DW_AT_decl_line   : 6	
-    <a3>   DW_AT_type        : <0x2b>	
-    <a7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><aa>: Abbrev Number: 8 (DW_TAG_member)
-    <ab>   DW_AT_name        : sen	
-    <af>   DW_AT_decl_file   : 1	
-    <b0>   DW_AT_decl_line   : 7	
-    <b1>   DW_AT_type        : <0x2b>	
-    <b5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b8>: Abbrev Number: 7 (DW_TAG_member)
-    <b9>   DW_AT_name        : (indirect string, offset: 0x220): sys_func	
-    <bd>   DW_AT_decl_file   : 1	
-    <be>   DW_AT_decl_line   : 8	
-    <bf>   DW_AT_type        : <0xe0>	
-    <c3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c6>: Abbrev Number: 7 (DW_TAG_member)
-    <c7>   DW_AT_name        : (indirect string, offset: 0xb3): sys_name	
-    <cb>   DW_AT_decl_file   : 1	
-    <cc>   DW_AT_decl_line   : 9	
-    <cd>   DW_AT_type        : <0x77>	
-    <d1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d4>: Abbrev Number: 0
- <1><d5>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d6>   DW_AT_type        : <0x2b>	
-    <da>   DW_AT_sibling     : <0xe0>	
- <2><de>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <e1>   DW_AT_byte_size   : 4	
-    <e2>   DW_AT_type        : <0xd5>	
- <1><e6>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e7>   DW_AT_name        : (indirect string, offset: 0x197): struct_sysent	
-    <eb>   DW_AT_decl_file   : 1	
-    <ec>   DW_AT_decl_line   : 10	
-    <ed>   DW_AT_type        : <0x82>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <f2>   DW_AT_byte_size   : 4	
-    <f3>   DW_AT_type        : <0xf7>	
- <1><f7>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f8>   DW_AT_type        : <0xe6>	
- <1><fc>: Abbrev Number: 2 (DW_TAG_base_type)
-    <fd>   DW_AT_byte_size   : 1	
-    <fe>   DW_AT_encoding    : 2	(boolean)
-    <ff>   DW_AT_name        : (indirect string, offset: 0xad): _Bool	
- <1><103>: Abbrev Number: 11 (DW_TAG_typedef)
-    <104>   DW_AT_name        : (indirect string, offset: 0x124): __s32	
-    <108>   DW_AT_decl_file   : 2	
-    <109>   DW_AT_decl_line   : 25	
-    <10a>   DW_AT_type        : <0x2b>	
- <1><10e>: Abbrev Number: 11 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x32): __u32	
-    <113>   DW_AT_decl_file   : 2	
-    <114>   DW_AT_decl_line   : 26	
-    <115>   DW_AT_type        : <0x47>	
- <1><119>: Abbrev Number: 11 (DW_TAG_typedef)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x24e): __s64	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 29	
-    <120>   DW_AT_type        : <0x32>	
- <1><124>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <125>   DW_AT_name        : (indirect string, offset: 0x162): v4l2_preemphasis	
-    <129>   DW_AT_byte_size   : 4	
-    <12a>   DW_AT_decl_file   : 6	
-    <12b>   DW_AT_decl_line   : 763	
-    <12d>   DW_AT_sibling     : <0x144>	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED	
-    <136>   DW_AT_const_value : 0	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0x180): V4L2_PREEMPHASIS_50_uS	
-    <13c>   DW_AT_const_value : 1	
- <2><13d>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <13e>   DW_AT_name        : (indirect string, offset: 0x13b): V4L2_PREEMPHASIS_75_uS	
-    <142>   DW_AT_const_value : 2	
- <2><143>: Abbrev Number: 0
- <1><144>: Abbrev Number: 14 (DW_TAG_union_type)
-    <145>   DW_AT_byte_size   : 8	
-    <146>   DW_AT_decl_file   : 3	
-    <147>   DW_AT_decl_line   : 1225	
-    <149>   DW_AT_sibling     : <0x172>	
- <2><14d>: Abbrev Number: 15 (DW_TAG_member)
-    <14e>   DW_AT_name        : (indirect string, offset: 0x38): value	
-    <152>   DW_AT_decl_file   : 3	
-    <153>   DW_AT_decl_line   : 1226	
-    <155>   DW_AT_type        : <0x103>	
- <2><159>: Abbrev Number: 15 (DW_TAG_member)
-    <15a>   DW_AT_name        : (indirect string, offset: 0xf5): value64	
-    <15e>   DW_AT_decl_file   : 3	
-    <15f>   DW_AT_decl_line   : 1227	
-    <161>   DW_AT_type        : <0x119>	
- <2><165>: Abbrev Number: 15 (DW_TAG_member)
-    <166>   DW_AT_name        : (indirect string, offset: 0xbc): string	
-    <16a>   DW_AT_decl_file   : 3	
-    <16b>   DW_AT_decl_line   : 1228	
-    <16d>   DW_AT_type        : <0x6a>	
- <2><171>: Abbrev Number: 0
- <1><172>: Abbrev Number: 16 (DW_TAG_structure_type)
-    <173>   DW_AT_name        : (indirect string, offset: 0x3e): v4l2_ext_control	
-    <177>   DW_AT_byte_size   : 20	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 1221	
-    <17b>   DW_AT_sibling     : <0x1b4>	
- <2><17f>: Abbrev Number: 17 (DW_TAG_member)
-    <180>   DW_AT_name        : id	
-    <183>   DW_AT_decl_file   : 3	
-    <184>   DW_AT_decl_line   : 1222	
-    <186>   DW_AT_type        : <0x10e>	
-    <18a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><18d>: Abbrev Number: 18 (DW_TAG_member)
-    <18e>   DW_AT_name        : (indirect string, offset: 0x21b): size	
-    <192>   DW_AT_decl_file   : 3	
-    <193>   DW_AT_decl_line   : 1223	
-    <195>   DW_AT_type        : <0x10e>	
-    <199>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><19c>: Abbrev Number: 18 (DW_TAG_member)
-    <19d>   DW_AT_name        : (indirect string, offset: 0x1fc): reserved2	
-    <1a1>   DW_AT_decl_file   : 3	
-    <1a2>   DW_AT_decl_line   : 1224	
-    <1a4>   DW_AT_type        : <0x1b4>	
-    <1a8>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ab>: Abbrev Number: 19 (DW_TAG_member)
-    <1ac>   DW_AT_type        : <0x144>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1b3>: Abbrev Number: 0
- <1><1b4>: Abbrev Number: 20 (DW_TAG_array_type)
-    <1b5>   DW_AT_type        : <0x10e>	
-    <1b9>   DW_AT_sibling     : <0x1c4>	
- <2><1bd>: Abbrev Number: 21 (DW_TAG_subrange_type)
-    <1be>   DW_AT_type        : <0x63>	
-    <1c2>   DW_AT_upper_bound : 0	
- <2><1c3>: Abbrev Number: 0
- <1><1c4>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1c5>   DW_AT_name        : (indirect string, offset: 0x1a): struct_v4l2_ext_control	
-    <1c9>   DW_AT_decl_file   : 4	
-    <1ca>   DW_AT_decl_line   : 40	
-    <1cb>   DW_AT_type        : <0x172>	
- <1><1cf>: Abbrev Number: 22 (DW_TAG_variable)
-    <1d0>   DW_AT_name        : (indirect string, offset: 0x12a): current_wordsize	
-    <1d4>   DW_AT_decl_file   : 5	
-    <1d5>   DW_AT_decl_line   : 757	
-    <1d7>   DW_AT_type        : <0x47>	
-    <1db>   DW_AT_external    : 1	
-    <1dc>   DW_AT_declaration : 1	
- <1><1dd>: Abbrev Number: 22 (DW_TAG_variable)
-    <1de>   DW_AT_name        : (indirect string, offset: 0x11d): sysent	
-    <1e2>   DW_AT_decl_file   : 5	
-    <1e3>   DW_AT_decl_line   : 892	
-    <1e5>   DW_AT_type        : <0xf1>	
-    <1e9>   DW_AT_external    : 1	
-    <1ea>   DW_AT_declaration : 1	
- <1><1eb>: Abbrev Number: 22 (DW_TAG_variable)
-    <1ec>   DW_AT_name        : (indirect string, offset: 0x1db): nsyscalls	
-    <1f0>   DW_AT_decl_file   : 5	
-    <1f1>   DW_AT_decl_line   : 903	
-    <1f3>   DW_AT_type        : <0x47>	
-    <1f7>   DW_AT_external    : 1	
-    <1f8>   DW_AT_declaration : 1	
- <1><1f9>: Abbrev Number: 23 (DW_TAG_variable)
-    <1fa>   DW_AT_name        : (indirect string, offset: 0xc3): mpers_target_var	
-    <1fe>   DW_AT_decl_file   : 4	
-    <1ff>   DW_AT_decl_line   : 47	
-    <200>   DW_AT_type        : <0x1c4>	
-    <204>   DW_AT_external    : 1	
-    <205>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><20b>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_ext_control.d2 b/mpers-mx32/struct_v4l2_ext_control.d2
deleted file mode 100644
index e1cf5f0..0000000
--- a/mpers-mx32/struct_v4l2_ext_control.d2
+++ /dev/null
@@ -1,280 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x20f): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x158): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ee): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xfd): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x9a): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x173): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xde): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x206): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x10b): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1e5): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x70>
-<1><70>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1a5): char
-<1><77>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7d>
-<1><7d>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x70>
-<1><82>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x11d): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd5>
-<2><8e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x152): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><9c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd4): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b8>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x220): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c6>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb3): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x77>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d5>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe0>
-<2><de>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><e0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd5>
-<1><e6>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x197): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x82>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf7>
-<1><f7>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe6>
-<1><fc>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xad): _Bool
-<1><103>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x124): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><10e>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x32): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><119>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x24e): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><124>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x162): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x144>
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x180): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><13d>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x13b): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><144>
-Abbrev Number: 14 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1225
-DW_AT_sibling     : <0x172>
-<2><14d>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x38): value
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1226
-DW_AT_type        : <0x103>
-<2><159>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf5): value64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1227
-DW_AT_type        : <0x119>
-<2><165>
-Abbrev Number: 15 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xbc): string
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1228
-DW_AT_type        : <0x6a>
-<1><172>
-Abbrev Number: 16 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x3e): v4l2_ext_control
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1221
-DW_AT_sibling     : <0x1b4>
-<2><17f>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1222
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><18d>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x21b): size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1223
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><19c>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1fc): reserved2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1224
-DW_AT_type        : <0x1b4>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ab>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_type        : <0x144>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1b4>
-Abbrev Number: 20 (DW_TAG_array_type)
-DW_AT_type        : <0x10e>
-DW_AT_sibling     : <0x1c4>
-<2><1bd>
-Abbrev Number: 21 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 0
-<1><1c4>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1a): struct_v4l2_ext_control
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x172>
-<1><1cf>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12a): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1dd>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x11d): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf1>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1eb>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1db): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><1f9>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc3): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1c4>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/struct_v4l2_ext_controls.c b/mpers-mx32/struct_v4l2_ext_controls.c
index 626f230..d89399e 100644
--- a/mpers-mx32/struct_v4l2_ext_controls.c
+++ b/mpers-mx32/struct_v4l2_ext_controls.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_ext_controls.d1 b/mpers-mx32/struct_v4l2_ext_controls.d1
deleted file mode 100644
index 2cf9e8e..0000000
--- a/mpers-mx32/struct_v4l2_ext_controls.d1
+++ /dev/null
@@ -1,297 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x277 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x69): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x43): mpers-mx32/struct_v4l2_ext_controls.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x205): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x275): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1a9): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x249): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x12c): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0xb4): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1ce): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xfb): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x261): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x13a): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x240): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
-    <6c>   DW_AT_type        : <0x70>	
- <1><70>: Abbrev Number: 2 (DW_TAG_base_type)
-    <71>   DW_AT_byte_size   : 1	
-    <72>   DW_AT_encoding    : 6	(signed char)
-    <73>   DW_AT_name        : (indirect string, offset: 0x200): char	
- <1><77>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <78>   DW_AT_byte_size   : 4	
-    <79>   DW_AT_type        : <0x7d>	
- <1><7d>: Abbrev Number: 5 (DW_TAG_const_type)
-    <7e>   DW_AT_type        : <0x70>	
- <1><82>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <83>   DW_AT_name        : (indirect string, offset: 0x14c): sysent	
-    <87>   DW_AT_byte_size   : 20	
-    <88>   DW_AT_decl_file   : 1	
-    <89>   DW_AT_decl_line   : 4	
-    <8a>   DW_AT_sibling     : <0xd5>	
- <2><8e>: Abbrev Number: 7 (DW_TAG_member)
-    <8f>   DW_AT_name        : (indirect string, offset: 0x1a3): nargs	
-    <93>   DW_AT_decl_file   : 1	
-    <94>   DW_AT_decl_line   : 5	
-    <95>   DW_AT_type        : <0x47>	
-    <99>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><9c>: Abbrev Number: 7 (DW_TAG_member)
-    <9d>   DW_AT_name        : (indirect string, offset: 0xf1): sys_flags	
-    <a1>   DW_AT_decl_file   : 1	
-    <a2>   DW_AT_decl_line   : 6	
-    <a3>   DW_AT_type        : <0x2b>	
-    <a7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><aa>: Abbrev Number: 8 (DW_TAG_member)
-    <ab>   DW_AT_name        : sen	
-    <af>   DW_AT_decl_file   : 1	
-    <b0>   DW_AT_decl_line   : 7	
-    <b1>   DW_AT_type        : <0x2b>	
-    <b5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b8>: Abbrev Number: 7 (DW_TAG_member)
-    <b9>   DW_AT_name        : (indirect string, offset: 0x286): sys_func	
-    <bd>   DW_AT_decl_file   : 1	
-    <be>   DW_AT_decl_line   : 8	
-    <bf>   DW_AT_type        : <0xe0>	
-    <c3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c6>: Abbrev Number: 7 (DW_TAG_member)
-    <c7>   DW_AT_name        : (indirect string, offset: 0xd0): sys_name	
-    <cb>   DW_AT_decl_file   : 1	
-    <cc>   DW_AT_decl_line   : 9	
-    <cd>   DW_AT_type        : <0x77>	
-    <d1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d4>: Abbrev Number: 0
- <1><d5>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d6>   DW_AT_type        : <0x2b>	
-    <da>   DW_AT_sibling     : <0xe0>	
- <2><de>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><df>: Abbrev Number: 0
- <1><e0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <e1>   DW_AT_byte_size   : 4	
-    <e2>   DW_AT_type        : <0xd5>	
- <1><e6>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e7>   DW_AT_name        : (indirect string, offset: 0x1f2): struct_sysent	
-    <eb>   DW_AT_decl_file   : 1	
-    <ec>   DW_AT_decl_line   : 10	
-    <ed>   DW_AT_type        : <0x82>	
- <1><f1>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <f2>   DW_AT_byte_size   : 4	
-    <f3>   DW_AT_type        : <0xf7>	
- <1><f7>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f8>   DW_AT_type        : <0xe6>	
- <1><fc>: Abbrev Number: 2 (DW_TAG_base_type)
-    <fd>   DW_AT_byte_size   : 1	
-    <fe>   DW_AT_encoding    : 2	(boolean)
-    <ff>   DW_AT_name        : (indirect string, offset: 0x1a): _Bool	
- <1><103>: Abbrev Number: 11 (DW_TAG_typedef)
-    <104>   DW_AT_name        : (indirect string, offset: 0x16c): __s32	
-    <108>   DW_AT_decl_file   : 2	
-    <109>   DW_AT_decl_line   : 25	
-    <10a>   DW_AT_type        : <0x2b>	
- <1><10e>: Abbrev Number: 11 (DW_TAG_typedef)
-    <10f>   DW_AT_name        : (indirect string, offset: 0x20): __u32	
-    <113>   DW_AT_decl_file   : 2	
-    <114>   DW_AT_decl_line   : 26	
-    <115>   DW_AT_type        : <0x47>	
- <1><119>: Abbrev Number: 11 (DW_TAG_typedef)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x28f): __s64	
-    <11e>   DW_AT_decl_file   : 2	
-    <11f>   DW_AT_decl_line   : 29	
-    <120>   DW_AT_type        : <0x32>	
- <1><124>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <125>   DW_AT_name        : (indirect string, offset: 0x1b3): v4l2_preemphasis	
-    <129>   DW_AT_byte_size   : 4	
-    <12a>   DW_AT_decl_file   : 6	
-    <12b>   DW_AT_decl_line   : 763	
-    <12d>   DW_AT_sibling     : <0x144>	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED	
-    <136>   DW_AT_const_value : 0	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0x1db): V4L2_PREEMPHASIS_50_uS	
-    <13c>   DW_AT_const_value : 1	
- <2><13d>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <13e>   DW_AT_name        : (indirect string, offset: 0x183): V4L2_PREEMPHASIS_75_uS	
-    <142>   DW_AT_const_value : 2	
- <2><143>: Abbrev Number: 0
- <1><144>: Abbrev Number: 14 (DW_TAG_array_type)
-    <145>   DW_AT_type        : <0x10e>	
-    <149>   DW_AT_sibling     : <0x154>	
- <2><14d>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <14e>   DW_AT_type        : <0x63>	
-    <152>   DW_AT_upper_bound : 1	
- <2><153>: Abbrev Number: 0
- <1><154>: Abbrev Number: 16 (DW_TAG_union_type)
-    <155>   DW_AT_byte_size   : 8	
-    <156>   DW_AT_decl_file   : 3	
-    <157>   DW_AT_decl_line   : 1225	
-    <159>   DW_AT_sibling     : <0x182>	
- <2><15d>: Abbrev Number: 17 (DW_TAG_member)
-    <15e>   DW_AT_name        : (indirect string, offset: 0x26): value	
-    <162>   DW_AT_decl_file   : 3	
-    <163>   DW_AT_decl_line   : 1226	
-    <165>   DW_AT_type        : <0x103>	
- <2><169>: Abbrev Number: 17 (DW_TAG_member)
-    <16a>   DW_AT_name        : (indirect string, offset: 0x124): value64	
-    <16e>   DW_AT_decl_file   : 3	
-    <16f>   DW_AT_decl_line   : 1227	
-    <171>   DW_AT_type        : <0x119>	
- <2><175>: Abbrev Number: 17 (DW_TAG_member)
-    <176>   DW_AT_name        : (indirect string, offset: 0xd9): string	
-    <17a>   DW_AT_decl_file   : 3	
-    <17b>   DW_AT_decl_line   : 1228	
-    <17d>   DW_AT_type        : <0x6a>	
- <2><181>: Abbrev Number: 0
- <1><182>: Abbrev Number: 18 (DW_TAG_structure_type)
-    <183>   DW_AT_name        : (indirect string, offset: 0x32): v4l2_ext_control	
-    <187>   DW_AT_byte_size   : 20	
-    <188>   DW_AT_decl_file   : 3	
-    <189>   DW_AT_decl_line   : 1221	
-    <18b>   DW_AT_sibling     : <0x1c4>	
- <2><18f>: Abbrev Number: 19 (DW_TAG_member)
-    <190>   DW_AT_name        : id	
-    <193>   DW_AT_decl_file   : 3	
-    <194>   DW_AT_decl_line   : 1222	
-    <196>   DW_AT_type        : <0x10e>	
-    <19a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><19d>: Abbrev Number: 20 (DW_TAG_member)
-    <19e>   DW_AT_name        : (indirect string, offset: 0x281): size	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 1223	
-    <1a5>   DW_AT_type        : <0x10e>	
-    <1a9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1ac>: Abbrev Number: 20 (DW_TAG_member)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0x257): reserved2	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 1224	
-    <1b4>   DW_AT_type        : <0x1c4>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1bb>: Abbrev Number: 21 (DW_TAG_member)
-    <1bc>   DW_AT_type        : <0x154>	
-    <1c0>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1c3>: Abbrev Number: 0
- <1><1c4>: Abbrev Number: 14 (DW_TAG_array_type)
-    <1c5>   DW_AT_type        : <0x10e>	
-    <1c9>   DW_AT_sibling     : <0x1d4>	
- <2><1cd>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <1ce>   DW_AT_type        : <0x63>	
-    <1d2>   DW_AT_upper_bound : 0	
- <2><1d3>: Abbrev Number: 0
- <1><1d4>: Abbrev Number: 18 (DW_TAG_structure_type)
-    <1d5>   DW_AT_name        : (indirect string, offset: 0x112): v4l2_ext_controls	
-    <1d9>   DW_AT_byte_size   : 24	
-    <1da>   DW_AT_decl_file   : 3	
-    <1db>   DW_AT_decl_line   : 1232	
-    <1dd>   DW_AT_sibling     : <0x22d>	
- <2><1e1>: Abbrev Number: 20 (DW_TAG_member)
-    <1e2>   DW_AT_name        : (indirect string, offset: 0x26a): ctrl_class	
-    <1e6>   DW_AT_decl_file   : 3	
-    <1e7>   DW_AT_decl_line   : 1233	
-    <1e9>   DW_AT_type        : <0x10e>	
-    <1ed>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1f0>: Abbrev Number: 20 (DW_TAG_member)
-    <1f1>   DW_AT_name        : (indirect string, offset: 0x2c): count	
-    <1f5>   DW_AT_decl_file   : 3	
-    <1f6>   DW_AT_decl_line   : 1234	
-    <1f8>   DW_AT_type        : <0x10e>	
-    <1fc>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1ff>: Abbrev Number: 20 (DW_TAG_member)
-    <200>   DW_AT_name        : (indirect string, offset: 0x1c4): error_idx	
-    <204>   DW_AT_decl_file   : 3	
-    <205>   DW_AT_decl_line   : 1235	
-    <207>   DW_AT_type        : <0x10e>	
-    <20b>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><20e>: Abbrev Number: 20 (DW_TAG_member)
-    <20f>   DW_AT_name        : (indirect string, offset: 0x19a): reserved	
-    <213>   DW_AT_decl_file   : 3	
-    <214>   DW_AT_decl_line   : 1236	
-    <216>   DW_AT_type        : <0x144>	
-    <21a>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><21d>: Abbrev Number: 20 (DW_TAG_member)
-    <21e>   DW_AT_name        : (indirect string, offset: 0xc7): controls	
-    <222>   DW_AT_decl_file   : 3	
-    <223>   DW_AT_decl_line   : 1237	
-    <225>   DW_AT_type        : <0x22d>	
-    <229>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><22c>: Abbrev Number: 0
- <1><22d>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <22e>   DW_AT_byte_size   : 4	
-    <22f>   DW_AT_type        : <0x182>	
- <1><233>: Abbrev Number: 11 (DW_TAG_typedef)
-    <234>   DW_AT_name        : (indirect string, offset: 0x153): struct_v4l2_ext_controls	
-    <238>   DW_AT_decl_file   : 4	
-    <239>   DW_AT_decl_line   : 41	
-    <23a>   DW_AT_type        : <0x1d4>	
- <1><23e>: Abbrev Number: 22 (DW_TAG_variable)
-    <23f>   DW_AT_name        : (indirect string, offset: 0x172): current_wordsize	
-    <243>   DW_AT_decl_file   : 5	
-    <244>   DW_AT_decl_line   : 757	
-    <246>   DW_AT_type        : <0x47>	
-    <24a>   DW_AT_external    : 1	
-    <24b>   DW_AT_declaration : 1	
- <1><24c>: Abbrev Number: 22 (DW_TAG_variable)
-    <24d>   DW_AT_name        : (indirect string, offset: 0x14c): sysent	
-    <251>   DW_AT_decl_file   : 5	
-    <252>   DW_AT_decl_line   : 892	
-    <254>   DW_AT_type        : <0xf1>	
-    <258>   DW_AT_external    : 1	
-    <259>   DW_AT_declaration : 1	
- <1><25a>: Abbrev Number: 22 (DW_TAG_variable)
-    <25b>   DW_AT_name        : (indirect string, offset: 0x236): nsyscalls	
-    <25f>   DW_AT_decl_file   : 5	
-    <260>   DW_AT_decl_line   : 903	
-    <262>   DW_AT_type        : <0x47>	
-    <266>   DW_AT_external    : 1	
-    <267>   DW_AT_declaration : 1	
- <1><268>: Abbrev Number: 23 (DW_TAG_variable)
-    <269>   DW_AT_name        : (indirect string, offset: 0xe0): mpers_target_var	
-    <26d>   DW_AT_decl_file   : 4	
-    <26e>   DW_AT_decl_line   : 47	
-    <26f>   DW_AT_type        : <0x233>	
-    <273>   DW_AT_external    : 1	
-    <274>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><27a>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_ext_controls.d2 b/mpers-mx32/struct_v4l2_ext_controls.d2
deleted file mode 100644
index 376d827..0000000
--- a/mpers-mx32/struct_v4l2_ext_controls.d2
+++ /dev/null
@@ -1,334 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x275): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a9): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x249): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x12c): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb4): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1ce): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xfb): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x261): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x13a): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x240): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x70>
-<1><70>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x200): char
-<1><77>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x7d>
-<1><7d>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x70>
-<1><82>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x14c): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd5>
-<2><8e>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a3): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><9c>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xf1): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><aa>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b8>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x286): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xe0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c6>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd0): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x77>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d5>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xe0>
-<2><de>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><e0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd5>
-<1><e6>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1f2): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x82>
-<1><f1>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf7>
-<1><f7>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe6>
-<1><fc>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1a): _Bool
-<1><103>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x16c): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><10e>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x20): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><119>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x28f): __s64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 29
-DW_AT_type        : <0x32>
-<1><124>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x1b3): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x144>
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x0): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1db): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><13d>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x183): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><144>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x10e>
-DW_AT_sibling     : <0x154>
-<2><14d>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><154>
-Abbrev Number: 16 (DW_TAG_union_type)
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1225
-DW_AT_sibling     : <0x182>
-<2><15d>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26): value
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1226
-DW_AT_type        : <0x103>
-<2><169>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x124): value64
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1227
-DW_AT_type        : <0x119>
-<2><175>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xd9): string
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1228
-DW_AT_type        : <0x6a>
-<1><182>
-Abbrev Number: 18 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x32): v4l2_ext_control
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1221
-DW_AT_sibling     : <0x1c4>
-<2><18f>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1222
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><19d>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x281): size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1223
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1ac>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x257): reserved2
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1224
-DW_AT_type        : <0x1c4>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1bb>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_type        : <0x154>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1c4>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x10e>
-DW_AT_sibling     : <0x1d4>
-<2><1cd>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 0
-<1><1d4>
-Abbrev Number: 18 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x112): v4l2_ext_controls
-DW_AT_byte_size   : 24
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1232
-DW_AT_sibling     : <0x22d>
-<2><1e1>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26a): ctrl_class
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1233
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1f0>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x2c): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1234
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1ff>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c4): error_idx
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1235
-DW_AT_type        : <0x10e>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><20e>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19a): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1236
-DW_AT_type        : <0x144>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><21d>
-Abbrev Number: 20 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc7): controls
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1237
-DW_AT_type        : <0x22d>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<1><22d>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x182>
-<1><233>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x153): struct_v4l2_ext_controls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 41
-DW_AT_type        : <0x1d4>
-<1><23e>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x172): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><24c>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x14c): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xf1>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><25a>
-Abbrev Number: 22 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x236): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><268>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe0): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x233>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/struct_v4l2_format.c b/mpers-mx32/struct_v4l2_format.c
index fd7973f..8791f9d 100644
--- a/mpers-mx32/struct_v4l2_format.c
+++ b/mpers-mx32/struct_v4l2_format.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_format.d1 b/mpers-mx32/struct_v4l2_format.d1
deleted file mode 100644
index d06e1c4..0000000
--- a/mpers-mx32/struct_v4l2_format.d1
+++ /dev/null
@@ -1,628 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x586 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x2b1): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0xc1): mpers-mx32/struct_v4l2_format.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x399): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1b1): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x29): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0xf3): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0x16f): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x24b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1e6): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x1c3): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x10e): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x301): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x33): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x27f): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0x352): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x313): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x6a): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x16): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0x50): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x325): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0x289): _Bool	
- <1><ff>: Abbrev Number: 12 (DW_TAG_typedef)
-    <100>   DW_AT_name        : (indirect string, offset: 0x2fc): __u8	
-    <104>   DW_AT_decl_file   : 2	
-    <105>   DW_AT_decl_line   : 20	
-    <106>   DW_AT_type        : <0x39>	
- <1><10a>: Abbrev Number: 12 (DW_TAG_typedef)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x2ab): __u16	
-    <10f>   DW_AT_decl_file   : 2	
-    <110>   DW_AT_decl_line   : 23	
-    <111>   DW_AT_type        : <0x40>	
- <1><115>: Abbrev Number: 12 (DW_TAG_typedef)
-    <116>   DW_AT_name        : (indirect string, offset: 0x319): __s32	
-    <11a>   DW_AT_decl_file   : 2	
-    <11b>   DW_AT_decl_line   : 25	
-    <11c>   DW_AT_type        : <0x2b>	
- <1><120>: Abbrev Number: 12 (DW_TAG_typedef)
-    <121>   DW_AT_name        : (indirect string, offset: 0xaa): __u32	
-    <125>   DW_AT_decl_file   : 2	
-    <126>   DW_AT_decl_line   : 26	
-    <127>   DW_AT_type        : <0x47>	
- <1><12b>: Abbrev Number: 13 (DW_TAG_enumeration_type)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x333): v4l2_preemphasis	
-    <130>   DW_AT_byte_size   : 4	
-    <131>   DW_AT_decl_file   : 6	
-    <132>   DW_AT_decl_line   : 763	
-    <134>   DW_AT_sibling     : <0x14b>	
- <2><138>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <139>   DW_AT_name        : (indirect string, offset: 0x221): V4L2_PREEMPHASIS_DISABLED	
-    <13d>   DW_AT_const_value : 0	
- <2><13e>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <13f>   DW_AT_name        : (indirect string, offset: 0x1fe): V4L2_PREEMPHASIS_50_uS	
-    <143>   DW_AT_const_value : 1	
- <2><144>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <145>   DW_AT_name        : (indirect string, offset: 0x84): V4L2_PREEMPHASIS_75_uS	
-    <149>   DW_AT_const_value : 2	
- <2><14a>: Abbrev Number: 0
- <1><14b>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <14c>   DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect	
-    <150>   DW_AT_byte_size   : 16	
-    <151>   DW_AT_decl_file   : 3	
-    <152>   DW_AT_decl_line   : 205	
-    <153>   DW_AT_sibling     : <0x190>	
- <2><157>: Abbrev Number: 8 (DW_TAG_member)
-    <158>   DW_AT_name        : (indirect string, offset: 0x284): left	
-    <15c>   DW_AT_decl_file   : 3	
-    <15d>   DW_AT_decl_line   : 206	
-    <15e>   DW_AT_type        : <0x115>	
-    <162>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><165>: Abbrev Number: 9 (DW_TAG_member)
-    <166>   DW_AT_name        : top	
-    <16a>   DW_AT_decl_file   : 3	
-    <16b>   DW_AT_decl_line   : 207	
-    <16c>   DW_AT_type        : <0x115>	
-    <170>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><173>: Abbrev Number: 8 (DW_TAG_member)
-    <174>   DW_AT_name        : (indirect string, offset: 0xed): width	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 208	
-    <17a>   DW_AT_type        : <0x115>	
-    <17e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><181>: Abbrev Number: 8 (DW_TAG_member)
-    <182>   DW_AT_name        : (indirect string, offset: 0x1df): height	
-    <186>   DW_AT_decl_file   : 3	
-    <187>   DW_AT_decl_line   : 209	
-    <188>   DW_AT_type        : <0x115>	
-    <18c>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><18f>: Abbrev Number: 0
- <1><190>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <191>   DW_AT_name        : (indirect string, offset: 0x29b): v4l2_pix_format	
-    <195>   DW_AT_byte_size   : 32	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 274	
-    <199>   DW_AT_sibling     : <0x216>	
- <2><19d>: Abbrev Number: 16 (DW_TAG_member)
-    <19e>   DW_AT_name        : (indirect string, offset: 0xed): width	
-    <1a2>   DW_AT_decl_file   : 3	
-    <1a3>   DW_AT_decl_line   : 275	
-    <1a5>   DW_AT_type        : <0x120>	
-    <1a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1ac>: Abbrev Number: 16 (DW_TAG_member)
-    <1ad>   DW_AT_name        : (indirect string, offset: 0x1df): height	
-    <1b1>   DW_AT_decl_file   : 3	
-    <1b2>   DW_AT_decl_line   : 276	
-    <1b4>   DW_AT_type        : <0x120>	
-    <1b8>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1bb>: Abbrev Number: 16 (DW_TAG_member)
-    <1bc>   DW_AT_name        : (indirect string, offset: 0x3c): pixelformat	
-    <1c0>   DW_AT_decl_file   : 3	
-    <1c1>   DW_AT_decl_line   : 277	
-    <1c3>   DW_AT_type        : <0x120>	
-    <1c7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ca>: Abbrev Number: 16 (DW_TAG_member)
-    <1cb>   DW_AT_name        : (indirect string, offset: 0x9b): field	
-    <1cf>   DW_AT_decl_file   : 3	
-    <1d0>   DW_AT_decl_line   : 278	
-    <1d2>   DW_AT_type        : <0x120>	
-    <1d6>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1d9>: Abbrev Number: 16 (DW_TAG_member)
-    <1da>   DW_AT_name        : (indirect string, offset: 0x101): bytesperline	
-    <1de>   DW_AT_decl_file   : 3	
-    <1df>   DW_AT_decl_line   : 279	
-    <1e1>   DW_AT_type        : <0x120>	
-    <1e5>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1e8>: Abbrev Number: 16 (DW_TAG_member)
-    <1e9>   DW_AT_name        : (indirect string, offset: 0x1f): sizeimage	
-    <1ed>   DW_AT_decl_file   : 3	
-    <1ee>   DW_AT_decl_line   : 280	
-    <1f0>   DW_AT_type        : <0x120>	
-    <1f4>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><1f7>: Abbrev Number: 16 (DW_TAG_member)
-    <1f8>   DW_AT_name        : (indirect string, offset: 0x140): colorspace	
-    <1fc>   DW_AT_decl_file   : 3	
-    <1fd>   DW_AT_decl_line   : 281	
-    <1ff>   DW_AT_type        : <0x120>	
-    <203>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><206>: Abbrev Number: 16 (DW_TAG_member)
-    <207>   DW_AT_name        : (indirect string, offset: 0x0): priv	
-    <20b>   DW_AT_decl_file   : 3	
-    <20c>   DW_AT_decl_line   : 282	
-    <20e>   DW_AT_type        : <0x120>	
-    <212>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><215>: Abbrev Number: 0
- <1><216>: Abbrev Number: 17 (DW_TAG_array_type)
-    <217>   DW_AT_type        : <0x120>	
-    <21b>   DW_AT_sibling     : <0x226>	
- <2><21f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <220>   DW_AT_type        : <0x63>	
-    <224>   DW_AT_upper_bound : 1	
- <2><225>: Abbrev Number: 0
- <1><226>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <227>   DW_AT_name        : (indirect string, offset: 0x359): v4l2_clip	
-    <22b>   DW_AT_byte_size   : 20	
-    <22c>   DW_AT_decl_file   : 3	
-    <22d>   DW_AT_decl_line   : 745	
-    <22f>   DW_AT_sibling     : <0x250>	
- <2><233>: Abbrev Number: 19 (DW_TAG_member)
-    <234>   DW_AT_name        : c	
-    <236>   DW_AT_decl_file   : 3	
-    <237>   DW_AT_decl_line   : 746	
-    <239>   DW_AT_type        : <0x14b>	
-    <23d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><240>: Abbrev Number: 16 (DW_TAG_member)
-    <241>   DW_AT_name        : (indirect string, offset: 0x386): next	
-    <245>   DW_AT_decl_file   : 3	
-    <246>   DW_AT_decl_line   : 747	
-    <248>   DW_AT_type        : <0x250>	
-    <24c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><24f>: Abbrev Number: 0
- <1><250>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <251>   DW_AT_byte_size   : 4	
-    <252>   DW_AT_type        : <0x226>	
- <1><256>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <257>   DW_AT_name        : (indirect string, offset: 0xe1): v4l2_window	
-    <25b>   DW_AT_byte_size   : 40	
-    <25c>   DW_AT_decl_file   : 3	
-    <25d>   DW_AT_decl_line   : 750	
-    <25f>   DW_AT_sibling     : <0x2cb>	
- <2><263>: Abbrev Number: 19 (DW_TAG_member)
-    <264>   DW_AT_name        : w	
-    <266>   DW_AT_decl_file   : 3	
-    <267>   DW_AT_decl_line   : 751	
-    <269>   DW_AT_type        : <0x14b>	
-    <26d>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><270>: Abbrev Number: 16 (DW_TAG_member)
-    <271>   DW_AT_name        : (indirect string, offset: 0x9b): field	
-    <275>   DW_AT_decl_file   : 3	
-    <276>   DW_AT_decl_line   : 752	
-    <278>   DW_AT_type        : <0x120>	
-    <27c>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><27f>: Abbrev Number: 16 (DW_TAG_member)
-    <280>   DW_AT_name        : (indirect string, offset: 0x36d): chromakey	
-    <284>   DW_AT_decl_file   : 3	
-    <285>   DW_AT_decl_line   : 753	
-    <287>   DW_AT_type        : <0x120>	
-    <28b>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><28e>: Abbrev Number: 16 (DW_TAG_member)
-    <28f>   DW_AT_name        : (indirect string, offset: 0x380): clips	
-    <293>   DW_AT_decl_file   : 3	
-    <294>   DW_AT_decl_line   : 754	
-    <296>   DW_AT_type        : <0x250>	
-    <29a>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><29d>: Abbrev Number: 16 (DW_TAG_member)
-    <29e>   DW_AT_name        : (indirect string, offset: 0xb7): clipcount	
-    <2a2>   DW_AT_decl_file   : 3	
-    <2a3>   DW_AT_decl_line   : 755	
-    <2a5>   DW_AT_type        : <0x120>	
-    <2a9>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><2ac>: Abbrev Number: 16 (DW_TAG_member)
-    <2ad>   DW_AT_name        : (indirect string, offset: 0xb0): bitmap	
-    <2b1>   DW_AT_decl_file   : 3	
-    <2b2>   DW_AT_decl_line   : 756	
-    <2b4>   DW_AT_type        : <0x6a>	
-    <2b8>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><2bb>: Abbrev Number: 16 (DW_TAG_member)
-    <2bc>   DW_AT_name        : (indirect string, offset: 0x14b): global_alpha	
-    <2c0>   DW_AT_decl_file   : 3	
-    <2c1>   DW_AT_decl_line   : 757	
-    <2c3>   DW_AT_type        : <0xff>	
-    <2c7>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><2ca>: Abbrev Number: 0
- <1><2cb>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <2cc>   DW_AT_name        : (indirect string, offset: 0x74): v4l2_vbi_format	
-    <2d0>   DW_AT_byte_size   : 44	
-    <2d1>   DW_AT_decl_file   : 3	
-    <2d2>   DW_AT_decl_line   : 1541	
-    <2d4>   DW_AT_sibling     : <0x351>	
- <2><2d8>: Abbrev Number: 16 (DW_TAG_member)
-    <2d9>   DW_AT_name        : (indirect string, offset: 0x271): sampling_rate	
-    <2dd>   DW_AT_decl_file   : 3	
-    <2de>   DW_AT_decl_line   : 1542	
-    <2e0>   DW_AT_type        : <0x120>	
-    <2e4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><2e7>: Abbrev Number: 16 (DW_TAG_member)
-    <2e8>   DW_AT_name        : (indirect string, offset: 0x128): offset	
-    <2ec>   DW_AT_decl_file   : 3	
-    <2ed>   DW_AT_decl_line   : 1543	
-    <2ef>   DW_AT_type        : <0x120>	
-    <2f3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><2f6>: Abbrev Number: 16 (DW_TAG_member)
-    <2f7>   DW_AT_name        : (indirect string, offset: 0x59): samples_per_line	
-    <2fb>   DW_AT_decl_file   : 3	
-    <2fc>   DW_AT_decl_line   : 1544	
-    <2fe>   DW_AT_type        : <0x120>	
-    <302>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><305>: Abbrev Number: 16 (DW_TAG_member)
-    <306>   DW_AT_name        : (indirect string, offset: 0x38b): sample_format	
-    <30a>   DW_AT_decl_file   : 3	
-    <30b>   DW_AT_decl_line   : 1545	
-    <30d>   DW_AT_type        : <0x120>	
-    <311>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><314>: Abbrev Number: 16 (DW_TAG_member)
-    <315>   DW_AT_name        : (indirect string, offset: 0x245): start	
-    <319>   DW_AT_decl_file   : 3	
-    <31a>   DW_AT_decl_line   : 1546	
-    <31c>   DW_AT_type        : <0x351>	
-    <320>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><323>: Abbrev Number: 16 (DW_TAG_member)
-    <324>   DW_AT_name        : (indirect string, offset: 0x31f): count	
-    <328>   DW_AT_decl_file   : 3	
-    <329>   DW_AT_decl_line   : 1547	
-    <32b>   DW_AT_type        : <0x216>	
-    <32f>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><332>: Abbrev Number: 16 (DW_TAG_member)
-    <333>   DW_AT_name        : (indirect string, offset: 0x1bd): flags	
-    <337>   DW_AT_decl_file   : 3	
-    <338>   DW_AT_decl_line   : 1548	
-    <33a>   DW_AT_type        : <0x120>	
-    <33e>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><341>: Abbrev Number: 16 (DW_TAG_member)
-    <342>   DW_AT_name        : (indirect string, offset: 0x377): reserved	
-    <346>   DW_AT_decl_file   : 3	
-    <347>   DW_AT_decl_line   : 1549	
-    <349>   DW_AT_type        : <0x216>	
-    <34d>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><350>: Abbrev Number: 0
- <1><351>: Abbrev Number: 17 (DW_TAG_array_type)
-    <352>   DW_AT_type        : <0x115>	
-    <356>   DW_AT_sibling     : <0x361>	
- <2><35a>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <35b>   DW_AT_type        : <0x63>	
-    <35f>   DW_AT_upper_bound : 1	
- <2><360>: Abbrev Number: 0
- <1><361>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <362>   DW_AT_name        : (indirect string, offset: 0x193): v4l2_sliced_vbi_format	
-    <366>   DW_AT_byte_size   : 112	
-    <367>   DW_AT_decl_file   : 3	
-    <368>   DW_AT_decl_line   : 1563	
-    <36a>   DW_AT_sibling     : <0x3ab>	
- <2><36e>: Abbrev Number: 16 (DW_TAG_member)
-    <36f>   DW_AT_name        : (indirect string, offset: 0x28f): service_set	
-    <373>   DW_AT_decl_file   : 3	
-    <374>   DW_AT_decl_line   : 1564	
-    <376>   DW_AT_type        : <0x10a>	
-    <37a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><37d>: Abbrev Number: 16 (DW_TAG_member)
-    <37e>   DW_AT_name        : (indirect string, offset: 0x344): service_lines	
-    <382>   DW_AT_decl_file   : 3	
-    <383>   DW_AT_decl_line   : 1569	
-    <385>   DW_AT_type        : <0x3ab>	
-    <389>   DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
- <2><38c>: Abbrev Number: 16 (DW_TAG_member)
-    <38d>   DW_AT_name        : (indirect string, offset: 0x48): io_size	
-    <391>   DW_AT_decl_file   : 3	
-    <392>   DW_AT_decl_line   : 1570	
-    <394>   DW_AT_type        : <0x120>	
-    <398>   DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
- <2><39b>: Abbrev Number: 16 (DW_TAG_member)
-    <39c>   DW_AT_name        : (indirect string, offset: 0x377): reserved	
-    <3a0>   DW_AT_decl_file   : 3	
-    <3a1>   DW_AT_decl_line   : 1571	
-    <3a3>   DW_AT_type        : <0x216>	
-    <3a7>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><3aa>: Abbrev Number: 0
- <1><3ab>: Abbrev Number: 17 (DW_TAG_array_type)
-    <3ac>   DW_AT_type        : <0x10a>	
-    <3b0>   DW_AT_sibling     : <0x3c1>	
- <2><3b4>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3b5>   DW_AT_type        : <0x63>	
-    <3b9>   DW_AT_upper_bound : 1	
- <2><3ba>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <3bb>   DW_AT_type        : <0x63>	
-    <3bf>   DW_AT_upper_bound : 23	
- <2><3c0>: Abbrev Number: 0
- <1><3c1>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <3c2>   DW_AT_name        : (indirect string, offset: 0x17d): v4l2_plane_pix_format	
-    <3c6>   DW_AT_byte_size   : 20	
-    <3c7>   DW_AT_decl_file   : 3	
-    <3c8>   DW_AT_decl_line   : 1664	
-    <3ca>   DW_AT_sibling     : <0x3fc>	
- <2><3ce>: Abbrev Number: 16 (DW_TAG_member)
-    <3cf>   DW_AT_name        : (indirect string, offset: 0x1f): sizeimage	
-    <3d3>   DW_AT_decl_file   : 3	
-    <3d4>   DW_AT_decl_line   : 1665	
-    <3d6>   DW_AT_type        : <0x120>	
-    <3da>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><3dd>: Abbrev Number: 16 (DW_TAG_member)
-    <3de>   DW_AT_name        : (indirect string, offset: 0x101): bytesperline	
-    <3e2>   DW_AT_decl_file   : 3	
-    <3e3>   DW_AT_decl_line   : 1666	
-    <3e5>   DW_AT_type        : <0x10a>	
-    <3e9>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><3ec>: Abbrev Number: 16 (DW_TAG_member)
-    <3ed>   DW_AT_name        : (indirect string, offset: 0x377): reserved	
-    <3f1>   DW_AT_decl_file   : 3	
-    <3f2>   DW_AT_decl_line   : 1667	
-    <3f4>   DW_AT_type        : <0x3fc>	
-    <3f8>   DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
- <2><3fb>: Abbrev Number: 0
- <1><3fc>: Abbrev Number: 17 (DW_TAG_array_type)
-    <3fd>   DW_AT_type        : <0x10a>	
-    <401>   DW_AT_sibling     : <0x40c>	
- <2><405>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <406>   DW_AT_type        : <0x63>	
-    <40a>   DW_AT_upper_bound : 6	
- <2><40b>: Abbrev Number: 0
- <1><40c>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <40d>   DW_AT_name        : (indirect string, offset: 0x158): v4l2_pix_format_mplane	
-    <411>   DW_AT_byte_size   : 192	
-    <412>   DW_AT_decl_file   : 3	
-    <413>   DW_AT_decl_line   : 1680	
-    <415>   DW_AT_sibling     : <0x494>	
- <2><419>: Abbrev Number: 16 (DW_TAG_member)
-    <41a>   DW_AT_name        : (indirect string, offset: 0xed): width	
-    <41e>   DW_AT_decl_file   : 3	
-    <41f>   DW_AT_decl_line   : 1681	
-    <421>   DW_AT_type        : <0x120>	
-    <425>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><428>: Abbrev Number: 16 (DW_TAG_member)
-    <429>   DW_AT_name        : (indirect string, offset: 0x1df): height	
-    <42d>   DW_AT_decl_file   : 3	
-    <42e>   DW_AT_decl_line   : 1682	
-    <430>   DW_AT_type        : <0x120>	
-    <434>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><437>: Abbrev Number: 16 (DW_TAG_member)
-    <438>   DW_AT_name        : (indirect string, offset: 0x3c): pixelformat	
-    <43c>   DW_AT_decl_file   : 3	
-    <43d>   DW_AT_decl_line   : 1683	
-    <43f>   DW_AT_type        : <0x120>	
-    <443>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><446>: Abbrev Number: 16 (DW_TAG_member)
-    <447>   DW_AT_name        : (indirect string, offset: 0x9b): field	
-    <44b>   DW_AT_decl_file   : 3	
-    <44c>   DW_AT_decl_line   : 1684	
-    <44e>   DW_AT_type        : <0x120>	
-    <452>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><455>: Abbrev Number: 16 (DW_TAG_member)
-    <456>   DW_AT_name        : (indirect string, offset: 0x140): colorspace	
-    <45a>   DW_AT_decl_file   : 3	
-    <45b>   DW_AT_decl_line   : 1685	
-    <45d>   DW_AT_type        : <0x120>	
-    <461>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><464>: Abbrev Number: 16 (DW_TAG_member)
-    <465>   DW_AT_name        : (indirect string, offset: 0x363): plane_fmt	
-    <469>   DW_AT_decl_file   : 3	
-    <46a>   DW_AT_decl_line   : 1687	
-    <46c>   DW_AT_type        : <0x494>	
-    <470>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><473>: Abbrev Number: 16 (DW_TAG_member)
-    <474>   DW_AT_name        : (indirect string, offset: 0x1f3): num_planes	
-    <478>   DW_AT_decl_file   : 3	
-    <479>   DW_AT_decl_line   : 1688	
-    <47b>   DW_AT_type        : <0xff>	
-    <47f>   DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
- <2><483>: Abbrev Number: 16 (DW_TAG_member)
-    <484>   DW_AT_name        : (indirect string, offset: 0x377): reserved	
-    <488>   DW_AT_decl_file   : 3	
-    <489>   DW_AT_decl_line   : 1689	
-    <48b>   DW_AT_type        : <0x4a4>	
-    <48f>   DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
- <2><493>: Abbrev Number: 0
- <1><494>: Abbrev Number: 17 (DW_TAG_array_type)
-    <495>   DW_AT_type        : <0x3c1>	
-    <499>   DW_AT_sibling     : <0x4a4>	
- <2><49d>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <49e>   DW_AT_type        : <0x63>	
-    <4a2>   DW_AT_upper_bound : 7	
- <2><4a3>: Abbrev Number: 0
- <1><4a4>: Abbrev Number: 17 (DW_TAG_array_type)
-    <4a5>   DW_AT_type        : <0xff>	
-    <4a9>   DW_AT_sibling     : <0x4b4>	
- <2><4ad>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <4ae>   DW_AT_type        : <0x63>	
-    <4b2>   DW_AT_upper_bound : 10	
- <2><4b3>: Abbrev Number: 0
- <1><4b4>: Abbrev Number: 20 (DW_TAG_union_type)
-    <4b5>   DW_AT_byte_size   : 200	
-    <4b6>   DW_AT_decl_file   : 3	
-    <4b7>   DW_AT_decl_line   : 1704	
-    <4b9>   DW_AT_sibling     : <0x506>	
- <2><4bd>: Abbrev Number: 21 (DW_TAG_member)
-    <4be>   DW_AT_name        : pix	
-    <4c2>   DW_AT_decl_file   : 3	
-    <4c3>   DW_AT_decl_line   : 1705	
-    <4c5>   DW_AT_type        : <0x190>	
- <2><4c9>: Abbrev Number: 22 (DW_TAG_member)
-    <4ca>   DW_AT_name        : (indirect string, offset: 0x5): pix_mp	
-    <4ce>   DW_AT_decl_file   : 3	
-    <4cf>   DW_AT_decl_line   : 1706	
-    <4d1>   DW_AT_type        : <0x40c>	
- <2><4d5>: Abbrev Number: 21 (DW_TAG_member)
-    <4d6>   DW_AT_name        : win	
-    <4da>   DW_AT_decl_file   : 3	
-    <4db>   DW_AT_decl_line   : 1707	
-    <4dd>   DW_AT_type        : <0x256>	
- <2><4e1>: Abbrev Number: 21 (DW_TAG_member)
-    <4e2>   DW_AT_name        : vbi	
-    <4e6>   DW_AT_decl_file   : 3	
-    <4e7>   DW_AT_decl_line   : 1708	
-    <4e9>   DW_AT_type        : <0x2cb>	
- <2><4ed>: Abbrev Number: 22 (DW_TAG_member)
-    <4ee>   DW_AT_name        : (indirect string, offset: 0x1aa): sliced	
-    <4f2>   DW_AT_decl_file   : 3	
-    <4f3>   DW_AT_decl_line   : 1709	
-    <4f5>   DW_AT_type        : <0x361>	
- <2><4f9>: Abbrev Number: 22 (DW_TAG_member)
-    <4fa>   DW_AT_name        : (indirect string, offset: 0xa1): raw_data	
-    <4fe>   DW_AT_decl_file   : 3	
-    <4ff>   DW_AT_decl_line   : 1710	
-    <501>   DW_AT_type        : <0x506>	
- <2><505>: Abbrev Number: 0
- <1><506>: Abbrev Number: 17 (DW_TAG_array_type)
-    <507>   DW_AT_type        : <0xff>	
-    <50b>   DW_AT_sibling     : <0x516>	
- <2><50f>: Abbrev Number: 18 (DW_TAG_subrange_type)
-    <510>   DW_AT_type        : <0x63>	
-    <514>   DW_AT_upper_bound : 199	
- <2><515>: Abbrev Number: 0
- <1><516>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <517>   DW_AT_name        : (indirect string, offset: 0x215): v4l2_format	
-    <51b>   DW_AT_byte_size   : 204	
-    <51c>   DW_AT_decl_file   : 3	
-    <51d>   DW_AT_decl_line   : 1702	
-    <51f>   DW_AT_sibling     : <0x542>	
- <2><523>: Abbrev Number: 16 (DW_TAG_member)
-    <524>   DW_AT_name        : (indirect string, offset: 0x1da): type	
-    <528>   DW_AT_decl_file   : 3	
-    <529>   DW_AT_decl_line   : 1703	
-    <52b>   DW_AT_type        : <0x120>	
-    <52f>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><532>: Abbrev Number: 19 (DW_TAG_member)
-    <533>   DW_AT_name        : fmt	
-    <537>   DW_AT_decl_file   : 3	
-    <538>   DW_AT_decl_line   : 1711	
-    <53a>   DW_AT_type        : <0x4b4>	
-    <53e>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><541>: Abbrev Number: 0
- <1><542>: Abbrev Number: 12 (DW_TAG_typedef)
-    <543>   DW_AT_name        : (indirect string, offset: 0x25e): struct_v4l2_format	
-    <547>   DW_AT_decl_file   : 4	
-    <548>   DW_AT_decl_line   : 42	
-    <549>   DW_AT_type        : <0x516>	
- <1><54d>: Abbrev Number: 23 (DW_TAG_variable)
-    <54e>   DW_AT_name        : (indirect string, offset: 0x12f): current_wordsize	
-    <552>   DW_AT_decl_file   : 5	
-    <553>   DW_AT_decl_line   : 757	
-    <555>   DW_AT_type        : <0x47>	
-    <559>   DW_AT_external    : 1	
-    <55a>   DW_AT_declaration : 1	
- <1><55b>: Abbrev Number: 23 (DW_TAG_variable)
-    <55c>   DW_AT_name        : (indirect string, offset: 0x352): sysent	
-    <560>   DW_AT_decl_file   : 5	
-    <561>   DW_AT_decl_line   : 892	
-    <563>   DW_AT_type        : <0xed>	
-    <567>   DW_AT_external    : 1	
-    <568>   DW_AT_declaration : 1	
- <1><569>: Abbrev Number: 23 (DW_TAG_variable)
-    <56a>   DW_AT_name        : (indirect string, offset: 0x23b): nsyscalls	
-    <56e>   DW_AT_decl_file   : 5	
-    <56f>   DW_AT_decl_line   : 903	
-    <571>   DW_AT_type        : <0x47>	
-    <575>   DW_AT_external    : 1	
-    <576>   DW_AT_declaration : 1	
- <1><577>: Abbrev Number: 24 (DW_TAG_variable)
-    <578>   DW_AT_name        : (indirect string, offset: 0x117): mpers_target_var	
-    <57c>   DW_AT_decl_file   : 4	
-    <57d>   DW_AT_decl_line   : 47	
-    <57e>   DW_AT_type        : <0x542>	
-    <582>   DW_AT_external    : 1	
-    <583>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><589>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_format.d2 b/mpers-mx32/struct_v4l2_format.d2
deleted file mode 100644
index ec3f238..0000000
--- a/mpers-mx32/struct_v4l2_format.d2
+++ /dev/null
@@ -1,712 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1b1): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x29): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0xf3): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0x16f): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x24b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1e6): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1c3): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x10e): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x301): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x33): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x27f): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x352): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x313): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6a): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x16): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x50): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x325): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x289): _Bool
-<1><ff>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2fc): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><10a>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2ab): __u16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><115>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x319): __s32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 25
-DW_AT_type        : <0x2b>
-<1><120>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xaa): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><12b>
-Abbrev Number: 13 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x333): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x14b>
-<2><138>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x221): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><13e>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1fe): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><144>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x84): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><14b>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc): v4l2_rect
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 205
-DW_AT_sibling     : <0x190>
-<2><157>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x284): left
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 206
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><165>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : top
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 207
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><173>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xed): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 208
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><181>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1df): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 209
-DW_AT_type        : <0x115>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><190>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x29b): v4l2_pix_format
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_sibling     : <0x216>
-<2><19d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xed): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 275
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1df): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 276
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3c): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 277
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ca>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9b): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 278
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><1d9>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x101): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 279
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1e8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 280
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><1f7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x140): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 281
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><206>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): priv
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 282
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><216>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x120>
-DW_AT_sibling     : <0x226>
-<2><21f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><226>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x359): v4l2_clip
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 745
-DW_AT_sibling     : <0x250>
-<2><233>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : c
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 746
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><240>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x386): next
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 747
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><250>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x226>
-<1><256>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe1): v4l2_window
-DW_AT_byte_size   : 40
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 750
-DW_AT_sibling     : <0x2cb>
-<2><263>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : w
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 751
-DW_AT_type        : <0x14b>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><270>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9b): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 752
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><27f>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x36d): chromakey
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 753
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><28e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x380): clips
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 754
-DW_AT_type        : <0x250>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><29d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb7): clipcount
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 755
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<2><2ac>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb0): bitmap
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 756
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><2bb>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x14b): global_alpha
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 757
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><2cb>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x74): v4l2_vbi_format
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1541
-DW_AT_sibling     : <0x351>
-<2><2d8>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x271): sampling_rate
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1542
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><2e7>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x128): offset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1543
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><2f6>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x59): samples_per_line
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1544
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><305>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x38b): sample_format
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1545
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><314>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x245): start
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1546
-DW_AT_type        : <0x351>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><323>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x31f): count
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1547
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><332>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bd): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1548
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><341>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x377): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1549
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<1><351>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x115>
-DW_AT_sibling     : <0x361>
-<2><35a>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<1><361>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x193): v4l2_sliced_vbi_format
-DW_AT_byte_size   : 112
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1563
-DW_AT_sibling     : <0x3ab>
-<2><36e>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x28f): service_set
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1564
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><37d>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x344): service_lines
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1569
-DW_AT_type        : <0x3ab>
-DW_AT_data_member_location: 2 byte block: 23 2 	(DW_OP_plus_uconst: 2)
-<2><38c>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x48): io_size
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1570
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 64 	(DW_OP_plus_uconst: 100)
-<2><39b>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x377): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1571
-DW_AT_type        : <0x216>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<1><3ab>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x3c1>
-<2><3b4>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 1
-<2><3ba>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 23
-<1><3c1>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x17d): v4l2_plane_pix_format
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1664
-DW_AT_sibling     : <0x3fc>
-<2><3ce>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1665
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><3dd>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x101): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1666
-DW_AT_type        : <0x10a>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><3ec>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x377): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1667
-DW_AT_type        : <0x3fc>
-DW_AT_data_member_location: 2 byte block: 23 6 	(DW_OP_plus_uconst: 6)
-<1><3fc>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x10a>
-DW_AT_sibling     : <0x40c>
-<2><405>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 6
-<1><40c>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x158): v4l2_pix_format_mplane
-DW_AT_byte_size   : 192
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1680
-DW_AT_sibling     : <0x494>
-<2><419>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xed): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1681
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><428>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1df): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1682
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><437>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x3c): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1683
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><446>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9b): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1684
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><455>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x140): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1685
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><464>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x363): plane_fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1687
-DW_AT_type        : <0x494>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><473>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f3): num_planes
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1688
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 3 byte block: 23 b4 1 	(DW_OP_plus_uconst: 180)
-<2><483>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x377): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1689
-DW_AT_type        : <0x4a4>
-DW_AT_data_member_location: 3 byte block: 23 b5 1 	(DW_OP_plus_uconst: 181)
-<1><494>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0x3c1>
-DW_AT_sibling     : <0x4a4>
-<2><49d>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 7
-<1><4a4>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x4b4>
-<2><4ad>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 10
-<1><4b4>
-Abbrev Number: 20 (DW_TAG_union_type)
-DW_AT_byte_size   : 200
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1704
-DW_AT_sibling     : <0x506>
-<2><4bd>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : pix
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1705
-DW_AT_type        : <0x190>
-<2><4c9>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x5): pix_mp
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1706
-DW_AT_type        : <0x40c>
-<2><4d5>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : win
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1707
-DW_AT_type        : <0x256>
-<2><4e1>
-Abbrev Number: 21 (DW_TAG_member)
-DW_AT_name        : vbi
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1708
-DW_AT_type        : <0x2cb>
-<2><4ed>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1aa): sliced
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1709
-DW_AT_type        : <0x361>
-<2><4f9>
-Abbrev Number: 22 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa1): raw_data
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1710
-DW_AT_type        : <0x506>
-<1><506>
-Abbrev Number: 17 (DW_TAG_array_type)
-DW_AT_type        : <0xff>
-DW_AT_sibling     : <0x516>
-<2><50f>
-Abbrev Number: 18 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 199
-<1><516>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x215): v4l2_format
-DW_AT_byte_size   : 204
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1702
-DW_AT_sibling     : <0x542>
-<2><523>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1da): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1703
-DW_AT_type        : <0x120>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><532>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1711
-DW_AT_type        : <0x4b4>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><542>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x25e): struct_v4l2_format
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 42
-DW_AT_type        : <0x516>
-<1><54d>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x12f): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><55b>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x352): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><569>
-Abbrev Number: 23 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x23b): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><577>
-Abbrev Number: 24 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x117): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x542>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_v4l2_format.h b/mpers-mx32/struct_v4l2_format.h
index 237f2ca..673e95a 100644
--- a/mpers-mx32/struct_v4l2_format.h
+++ b/mpers-mx32/struct_v4l2_format.h
@@ -55,8 +55,8 @@
 } ATTRIBUTE_PACKED vbi;
 struct {
 uint16_t service_set;
-uint16_t service_lines[24];
-unsigned char mpers_filler_2[50];
+uint16_t service_lines[2][24];
+unsigned char mpers_filler_2[2];
 uint32_t io_size;
 uint32_t reserved[2];
 } ATTRIBUTE_PACKED sliced;
diff --git a/mpers-mx32/struct_v4l2_framebuffer.c b/mpers-mx32/struct_v4l2_framebuffer.c
index c6f7e3e..4884034 100644
--- a/mpers-mx32/struct_v4l2_framebuffer.c
+++ b/mpers-mx32/struct_v4l2_framebuffer.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_framebuffer.d1 b/mpers-mx32/struct_v4l2_framebuffer.d1
deleted file mode 100644
index bd3ccd5..0000000
--- a/mpers-mx32/struct_v4l2_framebuffer.d1
+++ /dev/null
@@ -1,269 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x23e (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x5e): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x107): mpers-mx32/struct_v4l2_framebuffer.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1eb): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x27b): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x262): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x243): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xf9): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0xa9): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x1a3): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xe2): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x272): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x12c): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x23a): sizetype	
- <1><6a>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <6b>   DW_AT_byte_size   : 4	
- <1><6c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6d>   DW_AT_byte_size   : 1	
-    <6e>   DW_AT_encoding    : 6	(signed char)
-    <6f>   DW_AT_name        : (indirect string, offset: 0x1db): char	
- <1><73>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <74>   DW_AT_byte_size   : 4	
-    <75>   DW_AT_type        : <0x79>	
- <1><79>: Abbrev Number: 6 (DW_TAG_const_type)
-    <7a>   DW_AT_type        : <0x6c>	
- <1><7e>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <7f>   DW_AT_name        : (indirect string, offset: 0x13e): sysent	
-    <83>   DW_AT_byte_size   : 20	
-    <84>   DW_AT_decl_file   : 1	
-    <85>   DW_AT_decl_line   : 4	
-    <86>   DW_AT_sibling     : <0xd1>	
- <2><8a>: Abbrev Number: 8 (DW_TAG_member)
-    <8b>   DW_AT_name        : (indirect string, offset: 0x176): nargs	
-    <8f>   DW_AT_decl_file   : 1	
-    <90>   DW_AT_decl_line   : 5	
-    <91>   DW_AT_type        : <0x47>	
-    <95>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><98>: Abbrev Number: 8 (DW_TAG_member)
-    <99>   DW_AT_name        : (indirect string, offset: 0x230): sys_flags	
-    <9d>   DW_AT_decl_file   : 1	
-    <9e>   DW_AT_decl_line   : 6	
-    <9f>   DW_AT_type        : <0x2b>	
-    <a3>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a6>: Abbrev Number: 9 (DW_TAG_member)
-    <a7>   DW_AT_name        : sen	
-    <ab>   DW_AT_decl_file   : 1	
-    <ac>   DW_AT_decl_line   : 7	
-    <ad>   DW_AT_type        : <0x2b>	
-    <b1>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b4>: Abbrev Number: 8 (DW_TAG_member)
-    <b5>   DW_AT_name        : (indirect string, offset: 0x287): sys_func	
-    <b9>   DW_AT_decl_file   : 1	
-    <ba>   DW_AT_decl_line   : 8	
-    <bb>   DW_AT_type        : <0xdc>	
-    <bf>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c2>: Abbrev Number: 8 (DW_TAG_member)
-    <c3>   DW_AT_name        : (indirect string, offset: 0xc2): sys_name	
-    <c7>   DW_AT_decl_file   : 1	
-    <c8>   DW_AT_decl_line   : 9	
-    <c9>   DW_AT_type        : <0x73>	
-    <cd>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><d0>: Abbrev Number: 0
- <1><d1>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <d2>   DW_AT_type        : <0x2b>	
-    <d6>   DW_AT_sibling     : <0xdc>	
- <2><da>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><db>: Abbrev Number: 0
- <1><dc>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <dd>   DW_AT_byte_size   : 4	
-    <de>   DW_AT_type        : <0xd1>	
- <1><e2>: Abbrev Number: 12 (DW_TAG_typedef)
-    <e3>   DW_AT_name        : (indirect string, offset: 0x1b6): struct_sysent	
-    <e7>   DW_AT_decl_file   : 1	
-    <e8>   DW_AT_decl_line   : 10	
-    <e9>   DW_AT_type        : <0x7e>	
- <1><ed>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <ee>   DW_AT_byte_size   : 4	
-    <ef>   DW_AT_type        : <0xf3>	
- <1><f3>: Abbrev Number: 6 (DW_TAG_const_type)
-    <f4>   DW_AT_type        : <0xe2>	
- <1><f8>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f9>   DW_AT_byte_size   : 1	
-    <fa>   DW_AT_encoding    : 2	(boolean)
-    <fb>   DW_AT_name        : (indirect string, offset: 0xbc): _Bool	
- <1><ff>: Abbrev Number: 12 (DW_TAG_typedef)
-    <100>   DW_AT_name        : (indirect string, offset: 0x48): __u32	
-    <104>   DW_AT_decl_file   : 2	
-    <105>   DW_AT_decl_line   : 26	
-    <106>   DW_AT_type        : <0x47>	
- <1><10a>: Abbrev Number: 13 (DW_TAG_enumeration_type)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x18d): v4l2_preemphasis	
-    <10f>   DW_AT_byte_size   : 4	
-    <110>   DW_AT_decl_file   : 6	
-    <111>   DW_AT_decl_line   : 763	
-    <113>   DW_AT_sibling     : <0x12a>	
- <2><117>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <118>   DW_AT_name        : (indirect string, offset: 0x18): V4L2_PREEMPHASIS_DISABLED	
-    <11c>   DW_AT_const_value : 0	
- <2><11d>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <11e>   DW_AT_name        : (indirect string, offset: 0xcb): V4L2_PREEMPHASIS_50_uS	
-    <122>   DW_AT_const_value : 1	
- <2><123>: Abbrev Number: 14 (DW_TAG_enumerator)
-    <124>   DW_AT_name        : (indirect string, offset: 0x1c4): V4L2_PREEMPHASIS_75_uS	
-    <128>   DW_AT_const_value : 2	
- <2><129>: Abbrev Number: 0
- <1><12a>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x4e): v4l2_pix_format	
-    <12f>   DW_AT_byte_size   : 32	
-    <130>   DW_AT_decl_file   : 3	
-    <131>   DW_AT_decl_line   : 274	
-    <133>   DW_AT_sibling     : <0x1b0>	
- <2><137>: Abbrev Number: 16 (DW_TAG_member)
-    <138>   DW_AT_name        : (indirect string, offset: 0x25c): width	
-    <13c>   DW_AT_decl_file   : 3	
-    <13d>   DW_AT_decl_line   : 275	
-    <13f>   DW_AT_type        : <0xff>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><146>: Abbrev Number: 16 (DW_TAG_member)
-    <147>   DW_AT_name        : (indirect string, offset: 0x145): height	
-    <14b>   DW_AT_decl_file   : 3	
-    <14c>   DW_AT_decl_line   : 276	
-    <14e>   DW_AT_type        : <0xff>	
-    <152>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><155>: Abbrev Number: 16 (DW_TAG_member)
-    <156>   DW_AT_name        : (indirect string, offset: 0x15d): pixelformat	
-    <15a>   DW_AT_decl_file   : 3	
-    <15b>   DW_AT_decl_line   : 277	
-    <15d>   DW_AT_type        : <0xff>	
-    <161>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><164>: Abbrev Number: 16 (DW_TAG_member)
-    <165>   DW_AT_name        : (indirect string, offset: 0x26c): field	
-    <169>   DW_AT_decl_file   : 3	
-    <16a>   DW_AT_decl_line   : 278	
-    <16c>   DW_AT_type        : <0xff>	
-    <170>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><173>: Abbrev Number: 16 (DW_TAG_member)
-    <174>   DW_AT_name        : (indirect string, offset: 0x169): bytesperline	
-    <178>   DW_AT_decl_file   : 3	
-    <179>   DW_AT_decl_line   : 279	
-    <17b>   DW_AT_type        : <0xff>	
-    <17f>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><182>: Abbrev Number: 16 (DW_TAG_member)
-    <183>   DW_AT_name        : (indirect string, offset: 0x226): sizeimage	
-    <187>   DW_AT_decl_file   : 3	
-    <188>   DW_AT_decl_line   : 280	
-    <18a>   DW_AT_type        : <0xff>	
-    <18e>   DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
- <2><191>: Abbrev Number: 16 (DW_TAG_member)
-    <192>   DW_AT_name        : (indirect string, offset: 0x1e0): colorspace	
-    <196>   DW_AT_decl_file   : 3	
-    <197>   DW_AT_decl_line   : 281	
-    <199>   DW_AT_type        : <0xff>	
-    <19d>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><1a0>: Abbrev Number: 16 (DW_TAG_member)
-    <1a1>   DW_AT_name        : (indirect string, offset: 0x43): priv	
-    <1a5>   DW_AT_decl_file   : 3	
-    <1a6>   DW_AT_decl_line   : 282	
-    <1a8>   DW_AT_type        : <0xff>	
-    <1ac>   DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
- <2><1af>: Abbrev Number: 0
- <1><1b0>: Abbrev Number: 15 (DW_TAG_structure_type)
-    <1b1>   DW_AT_name        : (indirect string, offset: 0x32): v4l2_framebuffer	
-    <1b5>   DW_AT_byte_size   : 44	
-    <1b6>   DW_AT_decl_file   : 3	
-    <1b7>   DW_AT_decl_line   : 719	
-    <1b9>   DW_AT_sibling     : <0x1fa>	
- <2><1bd>: Abbrev Number: 16 (DW_TAG_member)
-    <1be>   DW_AT_name        : (indirect string, offset: 0x251): capability	
-    <1c2>   DW_AT_decl_file   : 3	
-    <1c3>   DW_AT_decl_line   : 720	
-    <1c5>   DW_AT_type        : <0xff>	
-    <1c9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><1cc>: Abbrev Number: 16 (DW_TAG_member)
-    <1cd>   DW_AT_name        : (indirect string, offset: 0x1b0): flags	
-    <1d1>   DW_AT_decl_file   : 3	
-    <1d2>   DW_AT_decl_line   : 721	
-    <1d4>   DW_AT_type        : <0xff>	
-    <1d8>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><1db>: Abbrev Number: 16 (DW_TAG_member)
-    <1dc>   DW_AT_name        : (indirect string, offset: 0x19e): base	
-    <1e0>   DW_AT_decl_file   : 3	
-    <1e1>   DW_AT_decl_line   : 724	
-    <1e3>   DW_AT_type        : <0x6a>	
-    <1e7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ea>: Abbrev Number: 17 (DW_TAG_member)
-    <1eb>   DW_AT_name        : fmt	
-    <1ef>   DW_AT_decl_file   : 3	
-    <1f0>   DW_AT_decl_line   : 725	
-    <1f2>   DW_AT_type        : <0x12a>	
-    <1f6>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><1f9>: Abbrev Number: 0
- <1><1fa>: Abbrev Number: 12 (DW_TAG_typedef)
-    <1fb>   DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_framebuffer	
-    <1ff>   DW_AT_decl_file   : 4	
-    <200>   DW_AT_decl_line   : 43	
-    <201>   DW_AT_type        : <0x1b0>	
- <1><205>: Abbrev Number: 18 (DW_TAG_variable)
-    <206>   DW_AT_name        : (indirect string, offset: 0x14c): current_wordsize	
-    <20a>   DW_AT_decl_file   : 5	
-    <20b>   DW_AT_decl_line   : 757	
-    <20d>   DW_AT_type        : <0x47>	
-    <211>   DW_AT_external    : 1	
-    <212>   DW_AT_declaration : 1	
- <1><213>: Abbrev Number: 18 (DW_TAG_variable)
-    <214>   DW_AT_name        : (indirect string, offset: 0x13e): sysent	
-    <218>   DW_AT_decl_file   : 5	
-    <219>   DW_AT_decl_line   : 892	
-    <21b>   DW_AT_type        : <0xed>	
-    <21f>   DW_AT_external    : 1	
-    <220>   DW_AT_declaration : 1	
- <1><221>: Abbrev Number: 18 (DW_TAG_variable)
-    <222>   DW_AT_name        : (indirect string, offset: 0x21c): nsyscalls	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 903	
-    <229>   DW_AT_type        : <0x47>	
-    <22d>   DW_AT_external    : 1	
-    <22e>   DW_AT_declaration : 1	
- <1><22f>: Abbrev Number: 19 (DW_TAG_variable)
-    <230>   DW_AT_name        : (indirect string, offset: 0x17c): mpers_target_var	
-    <234>   DW_AT_decl_file   : 4	
-    <235>   DW_AT_decl_line   : 47	
-    <236>   DW_AT_type        : <0x1fa>	
-    <23a>   DW_AT_external    : 1	
-    <23b>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><241>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_framebuffer.d2 b/mpers-mx32/struct_v4l2_framebuffer.d2
deleted file mode 100644
index 814702c..0000000
--- a/mpers-mx32/struct_v4l2_framebuffer.d2
+++ /dev/null
@@ -1,301 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x27b): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x262): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x243): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xf9): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xa9): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1a3): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe2): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x272): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x12c): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x23a): sizetype
-<1><6a>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-<1><6c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1db): char
-<1><73>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x79>
-<1><79>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x6c>
-<1><7e>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x13e): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xd1>
-<2><8a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x176): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><98>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x230): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a6>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x287): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xdc>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c2>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xc2): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x73>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><d1>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xdc>
-<2><da>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><dc>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xd1>
-<1><e2>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b6): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7e>
-<1><ed>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf3>
-<1><f3>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xe2>
-<1><f8>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xbc): _Bool
-<1><ff>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x48): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><10a>
-Abbrev Number: 13 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x18d): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x12a>
-<2><117>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x18): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><11d>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xcb): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><123>
-Abbrev Number: 14 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x1c4): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><12a>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x4e): v4l2_pix_format
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 274
-DW_AT_sibling     : <0x1b0>
-<2><137>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25c): width
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 275
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><146>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x145): height
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 276
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><155>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15d): pixelformat
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 277
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><164>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x26c): field
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 278
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><173>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x169): bytesperline
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 279
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><182>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x226): sizeimage
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 280
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 14 	(DW_OP_plus_uconst: 20)
-<2><191>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e0): colorspace
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 281
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<2><1a0>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x43): priv
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 282
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 1c 	(DW_OP_plus_uconst: 28)
-<1><1b0>
-Abbrev Number: 15 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x32): v4l2_framebuffer
-DW_AT_byte_size   : 44
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 719
-DW_AT_sibling     : <0x1fa>
-<2><1bd>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x251): capability
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 720
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><1cc>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b0): flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 721
-DW_AT_type        : <0xff>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><1db>
-Abbrev Number: 16 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x19e): base
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 724
-DW_AT_type        : <0x6a>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ea>
-Abbrev Number: 17 (DW_TAG_member)
-DW_AT_name        : fmt
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 725
-DW_AT_type        : <0x12a>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<1><1fa>
-Abbrev Number: 12 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_framebuffer
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 43
-DW_AT_type        : <0x1b0>
-<1><205>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x14c): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><213>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x13e): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xed>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><221>
-Abbrev Number: 18 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x21c): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><22f>
-Abbrev Number: 19 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17c): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1fa>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_v4l2_input.c b/mpers-mx32/struct_v4l2_input.c
index fe0ffcd..850ef00 100644
--- a/mpers-mx32/struct_v4l2_input.c
+++ b/mpers-mx32/struct_v4l2_input.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_input.d1 b/mpers-mx32/struct_v4l2_input.d1
deleted file mode 100644
index b71f209..0000000
--- a/mpers-mx32/struct_v4l2_input.d1
+++ /dev/null
@@ -1,271 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x243 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x41): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x207): mpers-mx32/struct_v4l2_input.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x190): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x247): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1fd): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1da): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd6): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x8c): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x159): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x23e): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xe4): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1d1): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x18b): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xf6): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x131): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xb5): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x253): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0xa6): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x17d): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x2c): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x1e8): __u8	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 20	
-    <104>   DW_AT_type        : <0x39>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x32): __u32	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 26	
-    <10f>   DW_AT_type        : <0x47>	
- <1><113>: Abbrev Number: 11 (DW_TAG_typedef)
-    <114>   DW_AT_name        : (indirect string, offset: 0x1cb): __u64	
-    <118>   DW_AT_decl_file   : 2	
-    <119>   DW_AT_decl_line   : 30	
-    <11a>   DW_AT_type        : <0x4e>	
- <1><11e>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x148): v4l2_preemphasis	
-    <123>   DW_AT_byte_size   : 4	
-    <124>   DW_AT_decl_file   : 6	
-    <125>   DW_AT_decl_line   : 763	
-    <127>   DW_AT_sibling     : <0x13e>	
- <2><12b>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <12c>   DW_AT_name        : (indirect string, offset: 0x12): V4L2_PREEMPHASIS_DISABLED	
-    <130>   DW_AT_const_value : 0	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x166): V4L2_PREEMPHASIS_50_uS	
-    <136>   DW_AT_const_value : 1	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0x10e): V4L2_PREEMPHASIS_75_uS	
-    <13c>   DW_AT_const_value : 2	
- <2><13d>: Abbrev Number: 0
- <1><13e>: Abbrev Number: 14 (DW_TAG_array_type)
-    <13f>   DW_AT_type        : <0xfd>	
-    <143>   DW_AT_sibling     : <0x14e>	
- <2><147>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <148>   DW_AT_type        : <0x63>	
-    <14c>   DW_AT_upper_bound : 31	
- <2><14d>: Abbrev Number: 0
- <1><14e>: Abbrev Number: 14 (DW_TAG_array_type)
-    <14f>   DW_AT_type        : <0x108>	
-    <153>   DW_AT_sibling     : <0x15e>	
- <2><157>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <158>   DW_AT_type        : <0x63>	
-    <15c>   DW_AT_upper_bound : 2	
- <2><15d>: Abbrev Number: 0
- <1><15e>: Abbrev Number: 16 (DW_TAG_typedef)
-    <15f>   DW_AT_name        : (indirect string, offset: 0x125): v4l2_std_id	
-    <163>   DW_AT_decl_file   : 3	
-    <164>   DW_AT_decl_line   : 826	
-    <166>   DW_AT_type        : <0x113>	
- <1><16a>: Abbrev Number: 17 (DW_TAG_structure_type)
-    <16b>   DW_AT_name        : (indirect string, offset: 0x226): v4l2_input	
-    <16f>   DW_AT_byte_size   : 80	
-    <170>   DW_AT_decl_file   : 3	
-    <171>   DW_AT_decl_line   : 1145	
-    <173>   DW_AT_sibling     : <0x1ff>	
- <2><177>: Abbrev Number: 18 (DW_TAG_member)
-    <178>   DW_AT_name        : (indirect string, offset: 0x1f2): index	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 1146	
-    <17f>   DW_AT_type        : <0x108>	
-    <183>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><186>: Abbrev Number: 18 (DW_TAG_member)
-    <187>   DW_AT_name        : (indirect string, offset: 0x1ed): name	
-    <18b>   DW_AT_decl_file   : 3	
-    <18c>   DW_AT_decl_line   : 1147	
-    <18e>   DW_AT_type        : <0x13e>	
-    <192>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><195>: Abbrev Number: 18 (DW_TAG_member)
-    <196>   DW_AT_name        : (indirect string, offset: 0x1f8): type	
-    <19a>   DW_AT_decl_file   : 3	
-    <19b>   DW_AT_decl_line   : 1148	
-    <19d>   DW_AT_type        : <0x108>	
-    <1a1>   DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
- <2><1a4>: Abbrev Number: 18 (DW_TAG_member)
-    <1a5>   DW_AT_name        : (indirect string, offset: 0x25c): audioset	
-    <1a9>   DW_AT_decl_file   : 3	
-    <1aa>   DW_AT_decl_line   : 1149	
-    <1ac>   DW_AT_type        : <0x108>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1b3>: Abbrev Number: 18 (DW_TAG_member)
-    <1b4>   DW_AT_name        : (indirect string, offset: 0xaf): tuner	
-    <1b8>   DW_AT_decl_file   : 3	
-    <1b9>   DW_AT_decl_line   : 1150	
-    <1bb>   DW_AT_type        : <0x108>	
-    <1bf>   DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
- <2><1c2>: Abbrev Number: 19 (DW_TAG_member)
-    <1c3>   DW_AT_name        : std	
-    <1c7>   DW_AT_decl_file   : 3	
-    <1c8>   DW_AT_decl_line   : 1151	
-    <1ca>   DW_AT_type        : <0x15e>	
-    <1ce>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1d1>: Abbrev Number: 18 (DW_TAG_member)
-    <1d2>   DW_AT_name        : (indirect string, offset: 0x9f): status	
-    <1d6>   DW_AT_decl_file   : 3	
-    <1d7>   DW_AT_decl_line   : 1152	
-    <1d9>   DW_AT_type        : <0x108>	
-    <1dd>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><1e0>: Abbrev Number: 18 (DW_TAG_member)
-    <1e1>   DW_AT_name        : (indirect string, offset: 0x231): capabilities	
-    <1e5>   DW_AT_decl_file   : 3	
-    <1e6>   DW_AT_decl_line   : 1153	
-    <1e8>   DW_AT_type        : <0x108>	
-    <1ec>   DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
- <2><1ef>: Abbrev Number: 18 (DW_TAG_member)
-    <1f0>   DW_AT_name        : (indirect string, offset: 0x38): reserved	
-    <1f4>   DW_AT_decl_file   : 3	
-    <1f5>   DW_AT_decl_line   : 1154	
-    <1f7>   DW_AT_type        : <0x14e>	
-    <1fb>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><1fe>: Abbrev Number: 0
- <1><1ff>: Abbrev Number: 11 (DW_TAG_typedef)
-    <200>   DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_input	
-    <204>   DW_AT_decl_file   : 4	
-    <205>   DW_AT_decl_line   : 44	
-    <206>   DW_AT_type        : <0x16a>	
- <1><20a>: Abbrev Number: 20 (DW_TAG_variable)
-    <20b>   DW_AT_name        : (indirect string, offset: 0xfd): current_wordsize	
-    <20f>   DW_AT_decl_file   : 5	
-    <210>   DW_AT_decl_line   : 757	
-    <212>   DW_AT_type        : <0x47>	
-    <216>   DW_AT_external    : 1	
-    <217>   DW_AT_declaration : 1	
- <1><218>: Abbrev Number: 20 (DW_TAG_variable)
-    <219>   DW_AT_name        : (indirect string, offset: 0xf6): sysent	
-    <21d>   DW_AT_decl_file   : 5	
-    <21e>   DW_AT_decl_line   : 892	
-    <220>   DW_AT_type        : <0xeb>	
-    <224>   DW_AT_external    : 1	
-    <225>   DW_AT_declaration : 1	
- <1><226>: Abbrev Number: 20 (DW_TAG_variable)
-    <227>   DW_AT_name        : (indirect string, offset: 0x1c1): nsyscalls	
-    <22b>   DW_AT_decl_file   : 5	
-    <22c>   DW_AT_decl_line   : 903	
-    <22e>   DW_AT_type        : <0x47>	
-    <232>   DW_AT_external    : 1	
-    <233>   DW_AT_declaration : 1	
- <1><234>: Abbrev Number: 21 (DW_TAG_variable)
-    <235>   DW_AT_name        : (indirect string, offset: 0x137): mpers_target_var	
-    <239>   DW_AT_decl_file   : 4	
-    <23a>   DW_AT_decl_line   : 47	
-    <23b>   DW_AT_type        : <0x1ff>	
-    <23f>   DW_AT_external    : 1	
-    <240>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><246>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_input.d2 b/mpers-mx32/struct_v4l2_input.d2
deleted file mode 100644
index 9d63729..0000000
--- a/mpers-mx32/struct_v4l2_input.d2
+++ /dev/null
@@ -1,304 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x247): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1fd): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1da): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd6): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8c): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x159): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbf): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x23e): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe4): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1d1): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x18b): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf6): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x131): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb5): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x253): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa6): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17d): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x2c): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1e8): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x32): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><113>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1cb): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><11e>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x148): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x13e>
-<2><12b>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x12): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x166): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x10e): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><13e>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0xfd>
-DW_AT_sibling     : <0x14e>
-<2><147>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 31
-<1><14e>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x15e>
-<2><157>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 2
-<1><15e>
-Abbrev Number: 16 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x125): v4l2_std_id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 826
-DW_AT_type        : <0x113>
-<1><16a>
-Abbrev Number: 17 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x226): v4l2_input
-DW_AT_byte_size   : 80
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1145
-DW_AT_sibling     : <0x1ff>
-<2><177>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f2): index
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1146
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><186>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ed): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1147
-DW_AT_type        : <0x13e>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><195>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1f8): type
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1148
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 24 	(DW_OP_plus_uconst: 36)
-<2><1a4>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25c): audioset
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1149
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1b3>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xaf): tuner
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1150
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 2c 	(DW_OP_plus_uconst: 44)
-<2><1c2>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : std
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1151
-DW_AT_type        : <0x15e>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1d1>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9f): status
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1152
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><1e0>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x231): capabilities
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1153
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 3c 	(DW_OP_plus_uconst: 60)
-<2><1ef>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x38): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 1154
-DW_AT_type        : <0x14e>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<1><1ff>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): struct_v4l2_input
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 44
-DW_AT_type        : <0x16a>
-<1><20a>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xfd): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><218>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf6): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><226>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1c1): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><234>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x137): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1ff>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/struct_v4l2_standard.c b/mpers-mx32/struct_v4l2_standard.c
index 3e4dbc4..49d08d6 100644
--- a/mpers-mx32/struct_v4l2_standard.c
+++ b/mpers-mx32/struct_v4l2_standard.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,6 +37,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
diff --git a/mpers-mx32/struct_v4l2_standard.d1 b/mpers-mx32/struct_v4l2_standard.d1
deleted file mode 100644
index c76c464..0000000
--- a/mpers-mx32/struct_v4l2_standard.d1
+++ /dev/null
@@ -1,272 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x23e (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x1f3): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x3d): mpers-mx32/struct_v4l2_standard.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x180): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x251): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x12e): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x1d5): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xcd): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5f): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x149): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xb6): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x248): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xdb): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x1cc): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x17b): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <7d>   DW_AT_name        : (indirect string, offset: 0xed): sysent	
-    <81>   DW_AT_byte_size   : 20	
-    <82>   DW_AT_decl_file   : 1	
-    <83>   DW_AT_decl_line   : 4	
-    <84>   DW_AT_sibling     : <0xcf>	
- <2><88>: Abbrev Number: 7 (DW_TAG_member)
-    <89>   DW_AT_name        : (indirect string, offset: 0x128): nargs	
-    <8d>   DW_AT_decl_file   : 1	
-    <8e>   DW_AT_decl_line   : 5	
-    <8f>   DW_AT_type        : <0x47>	
-    <93>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><96>: Abbrev Number: 7 (DW_TAG_member)
-    <97>   DW_AT_name        : (indirect string, offset: 0xac): sys_flags	
-    <9b>   DW_AT_decl_file   : 1	
-    <9c>   DW_AT_decl_line   : 6	
-    <9d>   DW_AT_type        : <0x2b>	
-    <a1>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><a4>: Abbrev Number: 8 (DW_TAG_member)
-    <a5>   DW_AT_name        : sen	
-    <a9>   DW_AT_decl_file   : 1	
-    <aa>   DW_AT_decl_line   : 7	
-    <ab>   DW_AT_type        : <0x2b>	
-    <af>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><b2>: Abbrev Number: 7 (DW_TAG_member)
-    <b3>   DW_AT_name        : (indirect string, offset: 0x269): sys_func	
-    <b7>   DW_AT_decl_file   : 1	
-    <b8>   DW_AT_decl_line   : 8	
-    <b9>   DW_AT_type        : <0xda>	
-    <bd>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><c0>: Abbrev Number: 7 (DW_TAG_member)
-    <c1>   DW_AT_name        : (indirect string, offset: 0x87): sys_name	
-    <c5>   DW_AT_decl_file   : 1	
-    <c6>   DW_AT_decl_line   : 9	
-    <c7>   DW_AT_type        : <0x71>	
-    <cb>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ce>: Abbrev Number: 0
- <1><cf>: Abbrev Number: 9 (DW_TAG_subroutine_type)
-    <d0>   DW_AT_type        : <0x2b>	
-    <d4>   DW_AT_sibling     : <0xda>	
- <2><d8>: Abbrev Number: 10 (DW_TAG_unspecified_parameters)
- <2><d9>: Abbrev Number: 0
- <1><da>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <db>   DW_AT_byte_size   : 4	
-    <dc>   DW_AT_type        : <0xcf>	
- <1><e0>: Abbrev Number: 11 (DW_TAG_typedef)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x16d): struct_sysent	
-    <e5>   DW_AT_decl_file   : 1	
-    <e6>   DW_AT_decl_line   : 10	
-    <e7>   DW_AT_type        : <0x7c>	
- <1><eb>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <ec>   DW_AT_byte_size   : 4	
-    <ed>   DW_AT_type        : <0xf1>	
- <1><f1>: Abbrev Number: 5 (DW_TAG_const_type)
-    <f2>   DW_AT_type        : <0xe0>	
- <1><f6>: Abbrev Number: 2 (DW_TAG_base_type)
-    <f7>   DW_AT_byte_size   : 1	
-    <f8>   DW_AT_encoding    : 2	(boolean)
-    <f9>   DW_AT_name        : (indirect string, offset: 0x28): _Bool	
- <1><fd>: Abbrev Number: 11 (DW_TAG_typedef)
-    <fe>   DW_AT_name        : (indirect string, offset: 0x1e3): __u8	
-    <102>   DW_AT_decl_file   : 2	
-    <103>   DW_AT_decl_line   : 20	
-    <104>   DW_AT_type        : <0x39>	
- <1><108>: Abbrev Number: 11 (DW_TAG_typedef)
-    <109>   DW_AT_name        : (indirect string, offset: 0x2e): __u32	
-    <10d>   DW_AT_decl_file   : 2	
-    <10e>   DW_AT_decl_line   : 26	
-    <10f>   DW_AT_type        : <0x47>	
- <1><113>: Abbrev Number: 11 (DW_TAG_typedef)
-    <114>   DW_AT_name        : (indirect string, offset: 0x1c6): __u64	
-    <118>   DW_AT_decl_file   : 2	
-    <119>   DW_AT_decl_line   : 30	
-    <11a>   DW_AT_type        : <0x4e>	
- <1><11e>: Abbrev Number: 12 (DW_TAG_enumeration_type)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x138): v4l2_preemphasis	
-    <123>   DW_AT_byte_size   : 4	
-    <124>   DW_AT_decl_file   : 6	
-    <125>   DW_AT_decl_line   : 763	
-    <127>   DW_AT_sibling     : <0x13e>	
- <2><12b>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <12c>   DW_AT_name        : (indirect string, offset: 0xe): V4L2_PREEMPHASIS_DISABLED	
-    <130>   DW_AT_const_value : 0	
- <2><131>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <132>   DW_AT_name        : (indirect string, offset: 0x156): V4L2_PREEMPHASIS_50_uS	
-    <136>   DW_AT_const_value : 1	
- <2><137>: Abbrev Number: 13 (DW_TAG_enumerator)
-    <138>   DW_AT_name        : (indirect string, offset: 0x105): V4L2_PREEMPHASIS_75_uS	
-    <13c>   DW_AT_const_value : 2	
- <2><13d>: Abbrev Number: 0
- <1><13e>: Abbrev Number: 6 (DW_TAG_structure_type)
-    <13f>   DW_AT_name        : (indirect string, offset: 0x90): v4l2_fract	
-    <143>   DW_AT_byte_size   : 8	
-    <144>   DW_AT_decl_file   : 3	
-    <145>   DW_AT_decl_line   : 212	
-    <146>   DW_AT_sibling     : <0x167>	
- <2><14a>: Abbrev Number: 7 (DW_TAG_member)
-    <14b>   DW_AT_name        : (indirect string, offset: 0x23e): numerator	
-    <14f>   DW_AT_decl_file   : 3	
-    <150>   DW_AT_decl_line   : 213	
-    <151>   DW_AT_type        : <0x108>	
-    <155>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><158>: Abbrev Number: 7 (DW_TAG_member)
-    <159>   DW_AT_name        : (indirect string, offset: 0x272): denominator	
-    <15d>   DW_AT_decl_file   : 3	
-    <15e>   DW_AT_decl_line   : 214	
-    <15f>   DW_AT_type        : <0x108>	
-    <163>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><166>: Abbrev Number: 0
- <1><167>: Abbrev Number: 14 (DW_TAG_array_type)
-    <168>   DW_AT_type        : <0x108>	
-    <16c>   DW_AT_sibling     : <0x177>	
- <2><170>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <171>   DW_AT_type        : <0x63>	
-    <175>   DW_AT_upper_bound : 3	
- <2><176>: Abbrev Number: 0
- <1><177>: Abbrev Number: 16 (DW_TAG_typedef)
-    <178>   DW_AT_name        : (indirect string, offset: 0x11c): v4l2_std_id	
-    <17c>   DW_AT_decl_file   : 3	
-    <17d>   DW_AT_decl_line   : 826	
-    <17f>   DW_AT_type        : <0x113>	
- <1><183>: Abbrev Number: 17 (DW_TAG_structure_type)
-    <184>   DW_AT_name        : (indirect string, offset: 0x0): v4l2_standard	
-    <188>   DW_AT_byte_size   : 72	
-    <189>   DW_AT_decl_file   : 3	
-    <18a>   DW_AT_decl_line   : 954	
-    <18c>   DW_AT_sibling     : <0x1ea>	
- <2><190>: Abbrev Number: 18 (DW_TAG_member)
-    <191>   DW_AT_name        : (indirect string, offset: 0x1ed): index	
-    <195>   DW_AT_decl_file   : 3	
-    <196>   DW_AT_decl_line   : 955	
-    <198>   DW_AT_type        : <0x108>	
-    <19c>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><19f>: Abbrev Number: 19 (DW_TAG_member)
-    <1a0>   DW_AT_name        : id	
-    <1a3>   DW_AT_decl_file   : 3	
-    <1a4>   DW_AT_decl_line   : 956	
-    <1a6>   DW_AT_type        : <0x177>	
-    <1aa>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><1ad>: Abbrev Number: 18 (DW_TAG_member)
-    <1ae>   DW_AT_name        : (indirect string, offset: 0x1e8): name	
-    <1b2>   DW_AT_decl_file   : 3	
-    <1b3>   DW_AT_decl_line   : 957	
-    <1b5>   DW_AT_type        : <0x1ea>	
-    <1b9>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><1bc>: Abbrev Number: 18 (DW_TAG_member)
-    <1bd>   DW_AT_name        : (indirect string, offset: 0x25d): frameperiod	
-    <1c1>   DW_AT_decl_file   : 3	
-    <1c2>   DW_AT_decl_line   : 958	
-    <1c4>   DW_AT_type        : <0x13e>	
-    <1c8>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><1cb>: Abbrev Number: 18 (DW_TAG_member)
-    <1cc>   DW_AT_name        : (indirect string, offset: 0x1b1): framelines	
-    <1d0>   DW_AT_decl_file   : 3	
-    <1d1>   DW_AT_decl_line   : 959	
-    <1d3>   DW_AT_type        : <0x108>	
-    <1d7>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><1da>: Abbrev Number: 18 (DW_TAG_member)
-    <1db>   DW_AT_name        : (indirect string, offset: 0x34): reserved	
-    <1df>   DW_AT_decl_file   : 3	
-    <1e0>   DW_AT_decl_line   : 960	
-    <1e2>   DW_AT_type        : <0x167>	
-    <1e6>   DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
- <2><1e9>: Abbrev Number: 0
- <1><1ea>: Abbrev Number: 14 (DW_TAG_array_type)
-    <1eb>   DW_AT_type        : <0xfd>	
-    <1ef>   DW_AT_sibling     : <0x1fa>	
- <2><1f3>: Abbrev Number: 15 (DW_TAG_subrange_type)
-    <1f4>   DW_AT_type        : <0x63>	
-    <1f8>   DW_AT_upper_bound : 23	
- <2><1f9>: Abbrev Number: 0
- <1><1fa>: Abbrev Number: 11 (DW_TAG_typedef)
-    <1fb>   DW_AT_name        : (indirect string, offset: 0x72): struct_v4l2_standard	
-    <1ff>   DW_AT_decl_file   : 4	
-    <200>   DW_AT_decl_line   : 45	
-    <201>   DW_AT_type        : <0x183>	
- <1><205>: Abbrev Number: 20 (DW_TAG_variable)
-    <206>   DW_AT_name        : (indirect string, offset: 0xf4): current_wordsize	
-    <20a>   DW_AT_decl_file   : 5	
-    <20b>   DW_AT_decl_line   : 757	
-    <20d>   DW_AT_type        : <0x47>	
-    <211>   DW_AT_external    : 1	
-    <212>   DW_AT_declaration : 1	
- <1><213>: Abbrev Number: 20 (DW_TAG_variable)
-    <214>   DW_AT_name        : (indirect string, offset: 0xed): sysent	
-    <218>   DW_AT_decl_file   : 5	
-    <219>   DW_AT_decl_line   : 892	
-    <21b>   DW_AT_type        : <0xeb>	
-    <21f>   DW_AT_external    : 1	
-    <220>   DW_AT_declaration : 1	
- <1><221>: Abbrev Number: 20 (DW_TAG_variable)
-    <222>   DW_AT_name        : (indirect string, offset: 0x1bc): nsyscalls	
-    <226>   DW_AT_decl_file   : 5	
-    <227>   DW_AT_decl_line   : 903	
-    <229>   DW_AT_type        : <0x47>	
-    <22d>   DW_AT_external    : 1	
-    <22e>   DW_AT_declaration : 1	
- <1><22f>: Abbrev Number: 21 (DW_TAG_variable)
-    <230>   DW_AT_name        : (indirect string, offset: 0x9b): mpers_target_var	
-    <234>   DW_AT_decl_file   : 4	
-    <235>   DW_AT_decl_line   : 47	
-    <236>   DW_AT_type        : <0x1fa>	
-    <23a>   DW_AT_external    : 1	
-    <23b>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><241>: Abbrev Number: 0
-
diff --git a/mpers-mx32/struct_v4l2_standard.d2 b/mpers-mx32/struct_v4l2_standard.d2
deleted file mode 100644
index 0e0b13b..0000000
--- a/mpers-mx32/struct_v4l2_standard.d2
+++ /dev/null
@@ -1,304 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x251): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x12e): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1d5): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xcd): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5f): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x149): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb6): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x248): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xdb): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1cc): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x17b): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xed): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xcf>
-<2><88>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x128): nargs
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><96>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xac): sys_flags
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><a4>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><b2>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x269): sys_func
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xda>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><c0>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x87): sys_name
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><cf>
-Abbrev Number: 9 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xda>
-<2><d8>
-Abbrev Number: 10 (DW_TAG_unspecified_parameters)
-<1><da>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xcf>
-<1><e0>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x16d): struct_sysent
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x7c>
-<1><eb>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf1>
-<1><f1>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xe0>
-<1><f6>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x28): _Bool
-<1><fd>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1e3): __u8
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x39>
-<1><108>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x2e): __u32
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><113>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c6): __u64
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_type        : <0x4e>
-<1><11e>
-Abbrev Number: 12 (DW_TAG_enumeration_type)
-DW_AT_name        : (indirect string, offset: 0x138): v4l2_preemphasis
-DW_AT_byte_size   : 4
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 763
-DW_AT_sibling     : <0x13e>
-<2><12b>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0xe): V4L2_PREEMPHASIS_DISABLED
-DW_AT_const_value : 0
-<2><131>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x156): V4L2_PREEMPHASIS_50_uS
-DW_AT_const_value : 1
-<2><137>
-Abbrev Number: 13 (DW_TAG_enumerator)
-DW_AT_name        : (indirect string, offset: 0x105): V4L2_PREEMPHASIS_75_uS
-DW_AT_const_value : 2
-<1><13e>
-Abbrev Number: 6 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x90): v4l2_fract
-DW_AT_byte_size   : 8
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 212
-DW_AT_sibling     : <0x167>
-<2><14a>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x23e): numerator
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 213
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><158>
-Abbrev Number: 7 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x272): denominator
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 214
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<1><167>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0x108>
-DW_AT_sibling     : <0x177>
-<2><170>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 3
-<1><177>
-Abbrev Number: 16 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11c): v4l2_std_id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 826
-DW_AT_type        : <0x113>
-<1><183>
-Abbrev Number: 17 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x0): v4l2_standard
-DW_AT_byte_size   : 72
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 954
-DW_AT_sibling     : <0x1ea>
-<2><190>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1ed): index
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 955
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><19f>
-Abbrev Number: 19 (DW_TAG_member)
-DW_AT_name        : id
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 956
-DW_AT_type        : <0x177>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><1ad>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e8): name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 957
-DW_AT_type        : <0x1ea>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><1bc>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x25d): frameperiod
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 958
-DW_AT_type        : <0x13e>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><1cb>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b1): framelines
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 959
-DW_AT_type        : <0x108>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><1da>
-Abbrev Number: 18 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x34): reserved
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 960
-DW_AT_type        : <0x167>
-DW_AT_data_member_location: 2 byte block: 23 34 	(DW_OP_plus_uconst: 52)
-<1><1ea>
-Abbrev Number: 14 (DW_TAG_array_type)
-DW_AT_type        : <0xfd>
-DW_AT_sibling     : <0x1fa>
-<2><1f3>
-Abbrev Number: 15 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 23
-<1><1fa>
-Abbrev Number: 11 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x72): struct_v4l2_standard
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 45
-DW_AT_type        : <0x183>
-<1><205>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf4): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><213>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xed): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0xeb>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><221>
-Abbrev Number: 20 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x1bc): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><22f>
-Abbrev Number: 21 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x9b): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 47
-DW_AT_type        : <0x1fa>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/sysinfo_t.c b/mpers-mx32/sysinfo_t.c
index 6e656cf..c34a80f 100644
--- a/mpers-mx32/sysinfo_t.c
+++ b/mpers-mx32/sysinfo_t.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/sysinfo_t.d1 b/mpers-mx32/sysinfo_t.d1
deleted file mode 100644
index e7aeef6..0000000
--- a/mpers-mx32/sysinfo_t.d1
+++ /dev/null
@@ -1,284 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x25c (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x30): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x1c6): mpers-mx32/sysinfo_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x1fa): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ee): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1bc): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x19b): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xd2): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x7b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x128): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xbb): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1e5): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xe0): long unsigned int	
- <1><63>: Abbrev Number: 2 (DW_TAG_base_type)
-    <64>   DW_AT_byte_size   : 4	
-    <65>   DW_AT_encoding    : 7	(unsigned)
-    <66>   DW_AT_name        : (indirect string, offset: 0x180): sizetype	
- <1><6a>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6b>   DW_AT_byte_size   : 1	
-    <6c>   DW_AT_encoding    : 6	(signed char)
-    <6d>   DW_AT_name        : (indirect string, offset: 0x143): char	
- <1><71>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <72>   DW_AT_byte_size   : 4	
-    <73>   DW_AT_type        : <0x77>	
- <1><77>: Abbrev Number: 5 (DW_TAG_const_type)
-    <78>   DW_AT_type        : <0x6a>	
- <1><7c>: Abbrev Number: 6 (DW_TAG_typedef)
-    <7d>   DW_AT_name        : (indirect string, offset: 0x8e): __kernel_long_t	
-    <81>   DW_AT_decl_file   : 1	
-    <82>   DW_AT_decl_line   : 13	
-    <83>   DW_AT_type        : <0x32>	
- <1><87>: Abbrev Number: 6 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x165): __kernel_ulong_t	
-    <8c>   DW_AT_decl_file   : 1	
-    <8d>   DW_AT_decl_line   : 14	
-    <8e>   DW_AT_type        : <0x4e>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0xf2): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x111): nargs	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0xb1): sys_flags	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 2	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x22b): sys_func	
-    <cd>   DW_AT_decl_file   : 2	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x9e): sys_name	
-    <db>   DW_AT_decl_file   : 2	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x71>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 6 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0x135): struct_sysent	
-    <fb>   DW_AT_decl_file   : 2	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 4 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 5 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0xc): _Bool	
- <1><113>: Abbrev Number: 6 (DW_TAG_typedef)
-    <114>   DW_AT_name        : (indirect string, offset: 0x6): __u16	
-    <118>   DW_AT_decl_file   : 3	
-    <119>   DW_AT_decl_line   : 23	
-    <11a>   DW_AT_type        : <0x40>	
- <1><11e>: Abbrev Number: 6 (DW_TAG_typedef)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x12): __u32	
-    <123>   DW_AT_decl_file   : 3	
-    <124>   DW_AT_decl_line   : 26	
-    <125>   DW_AT_type        : <0x47>	
- <1><129>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <12a>   DW_AT_name        : (indirect string, offset: 0x189): sysinfo	
-    <12e>   DW_AT_byte_size   : 112	
-    <12f>   DW_AT_decl_file   : 4	
-    <130>   DW_AT_decl_line   : 7	
-    <131>   DW_AT_sibling     : <0x1f9>	
- <2><135>: Abbrev Number: 8 (DW_TAG_member)
-    <136>   DW_AT_name        : (indirect string, offset: 0x10a): uptime	
-    <13a>   DW_AT_decl_file   : 4	
-    <13b>   DW_AT_decl_line   : 8	
-    <13c>   DW_AT_type        : <0x7c>	
-    <140>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><143>: Abbrev Number: 8 (DW_TAG_member)
-    <144>   DW_AT_name        : (indirect string, offset: 0x18): loads	
-    <148>   DW_AT_decl_file   : 4	
-    <149>   DW_AT_decl_line   : 9	
-    <14a>   DW_AT_type        : <0x1f9>	
-    <14e>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><151>: Abbrev Number: 8 (DW_TAG_member)
-    <152>   DW_AT_name        : (indirect string, offset: 0x27): totalram	
-    <156>   DW_AT_decl_file   : 4	
-    <157>   DW_AT_decl_line   : 10	
-    <158>   DW_AT_type        : <0x87>	
-    <15c>   DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
- <2><15f>: Abbrev Number: 8 (DW_TAG_member)
-    <160>   DW_AT_name        : (indirect string, offset: 0x1dd): freeram	
-    <164>   DW_AT_decl_file   : 4	
-    <165>   DW_AT_decl_line   : 11	
-    <166>   DW_AT_type        : <0x87>	
-    <16a>   DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
- <2><16d>: Abbrev Number: 8 (DW_TAG_member)
-    <16e>   DW_AT_name        : (indirect string, offset: 0x148): sharedram	
-    <172>   DW_AT_decl_file   : 4	
-    <173>   DW_AT_decl_line   : 12	
-    <174>   DW_AT_type        : <0x87>	
-    <178>   DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
- <2><17b>: Abbrev Number: 8 (DW_TAG_member)
-    <17c>   DW_AT_name        : (indirect string, offset: 0xa7): bufferram	
-    <180>   DW_AT_decl_file   : 4	
-    <181>   DW_AT_decl_line   : 13	
-    <182>   DW_AT_type        : <0x87>	
-    <186>   DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
- <2><189>: Abbrev Number: 8 (DW_TAG_member)
-    <18a>   DW_AT_name        : (indirect string, offset: 0x191): totalswap	
-    <18e>   DW_AT_decl_file   : 4	
-    <18f>   DW_AT_decl_line   : 14	
-    <190>   DW_AT_type        : <0x87>	
-    <194>   DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
- <2><197>: Abbrev Number: 8 (DW_TAG_member)
-    <198>   DW_AT_name        : (indirect string, offset: 0x15c): freeswap	
-    <19c>   DW_AT_decl_file   : 4	
-    <19d>   DW_AT_decl_line   : 15	
-    <19e>   DW_AT_type        : <0x87>	
-    <1a2>   DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
- <2><1a5>: Abbrev Number: 8 (DW_TAG_member)
-    <1a6>   DW_AT_name        : (indirect string, offset: 0x0): procs	
-    <1aa>   DW_AT_decl_file   : 4	
-    <1ab>   DW_AT_decl_line   : 16	
-    <1ac>   DW_AT_type        : <0x113>	
-    <1b0>   DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
- <2><1b3>: Abbrev Number: 9 (DW_TAG_member)
-    <1b4>   DW_AT_name        : pad	
-    <1b8>   DW_AT_decl_file   : 4	
-    <1b9>   DW_AT_decl_line   : 17	
-    <1ba>   DW_AT_type        : <0x113>	
-    <1be>   DW_AT_data_member_location: 2 byte block: 23 52 	(DW_OP_plus_uconst: 82)
- <2><1c1>: Abbrev Number: 8 (DW_TAG_member)
-    <1c2>   DW_AT_name        : (indirect string, offset: 0x152): totalhigh	
-    <1c6>   DW_AT_decl_file   : 4	
-    <1c7>   DW_AT_decl_line   : 18	
-    <1c8>   DW_AT_type        : <0x87>	
-    <1cc>   DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
- <2><1cf>: Abbrev Number: 8 (DW_TAG_member)
-    <1d0>   DW_AT_name        : (indirect string, offset: 0x1e): freehigh	
-    <1d4>   DW_AT_decl_file   : 4	
-    <1d5>   DW_AT_decl_line   : 19	
-    <1d6>   DW_AT_type        : <0x87>	
-    <1da>   DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
- <2><1dd>: Abbrev Number: 8 (DW_TAG_member)
-    <1de>   DW_AT_name        : (indirect string, offset: 0x1a9): mem_unit	
-    <1e2>   DW_AT_decl_file   : 4	
-    <1e3>   DW_AT_decl_line   : 20	
-    <1e4>   DW_AT_type        : <0x11e>	
-    <1e8>   DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
- <2><1eb>: Abbrev Number: 9 (DW_TAG_member)
-    <1ec>   DW_AT_name        : _f	
-    <1ef>   DW_AT_decl_file   : 4	
-    <1f0>   DW_AT_decl_line   : 21	
-    <1f1>   DW_AT_type        : <0x209>	
-    <1f5>   DW_AT_data_member_location: 2 byte block: 23 6c 	(DW_OP_plus_uconst: 108)
- <2><1f8>: Abbrev Number: 0
- <1><1f9>: Abbrev Number: 12 (DW_TAG_array_type)
-    <1fa>   DW_AT_type        : <0x87>	
-    <1fe>   DW_AT_sibling     : <0x209>	
- <2><202>: Abbrev Number: 13 (DW_TAG_subrange_type)
-    <203>   DW_AT_type        : <0x63>	
-    <207>   DW_AT_upper_bound : 2	
- <2><208>: Abbrev Number: 0
- <1><209>: Abbrev Number: 12 (DW_TAG_array_type)
-    <20a>   DW_AT_type        : <0x6a>	
-    <20e>   DW_AT_sibling     : <0x218>	
- <2><212>: Abbrev Number: 14 (DW_TAG_subrange_type)
-    <213>   DW_AT_type        : <0x63>	
- <2><217>: Abbrev Number: 0
- <1><218>: Abbrev Number: 6 (DW_TAG_typedef)
-    <219>   DW_AT_name        : (indirect string, offset: 0x1b2): sysinfo_t	
-    <21d>   DW_AT_decl_file   : 5	
-    <21e>   DW_AT_decl_line   : 37	
-    <21f>   DW_AT_type        : <0x129>	
- <1><223>: Abbrev Number: 15 (DW_TAG_variable)
-    <224>   DW_AT_name        : (indirect string, offset: 0xf9): current_wordsize	
-    <228>   DW_AT_decl_file   : 6	
-    <229>   DW_AT_decl_line   : 757	
-    <22b>   DW_AT_type        : <0x47>	
-    <22f>   DW_AT_external    : 1	
-    <230>   DW_AT_declaration : 1	
- <1><231>: Abbrev Number: 15 (DW_TAG_variable)
-    <232>   DW_AT_name        : (indirect string, offset: 0xf2): sysent	
-    <236>   DW_AT_decl_file   : 6	
-    <237>   DW_AT_decl_line   : 892	
-    <239>   DW_AT_type        : <0x101>	
-    <23d>   DW_AT_external    : 1	
-    <23e>   DW_AT_declaration : 1	
- <1><23f>: Abbrev Number: 15 (DW_TAG_variable)
-    <240>   DW_AT_name        : (indirect string, offset: 0x176): nsyscalls	
-    <244>   DW_AT_decl_file   : 6	
-    <245>   DW_AT_decl_line   : 903	
-    <247>   DW_AT_type        : <0x47>	
-    <24b>   DW_AT_external    : 1	
-    <24c>   DW_AT_declaration : 1	
- <1><24d>: Abbrev Number: 16 (DW_TAG_variable)
-    <24e>   DW_AT_name        : (indirect string, offset: 0x117): mpers_target_var	
-    <252>   DW_AT_decl_file   : 5	
-    <253>   DW_AT_decl_line   : 38	
-    <254>   DW_AT_type        : <0x218>	
-    <258>   DW_AT_external    : 1	
-    <259>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><25f>: Abbrev Number: 0
-
diff --git a/mpers-mx32/sysinfo_t.d2 b/mpers-mx32/sysinfo_t.d2
deleted file mode 100644
index e697961..0000000
--- a/mpers-mx32/sysinfo_t.d2
+++ /dev/null
@@ -1,319 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ee): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1bc): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x19b): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xd2): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x7b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x128): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xbb): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1e5): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xe0): long unsigned int
-<1><63>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x180): sizetype
-<1><6a>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x143): char
-<1><71>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x77>
-<1><77>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0x6a>
-<1><7c>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x8e): __kernel_long_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 13
-DW_AT_type        : <0x32>
-<1><87>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x165): __kernel_ulong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x4e>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xf2): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x111): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xb1): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x22b): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x9e): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x71>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x135): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 4 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 5 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xc): _Bool
-<1><113>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x6): __u16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 23
-DW_AT_type        : <0x40>
-<1><11e>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x12): __u32
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 26
-DW_AT_type        : <0x47>
-<1><129>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x189): sysinfo
-DW_AT_byte_size   : 112
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 7
-DW_AT_sibling     : <0x1f9>
-<2><135>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x10a): uptime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x7c>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><143>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x18): loads
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x1f9>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><151>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x27): totalram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 20 	(DW_OP_plus_uconst: 32)
-<2><15f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1dd): freeram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 11
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 28 	(DW_OP_plus_uconst: 40)
-<2><16d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x148): sharedram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 12
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 30 	(DW_OP_plus_uconst: 48)
-<2><17b>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa7): bufferram
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 13
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 38 	(DW_OP_plus_uconst: 56)
-<2><189>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x191): totalswap
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 14
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 40 	(DW_OP_plus_uconst: 64)
-<2><197>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x15c): freeswap
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 15
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 48 	(DW_OP_plus_uconst: 72)
-<2><1a5>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x0): procs
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 16
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 50 	(DW_OP_plus_uconst: 80)
-<2><1b3>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : pad
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 17
-DW_AT_type        : <0x113>
-DW_AT_data_member_location: 2 byte block: 23 52 	(DW_OP_plus_uconst: 82)
-<2><1c1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x152): totalhigh
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 18
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 58 	(DW_OP_plus_uconst: 88)
-<2><1cf>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1e): freehigh
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 19
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 60 	(DW_OP_plus_uconst: 96)
-<2><1dd>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a9): mem_unit
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 20
-DW_AT_type        : <0x11e>
-DW_AT_data_member_location: 2 byte block: 23 68 	(DW_OP_plus_uconst: 104)
-<2><1eb>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : _f
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 21
-DW_AT_type        : <0x209>
-DW_AT_data_member_location: 2 byte block: 23 6c 	(DW_OP_plus_uconst: 108)
-<1><1f9>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x87>
-DW_AT_sibling     : <0x209>
-<2><202>
-Abbrev Number: 13 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-DW_AT_upper_bound : 2
-<1><209>
-Abbrev Number: 12 (DW_TAG_array_type)
-DW_AT_type        : <0x6a>
-DW_AT_sibling     : <0x218>
-<2><212>
-Abbrev Number: 14 (DW_TAG_subrange_type)
-DW_AT_type        : <0x63>
-<1><218>
-Abbrev Number: 6 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1b2): sysinfo_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x129>
-<1><223>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf9): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><231>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf2): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><23f>
-Abbrev Number: 15 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x176): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><24d>
-Abbrev Number: 16 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x117): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 38
-DW_AT_type        : <0x218>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/time_t.c b/mpers-mx32/time_t.c
index f2a0e40..834d93d 100644
--- a/mpers-mx32/time_t.c
+++ b/mpers-mx32/time_t.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/mpers-mx32/time_t.d1 b/mpers-mx32/time_t.d1
deleted file mode 100644
index eaac3b1..0000000
--- a/mpers-mx32/time_t.d1
+++ /dev/null
@@ -1,170 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x157 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x3b): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x151): mpers-mx32/time_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0xc6): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x178): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x18d): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x133): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xfc): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x165): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x197): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xaf): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x111): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0x9d): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x11): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x184): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x141): __time_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 139	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0xf7): char	
- <1><87>: Abbrev Number: 4 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x10a): time_t	
-    <8c>   DW_AT_decl_file   : 2	
-    <8d>   DW_AT_decl_line   : 75	
-    <8e>   DW_AT_type        : <0x75>	
- <1><92>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <93>   DW_AT_byte_size   : 4	
-    <94>   DW_AT_type        : <0x98>	
- <1><98>: Abbrev Number: 6 (DW_TAG_const_type)
-    <99>   DW_AT_type        : <0x80>	
- <1><9d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <9e>   DW_AT_name        : (indirect string, offset: 0x14a): sysent	
-    <a2>   DW_AT_byte_size   : 20	
-    <a3>   DW_AT_decl_file   : 3	
-    <a4>   DW_AT_decl_line   : 4	
-    <a5>   DW_AT_sibling     : <0xf0>	
- <2><a9>: Abbrev Number: 8 (DW_TAG_member)
-    <aa>   DW_AT_name        : (indirect string, offset: 0x97): nargs	
-    <ae>   DW_AT_decl_file   : 3	
-    <af>   DW_AT_decl_line   : 5	
-    <b0>   DW_AT_type        : <0x47>	
-    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b7>: Abbrev Number: 8 (DW_TAG_member)
-    <b8>   DW_AT_name        : (indirect string, offset: 0x123): sys_flags	
-    <bc>   DW_AT_decl_file   : 3	
-    <bd>   DW_AT_decl_line   : 6	
-    <be>   DW_AT_type        : <0x2b>	
-    <c2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c5>: Abbrev Number: 9 (DW_TAG_member)
-    <c6>   DW_AT_name        : sen	
-    <ca>   DW_AT_decl_file   : 3	
-    <cb>   DW_AT_decl_line   : 7	
-    <cc>   DW_AT_type        : <0x2b>	
-    <d0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d3>: Abbrev Number: 8 (DW_TAG_member)
-    <d4>   DW_AT_name        : (indirect string, offset: 0x11a): sys_func	
-    <d8>   DW_AT_decl_file   : 3	
-    <d9>   DW_AT_decl_line   : 8	
-    <da>   DW_AT_type        : <0xfb>	
-    <de>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e1>: Abbrev Number: 8 (DW_TAG_member)
-    <e2>   DW_AT_name        : (indirect string, offset: 0x1a): sys_name	
-    <e6>   DW_AT_decl_file   : 3	
-    <e7>   DW_AT_decl_line   : 9	
-    <e8>   DW_AT_type        : <0x92>	
-    <ec>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <f1>   DW_AT_type        : <0x2b>	
-    <f5>   DW_AT_sibling     : <0xfb>	
- <2><f9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><fa>: Abbrev Number: 0
- <1><fb>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <fc>   DW_AT_byte_size   : 4	
-    <fd>   DW_AT_type        : <0xf0>	
- <1><101>: Abbrev Number: 4 (DW_TAG_typedef)
-    <102>   DW_AT_name        : (indirect string, offset: 0x23): struct_sysent	
-    <106>   DW_AT_decl_file   : 3	
-    <107>   DW_AT_decl_line   : 10	
-    <108>   DW_AT_type        : <0x9d>	
- <1><10c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x112>	
- <1><112>: Abbrev Number: 6 (DW_TAG_const_type)
-    <113>   DW_AT_type        : <0x101>	
- <1><117>: Abbrev Number: 2 (DW_TAG_base_type)
-    <118>   DW_AT_byte_size   : 1	
-    <119>   DW_AT_encoding    : 2	(boolean)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x12d): _Bool	
- <1><11e>: Abbrev Number: 12 (DW_TAG_variable)
-    <11f>   DW_AT_name        : (indirect string, offset: 0x0): current_wordsize	
-    <123>   DW_AT_decl_file   : 4	
-    <124>   DW_AT_decl_line   : 757	
-    <126>   DW_AT_type        : <0x47>	
-    <12a>   DW_AT_external    : 1	
-    <12b>   DW_AT_declaration : 1	
- <1><12c>: Abbrev Number: 12 (DW_TAG_variable)
-    <12d>   DW_AT_name        : (indirect string, offset: 0x14a): sysent	
-    <131>   DW_AT_decl_file   : 4	
-    <132>   DW_AT_decl_line   : 892	
-    <134>   DW_AT_type        : <0x10c>	
-    <138>   DW_AT_external    : 1	
-    <139>   DW_AT_declaration : 1	
- <1><13a>: Abbrev Number: 12 (DW_TAG_variable)
-    <13b>   DW_AT_name        : (indirect string, offset: 0x31): nsyscalls	
-    <13f>   DW_AT_decl_file   : 4	
-    <140>   DW_AT_decl_line   : 903	
-    <142>   DW_AT_type        : <0x47>	
-    <146>   DW_AT_external    : 1	
-    <147>   DW_AT_declaration : 1	
- <1><148>: Abbrev Number: 13 (DW_TAG_variable)
-    <149>   DW_AT_name        : (indirect string, offset: 0x86): mpers_target_var	
-    <14d>   DW_AT_decl_file   : 5	
-    <14e>   DW_AT_decl_line   : 31	
-    <14f>   DW_AT_type        : <0x87>	
-    <153>   DW_AT_external    : 1	
-    <154>   DW_AT_location    : 5 byte block: 3 8 0 0 0 	(DW_OP_addr: 8)
- <1><15a>: Abbrev Number: 0
-
diff --git a/mpers-mx32/time_t.d2 b/mpers-mx32/time_t.d2
deleted file mode 100644
index 8651d26..0000000
--- a/mpers-mx32/time_t.d2
+++ /dev/null
@@ -1,187 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x178): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18d): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x133): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xfc): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x165): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x197): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xaf): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x111): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x9d): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x184): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x141): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0xf7): char
-<1><87>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x10a): time_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 75
-DW_AT_type        : <0x75>
-<1><92>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x98>
-<1><98>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><9d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x14a): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf0>
-<2><a9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x97): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x123): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x11a): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1a): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfb>
-<2><f9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><fb>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf0>
-<1><101>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x23): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x9d>
-<1><10c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x112>
-<1><112>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x101>
-<1><117>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x12d): _Bool
-<1><11e>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x0): current_wordsize
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><12c>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x14a): sysent
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10c>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><13a>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x31): nsyscalls
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><148>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x86): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x87>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 8 0 0 0 	(DW_OP_addr: 8)
diff --git a/mpers-mx32/timespec_t.c b/mpers-mx32/timespec_t.c
index c5171fd..ac6ccab 100644
--- a/mpers-mx32/timespec_t.c
+++ b/mpers-mx32/timespec_t.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
diff --git a/mpers-mx32/timespec_t.d1 b/mpers-mx32/timespec_t.d1
deleted file mode 100644
index 70bdb1a..0000000
--- a/mpers-mx32/timespec_t.d1
+++ /dev/null
@@ -1,194 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x18b (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x1e): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x0): mpers-mx32/timespec_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x125): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x19c): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x189): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x170): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa4): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x1a8): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x105): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x8d): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x193): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb2): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0xfc): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x160): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0xdc): __time_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 139	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0x1c4): __syscall_slong_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 175	
-    <87>   DW_AT_type        : <0x63>	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x120): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0x7a): timespec	
-    <97>   DW_AT_byte_size   : 16	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 120	
-    <9a>   DW_AT_sibling     : <0xbb>	
- <2><9e>: Abbrev Number: 6 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x169): tv_sec	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 122	
-    <a5>   DW_AT_type        : <0x75>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 6 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x69): tv_nsec	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 123	
-    <b3>   DW_AT_type        : <0x80>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><ba>: Abbrev Number: 0
- <1><bb>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <bc>   DW_AT_byte_size   : 4	
-    <bd>   DW_AT_type        : <0xc1>	
- <1><c1>: Abbrev Number: 8 (DW_TAG_const_type)
-    <c2>   DW_AT_type        : <0x8b>	
- <1><c6>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <c7>   DW_AT_name        : (indirect string, offset: 0xc4): sysent	
-    <cb>   DW_AT_byte_size   : 20	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 4	
-    <ce>   DW_AT_sibling     : <0x119>	
- <2><d2>: Abbrev Number: 6 (DW_TAG_member)
-    <d3>   DW_AT_name        : (indirect string, offset: 0xe5): nargs	
-    <d7>   DW_AT_decl_file   : 3	
-    <d8>   DW_AT_decl_line   : 5	
-    <d9>   DW_AT_type        : <0x47>	
-    <dd>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><e0>: Abbrev Number: 6 (DW_TAG_member)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x83): sys_flags	
-    <e5>   DW_AT_decl_file   : 3	
-    <e6>   DW_AT_decl_line   : 6	
-    <e7>   DW_AT_type        : <0x2b>	
-    <eb>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ee>: Abbrev Number: 9 (DW_TAG_member)
-    <ef>   DW_AT_name        : sen	
-    <f3>   DW_AT_decl_file   : 3	
-    <f4>   DW_AT_decl_line   : 7	
-    <f5>   DW_AT_type        : <0x2b>	
-    <f9>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><fc>: Abbrev Number: 6 (DW_TAG_member)
-    <fd>   DW_AT_name        : (indirect string, offset: 0x1bb): sys_func	
-    <101>   DW_AT_decl_file   : 3	
-    <102>   DW_AT_decl_line   : 8	
-    <103>   DW_AT_type        : <0x124>	
-    <107>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><10a>: Abbrev Number: 6 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x71): sys_name	
-    <10f>   DW_AT_decl_file   : 3	
-    <110>   DW_AT_decl_line   : 9	
-    <111>   DW_AT_type        : <0xbb>	
-    <115>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><118>: Abbrev Number: 0
- <1><119>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <11a>   DW_AT_type        : <0x2b>	
-    <11e>   DW_AT_sibling     : <0x124>	
- <2><122>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><123>: Abbrev Number: 0
- <1><124>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <125>   DW_AT_byte_size   : 4	
-    <126>   DW_AT_type        : <0x119>	
- <1><12a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x112): struct_sysent	
-    <12f>   DW_AT_decl_file   : 3	
-    <130>   DW_AT_decl_line   : 10	
-    <131>   DW_AT_type        : <0xc6>	
- <1><135>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <136>   DW_AT_byte_size   : 4	
-    <137>   DW_AT_type        : <0x13b>	
- <1><13b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <13c>   DW_AT_type        : <0x12a>	
- <1><140>: Abbrev Number: 2 (DW_TAG_base_type)
-    <141>   DW_AT_byte_size   : 1	
-    <142>   DW_AT_encoding    : 2	(boolean)
-    <143>   DW_AT_name        : (indirect string, offset: 0x18): _Bool	
- <1><147>: Abbrev Number: 4 (DW_TAG_typedef)
-    <148>   DW_AT_name        : (indirect string, offset: 0x17e): timespec_t	
-    <14c>   DW_AT_decl_file   : 4	
-    <14d>   DW_AT_decl_line   : 31	
-    <14e>   DW_AT_type        : <0x92>	
- <1><152>: Abbrev Number: 12 (DW_TAG_variable)
-    <153>   DW_AT_name        : (indirect string, offset: 0xcb): current_wordsize	
-    <157>   DW_AT_decl_file   : 5	
-    <158>   DW_AT_decl_line   : 757	
-    <15a>   DW_AT_type        : <0x47>	
-    <15e>   DW_AT_external    : 1	
-    <15f>   DW_AT_declaration : 1	
- <1><160>: Abbrev Number: 12 (DW_TAG_variable)
-    <161>   DW_AT_name        : (indirect string, offset: 0xc4): sysent	
-    <165>   DW_AT_decl_file   : 5	
-    <166>   DW_AT_decl_line   : 892	
-    <168>   DW_AT_type        : <0x135>	
-    <16c>   DW_AT_external    : 1	
-    <16d>   DW_AT_declaration : 1	
- <1><16e>: Abbrev Number: 12 (DW_TAG_variable)
-    <16f>   DW_AT_name        : (indirect string, offset: 0x156): nsyscalls	
-    <173>   DW_AT_decl_file   : 5	
-    <174>   DW_AT_decl_line   : 903	
-    <176>   DW_AT_type        : <0x47>	
-    <17a>   DW_AT_external    : 1	
-    <17b>   DW_AT_declaration : 1	
- <1><17c>: Abbrev Number: 13 (DW_TAG_variable)
-    <17d>   DW_AT_name        : (indirect string, offset: 0xeb): mpers_target_var	
-    <181>   DW_AT_decl_file   : 4	
-    <182>   DW_AT_decl_line   : 33	
-    <183>   DW_AT_type        : <0x147>	
-    <187>   DW_AT_external    : 1	
-    <188>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><18e>: Abbrev Number: 0
-
diff --git a/mpers-mx32/timespec_t.d2 b/mpers-mx32/timespec_t.d2
deleted file mode 100644
index 15208eb..0000000
--- a/mpers-mx32/timespec_t.d2
+++ /dev/null
@@ -1,214 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x19c): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x189): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x170): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa4): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x1a8): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x105): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8d): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x193): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb2): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xfc): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x160): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xdc): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x1c4): __syscall_slong_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 175
-DW_AT_type        : <0x63>
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x120): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x7a): timespec
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 120
-DW_AT_sibling     : <0xbb>
-<2><9e>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x169): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 122
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x69): tv_nsec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 123
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><bb>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xc1>
-<1><c1>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><c6>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc4): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x119>
-<2><d2>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe5): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><e0>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x83): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ee>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><fc>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1bb): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x124>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><10a>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x71): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xbb>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><119>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x124>
-<2><122>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><124>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x119>
-<1><12a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x112): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xc6>
-<1><135>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x13b>
-<1><13b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x12a>
-<1><140>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x18): _Bool
-<1><147>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x17e): timespec_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x92>
-<1><152>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xcb): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><160>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc4): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x135>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><16e>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x156): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17c>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xeb): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x147>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/timeval_t.c b/mpers-mx32/timeval_t.c
index 5d867b5..36574eb 100644
--- a/mpers-mx32/timeval_t.c
+++ b/mpers-mx32/timeval_t.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers-mx32/timeval_t.d1 b/mpers-mx32/timeval_t.d1
deleted file mode 100644
index 399b670..0000000
--- a/mpers-mx32/timeval_t.d1
+++ /dev/null
@@ -1,194 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x18b (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x6): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x10e): mpers-mx32/timeval_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x14e): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ba): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1a7): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x199): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa5): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x51): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x6e): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x8e): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1b1): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb3): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0xfd): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x189): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0xdd): __time_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 139	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 4 (DW_TAG_typedef)
-    <81>   DW_AT_name        : (indirect string, offset: 0x138): __suseconds_t	
-    <85>   DW_AT_decl_file   : 1	
-    <86>   DW_AT_decl_line   : 141	
-    <87>   DW_AT_type        : <0x63>	
- <1><8b>: Abbrev Number: 2 (DW_TAG_base_type)
-    <8c>   DW_AT_byte_size   : 1	
-    <8d>   DW_AT_encoding    : 6	(signed char)
-    <8e>   DW_AT_name        : (indirect string, offset: 0x133): char	
- <1><92>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0x106): timeval	
-    <97>   DW_AT_byte_size   : 16	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 30	
-    <9a>   DW_AT_sibling     : <0xbb>	
- <2><9e>: Abbrev Number: 6 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0x192): tv_sec	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 32	
-    <a5>   DW_AT_type        : <0x75>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 6 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x146): tv_usec	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 33	
-    <b3>   DW_AT_type        : <0x80>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><ba>: Abbrev Number: 0
- <1><bb>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <bc>   DW_AT_byte_size   : 4	
-    <bd>   DW_AT_type        : <0xc1>	
- <1><c1>: Abbrev Number: 8 (DW_TAG_const_type)
-    <c2>   DW_AT_type        : <0x8b>	
- <1><c6>: Abbrev Number: 5 (DW_TAG_structure_type)
-    <c7>   DW_AT_name        : (indirect string, offset: 0xc5): sysent	
-    <cb>   DW_AT_byte_size   : 20	
-    <cc>   DW_AT_decl_file   : 3	
-    <cd>   DW_AT_decl_line   : 4	
-    <ce>   DW_AT_sibling     : <0x119>	
- <2><d2>: Abbrev Number: 6 (DW_TAG_member)
-    <d3>   DW_AT_name        : (indirect string, offset: 0xe6): nargs	
-    <d7>   DW_AT_decl_file   : 3	
-    <d8>   DW_AT_decl_line   : 5	
-    <d9>   DW_AT_type        : <0x47>	
-    <dd>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><e0>: Abbrev Number: 6 (DW_TAG_member)
-    <e1>   DW_AT_name        : (indirect string, offset: 0x84): sys_flags	
-    <e5>   DW_AT_decl_file   : 3	
-    <e6>   DW_AT_decl_line   : 6	
-    <e7>   DW_AT_type        : <0x2b>	
-    <eb>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ee>: Abbrev Number: 9 (DW_TAG_member)
-    <ef>   DW_AT_name        : sen	
-    <f3>   DW_AT_decl_file   : 3	
-    <f4>   DW_AT_decl_line   : 7	
-    <f5>   DW_AT_type        : <0x2b>	
-    <f9>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><fc>: Abbrev Number: 6 (DW_TAG_member)
-    <fd>   DW_AT_name        : (indirect string, offset: 0x1c6): sys_func	
-    <101>   DW_AT_decl_file   : 3	
-    <102>   DW_AT_decl_line   : 8	
-    <103>   DW_AT_type        : <0x124>	
-    <107>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><10a>: Abbrev Number: 6 (DW_TAG_member)
-    <10b>   DW_AT_name        : (indirect string, offset: 0x7b): sys_name	
-    <10f>   DW_AT_decl_file   : 3	
-    <110>   DW_AT_decl_line   : 9	
-    <111>   DW_AT_type        : <0xbb>	
-    <115>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><118>: Abbrev Number: 0
- <1><119>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <11a>   DW_AT_type        : <0x2b>	
-    <11e>   DW_AT_sibling     : <0x124>	
- <2><122>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><123>: Abbrev Number: 0
- <1><124>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <125>   DW_AT_byte_size   : 4	
-    <126>   DW_AT_type        : <0x119>	
- <1><12a>: Abbrev Number: 4 (DW_TAG_typedef)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x125): struct_sysent	
-    <12f>   DW_AT_decl_file   : 3	
-    <130>   DW_AT_decl_line   : 10	
-    <131>   DW_AT_type        : <0xc6>	
- <1><135>: Abbrev Number: 7 (DW_TAG_pointer_type)
-    <136>   DW_AT_byte_size   : 4	
-    <137>   DW_AT_type        : <0x13b>	
- <1><13b>: Abbrev Number: 8 (DW_TAG_const_type)
-    <13c>   DW_AT_type        : <0x12a>	
- <1><140>: Abbrev Number: 2 (DW_TAG_base_type)
-    <141>   DW_AT_byte_size   : 1	
-    <142>   DW_AT_encoding    : 2	(boolean)
-    <143>   DW_AT_name        : (indirect string, offset: 0x0): _Bool	
- <1><147>: Abbrev Number: 4 (DW_TAG_typedef)
-    <148>   DW_AT_name        : (indirect string, offset: 0x64): timeval_t	
-    <14c>   DW_AT_decl_file   : 4	
-    <14d>   DW_AT_decl_line   : 31	
-    <14e>   DW_AT_type        : <0x92>	
- <1><152>: Abbrev Number: 12 (DW_TAG_variable)
-    <153>   DW_AT_name        : (indirect string, offset: 0xcc): current_wordsize	
-    <157>   DW_AT_decl_file   : 5	
-    <158>   DW_AT_decl_line   : 757	
-    <15a>   DW_AT_type        : <0x47>	
-    <15e>   DW_AT_external    : 1	
-    <15f>   DW_AT_declaration : 1	
- <1><160>: Abbrev Number: 12 (DW_TAG_variable)
-    <161>   DW_AT_name        : (indirect string, offset: 0xc5): sysent	
-    <165>   DW_AT_decl_file   : 5	
-    <166>   DW_AT_decl_line   : 892	
-    <168>   DW_AT_type        : <0x135>	
-    <16c>   DW_AT_external    : 1	
-    <16d>   DW_AT_declaration : 1	
- <1><16e>: Abbrev Number: 12 (DW_TAG_variable)
-    <16f>   DW_AT_name        : (indirect string, offset: 0x17f): nsyscalls	
-    <173>   DW_AT_decl_file   : 5	
-    <174>   DW_AT_decl_line   : 903	
-    <176>   DW_AT_type        : <0x47>	
-    <17a>   DW_AT_external    : 1	
-    <17b>   DW_AT_declaration : 1	
- <1><17c>: Abbrev Number: 13 (DW_TAG_variable)
-    <17d>   DW_AT_name        : (indirect string, offset: 0xec): mpers_target_var	
-    <181>   DW_AT_decl_file   : 4	
-    <182>   DW_AT_decl_line   : 33	
-    <183>   DW_AT_type        : <0x147>	
-    <187>   DW_AT_external    : 1	
-    <188>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><18e>: Abbrev Number: 0
-
diff --git a/mpers-mx32/timeval_t.d2 b/mpers-mx32/timeval_t.d2
deleted file mode 100644
index e5ea8d0..0000000
--- a/mpers-mx32/timeval_t.d2
+++ /dev/null
@@ -1,214 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ba): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a7): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x199): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa5): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x51): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x6e): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x8e): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1b1): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb3): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xfd): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x189): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xdd): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x138): __suseconds_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 141
-DW_AT_type        : <0x63>
-<1><8b>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x133): char
-<1><92>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x106): timeval
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 30
-DW_AT_sibling     : <0xbb>
-<2><9e>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x192): tv_sec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 32
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x146): tv_usec
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x80>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><bb>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xc1>
-<1><c1>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x8b>
-<1><c6>
-Abbrev Number: 5 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc5): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0x119>
-<2><d2>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe6): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><e0>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x84): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ee>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><fc>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1c6): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x124>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><10a>
-Abbrev Number: 6 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7b): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0xbb>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><119>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0x124>
-<2><122>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><124>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x119>
-<1><12a>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x125): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0xc6>
-<1><135>
-Abbrev Number: 7 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x13b>
-<1><13b>
-Abbrev Number: 8 (DW_TAG_const_type)
-DW_AT_type        : <0x12a>
-<1><140>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x0): _Bool
-<1><147>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x64): timeval_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 31
-DW_AT_type        : <0x92>
-<1><152>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xcc): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><160>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc5): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x135>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><16e>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x17f): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17c>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xec): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 33
-DW_AT_type        : <0x147>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers-mx32/tms_t.c b/mpers-mx32/tms_t.c
index 7af2d32..b11758c 100644
--- a/mpers-mx32/tms_t.c
+++ b/mpers-mx32/tms_t.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
diff --git a/mpers-mx32/tms_t.d1 b/mpers-mx32/tms_t.d1
deleted file mode 100644
index e4aed80..0000000
--- a/mpers-mx32/tms_t.d1
+++ /dev/null
@@ -1,206 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x1a7 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x29): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x0): mpers-mx32/tms_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x146): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1c0): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x1a2): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x18a): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xc3): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x74): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x126): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0xac): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1ac): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xd1): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0x11d): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x181): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0x198): __clock_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 135	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x141): char	
- <1><87>: Abbrev Number: 4 (DW_TAG_typedef)
-    <88>   DW_AT_name        : (indirect string, offset: 0x9a): clock_t	
-    <8c>   DW_AT_decl_file   : 2	
-    <8d>   DW_AT_decl_line   : 59	
-    <8e>   DW_AT_type        : <0x75>	
- <1><92>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <93>   DW_AT_byte_size   : 4	
-    <94>   DW_AT_type        : <0x98>	
- <1><98>: Abbrev Number: 6 (DW_TAG_const_type)
-    <99>   DW_AT_type        : <0x80>	
- <1><9d>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <9e>   DW_AT_name        : (indirect string, offset: 0xe3): sysent	
-    <a2>   DW_AT_byte_size   : 20	
-    <a3>   DW_AT_decl_file   : 3	
-    <a4>   DW_AT_decl_line   : 4	
-    <a5>   DW_AT_sibling     : <0xf0>	
- <2><a9>: Abbrev Number: 8 (DW_TAG_member)
-    <aa>   DW_AT_name        : (indirect string, offset: 0x106): nargs	
-    <ae>   DW_AT_decl_file   : 3	
-    <af>   DW_AT_decl_line   : 5	
-    <b0>   DW_AT_type        : <0x47>	
-    <b4>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><b7>: Abbrev Number: 8 (DW_TAG_member)
-    <b8>   DW_AT_name        : (indirect string, offset: 0xa2): sys_flags	
-    <bc>   DW_AT_decl_file   : 3	
-    <bd>   DW_AT_decl_line   : 6	
-    <be>   DW_AT_type        : <0x2b>	
-    <c2>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><c5>: Abbrev Number: 9 (DW_TAG_member)
-    <c6>   DW_AT_name        : sen	
-    <ca>   DW_AT_decl_file   : 3	
-    <cb>   DW_AT_decl_line   : 7	
-    <cc>   DW_AT_type        : <0x2b>	
-    <d0>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><d3>: Abbrev Number: 8 (DW_TAG_member)
-    <d4>   DW_AT_name        : (indirect string, offset: 0x1cc): sys_func	
-    <d8>   DW_AT_decl_file   : 3	
-    <d9>   DW_AT_decl_line   : 8	
-    <da>   DW_AT_type        : <0xfb>	
-    <de>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><e1>: Abbrev Number: 8 (DW_TAG_member)
-    <e2>   DW_AT_name        : (indirect string, offset: 0x91): sys_name	
-    <e6>   DW_AT_decl_file   : 3	
-    <e7>   DW_AT_decl_line   : 9	
-    <e8>   DW_AT_type        : <0x92>	
-    <ec>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <f1>   DW_AT_type        : <0x2b>	
-    <f5>   DW_AT_sibling     : <0xfb>	
- <2><f9>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><fa>: Abbrev Number: 0
- <1><fb>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <fc>   DW_AT_byte_size   : 4	
-    <fd>   DW_AT_type        : <0xf0>	
- <1><101>: Abbrev Number: 4 (DW_TAG_typedef)
-    <102>   DW_AT_name        : (indirect string, offset: 0x133): struct_sysent	
-    <106>   DW_AT_decl_file   : 3	
-    <107>   DW_AT_decl_line   : 10	
-    <108>   DW_AT_type        : <0x9d>	
- <1><10c>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <10d>   DW_AT_byte_size   : 4	
-    <10e>   DW_AT_type        : <0x112>	
- <1><112>: Abbrev Number: 6 (DW_TAG_const_type)
-    <113>   DW_AT_type        : <0x101>	
- <1><117>: Abbrev Number: 2 (DW_TAG_base_type)
-    <118>   DW_AT_byte_size   : 1	
-    <119>   DW_AT_encoding    : 2	(boolean)
-    <11a>   DW_AT_name        : (indirect string, offset: 0x1d): _Bool	
- <1><11e>: Abbrev Number: 12 (DW_TAG_structure_type)
-    <11f>   DW_AT_name        : tms	
-    <123>   DW_AT_byte_size   : 32	
-    <124>   DW_AT_decl_file   : 4	
-    <125>   DW_AT_decl_line   : 34	
-    <126>   DW_AT_sibling     : <0x163>	
- <2><12a>: Abbrev Number: 8 (DW_TAG_member)
-    <12b>   DW_AT_name        : (indirect string, offset: 0x13): tms_utime	
-    <12f>   DW_AT_decl_file   : 4	
-    <130>   DW_AT_decl_line   : 36	
-    <131>   DW_AT_type        : <0x87>	
-    <135>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><138>: Abbrev Number: 8 (DW_TAG_member)
-    <139>   DW_AT_name        : (indirect string, offset: 0x87): tms_stime	
-    <13d>   DW_AT_decl_file   : 4	
-    <13e>   DW_AT_decl_line   : 37	
-    <13f>   DW_AT_type        : <0x87>	
-    <143>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><146>: Abbrev Number: 8 (DW_TAG_member)
-    <147>   DW_AT_name        : (indirect string, offset: 0xea): tms_cutime	
-    <14b>   DW_AT_decl_file   : 4	
-    <14c>   DW_AT_decl_line   : 39	
-    <14d>   DW_AT_type        : <0x87>	
-    <151>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><154>: Abbrev Number: 8 (DW_TAG_member)
-    <155>   DW_AT_name        : (indirect string, offset: 0x1b5): tms_cstime	
-    <159>   DW_AT_decl_file   : 4	
-    <15a>   DW_AT_decl_line   : 40	
-    <15b>   DW_AT_type        : <0x87>	
-    <15f>   DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
- <2><162>: Abbrev Number: 0
- <1><163>: Abbrev Number: 4 (DW_TAG_typedef)
-    <164>   DW_AT_name        : (indirect string, offset: 0x23): tms_t	
-    <168>   DW_AT_decl_file   : 5	
-    <169>   DW_AT_decl_line   : 36	
-    <16a>   DW_AT_type        : <0x11e>	
- <1><16e>: Abbrev Number: 13 (DW_TAG_variable)
-    <16f>   DW_AT_name        : (indirect string, offset: 0xf5): current_wordsize	
-    <173>   DW_AT_decl_file   : 6	
-    <174>   DW_AT_decl_line   : 757	
-    <176>   DW_AT_type        : <0x47>	
-    <17a>   DW_AT_external    : 1	
-    <17b>   DW_AT_declaration : 1	
- <1><17c>: Abbrev Number: 13 (DW_TAG_variable)
-    <17d>   DW_AT_name        : (indirect string, offset: 0xe3): sysent	
-    <181>   DW_AT_decl_file   : 6	
-    <182>   DW_AT_decl_line   : 892	
-    <184>   DW_AT_type        : <0x10c>	
-    <188>   DW_AT_external    : 1	
-    <189>   DW_AT_declaration : 1	
- <1><18a>: Abbrev Number: 13 (DW_TAG_variable)
-    <18b>   DW_AT_name        : (indirect string, offset: 0x177): nsyscalls	
-    <18f>   DW_AT_decl_file   : 6	
-    <190>   DW_AT_decl_line   : 903	
-    <192>   DW_AT_type        : <0x47>	
-    <196>   DW_AT_external    : 1	
-    <197>   DW_AT_declaration : 1	
- <1><198>: Abbrev Number: 14 (DW_TAG_variable)
-    <199>   DW_AT_name        : (indirect string, offset: 0x10c): mpers_target_var	
-    <19d>   DW_AT_decl_file   : 5	
-    <19e>   DW_AT_decl_line   : 37	
-    <19f>   DW_AT_type        : <0x163>	
-    <1a3>   DW_AT_external    : 1	
-    <1a4>   DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
- <1><1aa>: Abbrev Number: 0
-
diff --git a/mpers-mx32/tms_t.d2 b/mpers-mx32/tms_t.d2
deleted file mode 100644
index 61fc336..0000000
--- a/mpers-mx32/tms_t.d2
+++ /dev/null
@@ -1,228 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1c0): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a2): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x18a): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xc3): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x74): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x126): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xac): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1ac): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xd1): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11d): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x181): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x198): __clock_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 135
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x141): char
-<1><87>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x9a): clock_t
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 59
-DW_AT_type        : <0x75>
-<1><92>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x98>
-<1><98>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><9d>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xe3): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xf0>
-<2><a9>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x106): nargs
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><b7>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xa2): sys_flags
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><c5>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><d3>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1cc): sys_func
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xfb>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><e1>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x91): sys_name
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x92>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><f0>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xfb>
-<2><f9>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><fb>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xf0>
-<1><101>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x133): struct_sysent
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x9d>
-<1><10c>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x112>
-<1><112>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x101>
-<1><117>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0x1d): _Bool
-<1><11e>
-Abbrev Number: 12 (DW_TAG_structure_type)
-DW_AT_name        : tms
-DW_AT_byte_size   : 32
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 34
-DW_AT_sibling     : <0x163>
-<2><12a>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x13): tms_utime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><138>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x87): tms_stime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><146>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xea): tms_cutime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<2><154>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b5): tms_cstime
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 18 	(DW_OP_plus_uconst: 24)
-<1><163>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x23): tms_t
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 36
-DW_AT_type        : <0x11e>
-<1><16e>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xf5): current_wordsize
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><17c>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xe3): sysent
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x10c>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><18a>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x177): nsyscalls
-DW_AT_decl_file   : 6
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><198>
-Abbrev Number: 14 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x10c): mpers_target_var
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 37
-DW_AT_type        : <0x163>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 20 0 0 0 	(DW_OP_addr: 20)
diff --git a/mpers-mx32/utimbuf_t.d1 b/mpers-mx32/utimbuf_t.d1
deleted file mode 100644
index 47e297b..0000000
--- a/mpers-mx32/utimbuf_t.d1
+++ /dev/null
@@ -1,189 +0,0 @@
-Contents of the .debug_info section:
-
-  Compilation Unit @ offset 0x0:
-   Length:        0x180 (32-bit)
-   Version:       2
-   Abbrev Offset: 0x0
-   Pointer Size:  4
- <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
-    <c>   DW_AT_producer    : (indirect string, offset: 0x10): GNU C 4.8.4 -mx32 -mtune=generic -march=x86-64 -gdwarf-2 -fstack-protector	
-    <10>   DW_AT_language    : 1	(ANSI C)
-    <11>   DW_AT_name        : (indirect string, offset: 0x18c): mpers-mx32/utimbuf_t.c	
-    <15>   DW_AT_comp_dir    : (indirect string, offset: 0x130): /usr/local/google/home/enh/Downloads/strace-4.16	
-    <19>   DW_AT_stmt_list   : 0x0	
- <1><1d>: Abbrev Number: 2 (DW_TAG_base_type)
-    <1e>   DW_AT_byte_size   : 1	
-    <1f>   DW_AT_encoding    : 6	(signed char)
-    <20>   DW_AT_name        : (indirect string, offset: 0x1ac): signed char	
- <1><24>: Abbrev Number: 2 (DW_TAG_base_type)
-    <25>   DW_AT_byte_size   : 2	
-    <26>   DW_AT_encoding    : 5	(signed)
-    <27>   DW_AT_name        : (indirect string, offset: 0x182): short int	
- <1><2b>: Abbrev Number: 3 (DW_TAG_base_type)
-    <2c>   DW_AT_byte_size   : 4	
-    <2d>   DW_AT_encoding    : 5	(signed)
-    <2e>   DW_AT_name        : int	
- <1><32>: Abbrev Number: 2 (DW_TAG_base_type)
-    <33>   DW_AT_byte_size   : 8	
-    <34>   DW_AT_encoding    : 5	(signed)
-    <35>   DW_AT_name        : (indirect string, offset: 0x174): long long int	
- <1><39>: Abbrev Number: 2 (DW_TAG_base_type)
-    <3a>   DW_AT_byte_size   : 1	
-    <3b>   DW_AT_encoding    : 8	(unsigned char)
-    <3c>   DW_AT_name        : (indirect string, offset: 0xa0): unsigned char	
- <1><40>: Abbrev Number: 2 (DW_TAG_base_type)
-    <41>   DW_AT_byte_size   : 2	
-    <42>   DW_AT_encoding    : 7	(unsigned)
-    <43>   DW_AT_name        : (indirect string, offset: 0x5b): short unsigned int	
- <1><47>: Abbrev Number: 2 (DW_TAG_base_type)
-    <48>   DW_AT_byte_size   : 4	
-    <49>   DW_AT_encoding    : 7	(unsigned)
-    <4a>   DW_AT_name        : (indirect string, offset: 0x110): unsigned int	
- <1><4e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <4f>   DW_AT_byte_size   : 8	
-    <50>   DW_AT_encoding    : 7	(unsigned)
-    <51>   DW_AT_name        : (indirect string, offset: 0x89): long long unsigned int	
- <1><55>: Abbrev Number: 2 (DW_TAG_base_type)
-    <56>   DW_AT_byte_size   : 4	
-    <57>   DW_AT_encoding    : 5	(signed)
-    <58>   DW_AT_name        : (indirect string, offset: 0x1a3): long int	
- <1><5c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <5d>   DW_AT_byte_size   : 4	
-    <5e>   DW_AT_encoding    : 7	(unsigned)
-    <5f>   DW_AT_name        : (indirect string, offset: 0xb5): long unsigned int	
- <1><63>: Abbrev Number: 4 (DW_TAG_typedef)
-    <64>   DW_AT_name        : (indirect string, offset: 0xff): __quad_t	
-    <68>   DW_AT_decl_file   : 1	
-    <69>   DW_AT_decl_line   : 55	
-    <6a>   DW_AT_type        : <0x32>	
- <1><6e>: Abbrev Number: 2 (DW_TAG_base_type)
-    <6f>   DW_AT_byte_size   : 4	
-    <70>   DW_AT_encoding    : 7	(unsigned)
-    <71>   DW_AT_name        : (indirect string, offset: 0x16b): sizetype	
- <1><75>: Abbrev Number: 4 (DW_TAG_typedef)
-    <76>   DW_AT_name        : (indirect string, offset: 0xdf): __time_t	
-    <7a>   DW_AT_decl_file   : 1	
-    <7b>   DW_AT_decl_line   : 139	
-    <7c>   DW_AT_type        : <0x63>	
- <1><80>: Abbrev Number: 2 (DW_TAG_base_type)
-    <81>   DW_AT_byte_size   : 1	
-    <82>   DW_AT_encoding    : 6	(signed char)
-    <83>   DW_AT_name        : (indirect string, offset: 0x12b): char	
- <1><87>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <88>   DW_AT_byte_size   : 4	
-    <89>   DW_AT_type        : <0x8d>	
- <1><8d>: Abbrev Number: 6 (DW_TAG_const_type)
-    <8e>   DW_AT_type        : <0x80>	
- <1><92>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <93>   DW_AT_name        : (indirect string, offset: 0xc7): sysent	
-    <97>   DW_AT_byte_size   : 20	
-    <98>   DW_AT_decl_file   : 2	
-    <99>   DW_AT_decl_line   : 4	
-    <9a>   DW_AT_sibling     : <0xe5>	
- <2><9e>: Abbrev Number: 8 (DW_TAG_member)
-    <9f>   DW_AT_name        : (indirect string, offset: 0xe8): nargs	
-    <a3>   DW_AT_decl_file   : 2	
-    <a4>   DW_AT_decl_line   : 5	
-    <a5>   DW_AT_type        : <0x47>	
-    <a9>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><ac>: Abbrev Number: 8 (DW_TAG_member)
-    <ad>   DW_AT_name        : (indirect string, offset: 0x7f): sys_flags	
-    <b1>   DW_AT_decl_file   : 2	
-    <b2>   DW_AT_decl_line   : 6	
-    <b3>   DW_AT_type        : <0x2b>	
-    <b7>   DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
- <2><ba>: Abbrev Number: 9 (DW_TAG_member)
-    <bb>   DW_AT_name        : sen	
-    <bf>   DW_AT_decl_file   : 2	
-    <c0>   DW_AT_decl_line   : 7	
-    <c1>   DW_AT_type        : <0x2b>	
-    <c5>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><c8>: Abbrev Number: 8 (DW_TAG_member)
-    <c9>   DW_AT_name        : (indirect string, offset: 0x1b8): sys_func	
-    <cd>   DW_AT_decl_file   : 2	
-    <ce>   DW_AT_decl_line   : 8	
-    <cf>   DW_AT_type        : <0xf0>	
-    <d3>   DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
- <2><d6>: Abbrev Number: 8 (DW_TAG_member)
-    <d7>   DW_AT_name        : (indirect string, offset: 0x6e): sys_name	
-    <db>   DW_AT_decl_file   : 2	
-    <dc>   DW_AT_decl_line   : 9	
-    <dd>   DW_AT_type        : <0x87>	
-    <e1>   DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
- <2><e4>: Abbrev Number: 0
- <1><e5>: Abbrev Number: 10 (DW_TAG_subroutine_type)
-    <e6>   DW_AT_type        : <0x2b>	
-    <ea>   DW_AT_sibling     : <0xf0>	
- <2><ee>: Abbrev Number: 11 (DW_TAG_unspecified_parameters)
- <2><ef>: Abbrev Number: 0
- <1><f0>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <f1>   DW_AT_byte_size   : 4	
-    <f2>   DW_AT_type        : <0xe5>	
- <1><f6>: Abbrev Number: 4 (DW_TAG_typedef)
-    <f7>   DW_AT_name        : (indirect string, offset: 0x11d): struct_sysent	
-    <fb>   DW_AT_decl_file   : 2	
-    <fc>   DW_AT_decl_line   : 10	
-    <fd>   DW_AT_type        : <0x92>	
- <1><101>: Abbrev Number: 5 (DW_TAG_pointer_type)
-    <102>   DW_AT_byte_size   : 4	
-    <103>   DW_AT_type        : <0x107>	
- <1><107>: Abbrev Number: 6 (DW_TAG_const_type)
-    <108>   DW_AT_type        : <0xf6>	
- <1><10c>: Abbrev Number: 2 (DW_TAG_base_type)
-    <10d>   DW_AT_byte_size   : 1	
-    <10e>   DW_AT_encoding    : 2	(boolean)
-    <10f>   DW_AT_name        : (indirect string, offset: 0xa): _Bool	
- <1><113>: Abbrev Number: 7 (DW_TAG_structure_type)
-    <114>   DW_AT_name        : (indirect string, offset: 0x77): utimbuf	
-    <118>   DW_AT_byte_size   : 16	
-    <119>   DW_AT_decl_file   : 3	
-    <11a>   DW_AT_decl_line   : 37	
-    <11b>   DW_AT_sibling     : <0x13c>	
- <2><11f>: Abbrev Number: 8 (DW_TAG_member)
-    <120>   DW_AT_name        : (indirect string, offset: 0xae): actime	
-    <124>   DW_AT_decl_file   : 3	
-    <125>   DW_AT_decl_line   : 39	
-    <126>   DW_AT_type        : <0x75>	
-    <12a>   DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
- <2><12d>: Abbrev Number: 8 (DW_TAG_member)
-    <12e>   DW_AT_name        : (indirect string, offset: 0x108): modtime	
-    <132>   DW_AT_decl_file   : 3	
-    <133>   DW_AT_decl_line   : 40	
-    <134>   DW_AT_type        : <0x75>	
-    <138>   DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
- <2><13b>: Abbrev Number: 0
- <1><13c>: Abbrev Number: 4 (DW_TAG_typedef)
-    <13d>   DW_AT_name        : (indirect string, offset: 0x0): utimbuf_t	
-    <141>   DW_AT_decl_file   : 4	
-    <142>   DW_AT_decl_line   : 6	
-    <143>   DW_AT_type        : <0x113>	
- <1><147>: Abbrev Number: 12 (DW_TAG_variable)
-    <148>   DW_AT_name        : (indirect string, offset: 0xce): current_wordsize	
-    <14c>   DW_AT_decl_file   : 5	
-    <14d>   DW_AT_decl_line   : 757	
-    <14f>   DW_AT_type        : <0x47>	
-    <153>   DW_AT_external    : 1	
-    <154>   DW_AT_declaration : 1	
- <1><155>: Abbrev Number: 12 (DW_TAG_variable)
-    <156>   DW_AT_name        : (indirect string, offset: 0xc7): sysent	
-    <15a>   DW_AT_decl_file   : 5	
-    <15b>   DW_AT_decl_line   : 892	
-    <15d>   DW_AT_type        : <0x101>	
-    <161>   DW_AT_external    : 1	
-    <162>   DW_AT_declaration : 1	
- <1><163>: Abbrev Number: 12 (DW_TAG_variable)
-    <164>   DW_AT_name        : (indirect string, offset: 0x161): nsyscalls	
-    <168>   DW_AT_decl_file   : 5	
-    <169>   DW_AT_decl_line   : 903	
-    <16b>   DW_AT_type        : <0x47>	
-    <16f>   DW_AT_external    : 1	
-    <170>   DW_AT_declaration : 1	
- <1><171>: Abbrev Number: 13 (DW_TAG_variable)
-    <172>   DW_AT_name        : (indirect string, offset: 0xee): mpers_target_var	
-    <176>   DW_AT_decl_file   : 4	
-    <177>   DW_AT_decl_line   : 8	
-    <178>   DW_AT_type        : <0x13c>	
-    <17c>   DW_AT_external    : 1	
-    <17d>   DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
- <1><183>: Abbrev Number: 0
-
diff --git a/mpers-mx32/utimbuf_t.d2 b/mpers-mx32/utimbuf_t.d2
deleted file mode 100644
index 4158a10..0000000
--- a/mpers-mx32/utimbuf_t.d2
+++ /dev/null
@@ -1,208 +0,0 @@
-<1><1d>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x1ac): signed char
-<1><24>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x182): short int
-<1><2b>
-Abbrev Number: 3 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : int
-<1><32>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x174): long long int
-<1><39>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 8	(unsigned char)
-DW_AT_name        : (indirect string, offset: 0xa0): unsigned char
-<1><40>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 2
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x5b): short unsigned int
-<1><47>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x110): unsigned int
-<1><4e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 8
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x89): long long unsigned int
-<1><55>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 5	(signed)
-DW_AT_name        : (indirect string, offset: 0x1a3): long int
-<1><5c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0xb5): long unsigned int
-<1><63>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xff): __quad_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 55
-DW_AT_type        : <0x32>
-<1><6e>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 4
-DW_AT_encoding    : 7	(unsigned)
-DW_AT_name        : (indirect string, offset: 0x16b): sizetype
-<1><75>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0xdf): __time_t
-DW_AT_decl_file   : 1
-DW_AT_decl_line   : 139
-DW_AT_type        : <0x63>
-<1><80>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 6	(signed char)
-DW_AT_name        : (indirect string, offset: 0x12b): char
-<1><87>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x8d>
-<1><8d>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0x80>
-<1><92>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0xc7): sysent
-DW_AT_byte_size   : 20
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 4
-DW_AT_sibling     : <0xe5>
-<2><9e>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xe8): nargs
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 5
-DW_AT_type        : <0x47>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><ac>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x7f): sys_flags
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 4 	(DW_OP_plus_uconst: 4)
-<2><ba>
-Abbrev Number: 9 (DW_TAG_member)
-DW_AT_name        : sen
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 7
-DW_AT_type        : <0x2b>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<2><c8>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x1b8): sys_func
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 8
-DW_AT_type        : <0xf0>
-DW_AT_data_member_location: 2 byte block: 23 c 	(DW_OP_plus_uconst: 12)
-<2><d6>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x6e): sys_name
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 9
-DW_AT_type        : <0x87>
-DW_AT_data_member_location: 2 byte block: 23 10 	(DW_OP_plus_uconst: 16)
-<1><e5>
-Abbrev Number: 10 (DW_TAG_subroutine_type)
-DW_AT_type        : <0x2b>
-DW_AT_sibling     : <0xf0>
-<2><ee>
-Abbrev Number: 11 (DW_TAG_unspecified_parameters)
-<1><f0>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0xe5>
-<1><f6>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x11d): struct_sysent
-DW_AT_decl_file   : 2
-DW_AT_decl_line   : 10
-DW_AT_type        : <0x92>
-<1><101>
-Abbrev Number: 5 (DW_TAG_pointer_type)
-DW_AT_byte_size   : 4
-DW_AT_type        : <0x107>
-<1><107>
-Abbrev Number: 6 (DW_TAG_const_type)
-DW_AT_type        : <0xf6>
-<1><10c>
-Abbrev Number: 2 (DW_TAG_base_type)
-DW_AT_byte_size   : 1
-DW_AT_encoding    : 2	(boolean)
-DW_AT_name        : (indirect string, offset: 0xa): _Bool
-<1><113>
-Abbrev Number: 7 (DW_TAG_structure_type)
-DW_AT_name        : (indirect string, offset: 0x77): utimbuf
-DW_AT_byte_size   : 16
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 37
-DW_AT_sibling     : <0x13c>
-<2><11f>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0xae): actime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 39
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 0 	(DW_OP_plus_uconst: 0)
-<2><12d>
-Abbrev Number: 8 (DW_TAG_member)
-DW_AT_name        : (indirect string, offset: 0x108): modtime
-DW_AT_decl_file   : 3
-DW_AT_decl_line   : 40
-DW_AT_type        : <0x75>
-DW_AT_data_member_location: 2 byte block: 23 8 	(DW_OP_plus_uconst: 8)
-<1><13c>
-Abbrev Number: 4 (DW_TAG_typedef)
-DW_AT_name        : (indirect string, offset: 0x0): utimbuf_t
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 6
-DW_AT_type        : <0x113>
-<1><147>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xce): current_wordsize
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 757
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><155>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xc7): sysent
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 892
-DW_AT_type        : <0x101>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><163>
-Abbrev Number: 12 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0x161): nsyscalls
-DW_AT_decl_file   : 5
-DW_AT_decl_line   : 903
-DW_AT_type        : <0x47>
-DW_AT_external    : 1
-DW_AT_declaration : 1
-<1><171>
-Abbrev Number: 13 (DW_TAG_variable)
-DW_AT_name        : (indirect string, offset: 0xee): mpers_target_var
-DW_AT_decl_file   : 4
-DW_AT_decl_line   : 8
-DW_AT_type        : <0x13c>
-DW_AT_external    : 1
-DW_AT_location    : 5 byte block: 3 10 0 0 0 	(DW_OP_addr: 10)
diff --git a/mpers.am b/mpers.am
deleted file mode 100644
index 1e3c750..0000000
--- a/mpers.am
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated by ./generate_mpers_am.sh; do not edit.
-mpers_source_files = block.c btrfs.c dirent.c evdev.c fetch_seccomp_fprog.c fetch_struct_flock.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_mq_attr.c print_msgbuf.c print_sg_req_info.c print_sigevent.c print_time.c print_timespec.c print_timeval.c print_timex.c printrusage.c printsiginfo.c rtc.c sg_io_v3.c sigaltstack.c sock.c sysinfo.c times.c ustat.c utime.c v4l2.c 
diff --git a/mpers.awk b/mpers.awk
index 2283b96..fe54763 100644
--- a/mpers.awk
+++ b/mpers.awk
@@ -2,6 +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.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -67,6 +68,14 @@
 	delete called[array_idx]
 	return to_return
 }
+function update_upper_bound(idx, val, count)
+{
+	count = array[idx]["count"]
+	if (count == "")
+		count = 1
+	array[idx]["count"] = count * val
+	array[idx]["upper_bound"] = array[idx]["upper_bound"] "[" val "]"
+}
 function what_is(what_idx, type_idx, special, item, \
 		 location, prev_location, prev_returned_size)
 {
@@ -102,8 +111,8 @@
 		what_is(type_idx)
 		to_return = array[what_idx]["upper_bound"]
 		if ("" == to_return)
-			to_return = 0
-		returned_size = to_return * returned_size
+			to_return = "[0]"
+		returned_size = array[what_idx]["count"] * returned_size
 		return leave(what_idx, to_return)
 		break
 	case "structure_type":
@@ -125,11 +134,7 @@
 				prev_location = location
 				returned = what_is(item)
 				prev_returned_size = returned_size
-				printf("%s", array[item]["name"])
-				if ("" != returned) {
-					printf("[%s]", returned)
-				}
-				print ";"
+				printf("%s%s;\n", array[item]["name"], returned)
 			}
 		}
 		returned_size = array_get(what_idx, "byte_size")
@@ -146,11 +151,7 @@
 			if ("parent" in array[item] && \
 				array_get(item, "parent") == what_idx) {
 				returned = what_is(item)
-				printf("%s", array[item]["name"])
-				if ("" != returned) {
-					printf("[%s]", returned)
-				}
-				print ";"
+				printf("%s%s;\n", array[item]["name"], returned)
 			}
 		}
 		printf("} ")
@@ -207,11 +208,11 @@
 }
 /^DW_AT_upper_bound/ {
 	match($0, /[[:digit:]]+/, temparray)
-	array[parent[level-1]]["upper_bound"] = temparray[0] + 1
+	update_upper_bound(parent[level - 1], temparray[0] + 1)
 }
 /^DW_AT_count/ {
 	match($0, /[[:digit:]]+/, temparray)
-	array[parent[level-1]]["upper_bound"] = temparray[0]
+	update_upper_bound(parent[level - 1], temparray[0])
 }
 /^Abbrev Number:[^(]+\(DW_TAG_/ {
 	if (match($0, /typedef|union_type|structure_type|pointer_type\
diff --git a/mpers.sh b/mpers.sh
index 36913e7..714ad1b 100755
--- a/mpers.sh
+++ b/mpers.sh
@@ -1,6 +1,7 @@
 #!/bin/sh -e
 #
 # Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+# Copyright (c) 2015-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
diff --git a/mpers_test.sh b/mpers_test.sh
index 907460b..66588ee 100755
--- a/mpers_test.sh
+++ b/mpers_test.sh
@@ -2,6 +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.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -56,7 +57,7 @@
 		long long sll __attribute__((__aligned__(8)));
 		unsigned long long ull;
 		unsigned long ul;
-		long asl[3];
+		long asl[3][5][7];
 		char f;
 		/* unsigned char mpers_end_filler_4[7]; */
 	} s;
@@ -68,11 +69,11 @@
 		unsigned long ul;
 		int si;
 		unsigned ui;
-		short ss;
-		unsigned short us;
+		short ss[7][9];
+		unsigned short us[4];
 		char sc;
 		unsigned char uc;
-	} u[3];
+	} u[3][2];
 	short f[0];
 } sample_struct;
 #include MPERS_DEFS
@@ -99,7 +100,7 @@
 int64_t sll;
 uint64_t ull;
 uint${size}_t ul;
-int${size}_t asl[3];
+int${size}_t asl[3][5][7];
 char f;
 unsigned char mpers_end_filler_4[7];
 } ATTRIBUTE_PACKED s;
@@ -111,11 +112,11 @@
 uint${size}_t ul;
 int32_t si;
 uint32_t ui;
-int16_t ss;
-uint16_t us;
+int16_t ss[7][9];
+uint16_t us[4];
 char sc;
 unsigned char uc;
-} u[3];
+} u[3][2];
 int16_t f[0];
 } ATTRIBUTE_PACKED ${mpers_name}_sample_struct;
 #define MPERS_${mpers_name}_sample_struct ${mpers_name}_sample_struct
diff --git a/mpers_type.h b/mpers_type.h
index ac840ad..ecb1efa 100644
--- a/mpers_type.h
+++ b/mpers_type.h
@@ -1,6 +1,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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/mpers_xlat.h b/mpers_xlat.h
index 52f4964..7ff78d9 100644
--- a/mpers_xlat.h
+++ b/mpers_xlat.h
@@ -72,12 +72,18 @@
 extern const struct xlat v4l2_format_description_flags[];
 extern const struct xlat v4l2_fields[];
 extern const struct xlat v4l2_colorspaces[];
+extern const struct xlat v4l2_vbi_flags[];
+extern const struct xlat v4l2_sliced_flags[];
 extern const struct xlat v4l2_memories[];
 extern const struct xlat v4l2_buf_flags[];
 extern const struct xlat v4l2_streaming_capabilities[];
 extern const struct xlat v4l2_capture_modes[];
 extern const struct xlat v4l2_input_types[];
 extern const struct xlat v4l2_control_ids[];
+extern const struct xlat v4l2_tuner_types[];
+extern const struct xlat v4l2_tuner_capabilities[];
+extern const struct xlat v4l2_tuner_rxsubchanses[];
+extern const struct xlat v4l2_tuner_audmodes[];
 extern const struct xlat v4l2_control_types[];
 extern const struct xlat v4l2_control_flags[];
 extern const struct xlat v4l2_control_classes[];
diff --git a/mq.c b/mq.c
index 5b46d47..1bcb515 100644
--- a/mq.c
+++ b/mq.c
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -66,7 +67,7 @@
 			printstrn(tcp, tcp->u_arg[1], tcp->u_rval);
 		tprintf(", %" PRI_klu ", ", tcp->u_arg[2]);
 		printnum_int(tcp, tcp->u_arg[3], "%u");
-		tprintf(", ");
+		tprints(", ");
 		/*
 		 * Since the timeout parameter is read by the kernel
 		 * on entering syscall, it has to be decoded the same way
diff --git a/mtd.c b/mtd.c
index 954a08b..b046859 100644
--- a/mtd.c
+++ b/mtd.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012 Mike Frysinger <vapier@gentoo.org>
+ * 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
diff --git a/mx32_funcs.h b/mx32_funcs.h
index d90715f..451d1e2 100644
--- a/mx32_funcs.h
+++ b/mx32_funcs.h
@@ -8,6 +8,8 @@
 #define sys_shmctl mx32_sys_shmctl
 #undef sys_time
 #define sys_time mx32_sys_time
+#undef sys_rt_sigreturn
+#define sys_rt_sigreturn mx32_sys_rt_sigreturn
 #undef sys_sigaltstack
 #define sys_sigaltstack mx32_sys_sigaltstack
 #undef sys_sysinfo
diff --git a/mx32_printer_decls.h b/mx32_printer_decls.h
index 5f27eda..9ef7403 100644
--- a/mx32_printer_decls.h
+++ b/mx32_printer_decls.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 extern int mx32_block_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
 extern int mx32_btrfs_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
 extern int mx32_evdev_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
@@ -25,7 +25,7 @@
 extern void mx32_print_itimerspec(struct tcb *const tcp, const kernel_ulong_t addr);
 extern void mx32_print_struct_timeval(const void *arg);
 extern void mx32_print_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
-extern void mx32_print_timeval_pair(struct tcb *const tcp, const kernel_ulong_t addr);
+extern void mx32_print_timeval_utimes(struct tcb *const tcp, const kernel_ulong_t addr);
 extern const char * mx32_sprint_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
 extern void mx32_print_itimerval(struct tcb *const tcp, const kernel_ulong_t addr);
 extern int mx32_print_timex(struct tcb *const tcp, const kernel_ulong_t addr);
diff --git a/mx32_printer_defs.h b/mx32_printer_defs.h
index 306d802..033e7fe 100644
--- a/mx32_printer_defs.h
+++ b/mx32_printer_defs.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 .block_ioctl = mx32_block_ioctl,
 .btrfs_ioctl = mx32_btrfs_ioctl,
 .evdev_ioctl = mx32_evdev_ioctl,
@@ -25,7 +25,7 @@
 .print_itimerspec = mx32_print_itimerspec,
 .print_struct_timeval = mx32_print_struct_timeval,
 .print_timeval = mx32_print_timeval,
-.print_timeval_pair = mx32_print_timeval_pair,
+.print_timeval_utimes = mx32_print_timeval_utimes,
 .sprint_timeval = mx32_sprint_timeval,
 .print_itimerval = mx32_print_itimerval,
 .print_timex = mx32_print_timex,
diff --git a/mx32_type_defs.h b/mx32_type_defs.h
index 61cb66b..a328250 100644
--- a/mx32_type_defs.h
+++ b/mx32_type_defs.h
@@ -97,6 +97,9 @@
 #ifdef MPERS_mx32_siginfo_t
 # define siginfo_t MPERS_mx32_siginfo_t
 #endif
+#ifdef MPERS_mx32_struct_rt_sigframe
+# define struct_rt_sigframe MPERS_mx32_struct_rt_sigframe
+#endif
 #ifdef MPERS_mx32_struct_rtc_pll_info
 # define struct_rtc_pll_info MPERS_mx32_struct_rtc_pll_info
 #endif
@@ -127,6 +130,9 @@
 #ifdef MPERS_mx32_struct_v4l2_buffer
 # define struct_v4l2_buffer MPERS_mx32_struct_v4l2_buffer
 #endif
+#ifdef MPERS_mx32_struct_v4l2_clip
+# define struct_v4l2_clip MPERS_mx32_struct_v4l2_clip
+#endif
 #ifdef MPERS_mx32_struct_v4l2_create_buffers
 # define struct_v4l2_create_buffers MPERS_mx32_struct_v4l2_create_buffers
 #endif
diff --git a/native_printer_decls.h b/native_printer_decls.h
index 06b1f7c..7698834 100644
--- a/native_printer_decls.h
+++ b/native_printer_decls.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 extern int block_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
 extern int btrfs_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
 extern int evdev_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
@@ -25,7 +25,7 @@
 extern void print_itimerspec(struct tcb *const tcp, const kernel_ulong_t addr);
 extern void print_struct_timeval(const void *arg);
 extern void print_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
-extern void print_timeval_pair(struct tcb *const tcp, const kernel_ulong_t addr);
+extern void print_timeval_utimes(struct tcb *const tcp, const kernel_ulong_t addr);
 extern const char * sprint_timeval(struct tcb *const tcp, const kernel_ulong_t addr);
 extern void print_itimerval(struct tcb *const tcp, const kernel_ulong_t addr);
 extern int print_timex(struct tcb *const tcp, const kernel_ulong_t addr);
diff --git a/native_printer_defs.h b/native_printer_defs.h
index e5d977d..6377031 100644
--- a/native_printer_defs.h
+++ b/native_printer_defs.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 .block_ioctl = block_ioctl,
 .btrfs_ioctl = btrfs_ioctl,
 .evdev_ioctl = evdev_ioctl,
@@ -17,7 +17,7 @@
 .mtd_ioctl = mtd_ioctl,
 .printmqattr = printmqattr,
 .tprint_msgbuf = tprint_msgbuf,
-.decode_sg_req_info = NULL,
+.decode_sg_req_info = decode_sg_req_info,
 .print_sigevent = print_sigevent,
 .print_timespec = print_timespec,
 .sprint_timespec = sprint_timespec,
@@ -25,7 +25,7 @@
 .print_itimerspec = print_itimerspec,
 .print_struct_timeval = print_struct_timeval,
 .print_timeval = print_timeval,
-.print_timeval_pair = print_timeval_pair,
+.print_timeval_utimes = print_timeval_utimes,
 .sprint_timeval = sprint_timeval,
 .print_itimerval = print_itimerval,
 .print_timex = print_timex,
diff --git a/net.c b/net.c
index 314e02a..01ab16b 100644
--- a/net.c
+++ b/net.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/netlink.c b/netlink.c
index db6e43f..10ca82c 100644
--- a/netlink.c
+++ b/netlink.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * 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
@@ -32,6 +33,9 @@
 #include "xlat/netlink_flags.h"
 #include "xlat/netlink_types.h"
 
+#undef NLMSG_HDRLEN
+#define NLMSG_HDRLEN NLMSG_ALIGN(sizeof(struct nlmsghdr))
+
 /*
  * Fetch a struct nlmsghdr from the given address.
  */
@@ -70,6 +74,55 @@
 decode_nlmsghdr_with_payload(struct tcb *const tcp,
 			     const struct nlmsghdr *const nlmsghdr,
 			     const kernel_ulong_t addr,
+			     const kernel_ulong_t len);
+
+static void
+decode_nlmsgerr(struct tcb *const tcp,
+	       kernel_ulong_t addr,
+	       kernel_ulong_t len)
+{
+	struct nlmsgerr err;
+
+	if (umove_or_printaddr(tcp, addr, &err.error))
+		return;
+
+	tprints("{error=");
+	if (err.error < 0 && (unsigned) -err.error < nerrnos) {
+		tprintf("-%s", errnoent[-err.error]);
+	} else {
+		tprintf("%d", err.error);
+	}
+
+	addr += offsetof(struct nlmsgerr, msg);
+	len -= offsetof(struct nlmsgerr, msg);
+
+	if (len) {
+		tprints(", msg=");
+		if (fetch_nlmsghdr(tcp, &err.msg, addr, len)) {
+			decode_nlmsghdr_with_payload(tcp, &err.msg, addr, len);
+		}
+	}
+
+	tprints("}");
+}
+
+static void
+decode_payload(struct tcb *const tcp,
+	       const struct nlmsghdr *const nlmsghdr,
+	       const kernel_ulong_t addr,
+	       const kernel_ulong_t len)
+{
+	if (nlmsghdr->nlmsg_type == NLMSG_ERROR && len >= sizeof(int)) {
+		decode_nlmsgerr(tcp, addr, len);
+	} else {
+		printstrn(tcp, addr, len);
+	}
+}
+
+static void
+decode_nlmsghdr_with_payload(struct tcb *const tcp,
+			     const struct nlmsghdr *const nlmsghdr,
+			     const kernel_ulong_t addr,
 			     const kernel_ulong_t len)
 {
 	tprints("{");
@@ -78,11 +131,10 @@
 
 	unsigned int nlmsg_len =
 		nlmsghdr->nlmsg_len > len ? len : nlmsghdr->nlmsg_len;
-	if (nlmsg_len > sizeof(struct nlmsghdr)) {
+	if (nlmsg_len > NLMSG_HDRLEN) {
 		tprints(", ");
-
-		printstrn(tcp, addr + sizeof(struct nlmsghdr),
-			  nlmsg_len - sizeof(struct nlmsghdr));
+		decode_payload(tcp, nlmsghdr, addr + NLMSG_HDRLEN,
+					 nlmsg_len - NLMSG_HDRLEN);
 	}
 
 	tprints("}");
@@ -105,7 +157,7 @@
 		kernel_ulong_t next_addr = 0;
 		kernel_ulong_t next_len = 0;
 
-		if (nlmsghdr.nlmsg_len >= sizeof(struct nlmsghdr)) {
+		if (nlmsghdr.nlmsg_len >= NLMSG_HDRLEN) {
 			next_len = (len >= nlmsg_len) ? len - nlmsg_len : 0;
 
 			if (next_len && addr + nlmsg_len > addr)
diff --git a/nsfs.c b/nsfs.c
new file mode 100644
index 0000000..1048f9a
--- /dev/null
+++ b/nsfs.c
@@ -0,0 +1,65 @@
+/*
+ * Support for decoding of NS_* ioctl commands.
+ *
+ * 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.
+ */
+
+#include "defs.h"
+#include "nsfs.h"
+
+int
+nsfs_ioctl(struct tcb *tcp, unsigned int code, kernel_ulong_t arg)
+{
+	unsigned int uid;
+	switch (code) {
+	case NS_GET_USERNS:
+	case NS_GET_PARENT:
+		return 1 + RVAL_FD + RVAL_DECODED;
+	case NS_GET_NSTYPE:
+		if (entering(tcp))
+			return 0;
+		if (!syserror(tcp)) {
+			const char *outstr;
+			outstr = xlookup(setns_types, tcp->u_rval);
+			if (outstr) {
+				tcp->auxstr = outstr;
+				return 1 + RVAL_STR;
+			}
+		}
+		return 1;
+	case NS_GET_OWNER_UID:
+		if (entering(tcp))
+			return 0;
+		tprints(", ");
+		if (!umove_or_printaddr(tcp, arg, &uid)) {
+			printuid("[", uid);
+			tprints("]");
+		}
+		return 1;
+	default:
+		return RVAL_DECODED;
+	}
+}
diff --git a/nsfs.h b/nsfs.h
new file mode 100644
index 0000000..3e17c53
--- /dev/null
+++ b/nsfs.h
@@ -0,0 +1,21 @@
+#ifndef STRACE_NSFS_H
+#define STRACE_NSFS_H
+
+#include <linux/ioctl.h>
+
+#ifdef HAVE_LINUX_NSFS_H
+# include <linux/nsfs.h>
+#else
+# define NSIO    0xb7
+# define NS_GET_USERNS   _IO(NSIO, 0x1)
+# define NS_GET_PARENT   _IO(NSIO, 0x2)
+#endif
+
+#ifndef NS_GET_NSTYPE
+# define NS_GET_NSTYPE    _IO(NSIO, 0x3)
+#endif
+#ifndef NS_GET_OWNER_UID
+# define NS_GET_OWNER_UID _IO(NSIO, 0x4)
+#endif
+
+#endif /* !STRACE_NSFS_H */
diff --git a/numa.c b/numa.c
index c2cd143..a4b28f4 100644
--- a/numa.c
+++ b/numa.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2003-2007 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2005-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
@@ -142,7 +143,7 @@
 	const int status = * (int *) elem_buf;
 
 	if (status < 0 && (unsigned) -status < nerrnos)
-		tprintf("%s", errnoent[-status]);
+		tprintf("-%s", errnoent[-status]);
 	else
 		tprintf("%d", status);
 
diff --git a/oldstat.c b/oldstat.c
index 5535310..1caa2bf 100644
--- a/oldstat.c
+++ b/oldstat.c
@@ -4,6 +4,7 @@
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/open.c b/open.c
index 2944d55..222965b 100644
--- a/open.c
+++ b/open.c
@@ -7,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/or1k_atomic.c b/or1k_atomic.c
index bb02e0e..fb6aff3 100644
--- a/or1k_atomic.c
+++ b/or1k_atomic.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2013 Christian Svensson <blue@cmd.nu>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/pathtrace.c b/pathtrace.c
index d991aed..ea48825 100644
--- a/pathtrace.c
+++ b/pathtrace.c
@@ -1,5 +1,6 @@
 /*
- * Copyright (c) 2011, Comtrol Corp.
+ * Copyright (c) 2011 Comtrol Corp.
+ * Copyright (c) 2011-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -183,6 +184,7 @@
 	case SEN_newfstatat:
 	case SEN_openat:
 	case SEN_readlinkat:
+	case SEN_statx:
 	case SEN_unlinkat:
 	case SEN_utimensat:
 		/* fd, path */
diff --git a/perf.c b/perf.c
index f151c19..98f2ae1 100644
--- a/perf.c
+++ b/perf.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -31,7 +32,6 @@
 
 #include "perf_event_struct.h"
 
-#include "xlat/clocknames.h"
 #include "xlat/hw_breakpoint_len.h"
 #include "xlat/hw_breakpoint_type.h"
 #include "xlat/perf_attr_size.h"
@@ -160,7 +160,7 @@
 	}
 
 	PRINT_XLAT("{type=", perf_type_id, attr->type, "PERF_TYPE_???");
-	tprintf(", size=");
+	tprints(", size=");
 	printxval(perf_attr_size, attr->size, "PERF_ATTR_SIZE_???");
 
 	if (use_new_size) {
@@ -217,11 +217,11 @@
 		PRINT_XLAT("<<8|", perf_hw_cache_op_result_id,
 		           (attr->config >> 16) & 0xFF,
 		           "PERF_COUNT_HW_CACHE_RESULT_???");
-		tprintf("<<16");
-		if (attr->config >> 24)
-			tprintf("|%#" PRIx64 "<<24 "
-			        "/* PERF_COUNT_HW_CACHE_??? */",
-			        attr->config >> 24);
+		tprints("<<16");
+		if (attr->config >> 24) {
+			tprintf("|%#" PRIx64 "<<24", attr->config >> 24);
+			tprints_comment("PERF_COUNT_HW_CACHE_???");
+		}
 		break;
 	case PERF_TYPE_RAW:
 		/*
@@ -253,11 +253,11 @@
 	else
 		tprintf(", sample_period=%" PRIu64, attr->sample_period);
 
-	tprintf(", sample_type=");
+	tprints(", sample_type=");
 	printflags64(perf_event_sample_format, attr->sample_type,
 		"PERF_SAMPLE_???");
 
-	tprintf(", read_format=");
+	tprints(", read_format=");
 	printflags64(perf_event_read_format, attr->read_format,
 		"PERF_FORMAT_???");
 
@@ -276,18 +276,7 @@
 	        ", enable_on_exec=%u"
 	        ", task=%u"
 	        ", watermark=%u"
-	        ", precise_ip=%u /* %s */"
-	        ", mmap_data=%u"
-	        ", sample_id_all=%u"
-	        ", exclude_host=%u"
-	        ", exclude_guest=%u"
-	        ", exclude_callchain_kernel=%u"
-	        ", exclude_callchain_user=%u"
-	        ", mmap2=%u"
-	        ", comm_exec=%u"
-	        ", use_clockid=%u"
-	        ", context_switch=%u"
-	        ", write_backward=%u",
+	        ", precise_ip=%u",
 	        attr->disabled,
 	        attr->inherit,
 	        attr->pinned,
@@ -303,7 +292,19 @@
 	        attr->enable_on_exec,
 	        attr->task,
 	        attr->watermark,
-	        attr->precise_ip, precise_ip_desc[attr->precise_ip],
+	        attr->precise_ip);
+	tprints_comment(precise_ip_desc[attr->precise_ip]);
+	tprintf(", mmap_data=%u"
+	        ", sample_id_all=%u"
+	        ", exclude_host=%u"
+	        ", exclude_guest=%u"
+	        ", exclude_callchain_kernel=%u"
+	        ", exclude_callchain_user=%u"
+	        ", mmap2=%u"
+	        ", comm_exec=%u"
+	        ", use_clockid=%u"
+	        ", context_switch=%u"
+	        ", write_backward=%u",
 	        attr->mmap_data,
 	        attr->sample_id_all,
 	        attr->exclude_host,
@@ -320,9 +321,11 @@
 	 * Print it only in case it is non-zero, since it may contain flags we
 	 * are not aware about.
 	 */
-	if (attr->__reserved_1)
-		tprintf(", __reserved_1=%#" PRIx64 " /* Bits 63..28 */",
+	if (attr->__reserved_1) {
+		tprintf(", __reserved_1=%#" PRIx64,
 		        (uint64_t) attr->__reserved_1);
+		tprints_comment("Bits 63..28");
+	}
 
 	if (attr->watermark)
 		tprintf(", wakeup_watermark=%u", attr->wakeup_watermark);
@@ -355,7 +358,7 @@
 
 	_PERF_CHECK_FIELD(branch_sample_type);
 	if (attr->sample_type & PERF_SAMPLE_BRANCH_STACK) {
-		tprintf(", branch_sample_type=");
+		tprints(", branch_sample_type=");
 		printflags64(perf_branch_sample_type, attr->branch_sample_type,
 		             "PERF_SAMPLE_BRANCH_???");
 	}
@@ -380,7 +383,7 @@
 
 	if (attr->use_clockid) {
 		_PERF_CHECK_FIELD(clockid);
-		tprintf(", clockid=");
+		tprints(", clockid=");
 		printxval(clocknames, attr->clockid, "CLOCK_???");
 	}
 
@@ -399,9 +402,9 @@
 print_perf_event_attr_out:
 	if ((attr->size && (attr->size > size)) ||
 	    (!attr->size && (size < PERF_ATTR_SIZE_VER0)))
-		tprintf(", ...");
+		tprints(", ...");
 
-	tprintf("}");
+	tprints("}");
 }
 
 SYS_FUNC(perf_event_open)
diff --git a/poll.c b/poll.c
index f2a2381..e3b497c 100644
--- a/poll.c
+++ b/poll.c
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/prctl.c b/prctl.c
index 6779ad5..9b9b990 100644
--- a/prctl.c
+++ b/prctl.c
@@ -3,6 +3,7 @@
  * Copyright (c) 1996-2000 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2007 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2008-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/print_mq_attr.c b/print_mq_attr.c
index b5f9c13..dfc326f 100644
--- a/print_mq_attr.c
+++ b/print_mq_attr.c
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
 	if (decode_flags)
 		printflags64(mq_attr_flags,
 			     zero_extend_signed_to_ull(attr.mq_flags),
-			     "/* O_??? */");
+			     "O_???");
 	else
 		tprintf("%#llx", zero_extend_signed_to_ull(attr.mq_flags));
 	tprintf(", mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}",
diff --git a/print_msgbuf.c b/print_msgbuf.c
index 348a891..0a3147c 100644
--- a/print_msgbuf.c
+++ b/print_msgbuf.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2003-2006 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2006-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
diff --git a/print_struct_stat.c b/print_struct_stat.c
index 7e9e233..ab13287 100644
--- a/print_struct_stat.c
+++ b/print_struct_stat.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2009-2010 Andreas Schwab <schwab@linux-m68k.org>
  * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
  * Copyright (c) 2005-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -65,18 +66,20 @@
 	}
 
 	if (!abbrev(tcp)) {
-		tprints(", st_atime=");
-		tprints(sprinttime(st->atime));
-		if (st->atime_nsec)
-			tprintf(".%09llu", st->atime_nsec);
-		tprints(", st_mtime=");
-		tprints(sprinttime(st->mtime));
-		if (st->mtime_nsec)
-			tprintf(".%09llu", st->mtime_nsec);
-		tprints(", st_ctime=");
-		tprints(sprinttime(st->ctime));
-		if (st->ctime_nsec)
-			tprintf(".%09llu", st->ctime_nsec);
+#define PRINT_ST_TIME(field)						\
+	do {								\
+		tprintf(", st_" #field "=%lld", (long long) st->field);	\
+		tprints_comment(sprinttime_nsec(st->field,		\
+			zero_extend_signed_to_ull(st->field ## _nsec)));\
+		if (st->has_nsec)					\
+			tprintf(", st_" #field "_nsec=%llu",		\
+				zero_extend_signed_to_ull(		\
+					st->field ## _nsec));		\
+	} while (0)
+
+		PRINT_ST_TIME(atime);
+		PRINT_ST_TIME(mtime);
+		PRINT_ST_TIME(ctime);
 	} else {
 		tprints(", ...");
 	}
diff --git a/print_time.c b/print_time.c
index 82d64fa..faba47a 100644
--- a/print_time.c
+++ b/print_time.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -36,8 +37,17 @@
 	if (exiting(tcp)) {
 		time_t t;
 
-		if (!umove_or_printaddr(tcp, tcp->u_arg[0], &t))
-			tprintf("[%jd]", (intmax_t) t);
+		if (!umove_or_printaddr(tcp, tcp->u_arg[0], &t)) {
+			tprintf("[%lld", (long long) t);
+			tprints_comment(sprinttime(t));
+			tprints("]");
+		}
+
+		if (!syserror(tcp)) {
+			tcp->auxstr = sprinttime((time_t) tcp->u_rval);
+
+			return RVAL_STR;
+		}
 	}
 
 	return 0;
diff --git a/print_timespec.c b/print_timespec.c
index 76c70ed..1e99074 100644
--- a/print_timespec.c
+++ b/print_timespec.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
@@ -40,12 +41,13 @@
 # define UTIME_OMIT ((1l << 30) - 2l)
 #endif
 
-static const char timespec_fmt[] = "{tv_sec=%jd, tv_nsec=%jd}";
+static const char timespec_fmt[] = "{tv_sec=%lld, tv_nsec=%llu}";
 
 static void
 print_timespec_t(const timespec_t *t)
 {
-	tprintf(timespec_fmt, (intmax_t) t->tv_sec, (intmax_t) t->tv_nsec);
+	tprintf(timespec_fmt, (long long) t->tv_sec,
+		zero_extend_signed_to_ull(t->tv_nsec));
 }
 
 static void
@@ -60,6 +62,8 @@
 		break;
 	default:
 		print_timespec_t(t);
+		tprints_comment(sprinttime_nsec(t->tv_sec,
+			zero_extend_signed_to_ull(t->tv_nsec)));
 		break;
 	}
 }
@@ -88,7 +92,8 @@
 		snprintf(buf, sizeof(buf), "%#" PRI_klx, addr);
 	} else {
 		snprintf(buf, sizeof(buf), timespec_fmt,
-			 (intmax_t) t.tv_sec, (intmax_t) t.tv_nsec);
+			 (long long) t.tv_sec,
+			 zero_extend_signed_to_ull(t.tv_nsec));
 	}
 
 	return buf;
diff --git a/print_timeval.c b/print_timeval.c
index 5c28675..8d62554 100644
--- a/print_timeval.c
+++ b/print_timeval.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,12 +33,21 @@
 
 #include MPERS_DEFS
 
-static const char timeval_fmt[]  = "{tv_sec=%jd, tv_usec=%jd}";
+static const char timeval_fmt[]  = "{tv_sec=%lld, tv_usec=%llu}";
 
 static void
 print_timeval_t(const timeval_t *t)
 {
-	tprintf(timeval_fmt, (intmax_t) t->tv_sec, (intmax_t) t->tv_usec);
+	tprintf(timeval_fmt, (long long) t->tv_sec,
+		zero_extend_signed_to_ull(t->tv_usec));
+}
+
+static void
+print_timeval_t_utime(const timeval_t *t)
+{
+	print_timeval_t(t);
+	tprints_comment(sprinttime_usec(t->tv_sec,
+		zero_extend_signed_to_ull(t->tv_usec)));
 }
 
 MPERS_PRINTER_DECL(void, print_struct_timeval, const void *arg)
@@ -57,23 +66,19 @@
 	print_timeval_t(&t);
 }
 
-static bool
-print_timeval_item(struct tcb *tcp, void *elem_buf, size_t size, void *data)
-{
-	timeval_t *t = elem_buf;
-
-	print_timeval_t(t);
-
-	return true;
-}
-
-MPERS_PRINTER_DECL(void, print_timeval_pair,
+MPERS_PRINTER_DECL(void, print_timeval_utimes,
 		   struct tcb *const tcp, const kernel_ulong_t addr)
 {
-	timeval_t t;
+	timeval_t t[2];
 
-	print_array(tcp, addr, 2, &t, sizeof(t), umoven_or_printaddr,
-		    print_timeval_item, NULL);
+	if (umove_or_printaddr(tcp, addr, &t))
+		return;
+
+	tprints("[");
+	print_timeval_t_utime(&t[0]);
+	tprints(", ");
+	print_timeval_t_utime(&t[1]);
+	tprints("]");
 }
 
 MPERS_PRINTER_DECL(const char *, sprint_timeval,
@@ -89,7 +94,8 @@
 		snprintf(buf, sizeof(buf), "%#" PRI_klx, addr);
 	} else {
 		snprintf(buf, sizeof(buf), timeval_fmt,
-			 (intmax_t) t.tv_sec, (intmax_t) t.tv_usec);
+			 (long long) t.tv_sec,
+			 zero_extend_signed_to_ull(t.tv_usec));
 	}
 
 	return buf;
@@ -115,7 +121,16 @@
 void
 print_timeval32_t(const timeval32_t *t)
 {
-	tprintf(timeval_fmt, (intmax_t) t->tv_sec, (intmax_t) t->tv_usec);
+	tprintf(timeval_fmt, (long long) t->tv_sec,
+		zero_extend_signed_to_ull(t->tv_usec));
+}
+
+static void
+print_timeval32_t_utime(const timeval32_t *t)
+{
+	print_timeval32_t(t);
+	tprints_comment(sprinttime_usec(t->tv_sec,
+		zero_extend_signed_to_ull(t->tv_usec)));
 }
 
 void
@@ -130,7 +145,7 @@
 }
 
 void
-print_timeval32_pair(struct tcb *const tcp, const kernel_ulong_t addr)
+print_timeval32_utimes(struct tcb *const tcp, const kernel_ulong_t addr)
 {
 	timeval32_t t[2];
 
@@ -138,9 +153,9 @@
 		return;
 
 	tprints("[");
-	print_timeval32_t(&t[0]);
+	print_timeval32_t_utime(&t[0]);
 	tprints(", ");
-	print_timeval32_t(&t[1]);
+	print_timeval32_t_utime(&t[1]);
 	tprints("]");
 }
 
@@ -172,7 +187,8 @@
 		snprintf(buf, sizeof(buf), "%#" PRI_klx, addr);
 	} else {
 		snprintf(buf, sizeof(buf), timeval_fmt,
-			 (intmax_t) t.tv_sec, (intmax_t) t.tv_usec);
+			 (long long) t.tv_sec,
+			 zero_extend_signed_to_ull(t.tv_usec));
 	}
 
 	return buf;
diff --git a/print_timex.c b/print_timex.c
index 5d0c478..6722906 100644
--- a/print_timex.c
+++ b/print_timex.c
@@ -3,6 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 2006-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
diff --git a/printers.h b/printers.h
index 7e67ade..c775092 100644
--- a/printers.h
+++ b/printers.h
@@ -1,4 +1,4 @@
-/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
+/* Generated by Makefile from block.c.mpers.i btrfs.c.mpers.i dirent.c.mpers.i evdev.c.mpers.i fetch_seccomp_fprog.c.mpers.i fetch_struct_flock.c.mpers.i fetch_struct_mmsghdr.c.mpers.i fetch_struct_msghdr.c.mpers.i fetch_struct_stat.c.mpers.i fetch_struct_stat64.c.mpers.i fetch_struct_statfs.c.mpers.i hdio.c.mpers.i ipc_msgctl.c.mpers.i ipc_shmctl.c.mpers.i loop.c.mpers.i mtd.c.mpers.i print_mq_attr.c.mpers.i print_msgbuf.c.mpers.i print_sg_req_info.c.mpers.i print_sigevent.c.mpers.i print_time.c.mpers.i print_timespec.c.mpers.i print_timeval.c.mpers.i print_timex.c.mpers.i printrusage.c.mpers.i printsiginfo.c.mpers.i rt_sigreturn.c.mpers.i rtc.c.mpers.i sg_io_v3.c.mpers.i sigaltstack.c.mpers.i sock.c.mpers.i sysinfo.c.mpers.i times.c.mpers.i ustat.c.mpers.i utime.c.mpers.i v4l2.c.mpers.i; do not edit. */
 typedef struct {
  int (*block_ioctl)(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t arg);
 #define block_ioctl MPERS_PRINTER_NAME(block_ioctl)
@@ -78,8 +78,8 @@
  void (*print_timeval)(struct tcb *const tcp, const kernel_ulong_t addr);
 #define print_timeval MPERS_PRINTER_NAME(print_timeval)
 
- void (*print_timeval_pair)(struct tcb *const tcp, const kernel_ulong_t addr);
-#define print_timeval_pair MPERS_PRINTER_NAME(print_timeval_pair)
+ void (*print_timeval_utimes)(struct tcb *const tcp, const kernel_ulong_t addr);
+#define print_timeval_utimes MPERS_PRINTER_NAME(print_timeval_utimes)
 
  const char * (*sprint_timeval)(struct tcb *const tcp, const kernel_ulong_t addr);
 #define sprint_timeval MPERS_PRINTER_NAME(sprint_timeval)
diff --git a/printmode.c b/printmode.c
index 1babed6..d9dcfa3 100644
--- a/printmode.c
+++ b/printmode.c
@@ -4,6 +4,7 @@
  * Copyright (c) 1993-1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
+ * Copyright (c) 2012-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/printrusage.c b/printrusage.c
index 0a6a3c3..a25ef99 100644
--- a/printrusage.c
+++ b/printrusage.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/printsiginfo.c b/printsiginfo.c
index 7bbb421..2c7b203 100644
--- a/printsiginfo.c
+++ b/printsiginfo.c
@@ -7,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/process.c b/process.c
index 6928fb9..b36cd4b 100644
--- a/process.c
+++ b/process.c
@@ -8,6 +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.
  *
  * All rights reserved.
  *
diff --git a/process_vm.c b/process_vm.c
index f63b917..e6c2784 100644
--- a/process_vm.c
+++ b/process_vm.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2012-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/ptp.c b/ptp.c
index e2a720b..6a8a9d2 100644
--- a/ptp.c
+++ b/ptp.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2014 Stefan Sørensen <stefan.sorensen@spectralink.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/qualify.c b/qualify.c
index bb4aefe..30888e6 100644
--- a/qualify.c
+++ b/qualify.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
@@ -27,6 +28,7 @@
 
 #include "defs.h"
 #include "nsig.h"
+#include <regex.h>
 
 typedef unsigned int number_slot_t;
 #define BITS_PER_SLOT (sizeof(number_slot_t) * 8)
@@ -198,6 +200,48 @@
 	return done;
 }
 
+static void
+regerror_msg_and_die(int errcode, const regex_t *preg,
+		     const char *str, const char *pattern)
+{
+	char buf[512];
+
+	regerror(errcode, preg, buf, sizeof(buf));
+	error_msg_and_die("%s: %s: %s", str, pattern, buf);
+}
+
+static bool
+qualify_syscall_regex(const char *s, struct number_set *set)
+{
+	regex_t preg;
+	int rc;
+
+	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) {
+			if (!sysent_vec[p][i].sys_name)
+				continue;
+			rc = regexec(&preg, sysent_vec[p][i].sys_name,
+				     0, NULL, 0);
+			if (rc == REG_NOMATCH)
+				continue;
+			else if (rc)
+				regerror_msg_and_die(rc, &preg, "regexec", s);
+			add_number_to_set(i, &set[p]);
+			found = true;
+		}
+	}
+
+	regfree(&preg);
+	return found;
+}
+
 static unsigned int
 lookup_class(const char *s)
 {
@@ -212,6 +256,20 @@
 		{ "signal",	TRACE_SIGNAL	},
 		{ "ipc",	TRACE_IPC	},
 		{ "network",	TRACE_NETWORK	},
+		{ "%desc",	TRACE_DESC	},
+		{ "%file",	TRACE_FILE	},
+		{ "%memory",	TRACE_MEMORY	},
+		{ "%process",	TRACE_PROCESS	},
+		{ "%signal",	TRACE_SIGNAL	},
+		{ "%ipc",	TRACE_IPC	},
+		{ "%network",	TRACE_NETWORK	},
+		{ "%stat",	TRACE_STAT	},
+		{ "%lstat",	TRACE_LSTAT	},
+		{ "%fstat",	TRACE_FSTAT	},
+		{ "%%stat",	TRACE_STAT_LIKE	},
+		{ "%statfs",	TRACE_STATFS	},
+		{ "%fstatfs",	TRACE_FSTATFS	},
+		{ "%%statfs",	TRACE_STATFS_LIKE	},
 	};
 
 	unsigned int i;
@@ -272,10 +330,19 @@
 static bool
 qualify_syscall(const char *token, struct number_set *set)
 {
+	bool ignore_fail = false;
+
+	while (*token == '?') {
+		token++;
+		ignore_fail = true;
+	}
 	if (*token >= '0' && *token <= '9')
-		return qualify_syscall_number(token, set);
+		return qualify_syscall_number(token, set) || ignore_fail;
+	if (*token == '/')
+		return qualify_syscall_regex(token + 1, set) || ignore_fail;
 	return qualify_syscall_class(token, set)
-	       || qualify_syscall_name(token, set);
+	       || qualify_syscall_name(token, set)
+	       || ignore_fail;
 }
 
 /*
diff --git a/readlink.c b/readlink.c
index fd65b25..38eb078 100644
--- a/readlink.c
+++ b/readlink.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2006 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/resource.c b/resource.c
index 61c877e..ab36752 100644
--- a/resource.c
+++ b/resource.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/rt_sigframe.c b/rt_sigframe.c
new file mode 100644
index 0000000..d9bcb4f
--- /dev/null
+++ b/rt_sigframe.c
@@ -0,0 +1,36 @@
+/*
+ * 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 "defs.h"
+#include "regs.h"
+#include "ptrace.h"
+
+#define	DEF_FUNC_GET_RT_SIGFRAME_ADDR	\
+		kernel_ulong_t get_rt_sigframe_addr(struct tcb *tcp)
+#define	FUNC_GET_RT_SIGFRAME_ADDR	DEF_FUNC_GET_RT_SIGFRAME_ADDR
+
+#include "arch_rt_sigframe.c"
diff --git a/rt_sigreturn.c b/rt_sigreturn.c
new file mode 100644
index 0000000..af705c3
--- /dev/null
+++ b/rt_sigreturn.c
@@ -0,0 +1,54 @@
+/*
+ * 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 "defs.h"
+
+#include DEF_MPERS_TYPE(struct_rt_sigframe)
+
+#include "rt_sigframe.h"
+
+#include MPERS_DEFS
+
+#ifndef OFFSETOF_SIGMASK_IN_RT_SIGFRAME
+# define OFFSETOF_SIGMASK_IN_RT_SIGFRAME	\
+		offsetof(struct_rt_sigframe, uc.uc_sigmask)
+#endif
+
+SYS_FUNC(rt_sigreturn)
+{
+	const kernel_ulong_t sf_addr = get_rt_sigframe_addr(tcp);
+
+	if (sf_addr) {
+		const kernel_ulong_t sm_addr =
+			sf_addr + OFFSETOF_SIGMASK_IN_RT_SIGFRAME;
+		tprints("{mask=");
+		print_sigset_addr(tcp, sm_addr);
+		tprints("}");
+	}
+
+	return RVAL_DECODED;
+}
diff --git a/sched.c b/sched.c
index 9024261..7222632 100644
--- a/sched.c
+++ b/sched.c
@@ -2,6 +2,7 @@
  * Copyright (c) 2004 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2005 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2012-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 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 <sched.h>
+#include "sched_attr.h"
 
 #include "xlat/schedulers.h"
 #include "xlat/sched_flags.h"
@@ -95,42 +97,73 @@
 
 static void
 print_sched_attr(struct tcb *const tcp, const kernel_ulong_t addr,
-		 unsigned int size)
+		 unsigned int usize)
 {
-	struct {
-		uint32_t size;
-		uint32_t sched_policy;
-		uint64_t sched_flags;
-		uint32_t sched_nice;
-		uint32_t sched_priority;
-		uint64_t sched_runtime;
-		uint64_t sched_deadline;
-		uint64_t sched_period;
-	} attr = {};
+	struct sched_attr attr = {};
+	unsigned int size;
 
-	if (size > sizeof(attr))
-		size = sizeof(attr);
-	if (umoven_or_printaddr(tcp, addr, size, &attr))
-		return;
+	if (usize) {
+		/* called from sched_getattr */
+		size = usize <= sizeof(attr) ? usize : (unsigned) sizeof(attr);
+		if (umoven_or_printaddr(tcp, addr, size, &attr))
+			return;
+		/* the number of bytes written by the kernel */
+		size = attr.size;
+	} else {
+		/* called from sched_setattr */
+		if (umove_or_printaddr(tcp, addr, &attr.size))
+			return;
+		usize = attr.size;
+		if (!usize)
+			usize = SCHED_ATTR_MIN_SIZE;
+		size = usize <= sizeof(attr) ? usize : (unsigned) sizeof(attr);
+		if (size >= SCHED_ATTR_MIN_SIZE) {
+			if (umoven_or_printaddr(tcp, addr, size, &attr))
+				return;
+		}
+	}
 
-	tprintf("{size=%u, sched_policy=", attr.size);
-	printxval(schedulers, attr.sched_policy, "SCHED_???");
-	tprints(", sched_flags=");
-	printflags64(sched_flags, attr.sched_flags, "SCHED_FLAG_???");
-	tprintf(", sched_nice=%d", attr.sched_nice);
-	tprintf(", sched_priority=%u", attr.sched_priority);
-	tprintf(", sched_runtime=%" PRIu64, attr.sched_runtime);
-	tprintf(", sched_deadline=%" PRIu64, attr.sched_deadline);
-	tprintf(", sched_period=%" PRIu64 "}", attr.sched_period);
+	tprintf("{size=%u", attr.size);
+
+	if (size >= SCHED_ATTR_MIN_SIZE) {
+		tprints(", sched_policy=");
+		printxval(schedulers, attr.sched_policy, "SCHED_???");
+		tprints(", sched_flags=");
+		printflags64(sched_flags, attr.sched_flags, "SCHED_FLAG_???");
+
+#define PRINT_SCHED_FIELD(field, fmt)			\
+		tprintf(", " #field "=%" fmt, attr.field)
+
+		PRINT_SCHED_FIELD(sched_nice, "d");
+		PRINT_SCHED_FIELD(sched_priority, "u");
+		PRINT_SCHED_FIELD(sched_runtime, PRIu64);
+		PRINT_SCHED_FIELD(sched_deadline, PRIu64);
+		PRINT_SCHED_FIELD(sched_period, PRIu64);
+
+		if (usize > size)
+			tprints(", ...");
+	}
+
+	tprints("}");
 }
 
 SYS_FUNC(sched_setattr)
 {
-	tprintf("%d, ", (int) tcp->u_arg[0]);
-	print_sched_attr(tcp, tcp->u_arg[1], 0x100);
-	tprintf(", %u", (unsigned int) tcp->u_arg[2]);
+	if (entering(tcp)) {
+		tprintf("%d, ", (int) tcp->u_arg[0]);
+		print_sched_attr(tcp, tcp->u_arg[1], 0);
+	} else {
+		struct sched_attr attr;
 
-	return RVAL_DECODED;
+		if (verbose(tcp) && tcp->u_error == E2BIG
+		    && umove(tcp, tcp->u_arg[1], &attr.size) == 0) {
+			tprintf(" => {size=%u}", attr.size);
+		}
+
+		tprintf(", %u", (unsigned int) tcp->u_arg[2]);
+	}
+
+	return 0;
 }
 
 SYS_FUNC(sched_getattr)
@@ -138,10 +171,25 @@
 	if (entering(tcp)) {
 		tprintf("%d, ", (int) tcp->u_arg[0]);
 	} else {
-		print_sched_attr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
-		tprintf(", %u, %u",
-			(unsigned int) tcp->u_arg[2],
-			(unsigned int) tcp->u_arg[3]);
+		const unsigned int size = tcp->u_arg[2];
+
+		if (size)
+			print_sched_attr(tcp, tcp->u_arg[1], size);
+		else
+			printaddr(tcp->u_arg[1]);
+		tprints(", ");
+#ifdef AARCH64
+		/*
+		 * Due to a subtle gcc bug that leads to miscompiled aarch64
+		 * kernels, the 3rd argument of sched_getattr is not quite 32-bit
+		 * as on other architectures.  For more details see
+		 * https://sourceforge.net/p/strace/mailman/message/35721703/
+		 */
+		if (syserror(tcp))
+			print_abnormal_hi(tcp->u_arg[2]);
+#endif
+		tprintf("%u", size);
+		tprintf(", %u", (unsigned int) tcp->u_arg[3]);
 	}
 
 	return 0;
diff --git a/sched_attr.h b/sched_attr.h
new file mode 100644
index 0000000..251d2c4
--- /dev/null
+++ b/sched_attr.h
@@ -0,0 +1,19 @@
+#ifndef STRACE_SCHED_ATTR_H
+#define STRACE_SCHED_ATTR_H
+
+# include <stdint.h>
+
+struct sched_attr {
+	uint32_t size;
+	uint32_t sched_policy;
+	uint64_t sched_flags;
+	uint32_t sched_nice;
+	uint32_t sched_priority;
+	uint64_t sched_runtime;
+	uint64_t sched_deadline;
+	uint64_t sched_period;
+};
+
+# define SCHED_ATTR_MIN_SIZE	48
+
+#endif /* !STRACE_SCHED_ATTR_H */
diff --git a/scno.am b/scno.am
deleted file mode 100644
index 12745f1..0000000
--- a/scno.am
+++ /dev/null
@@ -1,44 +0,0 @@
-# scno.h make rules for strace.
-#
-# 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.
-
-SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
-		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
-
-syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
-	$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
-
-digits = [[:digit:]][[:digit:]]*
-al_nums = [[:alnum:]_][[:alnum:]_]*
-SCNO_SED = /TRACE_INDIRECT_SUBCALL/d; s/^\[[[:space:]]*\($(digits)\)\][[:space:]]*=[[:space:]]*{[^,]*,[^,]*,[^,]*,[[:space:]]*"\($(al_nums)\)"[[:space:]]*},.*/\#ifndef __NR_\2\n\# define __NR_\2 (SYSCALL_BIT | \1)\n\#endif/p
-
-scno.h: $(top_srcdir)/scno.head syscallent.i
-	echo '/* Generated by Makefile from $^; do not edit. */' > $@-t
-	cat $< >> $@-t
-	LC_ALL=C sed -n '$(SCNO_SED)' $(filter-out $<,$^) >> $@-t
-	mv $@-t $@
-
-CLEANFILES += syscallent.i scno.h
diff --git a/scno.h b/scno.h
index 9004580..aa7ac9f 100644
--- a/scno.h
+++ b/scno.h
@@ -1001,3 +1001,6 @@
 #ifndef __NR_pkey_free
 # define __NR_pkey_free (SYSCALL_BIT | 331)
 #endif
+#ifndef __NR_statx
+# define __NR_statx (SYSCALL_BIT | 332)
+#endif
diff --git a/seccomp.c b/seccomp.c
index f778a6c..100b7d4 100644
--- a/seccomp.c
+++ b/seccomp.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
@@ -75,8 +76,10 @@
 			break;
 		case BPF_ST:
 		case BPF_STX:
-			if (i)
-				tprintf("|%#x /* %s */", i, "BPF_???");
+			if (i) {
+				tprintf("|%#x", i);
+				tprints_comment("BPF_???");
+			}
 			break;
 		case BPF_ALU:
 			tprints("|");
@@ -94,15 +97,19 @@
 			tprints("|");
 			printxval(bpf_rval, BPF_RVAL(code), "BPF_???");
 			i &= ~BPF_RVAL(code);
-			if (i)
-				tprintf("|%#x /* %s */", i, "BPF_???");
+			if (i) {
+				tprintf("|%#x", i);
+				tprints_comment("BPF_???");
+			}
 			break;
 		case BPF_MISC:
 			tprints("|");
 			printxval(bpf_miscop, BPF_MISCOP(code), "BPF_???");
 			i &= ~BPF_MISCOP(code);
-			if (i)
-				tprintf("|%#x /* %s */", i, "BPF_???");
+			if (i) {
+				tprintf("|%#x", i);
+				tprints_comment("BPF_???");
+			}
 			break;
 	}
 
diff --git a/sen.h b/sen.h
index 7cee717..a078b25 100644
--- a/sen.h
+++ b/sen.h
@@ -338,6 +338,7 @@
 SEN_setuid16,
 SEN_setup,
 SEN_setxattr,
+SEN_sgetmask,
 SEN_shmat,
 SEN_shmctl,
 SEN_shmdt,
@@ -345,24 +346,24 @@
 SEN_shutdown,
 SEN_sigaction,
 SEN_sigaltstack,
-SEN_siggetmask,
 SEN_signal,
 SEN_signalfd,
 SEN_signalfd4,
 SEN_sigpending,
 SEN_sigprocmask,
 SEN_sigreturn,
-SEN_sigsetmask,
 SEN_sigsuspend,
 SEN_socket,
 SEN_socketcall,
 SEN_socketpair,
 SEN_splice,
 SEN_sram_alloc,
+SEN_ssetmask,
 SEN_stat,
 SEN_stat64,
 SEN_statfs,
 SEN_statfs64,
+SEN_statx,
 SEN_stime,
 SEN_stty,
 SEN_subpage_prot,
diff --git a/sendfile.c b/sendfile.c
index 7faf1ca..a776688 100644
--- a/sendfile.c
+++ b/sendfile.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/sigaltstack.c b/sigaltstack.c
index 7b624c9..bf4c9cc 100644
--- a/sigaltstack.c
+++ b/sigaltstack.c
@@ -5,6 +5,7 @@
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/signal.c b/signal.c
index 25329d3..2c21f90 100644
--- a/signal.c
+++ b/signal.c
@@ -6,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -229,6 +230,24 @@
 #define tprintsigmask_val(prefix, mask) \
 	tprints(sprintsigmask_n((prefix), &(mask), sizeof(mask)))
 
+static const char *
+sprint_old_sigmask_val(const char *const prefix, const unsigned long mask)
+{
+#if defined(current_wordsize) || !defined(WORDS_BIGENDIAN)
+	return sprintsigmask_n(prefix, &mask, current_wordsize);
+#else /* !current_wordsize && WORDS_BIGENDIAN */
+	if (current_wordsize == sizeof(mask)) {
+		return sprintsigmask_val(prefix, mask);
+	} else {
+		uint32_t mask32 = mask;
+		return sprintsigmask_val(prefix, mask32);
+	}
+#endif
+}
+
+#define tprint_old_sigmask_val(prefix, mask) \
+	tprints(sprint_old_sigmask_val((prefix), (mask)))
+
 void
 printsignal(int nr)
 {
@@ -260,13 +279,20 @@
 	print_sigset_addr_len_limit(tcp, addr, len, current_wordsize);
 }
 
-SYS_FUNC(sigsetmask)
+void
+print_sigset_addr(struct tcb *const tcp, const kernel_ulong_t addr)
+{
+	print_sigset_addr_len_limit(tcp, addr, NSIG_BYTES, NSIG_BYTES);
+}
+
+SYS_FUNC(ssetmask)
 {
 	if (entering(tcp)) {
-		tprintsigmask_val("", tcp->u_arg[0]);
+		tprint_old_sigmask_val("", (unsigned) tcp->u_arg[0]);
 	}
 	else if (!syserror(tcp)) {
-		tcp->auxstr = sprintsigmask_val("old mask ", tcp->u_rval);
+		tcp->auxstr = sprint_old_sigmask_val("old mask ",
+						     (unsigned) tcp->u_rval);
 		return RVAL_HEX | RVAL_STR;
 	}
 	return 0;
@@ -368,17 +394,23 @@
 	return 0;
 }
 
-SYS_FUNC(siggetmask)
+SYS_FUNC(sgetmask)
 {
-	if (exiting(tcp)) {
-		tcp->auxstr = sprintsigmask_val("mask ", tcp->u_rval);
+	if (exiting(tcp) && !syserror(tcp)) {
+		tcp->auxstr = sprint_old_sigmask_val("mask ", tcp->u_rval);
+		return RVAL_HEX | RVAL_STR;
 	}
-	return RVAL_HEX | RVAL_STR;
+	return 0;
 }
 
 SYS_FUNC(sigsuspend)
 {
-	tprintsigmask_val("", tcp->u_arg[2]);
+#ifdef MIPS
+	print_sigset_addr_len(tcp, tcp->u_arg[tcp->s_ent->nargs - 1],
+			      current_wordsize);
+#else
+	tprint_old_sigmask_val("", tcp->u_arg[tcp->s_ent->nargs - 1]);
+#endif
 
 	return RVAL_DECODED;
 }
diff --git a/signalent.sh b/signalent.sh
deleted file mode 100755
index 62ae786..0000000
--- a/signalent.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-# Copyright (c) 1996 Rick Sladkey <jrs@world.std.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.
-
-cat $* |
-	sed -n -e 's/\/\*.*\*\// /' -e 's/^#[ 	]*define[ 	][ 	]*SIG\([^_ 	]*\)[ 	][ 	]*\([0-9][0-9]*\)[ 	]*$/\1 \2/p' |
-	sort -k2n | uniq |
-	awk '
-	BEGIN {
-		tabs = "\t\t\t\t\t\t\t\t"
-		signal = -1;
-	}
-	$2 <= 256 {
-		if (signal == $2)
-			next
-		while (++signal < $2) {
-			n = "\"SIG_" signal "\""
-			s = "\t" n ","
-			s = s substr(tabs, 1, 16/8 - int((length(n) + 1)/8))
-			s = s "/* " signal " */"
-			print s
-		}
-		if (signal == $2)
-			n = "\"SIG" $1 "\""
-		n = "\"SIG" $1 "\""
-		s = "\t" n ","
-		s = s substr(tabs, 1, 16/8 - int((length(n) + 1)/8))
-		s = s "/* " signal " */"
-		print s
-	}
-	'
diff --git a/signalfd.c b/signalfd.c
index 3895c76..baf0dab 100644
--- a/signalfd.c
+++ b/signalfd.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2008-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
diff --git a/sock.c b/sock.c
index 9dd247c..2da323d 100644
--- a/sock.c
+++ b/sock.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/socketutils.c b/socketutils.c
index d50ef83..ef8269c 100644
--- a/socketutils.c
+++ b/socketutils.c
@@ -1,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -36,13 +37,16 @@
 #include <linux/unix_diag.h>
 #include <linux/netlink_diag.h>
 #include <linux/rtnetlink.h>
-#include "xlat/netlink_protocols.h"
 
 #include <sys/un.h>
 #ifndef UNIX_PATH_MAX
 # define UNIX_PATH_MAX sizeof(((struct sockaddr_un *) 0)->sun_path)
 #endif
 
+#ifndef NETLINK_SOCK_DIAG
+# define NETLINK_SOCK_DIAG 4
+#endif
+
 typedef struct {
 	unsigned long inode;
 	char *details;
diff --git a/stat.c b/stat.c
index 28bd15e..0e07e8a 100644
--- a/stat.c
+++ b/stat.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2005-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
diff --git a/stat.h b/stat.h
index 092d268..bcea86b 100644
--- a/stat.h
+++ b/stat.h
@@ -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
@@ -45,6 +46,7 @@
 	unsigned long long	atime_nsec;
 	unsigned long long	ctime_nsec;
 	unsigned long long	mtime_nsec;
+	bool			has_nsec;
 };
 
 #endif /* !STRACE_STAT_H */
diff --git a/stat64.c b/stat64.c
index 09d203d..97191c0 100644
--- a/stat64.c
+++ b/stat64.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2005-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
diff --git a/statx.c b/statx.c
new file mode 100644
index 0000000..6e91387
--- /dev/null
+++ b/statx.c
@@ -0,0 +1,117 @@
+/*
+ * 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.
+ */
+
+#include "defs.h"
+#include "statx.h"
+
+#include <sys/stat.h>
+
+#include "xlat/statx_masks.h"
+#include "xlat/statx_attrs.h"
+#include "xlat/at_statx_sync_types.h"
+
+SYS_FUNC(statx)
+{
+	if (entering(tcp)) {
+		print_dirfd(tcp, tcp->u_arg[0]);
+		printpath(tcp, tcp->u_arg[1]);
+		tprints(", ");
+
+		unsigned int flags = tcp->u_arg[2];
+		printflags(at_statx_sync_types, flags & AT_STATX_SYNC_TYPE,
+			   NULL);
+		flags &= ~AT_STATX_SYNC_TYPE;
+		if (flags) {
+			tprints("|");
+			printflags(at_flags, flags, NULL);
+		}
+
+		tprints(", ");
+		printflags(statx_masks, tcp->u_arg[3], "STATX_???");
+		tprints(", ");
+	} else {
+#define PRINT_FIELD_U(field) \
+	tprintf(", %s=%llu", #field, (unsigned long long) stx.field)
+
+#define PRINT_FIELD_TIME(field)						\
+	do {								\
+		tprintf(", " #field "={tv_sec=%" PRId64			\
+			", tv_nsec=%" PRIu32 "}",			\
+			stx.field.sec, stx.field.nsec);			\
+		tprints_comment(sprinttime_nsec(stx.field.sec,		\
+			zero_extend_signed_to_ull(stx.field.nsec)));	\
+	} while (0)
+
+		struct_statx stx;
+		if (umove_or_printaddr(tcp, tcp->u_arg[4], &stx))
+			return 0;
+
+		tprints("{stx_mask=");
+		printflags(statx_masks, stx.stx_mask, "STATX_???");
+
+		if (!abbrev(tcp))
+			PRINT_FIELD_U(stx_blksize);
+
+		tprints(", stx_attributes=");
+		printflags(statx_attrs, stx.stx_attributes, "STATX_ATTR_???");
+
+		if (!abbrev(tcp)) {
+			PRINT_FIELD_U(stx_nlink);
+			printuid(", stx_uid=", stx.stx_uid);
+			printuid(", stx_gid=", stx.stx_gid);
+		}
+
+		tprints(", stx_mode=");
+		print_symbolic_mode_t(stx.stx_mode);
+
+		if (!abbrev(tcp))
+			PRINT_FIELD_U(stx_ino);
+
+		PRINT_FIELD_U(stx_size);
+
+		if (!abbrev(tcp)) {
+			PRINT_FIELD_U(stx_blocks);
+
+			tprints(", stx_attributes_mask=");
+			printflags(statx_attrs, stx.stx_attributes_mask,
+				   "STATX_ATTR_???");
+
+			PRINT_FIELD_TIME(stx_atime);
+			PRINT_FIELD_TIME(stx_btime);
+			PRINT_FIELD_TIME(stx_ctime);
+			PRINT_FIELD_TIME(stx_mtime);
+			PRINT_FIELD_U(stx_rdev_major);
+			PRINT_FIELD_U(stx_rdev_minor);
+			PRINT_FIELD_U(stx_dev_major);
+			PRINT_FIELD_U(stx_dev_minor);
+		} else {
+			tprints(", ...");
+		}
+		tprints("}");
+	}
+	return 0;
+}
diff --git a/statx.h b/statx.h
new file mode 100644
index 0000000..2037287
--- /dev/null
+++ b/statx.h
@@ -0,0 +1,70 @@
+/*
+ * 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_STATX_H
+#define STRACE_STATX_H
+
+#include <stdint.h>
+
+typedef struct {
+	int64_t sec;
+	int32_t nsec;
+	int32_t reserved;
+} struct_statx_timestamp;
+
+typedef struct {
+	uint32_t stx_mask; /* What results were written [uncond] */
+	uint32_t stx_blksize; /* Preferred general I/O size [uncond] */
+	uint64_t stx_attributes; /* Flags conveying information about the file
+	                            [uncond] */
+
+	uint32_t stx_nlink; /* Number of hard links */
+	uint32_t stx_uid; /* User ID of owner */
+	uint32_t stx_gid; /* Group ID of owner */
+	uint16_t stx_mode; /* File mode */
+	uint16_t reserved0[1];
+
+	uint64_t stx_ino; /* Inode number */
+	uint64_t stx_size; /* File size */
+	uint64_t stx_blocks; /* Number of 512-byte blocks allocated */
+	uint64_t stx_attributes_mask; /* Mask to show what's supported in
+	                                 stx_attributes */
+
+	struct_statx_timestamp stx_atime; /* Last access time */
+	struct_statx_timestamp stx_btime; /* File creation time */
+	struct_statx_timestamp stx_ctime; /* Last attribute change time */
+	struct_statx_timestamp stx_mtime; /* Last data modification time */
+
+	uint32_t stx_rdev_major; /* Device ID of special file [if bdev/cdev] */
+	uint32_t stx_rdev_minor;
+	uint32_t stx_dev_major; /* ID of device containing file [uncond] */
+	uint32_t stx_dev_minor;
+
+	uint64_t reserved2[14]; /* Spare space for future expansion */
+} struct_statx;
+
+#endif /* !STRACE_STATX_H */
diff --git a/strace-graph b/strace-graph
index 5435e86..9056dce 100755
--- a/strace-graph
+++ b/strace-graph
@@ -41,6 +41,7 @@
 
 # Scales for strace slowdown.  Make configurable!
 my $scale_factor = 3.5;
+my %running_fqname;
 
 while (<>) {
     my ($pid, $call, $args, $result, $time, $time_spent);
@@ -222,12 +223,15 @@
 
 sub handle_trace {
     my ($pid, $call, $args, $result, $time) = @_;
-    my $p;
+    my $pid_fqname = $pid . "-" . $time;
 
-    if (defined $time and not defined $pr{$pid}{start}) {
-	$pr{$pid}{start} = $time;
+    if (defined $time and not defined $running_fqname{$pid}) {
+	$pr{$pid_fqname}{start} = $time;
+	$running_fqname{$pid} = $pid_fqname;
     }
 
+    $pid_fqname = $running_fqname{$pid};
+
     if ($call eq 'execve') {
 	return if $result ne '0';
 
@@ -235,30 +239,34 @@
 	my ($basename) = $filename =~ m/([^\/]*)$/;
 	if ($basename ne $$argv[0]) {
 	    $$argv[0] = "$basename($$argv[0])";
-        }
-	my $seq = $pr{$pid}{seq};
+	}
+	my $seq = $pr{$pid_fqname}{seq};
 	$seq = [] if not defined $seq;
 
 	push @$seq, ['EXEC', $filename, $argv];
 
-	$pr{$pid}{seq} = $seq;
+	$pr{$pid_fqname}{seq} = $seq;
     } elsif ($call eq 'fork' || $call eq 'clone' || $call eq 'vfork') {
 	return if $result == 0;
 
-	my $seq = $pr{$pid}{seq};
+	my $seq = $pr{$pid_fqname}{seq};
+	my $result_fqname= $result . "-" . $time;
 	$seq = [] if not defined $seq;
-	push @$seq, ['FORK', $result];
-	$pr{$pid}{seq} = $seq;
-	$pr{$result}{parent} = $pid;
-	$pr{$result}{seq} = [];
+	push @$seq, ['FORK', $result_fqname];
+	$pr{$pid_fqname}{seq} = $seq;
+	$pr{$result_fqname}{start} = $time;
+	$pr{$result_fqname}{parent} = $pid_fqname;
+	$pr{$result_fqname}{seq} = [];
+	$running_fqname{$result} = $result_fqname;
     } elsif ($call eq '_exit' || $call eq 'exit_group') {
-	$pr{$pid}{end} = $time if defined $time;
+	$pr{$running_fqname{$pid}}{end} = $time if defined $time and not defined $pr{$running_fqname{$pid}}{end};
+	delete $running_fqname{$pid};
     }
 }
 
 sub handle_killed {
     my ($pid, $time) = @_;
-    $pr{$pid}{end} = $time if defined $time;
+    $pr{$pid}{end} = $time if defined $time and not defined $pr{$pid}{end};
 }
 
 sub straight_seq {
@@ -321,11 +329,11 @@
 	    }
 	} elsif ($$elem[0] eq 'FORK') {
 	    if ($i == 1) {
-                if ($lead =~ /-$/) {
+		if ($lead =~ /-$/) {
 		    display_pid_trace($$elem[1], "$lead--+--");
-                } else {
+		} else {
 		    display_pid_trace($$elem[1], "$lead  +--");
-                }
+		}
 	    } elsif ($i == @seq) {
 		display_pid_trace($$elem[1], "$lead  `--");
 	    } else {
diff --git a/strace.1 b/strace.1
index 9230766..869da08 100644
--- a/strace.1
+++ b/strace.1
@@ -1,6 +1,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) 1996-2017 The strace developers.
 .\" All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -330,7 +331,7 @@
 or how to trace them.  The format of the expression is:
 .RS 15
 .IP
-[\,\fIqualifier\/\fB=\fR][\fB!\fR]\,\fIvalue1\/\fR[\fB,\,\fIvalue2\/\fR]...
+[\,\fIqualifier\/\fB=\fR][\fB!\fR][\fB?\fR]\,\fIvalue1\/\fR[\fB,\fR[\fB?\fR]\,\fIvalue2\/\fR]...
 .RE
 .IP
 where
@@ -361,6 +362,8 @@
 .BR \-e "\ " trace "=!" open
 means to trace every system call except
 .BR open .
+Question mark before the syscall qualification allows suppression of error
+in case no syscalls matched the qualification provided.
 In addition, the special values
 .B all
 and
@@ -383,7 +386,17 @@
 are being monitored.  The default is
 .BR trace = all .
 .TP
-.BR "\-e\ trace" = file
+\fB\-e\ trace\fR=/\,\fIregex\fR
+Trace only those system calls that match the
+.IR regex .
+You can use
+.B POSIX
+Extended Regular Expression syntax (see
+.BR regex (7)).
+.PP
+.BR "\-e\ trace" = %file
+.TP
+.BR "\-e\ trace" = file " (deprecated)"
 Trace all system calls which take a file name as an argument.  You
 can think of this as an abbreviation for
 .BR "\-e\ trace" = open , stat , chmod , unlink ,...
@@ -392,26 +405,69 @@
 accidentally forget to include a call like
 .B lstat
 in the list.  Betchya woulda forgot that one.
+.PP
+.BR "\-e\ trace" = %process
 .TP
-.BR "\-e\ trace" = process
+.BR "\-e\ trace" = process " (deprecated)"
 Trace all system calls which involve process management.  This
 is useful for watching the fork, wait, and exec steps of a process.
+.PP
+.BR "\-e\ trace" = %network
 .TP
-.BR "\-e\ trace" = network
+.BR "\-e\ trace" = network " (deprecated)"
 Trace all the network related system calls.
+.PP
+.BR "\-e\ trace" = %signal
 .TP
-.BR "\-e\ trace" = signal
+.BR "\-e\ trace" = signal " (deprecated)"
 Trace all signal related system calls.
+.PP
+.BR "\-e\ trace" = %ipc
 .TP
-.BR "\-e\ trace" = ipc
+.BR "\-e\ trace" = ipc " (deprecated)"
 Trace all IPC related system calls.
+.PP
+.BR "\-e\ trace" = %desc
 .TP
-.BR "\-e\ trace" = desc
+.BR "\-e\ trace" = desc " (deprecated)"
 Trace all file descriptor related system calls.
+.PP
+.BR "\-e\ trace" = %memory
 .TP
-.BR "\-e\ trace" = memory
+.BR "\-e\ trace" = memory " (deprecated)"
 Trace all memory mapping related system calls.
 .TP
+.BR "\-e\ trace" = %stat
+Trace stat syscall variants.
+.TP
+.BR "\-e\ trace" = %lstat
+Trace lstat syscall variants.
+.TP
+.BR "\-e\ trace" = %fstat
+Trace fstat and fstatat syscall variants.
+.TP
+.BR "\-e\ trace" = %%stat
+Trace syscalls used for requesting file status (stat, lstat, fstat, fstatat,
+statx, and their variants).
+.TP
+.BR "\-e\ trace" = %statfs
+Trace statfs, statfs64, statvfs, osf_statfs, and osf_statfs64 system calls.
+The same effect can be achieved with
+.BR "\-e\ trace" = /^(.*_)?statv?fs
+regular expression.
+.TP
+.BR "\-e\ trace" = %fstatfs
+Trace fstatfs, fstatfs64, fstatvfs, osf_fstatfs, and osf_fstatfs64 system calls.
+The same effect can be achieved with
+.BR "\-e\ trace" = /fstatv?fs
+regular expression.
+.TP
+.BR "\-e\ trace" = %%statfs
+Trace syscalls related to file system statistics (statfs-like, fstatfs-like,
+and ustat).  The same effect can be achieved with
+.BR "\-e\ trace" = /statv?fs|fsstat|ustat
+regular expression.
+.TP
 \fB\-e\ abbrev\fR=\,\fIset\fR
 Abbreviate the output from printing each member of large structures.
 The default is
diff --git a/strace.c b/strace.c
index 7214e6e..fc16551 100644
--- a/strace.c
+++ b/strace.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -190,10 +191,10 @@
 print_version(void)
 {
 	printf("%s -- version %s\n"
-	       "Copyright (C) %s The strace developers <%s>.\n"
+	       "Copyright (C) 1991-%s The strace developers <%s>.\n"
 	       "This is free software; see the source for copying conditions.  There is NO\n"
 	       "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n",
-	       PACKAGE_NAME, PACKAGE_VERSION, "1991-2017", PACKAGE_URL);
+	       PACKAGE_NAME, PACKAGE_VERSION, COPYRIGHT_YEAR, PACKAGE_URL);
 }
 
 static void
@@ -569,12 +570,10 @@
 	return fp;
 }
 
-void
-tprintf(const char *fmt, ...)
+ATTRIBUTE_FORMAT((printf, 1, 0))
+static void
+tvprintf(const char *const fmt, va_list args)
 {
-	va_list args;
-
-	va_start(args, fmt);
 	if (current_tcp) {
 		int n = vfprintf(current_tcp->outf, fmt, args);
 		if (n < 0) {
@@ -583,6 +582,14 @@
 		} else
 			current_tcp->curcol += n;
 	}
+}
+
+void
+tprintf(const char *fmt, ...)
+{
+	va_list args;
+	va_start(args, fmt);
+	tvprintf(fmt, args);
 	va_end(args);
 }
 
@@ -605,6 +612,27 @@
 }
 
 void
+tprints_comment(const char *const str)
+{
+	if (str && *str)
+		tprintf(" /* %s */", str);
+}
+
+void
+tprintf_comment(const char *fmt, ...)
+{
+	if (!fmt || !*fmt)
+		return;
+
+	va_list args;
+	va_start(args, fmt);
+	tprints(" /* ");
+	tvprintf(fmt, args);
+	tprints(" */");
+	va_end(args);
+}
+
+void
 line_ended(void)
 {
 	if (current_tcp) {
@@ -2181,6 +2209,9 @@
 			}
 		}
 	}
+
+	if (get_scno(tcp) == 1)
+		tcp->s_prev_ent = tcp->s_ent;
 }
 
 static void
@@ -2295,10 +2326,7 @@
 			return true;
 	}
 
-	if (WIFSTOPPED(status))
-		get_regs(pid);
-	else
-		clear_regs();
+	clear_regs();
 
 	event = (unsigned int) status >> 16;
 
@@ -2364,8 +2392,6 @@
 	/* Is this the very first time we see this tracee stopped? */
 	if (tcp->flags & TCB_STARTUP) {
 		startup_tcb(tcp);
-		if (get_scno(tcp) == 1)
-			tcp->s_prev_ent = tcp->s_ent;
 	}
 
 	sig = WSTOPSIG(status);
diff --git a/strace.spec b/strace.spec
index 6389fb9..1c27aa4 100644
--- a/strace.spec
+++ b/strace.spec
@@ -1,11 +1,11 @@
 Summary: Tracks and displays system calls associated with a running process
 Name: strace
-Version: 4.16
+Version: 4.17
 Release: 1%{?dist}
 License: BSD
 Group: Development/Debuggers
-URL: http://sourceforge.net/projects/strace/
-Source: http://downloads.sourceforge.net/strace/%{name}-%{version}.tar.xz
+URL: https://strace.io
+Source: https://downloads.sourceforge.net/strace/%{name}-%{version}.tar.xz
 %if 0%{?fedora} >= 20 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1300
 %define buildrequires_libunwind_devel BuildRequires: libunwind-devel
 %endif
@@ -48,6 +48,7 @@
 %prep
 %setup -q
 echo -n %version-%release > .tarball-version
+echo -n 2017 > .year
 
 %build
 echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION'
@@ -100,8 +101,11 @@
 %endif
 
 %changelog
-* Wed Feb 15 2017 strace-devel@lists.sourceforge.net - 4.16-1
-- strace 4.16 snapshot.
+* Thu May 25 2017 strace-devel@lists.sourceforge.net - 4.17-1
+- strace 4.17 snapshot.
+
+* Tue Feb 14 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.16-1
+- v4.15 -> v4.16.
 
 * Wed Dec 14 2016 Dmitry V. Levin <ldv@altlinux.org> - 4.15-1
 - v4.14-100-g622af42 -> v4.15.
diff --git a/strace.spec.in b/strace.spec.in
index b945178..6fc2689 100644
--- a/strace.spec.in
+++ b/strace.spec.in
@@ -4,8 +4,8 @@
 Release: 1%{?dist}
 License: BSD
 Group: Development/Debuggers
-URL: http://sourceforge.net/projects/strace/
-Source: http://downloads.sourceforge.net/strace/%{name}-%{version}.tar.xz
+URL: https://strace.io
+Source: https://downloads.sourceforge.net/strace/%{name}-%{version}.tar.xz
 %if 0%{?fedora} >= 20 || 0%{?centos} >= 8 || 0%{?rhel} >= 8 || 0%{?suse_version} >= 1300
 %define buildrequires_libunwind_devel BuildRequires: libunwind-devel
 %endif
@@ -48,6 +48,7 @@
 %prep
 %setup -q
 echo -n %version-%release > .tarball-version
+echo -n @COPYRIGHT_YEAR@ > .year
 
 %build
 echo 'BEGIN OF BUILD ENVIRONMENT INFORMATION'
@@ -103,6 +104,9 @@
 * @RPM_CHANGELOGTIME@ @PACKAGE_BUGREPORT@ - @PACKAGE_VERSION@-1
 - @PACKAGE_STRING@ snapshot.
 
+* Tue Feb 14 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.16-1
+- v4.15 -> v4.16.
+
 * Wed Dec 14 2016 Dmitry V. Levin <ldv@altlinux.org> - 4.15-1
 - v4.14-100-g622af42 -> v4.15.
 
diff --git a/sync_file_range.c b/sync_file_range.c
index 855e8af..e16606d 100644
--- a/sync_file_range.c
+++ b/sync_file_range.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2013 William Manley <william.manley@youview.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/sync_file_range2.c b/sync_file_range2.c
index a1ef091..142df31 100644
--- a/sync_file_range2.c
+++ b/sync_file_range2.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2013 William Manley <william.manley@youview.com>
  * Copyright (c) 2014-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
diff --git a/sys_func.h b/sys_func.h
index a976265..3257eb4 100644
--- a/sys_func.h
+++ b/sys_func.h
@@ -208,6 +208,7 @@
 extern SYS_FUNC(rt_sigpending);
 extern SYS_FUNC(rt_sigprocmask);
 extern SYS_FUNC(rt_sigqueueinfo);
+extern SYS_FUNC(rt_sigreturn);
 extern SYS_FUNC(rt_sigsuspend);
 extern SYS_FUNC(rt_sigtimedwait);
 extern SYS_FUNC(rt_tgsigqueueinfo);
@@ -248,6 +249,7 @@
 extern SYS_FUNC(settimeofday);
 extern SYS_FUNC(setuid);
 extern SYS_FUNC(setxattr);
+extern SYS_FUNC(sgetmask);
 extern SYS_FUNC(shmat);
 extern SYS_FUNC(shmctl);
 extern SYS_FUNC(shmdt);
@@ -255,24 +257,24 @@
 extern SYS_FUNC(shutdown);
 extern SYS_FUNC(sigaction);
 extern SYS_FUNC(sigaltstack);
-extern SYS_FUNC(siggetmask);
 extern SYS_FUNC(signal);
 extern SYS_FUNC(signalfd);
 extern SYS_FUNC(signalfd4);
 extern SYS_FUNC(sigpending);
 extern SYS_FUNC(sigprocmask);
 extern SYS_FUNC(sigreturn);
-extern SYS_FUNC(sigsetmask);
 extern SYS_FUNC(sigsuspend);
 extern SYS_FUNC(socket);
 extern SYS_FUNC(socketcall);
 extern SYS_FUNC(socketpair);
 extern SYS_FUNC(splice);
 extern SYS_FUNC(sram_alloc);
+extern SYS_FUNC(ssetmask);
 extern SYS_FUNC(stat);
 extern SYS_FUNC(stat64);
 extern SYS_FUNC(statfs);
 extern SYS_FUNC(statfs64);
+extern SYS_FUNC(statx);
 extern SYS_FUNC(subpage_prot);
 extern SYS_FUNC(swapon);
 extern SYS_FUNC(symlinkat);
diff --git a/syscall.c b/syscall.c
index c0407ed..a34f640 100644
--- a/syscall.c
+++ b/syscall.c
@@ -6,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -76,6 +77,13 @@
 #define TP TRACE_PROCESS
 #define TS TRACE_SIGNAL
 #define TM TRACE_MEMORY
+#define TST TRACE_STAT
+#define TLST TRACE_LSTAT
+#define TFST TRACE_FSTAT
+#define TSTA TRACE_STAT_LIKE
+#define TSF TRACE_STATFS
+#define TFSF TRACE_FSTATFS
+#define TSFA TRACE_STATFS_LIKE
 #define NF SYSCALL_NEVER_FAILS
 #define MA MAX_ARGS
 #define SI STACKTRACE_INVALIDATE_CACHE
@@ -111,6 +119,13 @@
 #undef TP
 #undef TS
 #undef TM
+#undef TST
+#undef TLST
+#undef TFST
+#undef TSTA
+#undef TSF
+#undef TFSF
+#undef TSFA
 #undef NF
 #undef MA
 #undef SI
@@ -553,6 +568,7 @@
 	get_regs_error = -1;
 }
 
+static void get_regs(pid_t pid);
 static int get_syscall_args(struct tcb *);
 static int get_syscall_result(struct tcb *);
 static int arch_get_scno(struct tcb *tcp);
@@ -638,11 +654,11 @@
 static int
 trace_syscall_entering(struct tcb *tcp, unsigned int *sig)
 {
-	int res, scno_good;
-
-	scno_good = res = get_scno(tcp);
+	int res = get_scno(tcp);
 	if (res == 0)
 		return res;
+
+	int scno_good = res;
 	if (res == 1)
 		res = get_syscall_args(tcp);
 
@@ -747,14 +763,10 @@
 static int
 trace_syscall_exiting(struct tcb *tcp)
 {
-	int sys_res;
 	struct timeval tv;
-	int res;
-	unsigned long u_error;
-	const char *u_error_str;
 
 	/* Measure the exit time as early as possible to avoid errors. */
-	if (Tflag || cflag)
+	if ((Tflag || cflag) && !(filtered(tcp) || hide_log(tcp)))
 		gettimeofday(&tv, NULL);
 
 #ifdef USE_LIBUNWIND
@@ -764,12 +776,14 @@
 	}
 #endif
 
+	if (filtered(tcp) || hide_log(tcp))
+		goto ret;
+
+	get_regs(tcp->pid);
 #if SUPPORTED_PERSONALITIES > 1
 	update_personality(tcp, tcp->currpers);
 #endif
-	res = (get_regs_error ? -1 : get_syscall_result(tcp));
-	if (filtered(tcp) || hide_log(tcp))
-		goto ret;
+	int res = (get_regs_error ? -1 : get_syscall_result(tcp));
 
 	if (syserror(tcp) && syscall_tampered(tcp))
 		tamper_with_syscall_exiting(tcp);
@@ -811,7 +825,7 @@
 	}
 	tcp->s_prev_ent = tcp->s_ent;
 
-	sys_res = 0;
+	int sys_res = 0;
 	if (tcp->qual_flg & QUAL_RAW) {
 		/* sys_res = printargs(tcp); - but it's nop on sysexit */
 	} else {
@@ -833,7 +847,7 @@
 
 	tprints(") ");
 	tabto();
-	u_error = tcp->u_error;
+	unsigned long u_error = tcp->u_error;
 
 	if (tcp->qual_flg & QUAL_RAW) {
 		if (u_error) {
@@ -845,6 +859,8 @@
 			tprints(" (INJECTED)");
 	}
 	else if (!(sys_res & RVAL_NONE) && u_error) {
+		const char *u_error_str;
+
 		switch (u_error) {
 		/* Blocked signals do not interrupt any syscalls.
 		 * In this case syscalls don't return ERESTARTfoo codes.
@@ -910,7 +926,7 @@
 			break;
 		}
 		if (syscall_tampered(tcp))
-			tprintf(" (INJECTED)");
+			tprints(" (INJECTED)");
 		if ((sys_res & RVAL_STR) && tcp->auxstr)
 			tprintf(" (%s)", tcp->auxstr);
 	}
@@ -1061,6 +1077,7 @@
 #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)
 		tprints(current_wordsize == 4 ? "[????????] "
 					      : "[????????????????] ");
@@ -1146,12 +1163,15 @@
 
 #endif /* ARCH_REGS_FOR_GETREGSET || ARCH_REGS_FOR_GETREGS */
 
-void
+static void
 get_regs(pid_t pid)
 {
 #undef USE_GET_SYSCALL_RESULT_REGS
 #ifdef ptrace_getregset_or_getregs
 
+	if (get_regs_error != -1)
+		return;
+
 # ifdef HAVE_GETREGS_OLD
 	/*
 	 * Try PTRACE_GETREGSET/PTRACE_GETREGS first,
@@ -1218,6 +1238,8 @@
 int
 get_scno(struct tcb *tcp)
 {
+	get_regs(tcp->pid);
+
 	if (get_regs_error)
 		return -1;
 
diff --git a/syscallent.sh b/syscallent.sh
deleted file mode 100755
index 16dd77f..0000000
--- a/syscallent.sh
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/bin/sh
-# Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.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.
-
-cat ${1+"$@"} |
-	sed -n 's/^#[ 	]*define[ 	][ 	]*SYS_\([^ 	]*\)[ 	]*[^0-9]*\([0-9]*\).*$/\1 \2/p
-s/^#[ 	]*define[ 	][ 	]*__NR_\([^ 	]*\)[ 	]*[^0-9]*\([0-9]*\).*$/\1 \2/p
-s/^#[ ]*define[ ][ ]*__NR_\([^ ]*\)[ ]*[^0-9()]*(__NR_Linux + \([0-9]*\))$/\1 \2/p' |
-	sort -k2n | uniq |
-	awk '
-	BEGIN {
-		tabs = "\t\t\t\t\t\t\t\t"
-		call = -1;
-	}
-	{
-		while (++call < $2) {
-			f = "printargs"
-			n = "SYS_" call
-			s = "\t{ MA,\t0,\t"
-			s = s f ","
-			s = s substr(tabs, 1, 24/8 - int((length(f) + 1)/8))
-			s = s "\"" n "\""
-			s = s substr(tabs, 1, 16/8 - int((length(n) + 2)/8))
-			s = s "}, /* " call " */"
-			print s
-		}
-		f = "sys_" $1
-		n = $1
-		s = "\t{ MA,\t0,\t"
-		s = s f ","
-		s = s substr(tabs, 1, 24/8 - int((length(f) + 1)/8))
-		s = s "\"" n "\""
-		s = s substr(tabs, 1, 16/8 - int((length(n) + 2)/8))
-		s = s "}, /* " call " */"
-		print s
-	}
-	END {
-		limit = call + 100
-		while (++call < limit) {
-			f = "printargs"
-			n = "SYS_" call
-			s = "\t{ MA,\t0,\t"
-			s = s f ","
-			s = s substr(tabs, 1, 24/8 - int((length(f) + 1)/8))
-			s = s "\"" n "\""
-			s = s substr(tabs, 1, 16/8 - int((length(n) + 2)/8))
-			s = s "}, /* " call " */"
-			print s
-		}
-	}
-	'
diff --git a/sysctl.c b/sysctl.c
index 3843693..6459415 100644
--- a/sysctl.c
+++ b/sysctl.c
@@ -2,6 +2,7 @@
  * Copyright (c) 1999 Ulrich Drepper <drepper@cygnus.com>
  * Copyright (c) 2005 Roland McGrath <roland@redhat.com>
  * Copyright (c) 2005-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/sysent.h b/sysent.h
index aa93bcb..92de746 100644
--- a/sysent.h
+++ b/sysent.h
@@ -9,17 +9,24 @@
 	const char *sys_name;
 } struct_sysent;
 
-#define TRACE_FILE		001	/* Trace file-related syscalls. */
-#define TRACE_IPC		002	/* Trace IPC-related syscalls. */
-#define TRACE_NETWORK		004	/* Trace network-related syscalls. */
-#define TRACE_PROCESS		010	/* Trace process-related syscalls. */
-#define TRACE_SIGNAL		020	/* Trace signal-related syscalls. */
-#define TRACE_DESC		040	/* Trace file descriptor-related syscalls. */
-#define TRACE_MEMORY		0100	/* Trace memory mapping-related syscalls. */
-#define SYSCALL_NEVER_FAILS	0200	/* Syscall is always successful. */
-#define STACKTRACE_INVALIDATE_CACHE 0400  /* Trigger proc/maps cache updating */
-#define STACKTRACE_CAPTURE_ON_ENTER 01000 /* Capture stacktrace on "entering" stage */
-#define TRACE_INDIRECT_SUBCALL	02000	/* Syscall is an indirect socket/ipc subcall. */
-#define COMPAT_SYSCALL_TYPES	04000	/* A compat syscall that uses compat types. */
+#define TRACE_FILE			00000001	/* Trace file-related syscalls. */
+#define TRACE_IPC			00000002	/* Trace IPC-related syscalls. */
+#define TRACE_NETWORK			00000004	/* Trace network-related syscalls. */
+#define TRACE_PROCESS			00000010	/* Trace process-related syscalls. */
+#define TRACE_SIGNAL			00000020	/* Trace signal-related syscalls. */
+#define TRACE_DESC			00000040	/* Trace file descriptor-related syscalls. */
+#define TRACE_MEMORY			00000100	/* Trace memory mapping-related syscalls. */
+#define SYSCALL_NEVER_FAILS		00000200	/* Syscall is always successful. */
+#define STACKTRACE_INVALIDATE_CACHE	00000400	/* Trigger proc/maps cache updating */
+#define STACKTRACE_CAPTURE_ON_ENTER	00001000	/* Capture stacktrace on "entering" stage */
+#define TRACE_INDIRECT_SUBCALL		00002000	/* Syscall is an indirect socket/ipc subcall. */
+#define COMPAT_SYSCALL_TYPES		00004000	/* A compat syscall that uses compat types. */
+#define TRACE_STAT			00010000	/* Trace {,*_}{,old}{,x}stat{,64} syscalls. */
+#define TRACE_LSTAT			00020000	/* Trace *lstat* syscalls. */
+#define TRACE_STATFS			00040000	/* Trace statfs, statfs64, and statvfs syscalls. */
+#define TRACE_FSTATFS			00100000	/* Trace fstatfs, fstatfs64 and fstatvfs syscalls. */
+#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. */
 
 #endif /* !STRACE_SYSENT_H */
diff --git a/sysinfo.c b/sysinfo.c
index a0f29cb..5519bf3 100644
--- a/sysinfo.c
+++ b/sysinfo.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/syslog.c b/syslog.c
index 9906306..62d313b 100644
--- a/syslog.c
+++ b/syslog.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/sysmips.c b/sysmips.c
index af5ffba..a0ed557 100644
--- a/sysmips.c
+++ b/sysmips.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2001 Wichert Akkerman <wichert@deephackmode.org>
  * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/term.c b/term.c
index d083cdd..6a7a65b 100644
--- a/term.c
+++ b/term.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
+ * Copyright (c) 1996-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/Makefile b/tests-m32/Makefile
index 56b3297..1bfab92 100644
--- a/tests-m32/Makefile
+++ b/tests-m32/Makefile
@@ -17,6 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
 POST_UNINSTALL = :
 build_triplet = x86_64-pc-linux-gnu
 host_triplet = x86_64-pc-linux-gnu
-check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
-	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
-	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
-	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
-	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
-	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
-	chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
-	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
-	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
-	count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-	dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
-	epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
-	epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
-	execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
-	execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
-	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
-	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
-	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
-	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
-	file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
-	finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
-	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
-	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
-	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
-	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
-	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
-	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
-	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
-	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
-	getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
-	getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
-	getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
-	getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
-	getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
-	inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
-	ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
-	ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
-	ioctl_rtc-v$(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) ipc_msg$(EXEEXT) \
-	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
-	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
-	keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
-	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
-	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
-	lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
-	membarrier$(EXEEXT) memfd_create$(EXEEXT) \
-	migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
-	mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
-	mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
-	mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
-	mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
-	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
-	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
-	msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
-	munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-accept-connect$(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_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
-	netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
-	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
-	pc$(EXEEXT) perf_event_open$(EXEEXT) \
-	perf_event_open_nonverbose$(EXEEXT) \
-	perf_event_open_unabbrev$(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-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
-	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
-	print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
-	process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
-	pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
-	qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
-	qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
-	qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
-	quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
-	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
-	readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
-	reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
-	recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
-	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) \
-	restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
-	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
-	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
-	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
-	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
-	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
-	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
-	scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
-	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
-	sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
-	setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
-	setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
-	setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
-	setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
-	setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
-	setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
-	setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
-	shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
-	sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
-	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
-	stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-	statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
-	symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
-	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-	tee$(EXEEXT) threads-execve$(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) unix-pair-send-recv$(EXEEXT) \
-	unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
-	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-	utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
-	vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
-	waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
-	xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
-DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+	$(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) caps-abbrev$(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) ksysent$(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) \
+	perf_event_open_nonverbose$(EXEEXT) \
+	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+	print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+	qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+	qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+	quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+	scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+	seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+	wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+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 \
@@ -300,6 +191,7 @@
 	libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
+	libtests_a-get_sigset_size.$(OBJEXT) \
 	libtests_a-hexdump_strdup.$(OBJEXT) \
 	libtests_a-hexquote_strndup.$(OBJEXT) \
 	libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
 	libtests_a-overflowuid.$(OBJEXT) \
 	libtests_a-pipe_maxfd.$(OBJEXT) \
 	libtests_a-print_quoted_string.$(OBJEXT) \
+	libtests_a-print_time.$(OBJEXT) \
 	libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
-	libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
-	libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+	libtests_a-signal2name.$(OBJEXT) \
+	libtests_a-skip_unavailable.$(OBJEXT) \
+	libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+	libtests_a-tprintf.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+	chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) creat$(EXEEXT) \
+	delete_module$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) \
+	dup3$(EXEEXT) epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
+	epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
+	erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
+	execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+	file_ioctl$(EXEEXT) finit_module$(EXEEXT) flock$(EXEEXT) \
+	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+	getpgrp$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
+	getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+	getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+	getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+	getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(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_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) ipc_msg$(EXEEXT) \
+	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+	keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+	lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(EXEEXT) \
+	mbind$(EXEEXT) membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+	migrate_pages$(EXEEXT) mincore$(EXEEXT) 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) \
+	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+	netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+	old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+	oldselect$(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) \
+	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+	printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+	process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+	pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+	readlink$(EXEEXT) 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) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+	rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(EXEEXT) \
+	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+	seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+	sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+	setdomainname$(EXEEXT) setfsgid$(EXEEXT) setfsgid32$(EXEEXT) \
+	setfsuid$(EXEEXT) setfsuid32$(EXEEXT) setgid$(EXEEXT) \
+	setgid32$(EXEEXT) setgroups$(EXEEXT) setgroups32$(EXEEXT) \
+	sethostname$(EXEEXT) setns$(EXEEXT) setregid$(EXEEXT) \
+	setregid32$(EXEEXT) setresgid$(EXEEXT) setresgid32$(EXEEXT) \
+	setresuid$(EXEEXT) setresuid32$(EXEEXT) setreuid$(EXEEXT) \
+	setreuid32$(EXEEXT) setrlimit$(EXEEXT) setuid$(EXEEXT) \
+	setuid32$(EXEEXT) shmxt$(EXEEXT) shutdown$(EXEEXT) \
+	sigaction$(EXEEXT) sigaltstack$(EXEEXT) siginfo$(EXEEXT) \
+	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(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) \
+	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+	xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
 getrandom_SOURCES = getrandom.c
 getrandom_OBJECTS = getrandom.$(OBJEXT)
 getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
 getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
 ioctl_SOURCES = ioctl.c
 ioctl_OBJECTS = ioctl.$(OBJEXT)
 ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
 ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
 ioctl_mtd_LDADD = $(LDADD)
 ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
 ioctl_rtc_SOURCES = ioctl_rtc.c
 ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
 ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
 lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
 lstat64_LDADD = $(LDADD)
 lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
 pause_SOURCES = pause.c
 pause_OBJECTS = pause.$(OBJEXT)
 pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
 prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
 prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
 prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
 rt_sigsuspend_SOURCES = rt_sigsuspend.c
 rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
 rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
 sigreturn_OBJECTS = sigreturn.$(OBJEXT)
 sigreturn_LDADD = $(LDADD)
 sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
 sleep_SOURCES = sleep.c
 sleep_OBJECTS = sleep.$(OBJEXT)
 sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
 swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
 symlink_SOURCES = symlink.c
 symlink_OBJECTS = symlink.$(OBJEXT)
 symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-#am__EXEEXT_1 = strace-k.test
+#am__EXEEXT_2 = strace-k.test
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS =  .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2234,12 +2298,12 @@
       b='$*';; \
   esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing aclocal-1.14
+ACLOCAL = ${SHELL} /tmp/strace-4.17/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
-AUTOCONF = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoconf
-AUTOHEADER = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoheader
-AUTOMAKE = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing automake-1.14
+AUTOCONF = ${SHELL} /tmp/strace-4.17/missing autoconf
+AUTOHEADER = ${SHELL} /tmp/strace-4.17/missing autoheader
+AUTOMAKE = ${SHELL} /tmp/strace-4.17/missing automake-1.14
 AWK = gawk
 BUILD_EXEEXT = 
 BUILD_OBJEXT = 
@@ -2253,12 +2317,13 @@
 CODE_COVERAGE_CXXFLAGS = 
 CODE_COVERAGE_ENABLED = no
 CODE_COVERAGE_LDFLAGS = 
+COPYRIGHT_YEAR = 2017
 CPP = gcc -E
 CPPFLAGS = 
 CPPFLAGS_FOR_BUILD = 
 CPP_FOR_BUILD = gcc -E
 CYGPATH_W = echo
-DEB_CHANGELOGTIME = Wed, 15 Feb 2017 11:38:25 -0800
+DEB_CHANGELOGTIME = Thu, 25 May 2017 15:09:49 -0700
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
 ECHO_C = 
@@ -2285,34 +2350,34 @@
 LIBS = 
 LTLIBOBJS = 
 MAINT = #
-MAKEINFO = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing makeinfo
+MAKEINFO = ${SHELL} /tmp/strace-4.17/missing makeinfo
 MIPS_ABI = 
 MKDIR_P = /bin/mkdir -p
 OBJEXT = o
 PACKAGE = strace
 PACKAGE_BUGREPORT = strace-devel@lists.sourceforge.net
 PACKAGE_NAME = strace
-PACKAGE_STRING = strace 4.16
+PACKAGE_STRING = strace 4.17
 PACKAGE_TARNAME = strace
 PACKAGE_URL = https://strace.io
-PACKAGE_VERSION = 4.16
+PACKAGE_VERSION = 4.17
 PATH_SEPARATOR = :
 PERL = /usr/bin/perl
 RANLIB = ranlib
-RPM_CHANGELOGTIME = Wed Feb 15 2017
+RPM_CHANGELOGTIME = Thu May 25 2017
 SED = /bin/sed
 SET_MAKE = 
 SHELL = /bin/sh
 STRIP = 
 VALGRIND = valgrind
 VALGRIND_ENABLED = yes
-VERSION = 4.16
+VERSION = 4.17
 WARN_CFLAGS =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
 WARN_CFLAGS_FOR_BUILD =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
-abs_builddir = /usr/local/google/home/enh/Downloads/strace-4.16/tests-m32
-abs_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16/tests-m32
-abs_top_builddir = /usr/local/google/home/enh/Downloads/strace-4.16
-abs_top_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16
+abs_builddir = /tmp/strace-4.17/tests-m32
+abs_srcdir = /tmp/strace-4.17/tests-m32
+abs_top_builddir = /tmp/strace-4.17
+abs_top_srcdir = /tmp/strace-4.17
 ac_ct_CC = gcc
 ac_ct_CC_FOR_BUILD = gcc
 am__include = include
@@ -2344,7 +2409,7 @@
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/install-sh
+install_sh = ${SHELL} /tmp/strace-4.17/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 libunwind_CPPFLAGS = 
@@ -2389,6 +2454,7 @@
 	error_msg.c \
 	fill_memory.c \
 	get_page_size.c \
+	get_sigset_size.c \
 	hexdump_strdup.c \
 	hexquote_strndup.c \
 	inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
 	overflowuid.c \
 	pipe_maxfd.c \
 	print_quoted_string.c \
+	print_time.c \
 	printflags.c \
 	printxval.c \
 	signal2name.c \
+	skip_unavailable.c \
 	sprintrc.c \
 	tail_alloc.c \
 	tests.h \
@@ -2409,6 +2477,340 @@
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
 LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+  _newselect \
+  accept \
+  accept4 \
+  access \
+  acct \
+  add_key \
+  adjtimex \
+  aio \
+  alarm \
+  bpf \
+  brk \
+  btrfs \
+  caps \
+  chmod \
+  chown \
+  chown32 \
+  chroot \
+  clock_adjtime \
+  clock_nanosleep \
+  clock_xettime \
+  copy_file_range \
+  creat \
+  delete_module \
+  dup \
+  dup2 \
+  dup3 \
+  epoll_create \
+  epoll_create1 \
+  epoll_ctl \
+  epoll_pwait \
+  epoll_wait \
+  erestartsys \
+  eventfd \
+  execve \
+  execveat \
+  faccessat \
+  fadvise64 \
+  fadvise64_64 \
+  fallocate \
+  fanotify_init \
+  fanotify_mark \
+  fchdir \
+  fchmod \
+  fchmodat \
+  fchown \
+  fchown32 \
+  fchownat \
+  fcntl \
+  fcntl64 \
+  fdatasync \
+  file_handle \
+  file_ioctl \
+  finit_module \
+  flock \
+  fstat \
+  fstat64 \
+  fstatat64 \
+  fstatfs \
+  fstatfs64 \
+  fsync \
+  ftruncate \
+  ftruncate64 \
+  futex \
+  futimesat \
+  get_mempolicy \
+  getcpu \
+  getcwd \
+  getdents \
+  getdents64 \
+  getegid \
+  getegid32 \
+  geteuid \
+  geteuid32 \
+  getgid \
+  getgid32 \
+  getgroups \
+  getgroups32 \
+  getpeername \
+  getpgrp \
+  getpid \
+  getppid \
+  getrandom \
+  getresgid \
+  getresgid32 \
+  getresuid \
+  getresuid32 \
+  getrlimit \
+  getrusage \
+  getsid \
+  getsockname \
+  getuid \
+  getuid32 \
+  getxxid \
+  inet-cmsg \
+  init_module \
+  inotify \
+  inotify_init1 \
+  ioctl \
+  ioctl_block \
+  ioctl_dm \
+  ioctl_evdev \
+  ioctl_loop \
+  ioctl_mtd \
+  ioctl_rtc \
+  ioctl_scsi \
+  ioctl_sg_io_v3 \
+  ioctl_sg_io_v4 \
+  ioctl_sock_gifconf \
+  ioctl_uffdio \
+  ioctl_v4l2 \
+  ioperm \
+  iopl \
+  ioprio \
+  ip_mreq \
+  ipc \
+  ipc_msg \
+  ipc_msgbuf \
+  ipc_sem \
+  ipc_shm \
+  kcmp \
+  kexec_file_load \
+  kexec_load \
+  keyctl \
+  kill \
+  lchown \
+  lchown32 \
+  link \
+  linkat \
+  llseek \
+  lookup_dcookie \
+  lseek \
+  lstat \
+  lstat64 \
+  madvise \
+  mbind \
+  membarrier \
+  memfd_create \
+  migrate_pages \
+  mincore \
+  mkdir \
+  mkdirat \
+  mknod \
+  mknodat \
+  mlock \
+  mlock2 \
+  mlockall \
+  mmap \
+  mmap64 \
+  mmsg \
+  mmsg_name \
+  mount \
+  move_pages \
+  mq \
+  mq_sendrecv \
+  mq_sendrecv-read \
+  mq_sendrecv-write \
+  msg_control \
+  msg_name \
+  munlockall \
+  nanosleep \
+  net-icmp_filter \
+  net-sockaddr \
+  net-y-unix \
+  net-yy-inet \
+  net-yy-netlink \
+  net-yy-unix \
+  netlink_protocol \
+  newfstatat \
+  old_mmap \
+  oldfstat \
+  oldlstat \
+  oldselect \
+  oldstat \
+  open \
+  openat \
+  osf_utimes \
+  pause \
+  perf_event_open \
+  personality \
+  pipe \
+  pipe2 \
+  pkey_alloc \
+  pkey_free \
+  pkey_mprotect \
+  poll \
+  ppoll \
+  prctl-arg2-intptr \
+  prctl-dumpable \
+  prctl-name \
+  prctl-no-args \
+  prctl-pdeathsig \
+  prctl-securebits \
+  prctl-tid_address \
+  prctl-tsc \
+  pread64-pwrite64 \
+  preadv \
+  preadv-pwritev \
+  preadv2-pwritev2 \
+  printstr \
+  prlimit64 \
+  process_vm_readv \
+  process_vm_writev \
+  pselect6 \
+  ptrace \
+  pwritev \
+  quotactl \
+  quotactl-xfs \
+  read-write \
+  readahead \
+  readdir \
+  readlink \
+  readlinkat \
+  readv \
+  reboot \
+  recvfrom \
+  recvmmsg-timeout \
+  recvmsg \
+  remap_file_pages \
+  rename \
+  renameat \
+  renameat2 \
+  request_key \
+  rmdir \
+  rt_sigpending \
+  rt_sigprocmask \
+  rt_sigqueueinfo \
+  rt_sigreturn \
+  rt_sigsuspend \
+  rt_sigtimedwait \
+  rt_tgsigqueueinfo \
+  sched_get_priority_mxx \
+  sched_rr_get_interval \
+  sched_xetaffinity \
+  sched_xetattr \
+  sched_xetparam \
+  sched_xetscheduler \
+  sched_yield \
+  seccomp-filter \
+  select \
+  semop \
+  sendfile \
+  sendfile64 \
+  set_mempolicy \
+  setdomainname \
+  setfsgid \
+  setfsgid32 \
+  setfsuid \
+  setfsuid32 \
+  setgid \
+  setgid32 \
+  setgroups \
+  setgroups32 \
+  sethostname \
+  setns \
+  setregid \
+  setregid32 \
+  setresgid \
+  setresgid32 \
+  setresuid \
+  setresuid32 \
+  setreuid \
+  setreuid32 \
+  setrlimit \
+  setuid \
+  setuid32 \
+  shmxt \
+  shutdown \
+  sigaction \
+  sigaltstack \
+  siginfo \
+  signalfd4 \
+  sigreturn \
+  sigsuspend \
+  socketcall \
+  splice \
+  stat \
+  stat64 \
+  statfs \
+  statfs64 \
+  statx \
+  swap \
+  sxetmask \
+  symlink \
+  symlinkat \
+  sync \
+  sync_file_range \
+  sync_file_range2 \
+  sysinfo \
+  syslog \
+  tee \
+  time \
+  timer_create \
+  timer_xettime \
+  timerfd_xettime \
+  times \
+  times-fail \
+  truncate \
+  truncate64 \
+  ugetrlimit \
+  uio \
+  umask \
+  umount \
+  umount2 \
+  umoven-illptr \
+  umovestr \
+  umovestr-illptr \
+  umovestr2 \
+  umovestr3 \
+  uname \
+  unlink \
+  unlinkat \
+  unshare \
+  userfaultfd \
+  ustat \
+  utime \
+  utimensat \
+  utimes \
+  vhangup \
+  vmsplice \
+  wait4 \
+  waitid \
+  waitpid \
+  xattr \
+  xattr-strings \
+  xet_robust_list \
+  xetitimer \
+  xetpgid \
+  xetpriority \
+  xettimeofday \
+  #
+
 attach_f_p_LDADD = -lrt -lpthread $(LDADD)
 clock_xettime_LDADD = -lrt $(LDADD)
 count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-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 \
+	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 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 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_protocol.gen.test \
+	newfstatat.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 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 \
+	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 \
+	siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+	sigreturn.gen.test sigsuspend.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
 LIBUNWIND_TESTS = 
 #LIBUNWIND_TESTS = strace-k.test
 DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
 	brk.test \
 	btrfs-v.test \
 	btrfs-vw.test \
 	btrfs-w.test \
-	btrfs.test \
 	caps-abbrev.test \
 	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
 	eventfd.test \
 	execve-v.test \
 	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
 	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
 	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
 	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
 	ioctl.test \
-	ioctl_block.test \
 	ioctl_dm-v.test \
 	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
 	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
+	ioctl_nsfs.test \
 	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
 	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
 	llseek.test \
-	lookup_dcookie.test \
 	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
 	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
 	net-y-unix.test \
 	net-yy-inet.test \
 	net-yy-netlink.test \
 	net-yy-unix.test \
 	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
 	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
 	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
 	personality.test \
 	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
 	poll.test \
-	ppoll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
 	prctl-name.test \
@@ -2650,148 +3002,21 @@
 	prctl-securebits.test \
 	prctl-tid_address.test \
 	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
 	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
 	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
 	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
 	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
 	sigaction.test \
 	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
 	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
 	uio.test \
-	umask.test \
 	umount.test \
 	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
 	umovestr.test \
 	umovestr2.test \
-	umovestr3.test \
 	uname.test \
 	unix-pair-send-recv.test \
 	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
 	# end of DECODER_TESTS
 
 MISC_TESTS = \
@@ -2804,7 +3029,7 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
-	fork-f.test \
+	get_regs.test \
 	ksysent.test \
 	opipe.test \
 	options-syntax.test \
@@ -2820,7 +3045,6 @@
 	redirect-fds.test \
 	redirect.test \
 	restart_syscall.test \
-	signal_receive.test \
 	strace-C.test \
 	strace-E.test \
 	strace-S.test \
@@ -2832,77 +3056,94 @@
 	strace-tt.test \
 	strace-ttt.test \
 	threads-execve.test \
-	vfork-f.test \
 	# end of MISC_TESTS
 
 XFAIL_TESTS_ = 
 XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
 XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+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
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
+EXTRA_DIST = \
+	caps-abbrev.awk \
+	caps.awk \
+	clock.in \
+	count-f.expected \
+	eventfd.expected \
+	fadvise.h \
+	filter-unavailable.expected \
+	fstatat.c \
+	fstatx.c \
+	gen_pure_executables.sh \
+	gen_tests.in \
+	gen_tests.sh \
+	getresugid.c \
+	init.sh \
+	init_delete_module.h \
+	ioctl-v.sh \
+	ipc.sh \
+	ipc_msgbuf.expected \
+	ksysent.sed \
+	lstatx.c \
+	match.awk \
+	net.expected \
+	oldselect.expected \
+	pipe.expected \
+	process_vm_readv_writev.c \
+	pure_executables.list \
+	qual_fault-exit_group.expected \
+	qual_inject-error-signal.expected \
+	qual_inject-signal.expected \
+	quotactl.h \
+	regex.in \
+	run.sh \
+	sched.in \
+	scno_tampering.sh \
+	setfsugid.c \
+	setresugid.c \
+	setreugid.c \
+	setugid.c \
+	sigaction.awk \
+	sigaltstack.expected \
+	sockname.c \
+	strace-C.expected \
+	strace-E.expected \
+	strace-T.expected \
+	strace-ff.expected \
+	strace-k.test \
+	strace-r.expected \
+	strace.supp \
+	struct_flock.c \
+	sun_path.expected \
+	trace_fstat.in \
+	trace_fstatfs.in \
+	trace_lstat.in \
+	trace_question.in \
+	trace_stat.in \
+	trace_stat_like.in \
+	trace_statfs.in \
+	trace_statfs_like.in \
+	uio.expected \
+	umode_t.c \
+	umovestr.expected \
+	unix-pair-send-recv.expected \
+	unix-pair-sendto-recvfrom.expected \
+	xchownx.c \
+	xgetrlimit.c \
+	xselect.c \
+	xstatfs.c \
+	xstatfs64.c \
+	xstatfsx.c \
+	xstatx.c \
+	xutimes.c \
+	$(TESTS)
 
 objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
 
@@ -2913,7 +3154,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -2934,7 +3175,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../scno.am:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
 	@rm -f getpgrp$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
+	@rm -f getpid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
+	@rm -f getppid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
 getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES) 
 	@rm -f getrandom$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
 	@rm -f getsockname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
 
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES) 
+	@rm -f gettid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
 	@rm -f getuid$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
 	@rm -f inotify_init1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
+	@rm -f int_0x80$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
 ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES) 
 	@rm -f ioctl$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
 	@rm -f ioctl_mtd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
 
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES) 
+	@rm -f ioctl_nsfs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_LDADD) $(LIBS)
+
 ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES) 
 	@rm -f ioctl_rtc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
@@ -3548,6 +3809,10 @@
 	@rm -f lstat64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
 
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES) 
+	@rm -f madvise$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
 	@rm -f mbind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
 	@rm -f openat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES) 
+	@rm -f osf_utimes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
 pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES) 
 	@rm -f pause$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_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)
+
 prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES) 
 	@rm -f prctl-arg2-intptr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
@@ -4004,6 +4277,10 @@
 	@rm -f rt_sigqueueinfo$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
+	@rm -f rt_sigreturn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
 rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES) 
 	@rm -f rt_sigsuspend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
@@ -4204,6 +4481,10 @@
 	@rm -f sigreturn$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
 
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES) 
+	@rm -f sigsuspend$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
 sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES) 
 	@rm -f sleep$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
 	@rm -f statfs64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
+	@rm -f statx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
 	@rm -f swap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
 
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES) 
+	@rm -f sxetmask$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
 symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES) 
 	@rm -f symlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
 include ./$(DEPDIR)/getgroups32.Po
 include ./$(DEPDIR)/getpeername.Po
 include ./$(DEPDIR)/getpgrp.Po
+include ./$(DEPDIR)/getpid.Po
+include ./$(DEPDIR)/getppid.Po
 include ./$(DEPDIR)/getrandom.Po
 include ./$(DEPDIR)/getresgid.Po
 include ./$(DEPDIR)/getresgid32.Po
@@ -4557,6 +4848,7 @@
 include ./$(DEPDIR)/getrusage.Po
 include ./$(DEPDIR)/getsid.Po
 include ./$(DEPDIR)/getsockname.Po
+include ./$(DEPDIR)/gettid.Po
 include ./$(DEPDIR)/getuid.Po
 include ./$(DEPDIR)/getuid32.Po
 include ./$(DEPDIR)/getxxid.Po
@@ -4564,6 +4856,7 @@
 include ./$(DEPDIR)/init_module.Po
 include ./$(DEPDIR)/inotify.Po
 include ./$(DEPDIR)/inotify_init1.Po
+include ./$(DEPDIR)/int_0x80.Po
 include ./$(DEPDIR)/ioctl.Po
 include ./$(DEPDIR)/ioctl_block.Po
 include ./$(DEPDIR)/ioctl_dm-v.Po
@@ -4574,6 +4867,7 @@
 include ./$(DEPDIR)/ioctl_loop-v.Po
 include ./$(DEPDIR)/ioctl_loop.Po
 include ./$(DEPDIR)/ioctl_mtd.Po
+include ./$(DEPDIR)/ioctl_nsfs.Po
 include ./$(DEPDIR)/ioctl_rtc-v.Po
 include ./$(DEPDIR)/ioctl_rtc.Po
 include ./$(DEPDIR)/ioctl_scsi.Po
@@ -4603,6 +4897,7 @@
 include ./$(DEPDIR)/libtests_a-error_msg.Po
 include ./$(DEPDIR)/libtests_a-fill_memory.Po
 include ./$(DEPDIR)/libtests_a-get_page_size.Po
+include ./$(DEPDIR)/libtests_a-get_sigset_size.Po
 include ./$(DEPDIR)/libtests_a-hexdump_strdup.Po
 include ./$(DEPDIR)/libtests_a-hexquote_strndup.Po
 include ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
@@ -4611,9 +4906,11 @@
 include ./$(DEPDIR)/libtests_a-overflowuid.Po
 include ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
 include ./$(DEPDIR)/libtests_a-print_quoted_string.Po
+include ./$(DEPDIR)/libtests_a-print_time.Po
 include ./$(DEPDIR)/libtests_a-printflags.Po
 include ./$(DEPDIR)/libtests_a-printxval.Po
 include ./$(DEPDIR)/libtests_a-signal2name.Po
+include ./$(DEPDIR)/libtests_a-skip_unavailable.Po
 include ./$(DEPDIR)/libtests_a-sprintrc.Po
 include ./$(DEPDIR)/libtests_a-tail_alloc.Po
 include ./$(DEPDIR)/libtests_a-tprintf.Po
@@ -4624,6 +4921,7 @@
 include ./$(DEPDIR)/lseek.Po
 include ./$(DEPDIR)/lstat.Po
 include ./$(DEPDIR)/lstat64-lstat64.Po
+include ./$(DEPDIR)/madvise.Po
 include ./$(DEPDIR)/mbind.Po
 include ./$(DEPDIR)/membarrier.Po
 include ./$(DEPDIR)/memfd_create.Po
@@ -4673,6 +4971,7 @@
 include ./$(DEPDIR)/oldstat.Po
 include ./$(DEPDIR)/open.Po
 include ./$(DEPDIR)/openat.Po
+include ./$(DEPDIR)/osf_utimes.Po
 include ./$(DEPDIR)/pause.Po
 include ./$(DEPDIR)/pc.Po
 include ./$(DEPDIR)/perf_event_open.Po
@@ -4685,6 +4984,7 @@
 include ./$(DEPDIR)/pkey_free.Po
 include ./$(DEPDIR)/pkey_mprotect.Po
 include ./$(DEPDIR)/poll.Po
+include ./$(DEPDIR)/ppoll-v.Po
 include ./$(DEPDIR)/ppoll.Po
 include ./$(DEPDIR)/prctl-arg2-intptr.Po
 include ./$(DEPDIR)/prctl-dumpable.Po
@@ -4738,6 +5038,7 @@
 include ./$(DEPDIR)/rt_sigpending.Po
 include ./$(DEPDIR)/rt_sigprocmask.Po
 include ./$(DEPDIR)/rt_sigqueueinfo.Po
+include ./$(DEPDIR)/rt_sigreturn.Po
 include ./$(DEPDIR)/rt_sigsuspend.Po
 include ./$(DEPDIR)/rt_sigtimedwait.Po
 include ./$(DEPDIR)/rt_tgsigqueueinfo.Po
@@ -4788,6 +5089,7 @@
 include ./$(DEPDIR)/signal_receive.Po
 include ./$(DEPDIR)/signalfd4.Po
 include ./$(DEPDIR)/sigreturn.Po
+include ./$(DEPDIR)/sigsuspend.Po
 include ./$(DEPDIR)/sleep.Po
 include ./$(DEPDIR)/socketcall.Po
 include ./$(DEPDIR)/splice.Po
@@ -4800,7 +5102,9 @@
 include ./$(DEPDIR)/stat64-stat64.Po
 include ./$(DEPDIR)/statfs-statfs.Po
 include ./$(DEPDIR)/statfs64.Po
+include ./$(DEPDIR)/statx.Po
 include ./$(DEPDIR)/swap.Po
+include ./$(DEPDIR)/sxetmask.Po
 include ./$(DEPDIR)/symlink.Po
 include ./$(DEPDIR)/symlinkat.Po
 include ./$(DEPDIR)/sync.Po
@@ -4925,6 +5229,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
 
+libtests_a-get_sigset_size.o: get_sigset_size.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+#	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+#	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+
 libtests_a-hexdump_strdup.o: hexdump_strdup.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
@@ -5037,6 +5355,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
 
+libtests_a-print_time.o: print_time.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+#	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+#	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+
 libtests_a-printflags.o: printflags.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
@@ -5079,6 +5411,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
 
+libtests_a-skip_unavailable.o: skip_unavailable.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+#	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+#	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+
 libtests_a-sprintrc.o: sprintrc.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
@@ -5603,7 +5949,7 @@
 clean: clean-am
 
 clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	mostlyclean-am
+	clean-local mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
 .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
 	check-valgrind-am check-valgrind-local clean \
 	clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
 	uninstall uninstall-am
 
 
+$(srcdir)/_newselect.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) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.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_loop.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_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.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) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.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) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.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)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.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) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.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) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.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) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/select.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) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.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) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 
 # Valgrind check
 #
@@ -5786,6 +7095,11 @@
 ksysent.$(OBJEXT): ksysent.h
 $(objects): scno.h
 
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+	-rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
 syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
 	$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
 
diff --git a/tests-m32/Makefile.am b/tests-m32/Makefile.am
deleted file mode 100644
index 8d10878..0000000
--- a/tests-m32/Makefile.am
+++ /dev/null
@@ -1,962 +0,0 @@
-# Automake input for strace tests.
-#
-# Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-OS = linux
-ARCH = @arch_m32@
-MPERS_NAME = m32
-ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) -m32
-AM_CFLAGS = $(WARN_CFLAGS)
-AM_CPPFLAGS = $(ARCH_MFLAGS) \
-	      -I$(builddir) \
-	      -I$(top_builddir)/$(OS)/$(ARCH) \
-	      -I$(top_srcdir)/$(OS)/$(ARCH) \
-	      -I$(top_builddir)/$(OS) \
-	      -I$(top_srcdir)/$(OS) \
-	      -I$(top_builddir) \
-	      -I$(top_srcdir)
-AM_LDFLAGS = $(ARCH_MFLAGS)
-
-libtests_a_SOURCES = \
-	errno2name.c \
-	error_msg.c \
-	fill_memory.c \
-	get_page_size.c \
-	hexdump_strdup.c \
-	hexquote_strndup.c \
-	inode_of_sockfd.c \
-	libmmsg.c \
-	libsocketcall.c \
-	overflowuid.c \
-	pipe_maxfd.c \
-	print_quoted_string.c \
-	printflags.c \
-	printxval.c \
-	signal2name.c \
-	sprintrc.c \
-	tail_alloc.c \
-	tests.h \
-	tprintf.c \
-	# end of libtests_a_SOURCES
-libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-check_LIBRARIES = libtests.a
-LDADD = libtests.a
-
-check_PROGRAMS = \
-	_newselect \
-	accept \
-	accept4 \
-	access \
-	acct \
-	add_key \
-	adjtimex \
-	aio \
-	alarm \
-	answer \
-	attach-f-p \
-	attach-f-p-cmd \
-	attach-p-cmd-cmd \
-	attach-p-cmd-p \
-	bpf \
-	brk \
-	btrfs \
-	caps \
-	caps-abbrev \
-	chmod \
-	chown \
-	chown32 \
-	chroot \
-	clock_adjtime \
-	clock_nanosleep \
-	clock_xettime \
-	copy_file_range \
-	count-f \
-	creat \
-	delete_module \
-	dup \
-	dup2 \
-	dup3 \
-	epoll_create \
-	epoll_create1 \
-	epoll_ctl \
-	epoll_pwait \
-	epoll_wait \
-	erestartsys \
-	eventfd \
-	execve \
-	execve-v \
-	execveat \
-	execveat-v \
-	faccessat \
-	fadvise64 \
-	fadvise64_64 \
-	fallocate \
-	fanotify_init \
-	fanotify_mark \
-	fchdir \
-	fchmod \
-	fchmodat \
-	fchown \
-	fchown32 \
-	fchownat \
-	fcntl \
-	fcntl64 \
-	fdatasync \
-	file_handle \
-	file_ioctl \
-	filter-unavailable \
-	finit_module \
-	flock \
-	fork-f \
-	fstat \
-	fstat64 \
-	fstatat64 \
-	fstatfs \
-	fstatfs64 \
-	fsync \
-	ftruncate \
-	ftruncate64 \
-	futex \
-	futimesat \
-	get_mempolicy \
-	getcpu \
-	getcwd \
-	getdents \
-	getdents64 \
-	getegid \
-	getegid32 \
-	geteuid \
-	geteuid32 \
-	getgid \
-	getgid32 \
-	getgroups \
-	getgroups32 \
-	getpeername \
-	getpgrp \
-	getrandom \
-	getresgid \
-	getresgid32 \
-	getresuid \
-	getresuid32 \
-	getrlimit \
-	getrusage \
-	getsid \
-	getsockname \
-	getuid \
-	getuid32 \
-	getxxid \
-	inet-cmsg \
-	init_module \
-	inotify \
-	inotify_init1 \
-	ioctl \
-	ioctl_block \
-	ioctl_dm \
-	ioctl_dm-v \
-	ioctl_evdev \
-	ioctl_evdev-v \
-	ioctl_loop \
-	ioctl_loop-nv \
-	ioctl_loop-v \
-	ioctl_mtd \
-	ioctl_rtc \
-	ioctl_rtc-v \
-	ioctl_scsi \
-	ioctl_sg_io_v3 \
-	ioctl_sg_io_v4 \
-	ioctl_sock_gifconf \
-	ioctl_uffdio \
-	ioctl_v4l2 \
-	ioperm \
-	iopl \
-	ioprio \
-	ip_mreq \
-	ipc \
-	ipc_msg \
-	ipc_msgbuf \
-	ipc_sem \
-	ipc_shm \
-	kcmp \
-	kexec_file_load \
-	kexec_load \
-	keyctl \
-	kill \
-	ksysent \
-	lchown \
-	lchown32 \
-	link \
-	linkat \
-	llseek \
-	lookup_dcookie \
-	lseek \
-	lstat \
-	lstat64 \
-	mbind \
-	membarrier \
-	memfd_create \
-	migrate_pages \
-	mincore \
-	mkdir \
-	mkdirat \
-	mknod \
-	mknodat \
-	mlock \
-	mlock2 \
-	mlockall \
-	mmap \
-	mmap64 \
-	mmsg \
-	mmsg-silent \
-	mmsg_name \
-	mmsg_name-v \
-	mount \
-	move_pages \
-	mq \
-	mq_sendrecv \
-	mq_sendrecv-read \
-	mq_sendrecv-write \
-	msg_control \
-	msg_control-v \
-	msg_name \
-	munlockall \
-	nanosleep \
-	net-accept-connect \
-	net-icmp_filter \
-	net-sockaddr \
-	net-y-unix \
-	net-yy-inet \
-	net-yy-netlink \
-	net-yy-unix \
-	netlink_inet_diag \
-	netlink_netlink_diag \
-	netlink_protocol \
-	netlink_unix_diag \
-	newfstatat \
-	nsyscalls \
-	old_mmap \
-	oldfstat \
-	oldlstat \
-	oldselect \
-	oldstat \
-	open \
-	openat \
-	pause \
-	pc \
-	perf_event_open \
-	perf_event_open_nonverbose \
-	perf_event_open_unabbrev \
-	personality \
-	pipe \
-	pipe2 \
-	pkey_alloc \
-	pkey_free \
-	pkey_mprotect \
-	poll \
-	ppoll \
-	prctl-arg2-intptr \
-	prctl-dumpable \
-	prctl-name \
-	prctl-no-args \
-	prctl-pdeathsig \
-	prctl-seccomp-filter-v \
-	prctl-seccomp-strict \
-	prctl-securebits \
-	prctl-tid_address \
-	prctl-tsc \
-	pread64-pwrite64 \
-	preadv \
-	preadv-pwritev \
-	preadv2-pwritev2 \
-	print_maxfd \
-	printstr \
-	prlimit64 \
-	process_vm_readv \
-	process_vm_writev \
-	pselect6 \
-	ptrace \
-	pwritev \
-	qual_fault \
-	qual_inject-error-signal \
-	qual_inject-retval \
-	qual_inject-signal \
-	qual_signal \
-	quotactl \
-	quotactl-v \
-	quotactl-xfs \
-	quotactl-xfs-v \
-	read-write \
-	readahead \
-	readdir \
-	readlink \
-	readlinkat \
-	readv \
-	reboot \
-	recvfrom \
-	recvmmsg-timeout \
-	recvmsg \
-	redirect-fds \
-	remap_file_pages \
-	rename \
-	renameat \
-	renameat2 \
-	request_key \
-	restart_syscall \
-	rmdir \
-	rt_sigpending \
-	rt_sigprocmask \
-	rt_sigqueueinfo \
-	rt_sigsuspend \
-	rt_sigtimedwait \
-	rt_tgsigqueueinfo \
-	sched_get_priority_mxx \
-	sched_rr_get_interval \
-	sched_xetaffinity \
-	sched_xetattr \
-	sched_xetparam \
-	sched_xetscheduler \
-	sched_yield \
-	scm_rights \
-	seccomp-filter \
-	seccomp-filter-v \
-	seccomp-strict \
-	select \
-	semop \
-	sendfile \
-	sendfile64 \
-	set_mempolicy \
-	set_ptracer_any \
-	setdomainname \
-	setfsgid \
-	setfsgid32 \
-	setfsuid \
-	setfsuid32 \
-	setgid \
-	setgid32 \
-	setgroups \
-	setgroups32 \
-	sethostname \
-	setns \
-	setregid \
-	setregid32 \
-	setresgid \
-	setresgid32 \
-	setresuid \
-	setresuid32 \
-	setreuid \
-	setreuid32 \
-	setrlimit \
-	setuid \
-	setuid32 \
-	shmxt \
-	shutdown \
-	sigaction \
-	sigaltstack \
-	siginfo \
-	signal_receive \
-	signalfd4 \
-	sigreturn \
-	sleep \
-	socketcall \
-	splice \
-	stack-fcall \
-	stat \
-	stat64 \
-	statfs \
-	statfs64 \
-	swap \
-	symlink \
-	symlinkat \
-	sync \
-	sync_file_range \
-	sync_file_range2 \
-	sysinfo \
-	syslog \
-	tee \
-	threads-execve \
-	time \
-	timer_create \
-	timer_xettime \
-	timerfd_xettime \
-	times \
-	times-fail \
-	truncate \
-	truncate64 \
-	ugetrlimit \
-	uio \
-	umask \
-	umount \
-	umount2 \
-	umoven-illptr \
-	umovestr \
-	umovestr-illptr \
-	umovestr2 \
-	umovestr3 \
-	uname \
-	unix-pair-send-recv \
-	unix-pair-sendto-recvfrom \
-	unlink \
-	unlinkat \
-	unshare \
-	userfaultfd \
-	ustat \
-	utime \
-	utimensat \
-	utimes \
-	vfork-f \
-	vhangup \
-	vmsplice \
-	wait4 \
-	wait4-v \
-	waitid \
-	waitid-v \
-	waitpid \
-	xattr \
-	xattr-strings \
-	xet_robust_list \
-	xetitimer \
-	xetpgid \
-	xetpriority \
-	xettimeofday \
-	# end of check_PROGRAMS
-
-attach_f_p_LDADD = -lrt -lpthread $(LDADD)
-clock_xettime_LDADD = -lrt $(LDADD)
-count_f_LDADD = -lpthread $(LDADD)
-filter_unavailable_LDADD = -lpthread $(LDADD)
-fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-mq_LDADD = -lrt $(LDADD)
-mq_sendrecv_LDADD = -lrt $(LDADD)
-mq_sendrecv_read_LDADD = -lrt $(LDADD)
-mq_sendrecv_write_LDADD = -lrt $(LDADD)
-newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-pc_LDADD = $(dl_LIBS) $(LDADD)
-pread64_pwrite64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-preadv_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-threads_execve_LDADD = -lrt -lpthread $(LDADD)
-times_LDADD = -lrt $(LDADD)
-truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-
-stack_fcall_SOURCES = stack-fcall.c \
-	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-
-if USE_LIBUNWIND
-LIBUNWIND_TESTS = strace-k.test
-else
-LIBUNWIND_TESTS =
-endif
-
-DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
-	brk.test \
-	btrfs-v.test \
-	btrfs-vw.test \
-	btrfs-w.test \
-	btrfs.test \
-	caps-abbrev.test \
-	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
-	eventfd.test \
-	execve-v.test \
-	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
-	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
-	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
-	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
-	ioctl.test \
-	ioctl_block.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
-	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
-	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
-	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
-	llseek.test \
-	lookup_dcookie.test \
-	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
-	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
-	net-y-unix.test \
-	net-yy-inet.test \
-	net-yy-netlink.test \
-	net-yy-unix.test \
-	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
-	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
-	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
-	personality.test \
-	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
-	poll.test \
-	ppoll.test \
-	prctl-arg2-intptr.test \
-	prctl-dumpable.test \
-	prctl-name.test \
-	prctl-no-args.test \
-	prctl-pdeathsig.test \
-	prctl-seccomp-filter-v.test \
-	prctl-seccomp-strict.test \
-	prctl-securebits.test \
-	prctl-tid_address.test \
-	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
-	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
-	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
-	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
-	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
-	sigaction.test \
-	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
-	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
-	uio.test \
-	umask.test \
-	umount.test \
-	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
-	umovestr.test \
-	umovestr2.test \
-	umovestr3.test \
-	uname.test \
-	unix-pair-send-recv.test \
-	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
-	# end of DECODER_TESTS
-
-MISC_TESTS = \
-	attach-f-p.test \
-	attach-p-cmd.test \
-	bexecve.test \
-	count-f.test \
-	count.test \
-	detach-running.test \
-	detach-sleeping.test \
-	detach-stopped.test \
-	filter-unavailable.test \
-	fork-f.test \
-	ksysent.test \
-	opipe.test \
-	options-syntax.test \
-	pc.test \
-	qual_fault-syntax.test \
-	qual_fault.test \
-	qual_inject-error-signal.test \
-	qual_inject-retval.test \
-	qual_inject-signal.test \
-	qual_inject-syntax.test \
-	qual_signal.test \
-	qual_syscall.test \
-	redirect-fds.test \
-	redirect.test \
-	restart_syscall.test \
-	signal_receive.test \
-	strace-C.test \
-	strace-E.test \
-	strace-S.test \
-	strace-T.test \
-	strace-V.test \
-	strace-ff.test \
-	strace-r.test \
-	strace-t.test \
-	strace-tt.test \
-	strace-ttt.test \
-	threads-execve.test \
-	vfork-f.test \
-	# end of MISC_TESTS
-
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(LIBUNWIND_TESTS)
-
-XFAIL_TESTS_ =
-XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
-
-TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
-
-@VALGRIND_CHECK_RULES@
-VALGRIND_FLAGS = --quiet
-VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
-
-ksysent.h: $(srcdir)/ksysent.sed
-	echo '#include <asm/unistd.h>' | \
-		$(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM - > $@.t1
-	LC_COLLATE=C sed -r -n -f $(srcdir)/ksysent.sed < $@.t1 > $@.t2
-	mv -f $@.t2 $@
-	rm -f $@.t1
-
-ksysent.$(OBJEXT): ksysent.h
-
-objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-$(objects): scno.h
-
-CLEANFILES = ksysent.h $(TESTS:=.tmp)
-
-include ../scno.am
diff --git a/tests-m32/Makefile.in b/tests-m32/Makefile.in
index 77d11da..3d7d2a5 100644
--- a/tests-m32/Makefile.in
+++ b/tests-m32/Makefile.in
@@ -17,6 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
-	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
-	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
-	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
-	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
-	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
-	chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
-	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
-	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
-	count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-	dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
-	epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
-	epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
-	execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
-	execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
-	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
-	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
-	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
-	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
-	file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
-	finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
-	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
-	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
-	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
-	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
-	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
-	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
-	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
-	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
-	getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
-	getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
-	getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
-	getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
-	getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
-	inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
-	ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
-	ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
-	ioctl_rtc-v$(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) ipc_msg$(EXEEXT) \
-	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
-	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
-	keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
-	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
-	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
-	lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
-	membarrier$(EXEEXT) memfd_create$(EXEEXT) \
-	migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
-	mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
-	mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
-	mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
-	mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
-	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
-	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
-	msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
-	munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-accept-connect$(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_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
-	netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
-	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
-	pc$(EXEEXT) perf_event_open$(EXEEXT) \
-	perf_event_open_nonverbose$(EXEEXT) \
-	perf_event_open_unabbrev$(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-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
-	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
-	print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
-	process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
-	pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
-	qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
-	qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
-	qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
-	quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
-	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
-	readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
-	reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
-	recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
-	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) \
-	restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
-	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
-	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
-	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
-	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
-	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
-	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
-	scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
-	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
-	sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
-	setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
-	setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
-	setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
-	setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
-	setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
-	setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
-	setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
-	shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
-	sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
-	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
-	stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-	statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
-	symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
-	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-	tee$(EXEEXT) threads-execve$(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) unix-pair-send-recv$(EXEEXT) \
-	unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
-	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-	utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
-	vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
-	waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
-	xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
-DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+	$(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) caps-abbrev$(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) ksysent$(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) \
+	perf_event_open_nonverbose$(EXEEXT) \
+	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+	print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+	qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+	qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+	quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+	scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+	seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+	wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+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 \
@@ -300,6 +191,7 @@
 	libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
+	libtests_a-get_sigset_size.$(OBJEXT) \
 	libtests_a-hexdump_strdup.$(OBJEXT) \
 	libtests_a-hexquote_strndup.$(OBJEXT) \
 	libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
 	libtests_a-overflowuid.$(OBJEXT) \
 	libtests_a-pipe_maxfd.$(OBJEXT) \
 	libtests_a-print_quoted_string.$(OBJEXT) \
+	libtests_a-print_time.$(OBJEXT) \
 	libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
-	libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
-	libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+	libtests_a-signal2name.$(OBJEXT) \
+	libtests_a-skip_unavailable.$(OBJEXT) \
+	libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+	libtests_a-tprintf.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+	chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) creat$(EXEEXT) \
+	delete_module$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) \
+	dup3$(EXEEXT) epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
+	epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
+	erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
+	execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+	file_ioctl$(EXEEXT) finit_module$(EXEEXT) flock$(EXEEXT) \
+	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+	getpgrp$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
+	getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+	getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+	getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+	getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(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_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) ipc_msg$(EXEEXT) \
+	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+	keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+	lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(EXEEXT) \
+	mbind$(EXEEXT) membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+	migrate_pages$(EXEEXT) mincore$(EXEEXT) 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) \
+	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+	netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+	old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+	oldselect$(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) \
+	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+	printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+	process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+	pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+	readlink$(EXEEXT) 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) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+	rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(EXEEXT) \
+	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+	seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+	sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+	setdomainname$(EXEEXT) setfsgid$(EXEEXT) setfsgid32$(EXEEXT) \
+	setfsuid$(EXEEXT) setfsuid32$(EXEEXT) setgid$(EXEEXT) \
+	setgid32$(EXEEXT) setgroups$(EXEEXT) setgroups32$(EXEEXT) \
+	sethostname$(EXEEXT) setns$(EXEEXT) setregid$(EXEEXT) \
+	setregid32$(EXEEXT) setresgid$(EXEEXT) setresgid32$(EXEEXT) \
+	setresuid$(EXEEXT) setresuid32$(EXEEXT) setreuid$(EXEEXT) \
+	setreuid32$(EXEEXT) setrlimit$(EXEEXT) setuid$(EXEEXT) \
+	setuid32$(EXEEXT) shmxt$(EXEEXT) shutdown$(EXEEXT) \
+	sigaction$(EXEEXT) sigaltstack$(EXEEXT) siginfo$(EXEEXT) \
+	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(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) \
+	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+	xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
 getrandom_SOURCES = getrandom.c
 getrandom_OBJECTS = getrandom.$(OBJEXT)
 getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
 getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
 ioctl_SOURCES = ioctl.c
 ioctl_OBJECTS = ioctl.$(OBJEXT)
 ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
 ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
 ioctl_mtd_LDADD = $(LDADD)
 ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
 ioctl_rtc_SOURCES = ioctl_rtc.c
 ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
 ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
 lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
 lstat64_LDADD = $(LDADD)
 lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
 pause_SOURCES = pause.c
 pause_OBJECTS = pause.$(OBJEXT)
 pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
 prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
 prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
 prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
 rt_sigsuspend_SOURCES = rt_sigsuspend.c
 rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
 rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
 sigreturn_OBJECTS = sigreturn.$(OBJEXT)
 sigreturn_LDADD = $(LDADD)
 sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
 sleep_SOURCES = sleep.c
 sleep_OBJECTS = sleep.$(OBJEXT)
 sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
 swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
 symlink_SOURCES = symlink.c
 symlink_OBJECTS = symlink.$(OBJEXT)
 symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@USE_LIBUNWIND_TRUE@am__EXEEXT_1 = strace-k.test
+@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2253,6 +2317,7 @@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
 CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
 CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
@@ -2389,6 +2454,7 @@
 	error_msg.c \
 	fill_memory.c \
 	get_page_size.c \
+	get_sigset_size.c \
 	hexdump_strdup.c \
 	hexquote_strndup.c \
 	inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
 	overflowuid.c \
 	pipe_maxfd.c \
 	print_quoted_string.c \
+	print_time.c \
 	printflags.c \
 	printxval.c \
 	signal2name.c \
+	skip_unavailable.c \
 	sprintrc.c \
 	tail_alloc.c \
 	tests.h \
@@ -2409,6 +2477,340 @@
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
 LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+  _newselect \
+  accept \
+  accept4 \
+  access \
+  acct \
+  add_key \
+  adjtimex \
+  aio \
+  alarm \
+  bpf \
+  brk \
+  btrfs \
+  caps \
+  chmod \
+  chown \
+  chown32 \
+  chroot \
+  clock_adjtime \
+  clock_nanosleep \
+  clock_xettime \
+  copy_file_range \
+  creat \
+  delete_module \
+  dup \
+  dup2 \
+  dup3 \
+  epoll_create \
+  epoll_create1 \
+  epoll_ctl \
+  epoll_pwait \
+  epoll_wait \
+  erestartsys \
+  eventfd \
+  execve \
+  execveat \
+  faccessat \
+  fadvise64 \
+  fadvise64_64 \
+  fallocate \
+  fanotify_init \
+  fanotify_mark \
+  fchdir \
+  fchmod \
+  fchmodat \
+  fchown \
+  fchown32 \
+  fchownat \
+  fcntl \
+  fcntl64 \
+  fdatasync \
+  file_handle \
+  file_ioctl \
+  finit_module \
+  flock \
+  fstat \
+  fstat64 \
+  fstatat64 \
+  fstatfs \
+  fstatfs64 \
+  fsync \
+  ftruncate \
+  ftruncate64 \
+  futex \
+  futimesat \
+  get_mempolicy \
+  getcpu \
+  getcwd \
+  getdents \
+  getdents64 \
+  getegid \
+  getegid32 \
+  geteuid \
+  geteuid32 \
+  getgid \
+  getgid32 \
+  getgroups \
+  getgroups32 \
+  getpeername \
+  getpgrp \
+  getpid \
+  getppid \
+  getrandom \
+  getresgid \
+  getresgid32 \
+  getresuid \
+  getresuid32 \
+  getrlimit \
+  getrusage \
+  getsid \
+  getsockname \
+  getuid \
+  getuid32 \
+  getxxid \
+  inet-cmsg \
+  init_module \
+  inotify \
+  inotify_init1 \
+  ioctl \
+  ioctl_block \
+  ioctl_dm \
+  ioctl_evdev \
+  ioctl_loop \
+  ioctl_mtd \
+  ioctl_rtc \
+  ioctl_scsi \
+  ioctl_sg_io_v3 \
+  ioctl_sg_io_v4 \
+  ioctl_sock_gifconf \
+  ioctl_uffdio \
+  ioctl_v4l2 \
+  ioperm \
+  iopl \
+  ioprio \
+  ip_mreq \
+  ipc \
+  ipc_msg \
+  ipc_msgbuf \
+  ipc_sem \
+  ipc_shm \
+  kcmp \
+  kexec_file_load \
+  kexec_load \
+  keyctl \
+  kill \
+  lchown \
+  lchown32 \
+  link \
+  linkat \
+  llseek \
+  lookup_dcookie \
+  lseek \
+  lstat \
+  lstat64 \
+  madvise \
+  mbind \
+  membarrier \
+  memfd_create \
+  migrate_pages \
+  mincore \
+  mkdir \
+  mkdirat \
+  mknod \
+  mknodat \
+  mlock \
+  mlock2 \
+  mlockall \
+  mmap \
+  mmap64 \
+  mmsg \
+  mmsg_name \
+  mount \
+  move_pages \
+  mq \
+  mq_sendrecv \
+  mq_sendrecv-read \
+  mq_sendrecv-write \
+  msg_control \
+  msg_name \
+  munlockall \
+  nanosleep \
+  net-icmp_filter \
+  net-sockaddr \
+  net-y-unix \
+  net-yy-inet \
+  net-yy-netlink \
+  net-yy-unix \
+  netlink_protocol \
+  newfstatat \
+  old_mmap \
+  oldfstat \
+  oldlstat \
+  oldselect \
+  oldstat \
+  open \
+  openat \
+  osf_utimes \
+  pause \
+  perf_event_open \
+  personality \
+  pipe \
+  pipe2 \
+  pkey_alloc \
+  pkey_free \
+  pkey_mprotect \
+  poll \
+  ppoll \
+  prctl-arg2-intptr \
+  prctl-dumpable \
+  prctl-name \
+  prctl-no-args \
+  prctl-pdeathsig \
+  prctl-securebits \
+  prctl-tid_address \
+  prctl-tsc \
+  pread64-pwrite64 \
+  preadv \
+  preadv-pwritev \
+  preadv2-pwritev2 \
+  printstr \
+  prlimit64 \
+  process_vm_readv \
+  process_vm_writev \
+  pselect6 \
+  ptrace \
+  pwritev \
+  quotactl \
+  quotactl-xfs \
+  read-write \
+  readahead \
+  readdir \
+  readlink \
+  readlinkat \
+  readv \
+  reboot \
+  recvfrom \
+  recvmmsg-timeout \
+  recvmsg \
+  remap_file_pages \
+  rename \
+  renameat \
+  renameat2 \
+  request_key \
+  rmdir \
+  rt_sigpending \
+  rt_sigprocmask \
+  rt_sigqueueinfo \
+  rt_sigreturn \
+  rt_sigsuspend \
+  rt_sigtimedwait \
+  rt_tgsigqueueinfo \
+  sched_get_priority_mxx \
+  sched_rr_get_interval \
+  sched_xetaffinity \
+  sched_xetattr \
+  sched_xetparam \
+  sched_xetscheduler \
+  sched_yield \
+  seccomp-filter \
+  select \
+  semop \
+  sendfile \
+  sendfile64 \
+  set_mempolicy \
+  setdomainname \
+  setfsgid \
+  setfsgid32 \
+  setfsuid \
+  setfsuid32 \
+  setgid \
+  setgid32 \
+  setgroups \
+  setgroups32 \
+  sethostname \
+  setns \
+  setregid \
+  setregid32 \
+  setresgid \
+  setresgid32 \
+  setresuid \
+  setresuid32 \
+  setreuid \
+  setreuid32 \
+  setrlimit \
+  setuid \
+  setuid32 \
+  shmxt \
+  shutdown \
+  sigaction \
+  sigaltstack \
+  siginfo \
+  signalfd4 \
+  sigreturn \
+  sigsuspend \
+  socketcall \
+  splice \
+  stat \
+  stat64 \
+  statfs \
+  statfs64 \
+  statx \
+  swap \
+  sxetmask \
+  symlink \
+  symlinkat \
+  sync \
+  sync_file_range \
+  sync_file_range2 \
+  sysinfo \
+  syslog \
+  tee \
+  time \
+  timer_create \
+  timer_xettime \
+  timerfd_xettime \
+  times \
+  times-fail \
+  truncate \
+  truncate64 \
+  ugetrlimit \
+  uio \
+  umask \
+  umount \
+  umount2 \
+  umoven-illptr \
+  umovestr \
+  umovestr-illptr \
+  umovestr2 \
+  umovestr3 \
+  uname \
+  unlink \
+  unlinkat \
+  unshare \
+  userfaultfd \
+  ustat \
+  utime \
+  utimensat \
+  utimes \
+  vhangup \
+  vmsplice \
+  wait4 \
+  waitid \
+  waitpid \
+  xattr \
+  xattr-strings \
+  xet_robust_list \
+  xetitimer \
+  xetpgid \
+  xetpriority \
+  xettimeofday \
+  #
+
 attach_f_p_LDADD = -lrt -lpthread $(LDADD)
 clock_xettime_LDADD = -lrt $(LDADD)
 count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-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 \
+	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 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 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_protocol.gen.test \
+	newfstatat.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 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 \
+	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 \
+	siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+	sigreturn.gen.test sigsuspend.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
 @USE_LIBUNWIND_FALSE@LIBUNWIND_TESTS = 
 @USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test
 DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
 	brk.test \
 	btrfs-v.test \
 	btrfs-vw.test \
 	btrfs-w.test \
-	btrfs.test \
 	caps-abbrev.test \
 	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
 	eventfd.test \
 	execve-v.test \
 	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
 	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
 	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
 	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
 	ioctl.test \
-	ioctl_block.test \
 	ioctl_dm-v.test \
 	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
 	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
+	ioctl_nsfs.test \
 	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
 	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
 	llseek.test \
-	lookup_dcookie.test \
 	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
 	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
 	net-y-unix.test \
 	net-yy-inet.test \
 	net-yy-netlink.test \
 	net-yy-unix.test \
 	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
 	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
 	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
 	personality.test \
 	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
 	poll.test \
-	ppoll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
 	prctl-name.test \
@@ -2650,148 +3002,21 @@
 	prctl-securebits.test \
 	prctl-tid_address.test \
 	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
 	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
 	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
 	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
 	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
 	sigaction.test \
 	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
 	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
 	uio.test \
-	umask.test \
 	umount.test \
 	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
 	umovestr.test \
 	umovestr2.test \
-	umovestr3.test \
 	uname.test \
 	unix-pair-send-recv.test \
 	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
 	# end of DECODER_TESTS
 
 MISC_TESTS = \
@@ -2804,7 +3029,7 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
-	fork-f.test \
+	get_regs.test \
 	ksysent.test \
 	opipe.test \
 	options-syntax.test \
@@ -2820,7 +3045,6 @@
 	redirect-fds.test \
 	redirect.test \
 	restart_syscall.test \
-	signal_receive.test \
 	strace-C.test \
 	strace-E.test \
 	strace-S.test \
@@ -2832,77 +3056,94 @@
 	strace-tt.test \
 	strace-ttt.test \
 	threads-execve.test \
-	vfork-f.test \
 	# end of MISC_TESTS
 
 XFAIL_TESTS_ = 
 XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
 XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+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
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
+EXTRA_DIST = \
+	caps-abbrev.awk \
+	caps.awk \
+	clock.in \
+	count-f.expected \
+	eventfd.expected \
+	fadvise.h \
+	filter-unavailable.expected \
+	fstatat.c \
+	fstatx.c \
+	gen_pure_executables.sh \
+	gen_tests.in \
+	gen_tests.sh \
+	getresugid.c \
+	init.sh \
+	init_delete_module.h \
+	ioctl-v.sh \
+	ipc.sh \
+	ipc_msgbuf.expected \
+	ksysent.sed \
+	lstatx.c \
+	match.awk \
+	net.expected \
+	oldselect.expected \
+	pipe.expected \
+	process_vm_readv_writev.c \
+	pure_executables.list \
+	qual_fault-exit_group.expected \
+	qual_inject-error-signal.expected \
+	qual_inject-signal.expected \
+	quotactl.h \
+	regex.in \
+	run.sh \
+	sched.in \
+	scno_tampering.sh \
+	setfsugid.c \
+	setresugid.c \
+	setreugid.c \
+	setugid.c \
+	sigaction.awk \
+	sigaltstack.expected \
+	sockname.c \
+	strace-C.expected \
+	strace-E.expected \
+	strace-T.expected \
+	strace-ff.expected \
+	strace-k.test \
+	strace-r.expected \
+	strace.supp \
+	struct_flock.c \
+	sun_path.expected \
+	trace_fstat.in \
+	trace_fstatfs.in \
+	trace_lstat.in \
+	trace_question.in \
+	trace_stat.in \
+	trace_stat_like.in \
+	trace_statfs.in \
+	trace_statfs_like.in \
+	uio.expected \
+	umode_t.c \
+	umovestr.expected \
+	unix-pair-send-recv.expected \
+	unix-pair-sendto-recvfrom.expected \
+	xchownx.c \
+	xgetrlimit.c \
+	xselect.c \
+	xstatfs.c \
+	xstatfs64.c \
+	xstatfsx.c \
+	xstatx.c \
+	xutimes.c \
+	$(TESTS)
 
 objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
 
@@ -2913,7 +3154,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -2934,7 +3175,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../scno.am:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
 	@rm -f getpgrp$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
+	@rm -f getpid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
+	@rm -f getppid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
 getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES) 
 	@rm -f getrandom$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
 	@rm -f getsockname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
 
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES) 
+	@rm -f gettid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
 	@rm -f getuid$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
 	@rm -f inotify_init1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
+	@rm -f int_0x80$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
 ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES) 
 	@rm -f ioctl$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
 	@rm -f ioctl_mtd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
 
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES) 
+	@rm -f ioctl_nsfs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_LDADD) $(LIBS)
+
 ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES) 
 	@rm -f ioctl_rtc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
@@ -3548,6 +3809,10 @@
 	@rm -f lstat64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
 
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES) 
+	@rm -f madvise$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
 	@rm -f mbind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
 	@rm -f openat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES) 
+	@rm -f osf_utimes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
 pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES) 
 	@rm -f pause$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_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)
+
 prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES) 
 	@rm -f prctl-arg2-intptr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
@@ -4004,6 +4277,10 @@
 	@rm -f rt_sigqueueinfo$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
+	@rm -f rt_sigreturn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
 rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES) 
 	@rm -f rt_sigsuspend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
@@ -4204,6 +4481,10 @@
 	@rm -f sigreturn$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
 
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES) 
+	@rm -f sigsuspend$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
 sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES) 
 	@rm -f sleep$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
 	@rm -f statfs64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
+	@rm -f statx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
 	@rm -f swap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
 
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES) 
+	@rm -f sxetmask$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
 symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES) 
 	@rm -f symlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid32.Po@am__quote@
@@ -4557,6 +4848,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxxid.Po@am__quote@
@@ -4564,6 +4856,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init_module.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_0x80.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@
@@ -4574,6 +4867,7 @@
 @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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_mtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_nsfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_scsi.Po@am__quote@
@@ -4603,6 +4897,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-get_page_size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-get_sigset_size.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexdump_strdup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@
@@ -4611,9 +4906,11 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printflags.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@
@@ -4624,6 +4921,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat64-lstat64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/madvise.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membarrier.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@
@@ -4673,6 +4971,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf_utimes.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pause.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perf_event_open.Po@am__quote@
@@ -4685,6 +4984,7 @@
 @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.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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-dumpable.Po@am__quote@
@@ -4738,6 +5038,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@
@@ -4788,6 +5089,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigreturn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigsuspend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socketcall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splice.Po@am__quote@
@@ -4800,7 +5102,9 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs-statfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sxetmask.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlinkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@
@@ -4925,6 +5229,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
 
+libtests_a-get_sigset_size.o: get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+
 libtests_a-hexdump_strdup.o: hexdump_strdup.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
@@ -5037,6 +5355,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
 
+libtests_a-print_time.o: print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+
 libtests_a-printflags.o: printflags.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
@@ -5079,6 +5411,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
 
+libtests_a-skip_unavailable.o: skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+
 libtests_a-sprintrc.o: sprintrc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
@@ -5603,7 +5949,7 @@
 clean: clean-am
 
 clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	mostlyclean-am
+	clean-local mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
 .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
 	check-valgrind-am check-valgrind-local clean \
 	clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
 	uninstall uninstall-am
 
 
+$(srcdir)/_newselect.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) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.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_loop.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_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.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) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.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) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.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)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.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) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.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) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.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) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/select.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) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.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) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 @VALGRIND_CHECK_RULES@
 
 ksysent.h: $(srcdir)/ksysent.sed
@@ -5700,6 +7009,11 @@
 ksysent.$(OBJEXT): ksysent.h
 $(objects): scno.h
 
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+	-rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
 syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
 	$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
 
diff --git a/tests-m32/_newselect.gen.test b/tests-m32/_newselect.gen.test
new file mode 100755
index 0000000..490abe4
--- /dev/null
+++ b/tests-m32/_newselect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/_newselect.test b/tests-m32/_newselect.test
deleted file mode 100755
index 3371d4d..0000000
--- a/tests-m32/_newselect.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check _newselect syscall decoding.
-
-. "${srcdir=.}/select.test"
diff --git a/tests-m32/accept.gen.test b/tests-m32/accept.gen.test
new file mode 100755
index 0000000..3ebba3b
--- /dev/null
+++ b/tests-m32/accept.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-m32/accept.test b/tests-m32/accept.test
deleted file mode 100755
index b5e0790..0000000
--- a/tests-m32/accept.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-m32/accept4.gen.test b/tests-m32/accept4.gen.test
new file mode 100755
index 0000000..5bd7fe6
--- /dev/null
+++ b/tests-m32/accept4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a37
diff --git a/tests-m32/accept4.test b/tests-m32/accept4.test
deleted file mode 100755
index 722f25a..0000000
--- a/tests-m32/accept4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests-m32/access.c b/tests-m32/access.c
index e6f169b..4420ba3 100644
--- a/tests-m32/access.c
+++ b/tests-m32/access.c
@@ -19,6 +19,7 @@
 	printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
 	       sample, rc, errno2name());
 
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests-m32/access.gen.test b/tests-m32/access.gen.test
new file mode 100755
index 0000000..7d80e6f
--- /dev/null
+++ b/tests-m32/access.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 -P access_sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P access_sample
diff --git a/tests-m32/access.test b/tests-m32/access.test
deleted file mode 100755
index 3ab2eb4..0000000
--- a/tests-m32/access.test
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-# Check access syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -eaccess -a30 $args > "$EXP"
-
-# Filter out access() calls made by libc.
-grep -F access_sample < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/acct.gen.test b/tests-m32/acct.gen.test
new file mode 100755
index 0000000..fa14e85
--- /dev/null
+++ b/tests-m32/acct.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-m32/acct.test b/tests-m32/acct.test
deleted file mode 100755
index b9bca75..0000000
--- a/tests-m32/acct.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check acct syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-m32/add_key.gen.test b/tests-m32/add_key.gen.test
new file mode 100755
index 0000000..d6ffbc8
--- /dev/null
+++ b/tests-m32/add_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (add_key -a30 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s12
diff --git a/tests-m32/add_key.test b/tests-m32/add_key.test
deleted file mode 100755
index eadd8c2..0000000
--- a/tests-m32/add_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of add_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -s12
diff --git a/tests-m32/adjtimex.c b/tests-m32/adjtimex.c
index 1638b53..4d68ea1 100644
--- a/tests-m32/adjtimex.c
+++ b/tests-m32/adjtimex.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of adjtimex strace test.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,38 +33,46 @@
 #include <string.h>
 #include <sys/timex.h>
 
+#include "xlat.h"
+#include "xlat/adjtimex_state.h"
+#include "xlat/adjtimex_status.h"
+
 int
 main(void)
 {
-	adjtimex(NULL);
-	printf("adjtimex\\(NULL\\) = -1 EFAULT \\(%m\\)\n");
+	int state = adjtimex(NULL);
+	printf("adjtimex(NULL) = %s\n", sprintrc(state));
 
-	struct timex * const tx = tail_alloc(sizeof(*tx));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timex, tx);
 	memset(tx, 0, sizeof(*tx));
 
-	int state = adjtimex(tx);
+	state = adjtimex(tx);
 	if (state < 0)
 		perror_msg_and_skip("adjtimex");
 
-	printf("adjtimex\\(\\{modes=0, offset=%jd, freq=%jd, maxerror=%jd"
-	       ", esterror=%jd, status=%s, constant=%jd, precision=%jd"
-	       ", tolerance=%jd, time=\\{tv_sec=%jd, tv_usec=%jd\\}, tick=%jd, "
-	       "ppsfreq=%jd, jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd, "
-	       "calcnt=%jd, errcnt=%jd, stbcnt=%jd"
-#ifdef HAVE_STRUCT_TIMEX_TAI
-	       ", tai=%d"
-#endif
-	       "\\}\\) = %d \\(TIME_[A-Z]+\\)\n",
+	printf("adjtimex({modes=0, offset=%jd, freq=%jd, maxerror=%jd"
+	       ", esterror=%jd, status=",
 	       (intmax_t) tx->offset,
 	       (intmax_t) tx->freq,
 	       (intmax_t) tx->maxerror,
-	       (intmax_t) tx->esterror,
-	       tx->status ? "STA_[A-Z]+(\\|STA_[A-Z]+)*" : "0",
+	       (intmax_t) tx->esterror);
+	if (tx->status)
+		printflags(adjtimex_status, (unsigned int) tx->status, NULL);
+	else
+		putchar('0');
+	printf(", constant=%jd, precision=%jd"
+	       ", tolerance=%jd, time={tv_sec=%lld, tv_usec=%llu}, tick=%jd"
+	       ", ppsfreq=%jd, jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd"
+	       ", calcnt=%jd, errcnt=%jd, stbcnt=%jd"
+#ifdef HAVE_STRUCT_TIMEX_TAI
+	       ", tai=%d"
+#endif
+	       "}) = %d (",
 	       (intmax_t) tx->constant,
 	       (intmax_t) tx->precision,
 	       (intmax_t) tx->tolerance,
-	       (intmax_t) tx->time.tv_sec,
-	       (intmax_t) tx->time.tv_usec,
+	       (long long) tx->time.tv_sec,
+	       zero_extend_signed_to_ull(tx->time.tv_usec),
 	       (intmax_t) tx->tick,
 	       (intmax_t) tx->ppsfreq,
 	       (intmax_t) tx->jitter,
@@ -78,6 +86,9 @@
 	       tx->tai,
 #endif
 	       state);
+	printxval(adjtimex_state, (unsigned int) state, NULL);
+	puts(")");
 
+	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests-m32/adjtimex.gen.test b/tests-m32/adjtimex.gen.test
new file mode 100755
index 0000000..8db59f2
--- /dev/null
+++ b/tests-m32/adjtimex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-m32/adjtimex.test b/tests-m32/adjtimex.test
deleted file mode 100755
index 0140550..0000000
--- a/tests-m32/adjtimex.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check adjtimex syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a 15 -e adjtimex $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-m32/aio.c b/tests-m32/aio.c
index 0766d23..677a02b 100644
--- a/tests-m32/aio.c
+++ b/tests-m32/aio.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -198,15 +199,14 @@
 	};
 	const long *cbvs2 = tail_memdup(proto_cbvs2, sizeof(proto_cbvs2));
 
-	unsigned long *ctx = tail_alloc(sizeof(unsigned long));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned long, ctx);
 	*ctx = 0;
 
 	const unsigned int nr = ARRAY_SIZE(proto_cb);
 	const unsigned long lnr = (unsigned long) (0xdeadbeef00000000ULL | nr);
 
 	const struct io_event *ev = tail_alloc(nr * sizeof(struct io_event));
-	const struct timespec proto_ts = { .tv_nsec = 123456789 };
-	const struct timespec *ts = tail_memdup(&proto_ts, sizeof(proto_ts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
 
 	(void) close(0);
 	if (open("/dev/zero", O_RDONLY))
@@ -263,6 +263,24 @@
 	       bogus_ctx, (long) 0xca7faceddeadf00dLL,
 	       (long) 0xba5e1e505ca571e0LL, ts + 1, sprintrc(rc));
 
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+	printf("io_getevents(%#lx, 0, 0, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       bogus_ctx, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+	printf("io_getevents(%#lx, 0, 0, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       bogus_ctx, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = 0;
+	ts->tv_nsec = 123456789;
 	rc = syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts);
 	printf("io_getevents(%#lx, %ld, %ld, ["
 	       "{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}, "
diff --git a/tests-m32/aio.gen.test b/tests-m32/aio.gen.test
new file mode 100755
index 0000000..8c8cbd5
--- /dev/null
+++ b/tests-m32/aio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (aio -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
diff --git a/tests-m32/aio.test b/tests-m32/aio.test
deleted file mode 100755
index 2ba90da..0000000
--- a/tests-m32/aio.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check io_* syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=io_setup,io_submit,io_getevents,io_cancel,io_destroy
-run_strace_match_diff -a14 -e trace=$syscalls
diff --git a/tests-m32/alarm.gen.test b/tests-m32/alarm.gen.test
new file mode 100755
index 0000000..ba1dea8
--- /dev/null
+++ b/tests-m32/alarm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/alarm.test b/tests-m32/alarm.test
deleted file mode 100755
index 267b223..0000000
--- a/tests-m32/alarm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check alarm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-m32/attach-f-p-cmd.c b/tests-m32/attach-f-p-cmd.c
index 77594be..1e9ed99 100644
--- a/tests-m32/attach-f-p-cmd.c
+++ b/tests-m32/attach-f-p-cmd.c
@@ -2,6 +2,7 @@
  * This file is part of attach-f-p strace test.
  *
  * 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
@@ -34,6 +35,8 @@
 int
 main(void)
 {
+	skip_if_unavailable("/proc/self/task/");
+
 	static const char dir[] = "attach-f-p.test cmd";
 	pid_t pid = getpid();
 	int rc = chdir(dir);
diff --git a/tests-m32/attach-f-p.test b/tests-m32/attach-f-p.test
index f417074..368c775 100755
--- a/tests-m32/attach-f-p.test
+++ b/tests-m32/attach-f-p.test
@@ -3,6 +3,7 @@
 # Check that -f -p attaches to threads properly.
 #
 # 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,22 +30,17 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -f -p is implemented using /proc/$pid/task/
-[ -d /proc/self/task/ ] ||
-	framework_skip_ '/proc/self/task/ is not available'
 run_prog_skip_if_failed \
 	kill -0 $$
-run_prog ./attach-f-p-cmd > /dev/null
+run_prog ../attach-f-p-cmd > /dev/null
 
-rm -f "$OUT"
-./set_ptracer_any sh -c "exec ./attach-f-p >> $OUT" > /dev/null &
+../set_ptracer_any sh -c "exec ../attach-f-p >> $EXP" > /dev/null &
 tracee_pid=$!
 
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
 	kill -0 $tracee_pid 2> /dev/null ||
 		fail_ 'set_ptracer_any sh failed'
 done
 
-run_strace -a32 -f -echdir -p $tracee_pid ./attach-f-p-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a32 -f -echdir -p $tracee_pid ../attach-f-p-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-m32/attach-p-cmd.test b/tests-m32/attach-p-cmd.test
index 2068cf1..e7c1bfa 100755
--- a/tests-m32/attach-p-cmd.test
+++ b/tests-m32/attach-p-cmd.test
@@ -3,6 +3,7 @@
 # Check that simultaneous use of -p option and tracing of a command works.
 #
 # 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
@@ -32,16 +33,13 @@
 run_prog_skip_if_failed \
 	kill -0 $$
 
-rm -rf attach-p-cmd.test-lock
-rm -f "$OUT"
-./set_ptracer_any ./attach-p-cmd-p >> "$OUT" &
+../set_ptracer_any ../attach-p-cmd-p >> "$EXP" &
 tracee_pid=$!
 
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
 	kill -0 $tracee_pid 2> /dev/null ||
-		fail_ 'set_ptracer_any ./attach-p-cmd-p failed'
+		fail_ 'set_ptracer_any ../attach-p-cmd-p failed'
 done
 
-run_strace -a30 -echdir -p $tracee_pid ./attach-p-cmd-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a30 -echdir -p $tracee_pid ../attach-p-cmd-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-m32/bexecve.test b/tests-m32/bexecve.test
index f1ab04f..325330e 100755
--- a/tests-m32/bexecve.test
+++ b/tests-m32/bexecve.test
@@ -3,6 +3,7 @@
 # Check -bexecve behavior.
 #
 # Copyright (c) 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
@@ -35,14 +36,14 @@
 	$STRACE "$@" 2> "$LOG"
 }
 
-run_strace_redir -enone ./set_ptracer_any true ||
+run_strace_redir -enone ../set_ptracer_any true ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -enone ./set_ptracer_any false
+run_strace_redir -enone ../set_ptracer_any false
 [ $? -eq 1 ] ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -bexecve -enone ./set_ptracer_any false ||
+run_strace_redir -bexecve -enone ../set_ptracer_any false ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
 pattern_detached='[^:]*strace: Process [1-9][0-9]* detached'
diff --git a/tests-m32/bpf.c b/tests-m32/bpf.c
index 7ef16c9..40f96a7 100644
--- a/tests-m32/bpf.c
+++ b/tests-m32/bpf.c
@@ -109,14 +109,15 @@
 # endif
 
 /* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 static int
 prog_cgroup(int cmd)
 {
 	union bpf_attr attr = {
 		.target_fd = -1,
 		.attach_bpf_fd = -1,
-		.attach_type = 0
+		.attach_type = 0,
+		.attach_flags = 1
 	};
 	void *const t_attr = tail_memdup(&attr, sizeof(attr));
 	return sys_bpf(cmd, (unsigned long) t_attr, sizeof(attr));
@@ -205,11 +206,12 @@
 	BOGUS_BPF(BPF_OBJ_GET);
 # endif
 
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 	prog_cgroup(BPF_PROG_ATTACH);
 	printf("bpf(BPF_PROG_ATTACH"
 	       ", {target_fd=-1, attach_bpf_fd=-1"
-	       ", attach_type=BPF_CGROUP_INET_INGRESS}, %u) = %s\n",
+	       ", attach_type=BPF_CGROUP_INET_INGRESS"
+	       ", attach_flags=BPF_F_ALLOW_OVERRIDE}, %u) = %s\n",
 	       (unsigned) sizeof(union bpf_attr), errstr);
 	BOGUS_BPF(BPF_PROG_ATTACH);
 
diff --git a/tests-m32/bpf.gen.test b/tests-m32/bpf.gen.test
new file mode 100755
index 0000000..7ee9e7f
--- /dev/null
+++ b/tests-m32/bpf.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-m32/bpf.test b/tests-m32/bpf.test
deleted file mode 100755
index adf0d57..0000000
--- a/tests-m32/bpf.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check bpf syscall decoding.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a20
diff --git a/tests-m32/brk.test b/tests-m32/brk.test
index 8c0e2e4..3781220 100755
--- a/tests-m32/brk.test
+++ b/tests-m32/brk.test
@@ -7,4 +7,3 @@
 run_prog > /dev/null
 run_strace -a10 -ebrk $args > "$EXP"
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-m32/btrfs-v.test b/tests-m32/btrfs-v.test
index 1ee17b4..8cc2724 100755
--- a/tests-m32/btrfs-v.test
+++ b/tests-m32/btrfs-v.test
@@ -4,12 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./btrfs -v > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -v > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-m32/btrfs-vw.test b/tests-m32/btrfs-vw.test
index c7e40ad..913fba1 100755
--- a/tests-m32/btrfs-vw.test
+++ b/tests-m32/btrfs-vw.test
@@ -18,12 +18,8 @@
     skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
 fi
 
-run_prog ./btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-m32/btrfs-w.test b/tests-m32/btrfs-w.test
index 6238dca..031f0b8 100755
--- a/tests-m32/btrfs-w.test
+++ b/tests-m32/btrfs-w.test
@@ -18,12 +18,8 @@
     skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
 fi
 
-run_prog ./btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -eioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -eioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-m32/btrfs.c b/tests-m32/btrfs.c
index b3e23f8..7e5ccff 100644
--- a/tests-m32/btrfs.c
+++ b/tests-m32/btrfs.c
@@ -1548,9 +1548,9 @@
 			const char *name = xlookup(btrfs_dev_stats_values, i);
 			if (i)
 				printf(", ");
-			if (name)
-				printf("/* %s */ ", name);
 			printf("%" PRI__u64, args.values[i]);
+			if (name)
+				printf(" /* %s */", name);
 		}
 		printf("]}) = 0\n");
 	}
@@ -1799,13 +1799,13 @@
 		      &supported_features);
 		printf("ioctl(%d, BTRFS_IOC_GET_SUPPORTED_FEATURES, ",
 		       btrfs_test_dir_fd);
-		printf("[ /* supported */ ");
+		printf("[");
 		btrfs_print_features(&supported_features[0]);
-		printf(", /* safe to set */ ");
+		printf(" /* supported */, ");
 		btrfs_print_features(&supported_features[1]);
-		printf(", /* safe to clear */ ");
+		printf(" /* safe to set */, ");
 		btrfs_print_features(&supported_features[2]);
-		printf("]) = 0\n");
+		printf(" /* safe to clear */]) = 0\n");
 	}
 }
 
diff --git a/tests-m32/btrfs.gen.test b/tests-m32/btrfs.gen.test
new file mode 100755
index 0000000..a7118ef
--- /dev/null
+++ b/tests-m32/btrfs.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/btrfs.test b/tests-m32/btrfs.test
deleted file mode 100755
index 2121b5b..0000000
--- a/tests-m32/btrfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic btrfs ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/chmod.gen.test b/tests-m32/chmod.gen.test
new file mode 100755
index 0000000..438665a
--- /dev/null
+++ b/tests-m32/chmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-m32/chmod.test b/tests-m32/chmod.test
deleted file mode 100755
index 70e561a..0000000
--- a/tests-m32/chmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-m32/chown.gen.test b/tests-m32/chown.gen.test
new file mode 100755
index 0000000..46889a1
--- /dev/null
+++ b/tests-m32/chown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-m32/chown.test b/tests-m32/chown.test
deleted file mode 100755
index eb356ce..0000000
--- a/tests-m32/chown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-m32/chown32.gen.test b/tests-m32/chown32.gen.test
new file mode 100755
index 0000000..f0f603e
--- /dev/null
+++ b/tests-m32/chown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31
diff --git a/tests-m32/chown32.test b/tests-m32/chown32.test
deleted file mode 100755
index 0fa04c2..0000000
--- a/tests-m32/chown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests-m32/chroot.gen.test b/tests-m32/chroot.gen.test
new file mode 100755
index 0000000..6ea81dd
--- /dev/null
+++ b/tests-m32/chroot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-m32/chroot.test b/tests-m32/chroot.test
deleted file mode 100755
index 3b384f5..0000000
--- a/tests-m32/chroot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chroot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-m32/clock.gen.test b/tests-m32/clock.gen.test
new file mode 100755
index 0000000..b76eaf5
--- /dev/null
+++ b/tests-m32/clock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock test_trace_expr 'times|fcntl.*' -e/clock); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr 'times|fcntl.*' -e/clock
diff --git a/tests-m32/clock.in b/tests-m32/clock.in
new file mode 100755
index 0000000..864de29
--- /dev/null
+++ b/tests-m32/clock.in
@@ -0,0 +1,3 @@
+clock_adjtime	-a37
+clock_nanosleep
+clock_xettime	-a36
diff --git a/tests-m32/clock_adjtime.gen.test b/tests-m32/clock_adjtime.gen.test
new file mode 100755
index 0000000..735e3af
--- /dev/null
+++ b/tests-m32/clock_adjtime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/clock_adjtime.test b/tests-m32/clock_adjtime.test
deleted file mode 100755
index df2c060..0000000
--- a/tests-m32/clock_adjtime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_adjtime syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests-m32/clock_nanosleep.c b/tests-m32/clock_nanosleep.c
index 98407d7..72ac2e4 100644
--- a/tests-m32/clock_nanosleep.c
+++ b/tests-m32/clock_nanosleep.c
@@ -1,5 +1,8 @@
 /*
+ * Check decoding of clock_nanosleep and clock_gettime syscalls.
+ *
  * 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
@@ -62,9 +65,10 @@
 
 	if (syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0, &req.ts, NULL))
 		perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "NULL) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       NULL, &rem.ts) == -1);
@@ -73,52 +77,71 @@
 
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       &req.ts, &rem.ts) == 0);
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "%p) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	req.ts.tv_nsec = 999999999 + 1;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
 		       &req.ts, &rem.ts) == -1);
 	printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
-	       ", {tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = 0xdeadbeefU;
+	req.ts.tv_nsec = 0xfacefeedU;
+	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
+		       &req.ts, &rem.ts) == -1);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
+		       &req.ts, &rem.ts) == -1);
+	printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
 
 	if (setitimer(ITIMER_REAL, &itv, NULL))
 		perror_msg_and_skip("setitimer");
-	printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
-	       (intmax_t) itv.it_interval.tv_sec,
-	       (intmax_t) itv.it_interval.tv_usec,
-	       (intmax_t) itv.it_value.tv_sec,
-	       (intmax_t) itv.it_value.tv_usec);
 
-	--req.ts.tv_nsec;
+	req.ts.tv_sec = 0;
+	req.ts.tv_nsec = 999999999;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       &req.ts, &rem.ts) == -1);
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "{tv_sec=%jd, tv_nsec=%jd})"
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {tv_sec=%lld, tv_nsec=%llu})"
 	       " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
-	       (intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec),
+	       (long long) rem.ts.tv_sec,
+	       zero_extend_signed_to_ull(rem.ts.tv_nsec));
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	assert(syscall(__NR_clock_gettime, CLOCK_REALTIME, &req.ts) == 0);
-	printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	++req.ts.tv_sec;
 	rem.ts.tv_sec = 0xc0de4;
 	rem.ts.tv_nsec = 0xc0de5;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, TIMER_ABSTIME,
 		       &req.ts, &rem.ts) == -1);
-	printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, {tv_sec=%jd, "
-	       "tv_nsec=%jd}, %p)"
+	printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p)"
 	       " = ? ERESTARTNOHAND (To be restarted if no handler)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-m32/clock_nanosleep.gen.test b/tests-m32/clock_nanosleep.gen.test
new file mode 100755
index 0000000..7a6025b
--- /dev/null
+++ b/tests-m32/clock_nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_nanosleep -e trace=clock_nanosleep,clock_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=clock_nanosleep,clock_gettime
diff --git a/tests-m32/clock_nanosleep.test b/tests-m32/clock_nanosleep.test
deleted file mode 100755
index ec434a6..0000000
--- a/tests-m32/clock_nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_nanosleep, clock_gettime, and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=clock_nanosleep,clock_gettime,setitimer
diff --git a/tests-m32/clock_xettime.c b/tests-m32/clock_xettime.c
index 3ef5695..e3ec1b5 100644
--- a/tests-m32/clock_xettime.c
+++ b/tests-m32/clock_xettime.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -48,26 +49,41 @@
 
 	if (syscall(__NR_clock_getres, CLOCK_REALTIME, &t.ts))
 		perror_msg_and_skip("clock_getres CLOCK_REALTIME");
-	printf("clock_getres(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	printf("clock_getres(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = 0\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	if (syscall(__NR_clock_gettime, CLOCK_PROCESS_CPUTIME_ID, &t.ts))
 		perror_msg_and_skip("clock_gettime CLOCK_PROCESS_CPUTIME_ID");
-	printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, "
-	       "{tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	t.ts.tv_sec = 0xdeface1;
 	t.ts.tv_nsec = 0xdeface2;
-	if (!syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts))
-		error_msg_and_skip("clock_settime CLOCK_THREAD_CPUTIME_ID:"
-				   " EINVAL expected");
-	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID, {tv_sec=%jd, "
-	       "tv_nsec=%jd}) = -1 EINVAL (%m)\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+	t.ts.tv_sec = 0xdeadbeefU;
+	t.ts.tv_nsec = 0xfacefeedU;
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+	t.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	t.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/clock_xettime.gen.test b/tests-m32/clock_xettime.gen.test
new file mode 100755
index 0000000..590f058
--- /dev/null
+++ b/tests-m32/clock_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_xettime -a36 -e trace=clock_getres,clock_gettime,clock_settime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests-m32/clock_xettime.test b/tests-m32/clock_xettime.test
deleted file mode 100755
index f045a66..0000000
--- a/tests-m32/clock_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_getres, clock_gettime, and clock_settime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests-m32/copy_file_range.c b/tests-m32/copy_file_range.c
index 085010a..6bb989d 100644
--- a/tests-m32/copy_file_range.c
+++ b/tests-m32/copy_file_range.c
@@ -2,6 +2,7 @@
  * This file is part of copy_file_range strace test.
  *
  * 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
@@ -41,8 +42,8 @@
 {
 	const long int fd_in = (long int) 0xdeadbeefffffffff;
 	const long int fd_out = (long int) 0xdeadbeeffffffffe;
-	long long int *const off_in = tail_alloc(sizeof(*off_in));
-	long long int *const off_out = tail_alloc(sizeof(*off_out));
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
 	*off_in = 0xdeadbef1facefed1;
 	*off_out = 0xdeadbef2facefed2;
 	const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests-m32/copy_file_range.gen.test b/tests-m32/copy_file_range.gen.test
new file mode 100755
index 0000000..4f3063b
--- /dev/null
+++ b/tests-m32/copy_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/copy_file_range.test b/tests-m32/copy_file_range.test
deleted file mode 100755
index c39f6ac..0000000
--- a/tests-m32/copy_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check copy_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/count.test b/tests-m32/count.test
index e75dc6b..a9752c0 100755
--- a/tests-m32/count.test
+++ b/tests-m32/count.test
@@ -3,6 +3,7 @@
 # Check whether -c and -w options work.
 #
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -29,14 +30,14 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
+run_prog ../sleep 0
 check_prog grep
 
 grep_log()
 {
 	local pattern="$1"; shift
 
-	run_strace "$@" ./sleep 1
+	run_strace "$@" ../sleep 1
 
 	grep nanosleep "$LOG" > /dev/null ||
 		framework_skip_ 'sleep does not use nanosleep'
diff --git a/tests-m32/creat.gen.test b/tests-m32/creat.gen.test
new file mode 100755
index 0000000..d2e47d3
--- /dev/null
+++ b/tests-m32/creat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-m32/creat.test b/tests-m32/creat.test
deleted file mode 100755
index 069648f..0000000
--- a/tests-m32/creat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check creat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-m32/delete_module.c b/tests-m32/delete_module.c
index 5a31760..0de35fe 100644
--- a/tests-m32/delete_module.c
+++ b/tests-m32/delete_module.c
@@ -2,6 +2,7 @@
  * Check decoding of delete_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -48,8 +49,7 @@
 		unsigned int val_prefix, val_suffix;
 	} flags[] = {
 		{ ARG_STR(0), 0, 0 },
-		{ (kernel_ulong_t) 0xffffffff00000000ULL | O_NONBLOCK,
-			"O_NONBLOCK", 0, 0 },
+		{ F8ILL_KULONG_MASK | O_NONBLOCK, "O_NONBLOCK", 0, 0 },
 		{ (kernel_ulong_t) 0xbadc0dedfacef157ULL & ~(O_NONBLOCK | O_TRUNC),
 			" /* O_??? */", 0xfacef157U & ~(O_NONBLOCK | O_TRUNC), 0},
 		{ (kernel_ulong_t) (0xfacef157deade71cULL & ~O_NONBLOCK) | O_TRUNC,
@@ -65,7 +65,7 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_delete_module, NULL, bogus_zero);
+	rc = syscall(__NR_delete_module, NULL, F8ILL_KULONG_MASK);
 	printf("delete_module(NULL, 0) = %s\n", sprintrc(rc));
 
 	rc = syscall(__NR_delete_module, bogus_param1, flags[0].val);
diff --git a/tests-m32/delete_module.gen.test b/tests-m32/delete_module.gen.test
new file mode 100755
index 0000000..4e4c671
--- /dev/null
+++ b/tests-m32/delete_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/delete_module.test b/tests-m32/delete_module.test
deleted file mode 100755
index fb86ec9..0000000
--- a/tests-m32/delete_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of delete_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
diff --git a/tests-m32/detach-running.test b/tests-m32/detach-running.test
index 006efb8..ba5ffbf 100755
--- a/tests-m32/detach-running.test
+++ b/tests-m32/detach-running.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from running processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -36,7 +37,7 @@
 
 set -e
 
-./set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
+../set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -54,7 +55,6 @@
 	return 0
 }
 
-rm -f "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests-m32/detach-sleeping.test b/tests-m32/detach-sleeping.test
index 54304f3..a0975e3 100755
--- a/tests-m32/detach-sleeping.test
+++ b/tests-m32/detach-sleeping.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from sleeping processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -36,8 +37,7 @@
 
 set -e
 
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -55,7 +55,6 @@
 	return 0
 }
 
-rm -f "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests-m32/detach-stopped.test b/tests-m32/detach-stopped.test
index 8f480e7..a9f9c72 100755
--- a/tests-m32/detach-stopped.test
+++ b/tests-m32/detach-stopped.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from stopped processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -41,8 +42,8 @@
 
 set -e
 
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+> "$LOG"
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -62,7 +63,7 @@
 	return 0
 }
 
-rm -f "$LOG"
+> "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests-m32/dup.gen.test b/tests-m32/dup.gen.test
new file mode 100755
index 0000000..e5729c0
--- /dev/null
+++ b/tests-m32/dup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-m32/dup.test b/tests-m32/dup.test
deleted file mode 100755
index 1dc1919..0000000
--- a/tests-m32/dup.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests-m32/dup2.gen.test b/tests-m32/dup2.gen.test
new file mode 100755
index 0000000..fd1f5c9
--- /dev/null
+++ b/tests-m32/dup2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests-m32/dup2.test b/tests-m32/dup2.test
deleted file mode 100755
index 509c5db..0000000
--- a/tests-m32/dup2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests-m32/dup3.gen.test b/tests-m32/dup3.gen.test
new file mode 100755
index 0000000..d6ff7d7
--- /dev/null
+++ b/tests-m32/dup3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-m32/dup3.test b/tests-m32/dup3.test
deleted file mode 100755
index 293f78f..0000000
--- a/tests-m32/dup3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup3 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-m32/epoll_create.gen.test b/tests-m32/epoll_create.gen.test
new file mode 100755
index 0000000..841da6d
--- /dev/null
+++ b/tests-m32/epoll_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/epoll_create.test b/tests-m32/epoll_create.test
deleted file mode 100755
index 472a9bd..0000000
--- a/tests-m32/epoll_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-m32/epoll_create1.gen.test b/tests-m32/epoll_create1.gen.test
new file mode 100755
index 0000000..c5e62a0
--- /dev/null
+++ b/tests-m32/epoll_create1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/epoll_create1.test b/tests-m32/epoll_create1.test
deleted file mode 100755
index 7a926a9..0000000
--- a/tests-m32/epoll_create1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create1 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-m32/epoll_ctl.c b/tests-m32/epoll_ctl.c
index e666055..2251b35 100644
--- a/tests-m32/epoll_ctl.c
+++ b/tests-m32/epoll_ctl.c
@@ -11,14 +11,14 @@
 static long
 invoke_syscall(unsigned long epfd, unsigned long op, unsigned long fd, void *ev)
 {
-	op |= (unsigned long) 0xffffffff00000000ULL;
-	return syscall(__NR_epoll_ctl, epfd, op, fd, (unsigned long) ev);
+	return syscall(__NR_epoll_ctl, epfd, F8ILL_KULONG_MASK | op,
+		       fd, (unsigned long) ev);
 }
 
 int
 main(void)
 {
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 	ev->events = EPOLLIN;
 
 	long rc = invoke_syscall(-1U, EPOLL_CTL_ADD, -2U, ev);
diff --git a/tests-m32/epoll_ctl.gen.test b/tests-m32/epoll_ctl.gen.test
new file mode 100755
index 0000000..68c96eb
--- /dev/null
+++ b/tests-m32/epoll_ctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/epoll_ctl.test b/tests-m32/epoll_ctl.test
deleted file mode 100755
index 1aded54..0000000
--- a/tests-m32/epoll_ctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_ctl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/epoll_pwait.c b/tests-m32/epoll_pwait.c
index eaaa34d..841e722 100644
--- a/tests-m32/epoll_pwait.c
+++ b/tests-m32/epoll_pwait.c
@@ -12,7 +12,7 @@
 main(void)
 {
 	sigset_t set[2];
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 
 	long rc = syscall(__NR_epoll_pwait, -1, ev, 1, -2,
 			  set, (kernel_ulong_t) sizeof(set));
diff --git a/tests-m32/epoll_pwait.gen.test b/tests-m32/epoll_pwait.gen.test
new file mode 100755
index 0000000..c558efc
--- /dev/null
+++ b/tests-m32/epoll_pwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/epoll_pwait.test b/tests-m32/epoll_pwait.test
deleted file mode 100755
index c7aeeac..0000000
--- a/tests-m32/epoll_pwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of epoll_pwait syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/epoll_wait.c b/tests-m32/epoll_wait.c
index 038bf1f..caa3027 100644
--- a/tests-m32/epoll_wait.c
+++ b/tests-m32/epoll_wait.c
@@ -10,7 +10,7 @@
 int
 main(void)
 {
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 
 	long rc = syscall(__NR_epoll_wait, -1, ev, 1, -2);
 	printf("epoll_wait(-1, %p, 1, -2) = %ld %s (%m)\n",
diff --git a/tests-m32/epoll_wait.gen.test b/tests-m32/epoll_wait.gen.test
new file mode 100755
index 0000000..024cc0f
--- /dev/null
+++ b/tests-m32/epoll_wait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/epoll_wait.test b/tests-m32/epoll_wait.test
deleted file mode 100755
index 83ae161..0000000
--- a/tests-m32/epoll_wait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_wait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26
diff --git a/tests-m32/erestartsys.gen.test b/tests-m32/erestartsys.gen.test
new file mode 100755
index 0000000..0fc3215
--- /dev/null
+++ b/tests-m32/erestartsys.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (erestartsys -a34 -e signal=none -e trace=recvfrom); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests-m32/erestartsys.test b/tests-m32/erestartsys.test
deleted file mode 100755
index 91f711f..0000000
--- a/tests-m32/erestartsys.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ERESTARTSYS error code.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests-m32/execve-v.test b/tests-m32/execve-v.test
index cce5860..52ff0d7 100755
--- a/tests-m32/execve-v.test
+++ b/tests-m32/execve-v.test
@@ -11,5 +11,3 @@
 # Filter out execve() call made by strace.
 grep -F test.execve < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/execve.c b/tests-m32/execve.c
index 74749e7..c558dd3 100644
--- a/tests-m32/execve.c
+++ b/tests-m32/execve.c
@@ -2,6 +2,7 @@
  * This file is part of execve strace test.
  *
  * 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
@@ -62,13 +63,15 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
-	       ", [/* 5 vars, unterminated */]"
+	       ", %p /* 5 vars, unterminated */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5]
 #if VERBOSE
 	       , q_envp[0], q_envp[1], envp[2], envp[3], envp[4]
+#else
+	       , tail_envp
 #endif
 	       );
 
@@ -80,12 +83,14 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
-	       ", [/* 2 vars */]"
+	       ", %p /* 2 vars */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
 #if VERBOSE
 	       , q_envp[0], q_envp[1]
+#else
+	       , tail_envp
 #endif
 	       );
 
@@ -94,16 +99,18 @@
 #if VERBOSE
 	       ", [\"%s\"]"
 #else
-	       ", [/* 1 var */]"
+	       ", %p /* 1 var */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[2]
 #if VERBOSE
 	       , q_envp[1]
+#else
+	       , tail_envp + 1
 #endif
 	       );
 
-	char **const empty = tail_alloc(sizeof(*empty));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
 	char **const efault = empty + 1;
 	*empty = NULL;
 
@@ -112,9 +119,13 @@
 #if VERBOSE
 	       ", []"
 #else
-	       ", [/* 0 vars */]"
+	       ", %p /* 0 vars */"
 #endif
-	       ") = -1 ENOENT (%m)\n", Q_FILENAME);
+	       ") = -1 ENOENT (%m)\n", Q_FILENAME
+#if !VERBOSE
+	       , empty
+#endif
+	       );
 
 	char str_a[] = "012345678901234567890123456789012";
 	char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -141,10 +152,11 @@
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+	printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
 #endif
-	printf("]) = -1 ENOENT (%m)\n");
+	printf(") = -1 ENOENT (%m)\n");
 
 	execve(FILENAME, a + 1, b + 1);
 	printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
@@ -154,10 +166,11 @@
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %d vars */", DEFAULT_STRLEN);
+	printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
 #endif
-	printf("]) = -1 ENOENT (%m)\n");
+	printf(") = -1 ENOENT (%m)\n");
 
 	execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault);
 	printf("execve(\"%s\", NULL, %p) = -1 ENOENT (%m)\n",
diff --git a/tests-m32/execve.test b/tests-m32/execve.test
index 263b6fc..5635a94 100755
--- a/tests-m32/execve.test
+++ b/tests-m32/execve.test
@@ -11,5 +11,3 @@
 # Filter out execve() call made by strace.
 grep -F test.execve < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/execveat-v.gen.test b/tests-m32/execveat-v.gen.test
new file mode 100755
index 0000000..f7d572f
--- /dev/null
+++ b/tests-m32/execveat-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat-v -v -e trace=execveat); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=execveat
diff --git a/tests-m32/execveat-v.test b/tests-m32/execveat-v.test
deleted file mode 100755
index a905224..0000000
--- a/tests-m32/execveat-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of execveat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=execveat
diff --git a/tests-m32/execveat.c b/tests-m32/execveat.c
index 9083830..8ffc4d5 100644
--- a/tests-m32/execveat.c
+++ b/tests-m32/execveat.c
@@ -2,6 +2,7 @@
  * This file is part of execveat strace test.
  *
  * 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
@@ -67,13 +68,15 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
-	       ", [/* 5 vars, unterminated */]"
+	       ", %p /* 5 vars, unterminated */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5],
 #if VERBOSE
 	       q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
+#else
+	       tail_envp,
 #endif
 	       errno2name());
 
@@ -85,12 +88,14 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
-	       ", [/* 2 vars */]"
+	       ", %p /* 2 vars */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 #if VERBOSE
 	       q_envp[0], q_envp[1],
+#else
+	       tail_envp,
 #endif
 	       errno2name());
 
@@ -99,16 +104,18 @@
 #if VERBOSE
 	       ", [\"%s\"]"
 #else
-	       ", [/* 1 var */]"
+	       ", %p /* 1 var */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[2],
 #if VERBOSE
 	       q_envp[1],
+#else
+	       tail_envp + 1,
 #endif
 	       errno2name());
 
-	char **const empty = tail_alloc(sizeof(*empty));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
 	char **const efault = empty + 1;
 	*empty = NULL;
 
@@ -117,10 +124,14 @@
 #if VERBOSE
 	       ", []"
 #else
-	       ", [/* 0 vars */]"
+	       ", %p /* 0 vars */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
-	       Q_FILENAME, errno2name());
+	       Q_FILENAME,
+#if !VERBOSE
+	       empty,
+#endif
+	       errno2name());
 
 	char str_a[] = "012345678901234567890123456789012";
 	char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -147,10 +158,11 @@
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+	printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
 #endif
-	printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+	printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       errno2name());
 
 	syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100);
@@ -161,10 +173,11 @@
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %d vars */", DEFAULT_STRLEN);
+	printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
 #endif
-	printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+	printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       errno2name());
 
 	syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100);
diff --git a/tests-m32/execveat.gen.test b/tests-m32/execveat.gen.test
new file mode 100755
index 0000000..c92e4d6
--- /dev/null
+++ b/tests-m32/execveat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/execveat.test b/tests-m32/execveat.test
deleted file mode 100755
index 879e03e..0000000
--- a/tests-m32/execveat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check execveat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/faccessat.gen.test b/tests-m32/faccessat.gen.test
new file mode 100755
index 0000000..4ccec2a
--- /dev/null
+++ b/tests-m32/faccessat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests-m32/faccessat.test b/tests-m32/faccessat.test
deleted file mode 100755
index 61e7e2f..0000000
--- a/tests-m32/faccessat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check faccessat syscall decoding.
-
-. "${srcdir=.}/openat.test"
diff --git a/tests-m32/fadvise64.test b/tests-m32/fadvise64.test
index 9f74672..161b28f 100755
--- a/tests-m32/fadvise64.test
+++ b/tests-m32/fadvise64.test
@@ -9,4 +9,3 @@
 check_prog grep
 grep -v "^$NAME([0123]," < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/fadvise64_64.gen.test b/tests-m32/fadvise64_64.gen.test
new file mode 100755
index 0000000..5f95b3c
--- /dev/null
+++ b/tests-m32/fadvise64_64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test); do not edit.
+. "${srcdir=.}/fadvise64.test"
diff --git a/tests-m32/fadvise64_64.test b/tests-m32/fadvise64_64.test
deleted file mode 100755
index a50fe2b..0000000
--- a/tests-m32/fadvise64_64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fadvise64_64 syscall.
-
-. "${srcdir=.}/fadvise64.test"
diff --git a/tests-m32/fallocate.gen.test b/tests-m32/fallocate.gen.test
new file mode 100755
index 0000000..c6cfdb7
--- /dev/null
+++ b/tests-m32/fallocate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-m32/fallocate.test b/tests-m32/fallocate.test
deleted file mode 100755
index 405187e..0000000
--- a/tests-m32/fallocate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-m32/fanotify_init.c b/tests-m32/fanotify_init.c
index c14b413..15e09ee 100644
--- a/tests-m32/fanotify_init.c
+++ b/tests-m32/fanotify_init.c
@@ -2,6 +2,7 @@
  * Check decoding of fanotify_init syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -60,7 +61,7 @@
 main(void)
 {
 	static const struct strval flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "FAN_CLASS_NOTIF" },
+		{ F8ILL_KULONG_MASK, "FAN_CLASS_NOTIF" },
 		{ (kernel_ulong_t) 0xffffffff0000000cULL,
 			"0xc /* FAN_CLASS_??? */" },
 		{ (kernel_ulong_t) 0xdec0deddefaced04ULL,
@@ -70,7 +71,7 @@
 			"FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|0xffffffc0" },
 	};
 	static const struct strval event_f_flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+		{ F8ILL_KULONG_MASK, "O_RDONLY" },
 		{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
 			"O_WRONLY|0x80000000" }
 	};
diff --git a/tests-m32/fanotify_init.gen.test b/tests-m32/fanotify_init.gen.test
new file mode 100755
index 0000000..ee519e6
--- /dev/null
+++ b/tests-m32/fanotify_init.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/fanotify_init.test b/tests-m32/fanotify_init.test
deleted file mode 100755
index 8d26af4..0000000
--- a/tests-m32/fanotify_init.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fanotify_init syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/fanotify_mark.c b/tests-m32/fanotify_mark.c
index 43f285d..11cf7d0 100644
--- a/tests-m32/fanotify_mark.c
+++ b/tests-m32/fanotify_mark.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -90,11 +91,11 @@
 
 	static const kernel_ulong_t fds[] = {
 		(kernel_ulong_t) 0xdeadfeed12345678ULL,
-		(kernel_ulong_t) 0xffffffff00000000ULL,
+		F8ILL_KULONG_MASK,
 		(kernel_ulong_t) 0xdeb0d1edffffffffULL,
 	};
 	static const struct strval flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "0" },
+		{ F8ILL_KULONG_MASK, "0" },
 		{ (kernel_ulong_t) 0xdec0deddefaced00ULL,
 			"0xefaced00 /* FAN_MARK_??? */" },
 		{ (kernel_ulong_t) 0xda7a105700000040ULL,
diff --git a/tests-m32/fanotify_mark.gen.test b/tests-m32/fanotify_mark.gen.test
new file mode 100755
index 0000000..ce16a55
--- /dev/null
+++ b/tests-m32/fanotify_mark.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/fanotify_mark.test b/tests-m32/fanotify_mark.test
deleted file mode 100755
index fd67138..0000000
--- a/tests-m32/fanotify_mark.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fanotify_mark syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests-m32/fchdir.gen.test b/tests-m32/fchdir.gen.test
new file mode 100755
index 0000000..c80e141
--- /dev/null
+++ b/tests-m32/fchdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests-m32/fchdir.test b/tests-m32/fchdir.test
deleted file mode 100755
index 3a4296e..0000000
--- a/tests-m32/fchdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests-m32/fchmod.gen.test b/tests-m32/fchmod.gen.test
new file mode 100755
index 0000000..f327fb7
--- /dev/null
+++ b/tests-m32/fchmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-m32/fchmod.test b/tests-m32/fchmod.test
deleted file mode 100755
index 4cb1263..0000000
--- a/tests-m32/fchmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests-m32/fchmodat.gen.test b/tests-m32/fchmodat.gen.test
new file mode 100755
index 0000000..9ee1f01
--- /dev/null
+++ b/tests-m32/fchmodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/fchmodat.test b/tests-m32/fchmodat.test
deleted file mode 100755
index 13cbe80..0000000
--- a/tests-m32/fchmodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchmodat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/fchown.gen.test b/tests-m32/fchown.gen.test
new file mode 100755
index 0000000..63ee545
--- /dev/null
+++ b/tests-m32/fchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests-m32/fchown.test b/tests-m32/fchown.test
deleted file mode 100755
index 63a0f2e..0000000
--- a/tests-m32/fchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
diff --git a/tests-m32/fchown32.gen.test b/tests-m32/fchown32.gen.test
new file mode 100755
index 0000000..d8167dd
--- /dev/null
+++ b/tests-m32/fchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-m32/fchown32.test b/tests-m32/fchown32.test
deleted file mode 100755
index e837f54..0000000
--- a/tests-m32/fchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-m32/fchownat.gen.test b/tests-m32/fchownat.gen.test
new file mode 100755
index 0000000..2ec9e32
--- /dev/null
+++ b/tests-m32/fchownat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/fchownat.test b/tests-m32/fchownat.test
deleted file mode 100755
index e5d0f28..0000000
--- a/tests-m32/fchownat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchownat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/fcntl.c b/tests-m32/fcntl.c
index f060cdf..4f62ca2 100644
--- a/tests-m32/fcntl.c
+++ b/tests-m32/fcntl.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,9 +45,9 @@
 		.l_start = 0xdefaced1facefeedULL,
 		.l_len = 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, %p) = %s\n",
-	       TEST_SYSCALL_STR, name, &fl, EINVAL_STR);
+	       TEST_SYSCALL_STR, name, &fl, sprintrc(rc));
 }
 
 static void
diff --git a/tests-m32/fcntl.gen.test b/tests-m32/fcntl.gen.test
new file mode 100755
index 0000000..83a1af4
--- /dev/null
+++ b/tests-m32/fcntl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-m32/fcntl.test b/tests-m32/fcntl.test
deleted file mode 100755
index 9aea122..0000000
--- a/tests-m32/fcntl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fcntl decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests-m32/fcntl64.c b/tests-m32/fcntl64.c
index 5ecd6eb..068956e 100644
--- a/tests-m32/fcntl64.c
+++ b/tests-m32/fcntl64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,10 +45,10 @@
 		.l_start = 0xdefaced1facefeedULL,
 		.l_len = 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
-	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
 }
 
 static void
@@ -67,7 +68,7 @@
 	long rc = invoke_test_syscall(F_SETLK64, &fl);
 	printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=0, l_len=%d}) = %s\n",
-	       TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+	       TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
 
 	if (rc)
 		return;
diff --git a/tests-m32/fcntl64.gen.test b/tests-m32/fcntl64.gen.test
new file mode 100755
index 0000000..9d3b98a
--- /dev/null
+++ b/tests-m32/fcntl64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-m32/fcntl64.test b/tests-m32/fcntl64.test
deleted file mode 100755
index 00ba671..0000000
--- a/tests-m32/fcntl64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fcntl64 syscall decoding.
-
-. "${srcdir=.}/fcntl.test"
diff --git a/tests-m32/fdatasync.gen.test b/tests-m32/fdatasync.gen.test
new file mode 100755
index 0000000..0dbea8a
--- /dev/null
+++ b/tests-m32/fdatasync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-m32/fdatasync.test b/tests-m32/fdatasync.test
deleted file mode 100755
index ff59749..0000000
--- a/tests-m32/fdatasync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fdatasync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-m32/file_handle.c b/tests-m32/file_handle.c
index a5ad6c7..bbdf48b 100644
--- a/tests-m32/file_handle.c
+++ b/tests-m32/file_handle.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -187,7 +188,7 @@
 		(kernel_ulong_t) 0x12345678ffffff9cULL,
 	};
 	static const struct strval open_flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+		{ F8ILL_KULONG_MASK, "O_RDONLY" },
 		{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
 			"O_WRONLY|0x80000000" }
 	};
@@ -208,7 +209,7 @@
 		tail_alloc(sizeof(struct file_handle) + 128);
 	struct file_handle *handle_256 =
 		tail_alloc(sizeof(struct file_handle) + 256);
-	int *bogus_mount_id = tail_alloc(sizeof(*bogus_mount_id));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
 
 	char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
 
diff --git a/tests-m32/file_handle.gen.test b/tests-m32/file_handle.gen.test
new file mode 100755
index 0000000..8280f9f
--- /dev/null
+++ b/tests-m32/file_handle.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_handle -e trace=name_to_handle_at,open_by_handle_at); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests-m32/file_handle.test b/tests-m32/file_handle.test
deleted file mode 100755
index 1ccc9d4..0000000
--- a/tests-m32/file_handle.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check name_to_handle_at and open_by_handle_at syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests-m32/file_ioctl.c b/tests-m32/file_ioctl.c
index 0fe17b1..ded67a9 100644
--- a/tests-m32/file_ioctl.c
+++ b/tests-m32/file_ioctl.c
@@ -13,7 +13,7 @@
 test_fiemap(void)
 {
 	(void) tail_alloc(1);
-	struct fiemap *const args = tail_alloc(sizeof(*args));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fiemap, args);
 
 	printf("ioctl(-1, FS_IOC_FIEMAP, {fm_start=%" PRI__u64
 	       ", fm_length=%" PRI__u64", fm_flags=",
diff --git a/tests-m32/file_ioctl.gen.test b/tests-m32/file_ioctl.gen.test
new file mode 100755
index 0000000..f7e58f5
--- /dev/null
+++ b/tests-m32/file_ioctl.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/file_ioctl.test b/tests-m32/file_ioctl.test
deleted file mode 100755
index 7b8b8ce..0000000
--- a/tests-m32/file_ioctl.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check FS_IOC_FIEMAP ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/finit_module.c b/tests-m32/finit_module.c
index 3f0178f..c97471a 100644
--- a/tests-m32/finit_module.c
+++ b/tests-m32/finit_module.c
@@ -2,6 +2,7 @@
  * Check decoding of finit_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -68,7 +69,8 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_finit_module, bogus_zero, NULL, bogus_zero);
+	rc = syscall(__NR_finit_module, F8ILL_KULONG_MASK, NULL,
+		     F8ILL_KULONG_MASK);
 	printf("finit_module(0, NULL, 0) = %s\n", sprintrc(rc));
 
 	rc = syscall(__NR_finit_module, bogus_fd, bogus_param1, flags[0].val);
diff --git a/tests-m32/finit_module.gen.test b/tests-m32/finit_module.gen.test
new file mode 100755
index 0000000..f2e56af
--- /dev/null
+++ b/tests-m32/finit_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/finit_module.test b/tests-m32/finit_module.test
deleted file mode 100755
index bd644f3..0000000
--- a/tests-m32/finit_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of finit_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-m32/flock.gen.test b/tests-m32/flock.gen.test
new file mode 100755
index 0000000..dff2bac
--- /dev/null
+++ b/tests-m32/flock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-m32/flock.test b/tests-m32/flock.test
deleted file mode 100755
index 24fcd74..0000000
--- a/tests-m32/flock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check flock syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-m32/fork-f.gen.test b/tests-m32/fork-f.gen.test
new file mode 100755
index 0000000..b534e13
--- /dev/null
+++ b/tests-m32/fork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests-m32/fork-f.test b/tests-m32/fork-f.test
deleted file mode 100755
index d8ca1e3..0000000
--- a/tests-m32/fork-f.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows fork syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26 -qq -f -e trace=chdir -e signal=none
diff --git a/tests-m32/fstat.c b/tests-m32/fstat.c
index 12df3e1..1482bb1 100644
--- a/tests-m32/fstat.c
+++ b/tests-m32/fstat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/fstat.gen.test b/tests-m32/fstat.gen.test
new file mode 100755
index 0000000..8686ec8
--- /dev/null
+++ b/tests-m32/fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat -a15 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -v -P stat.sample
diff --git a/tests-m32/fstat.test b/tests-m32/fstat.test
deleted file mode 100755
index 2ba0fba..0000000
--- a/tests-m32/fstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Check fstat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-syscall=$NAME
-run_prog > /dev/null
-sample=$syscall.sample
-> "$sample"
-run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-m32/fstat64.c b/tests-m32/fstat64.c
index a9c2e07..c63be60 100644
--- a/tests-m32/fstat64.c
+++ b/tests-m32/fstat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/fstat64.gen.test b/tests-m32/fstat64.gen.test
new file mode 100755
index 0000000..a452b84
--- /dev/null
+++ b/tests-m32/fstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat64 -a17 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -v -P stat.sample
diff --git a/tests-m32/fstat64.test b/tests-m32/fstat64.test
deleted file mode 100755
index 8b4f5ef..0000000
--- a/tests-m32/fstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstat64 syscall decoding.
-
-. "${srcdir=.}/fstat.test"
diff --git a/tests-m32/fstatat.c b/tests-m32/fstatat.c
index 66138c2..ea331b4 100644
--- a/tests-m32/fstatat.c
+++ b/tests-m32/fstatat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/fstatat64.c b/tests-m32/fstatat64.c
index 03082a8..8de7ba6 100644
--- a/tests-m32/fstatat64.c
+++ b/tests-m32/fstatat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/fstatat64.gen.test b/tests-m32/fstatat64.gen.test
new file mode 100755
index 0000000..8da5c7f
--- /dev/null
+++ b/tests-m32/fstatat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/fstatat64.test b/tests-m32/fstatat64.test
deleted file mode 100755
index 484008a..0000000
--- a/tests-m32/fstatat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/fstatfs.gen.test b/tests-m32/fstatfs.gen.test
new file mode 100755
index 0000000..3dd04d8
--- /dev/null
+++ b/tests-m32/fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-m32/fstatfs.test b/tests-m32/fstatfs.test
deleted file mode 100755
index 646e66f..0000000
--- a/tests-m32/fstatfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests-m32/fstatfs64.gen.test b/tests-m32/fstatfs64.gen.test
new file mode 100755
index 0000000..b9527be
--- /dev/null
+++ b/tests-m32/fstatfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-m32/fstatfs64.test b/tests-m32/fstatfs64.test
deleted file mode 100755
index 179ff1b..0000000
--- a/tests-m32/fstatfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests-m32/fstatx.c b/tests-m32/fstatx.c
index f88d9a9..70804af 100644
--- a/tests-m32/fstatx.c
+++ b/tests-m32/fstatx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/tests-m32/fsync.gen.test b/tests-m32/fsync.gen.test
new file mode 100755
index 0000000..921e804
--- /dev/null
+++ b/tests-m32/fsync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/fsync.test b/tests-m32/fsync.test
deleted file mode 100755
index a58b67b..0000000
--- a/tests-m32/fsync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fsync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-m32/ftruncate.gen.test b/tests-m32/ftruncate.gen.test
new file mode 100755
index 0000000..709a851
--- /dev/null
+++ b/tests-m32/ftruncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-m32/ftruncate.test b/tests-m32/ftruncate.test
deleted file mode 100755
index ec8a1e0..0000000
--- a/tests-m32/ftruncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-m32/ftruncate64.gen.test b/tests-m32/ftruncate64.gen.test
new file mode 100755
index 0000000..4cb1fe7
--- /dev/null
+++ b/tests-m32/ftruncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-m32/ftruncate64.test b/tests-m32/ftruncate64.test
deleted file mode 100755
index 9068210..0000000
--- a/tests-m32/ftruncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-m32/futex.c b/tests-m32/futex.c
index 586b95d..9a9ab66 100644
--- a/tests-m32/futex.c
+++ b/tests-m32/futex.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,8 +56,6 @@
 # include "xlat/futexwakeops.h"
 # include "xlat/futexwakecmps.h"
 
-static struct timespec *tmout;
-
 void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
 	int *uaddr2, unsigned long val3, int rc)
 {
@@ -163,8 +162,8 @@
 int
 main(int argc, char *argv[])
 {
-	int *uaddr = tail_alloc(sizeof(*uaddr));
-	int *uaddr2 = tail_alloc(sizeof(*uaddr2));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr2);
 	int rc;
 	unsigned i;
 	unsigned j;
@@ -172,7 +171,7 @@
 	uaddr[0] = 0x1deadead;
 	uaddr2[0] = 0xbadf00d;
 
-	tmout = tail_alloc(sizeof(*tmout));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tmout);
 	tmout->tv_sec = 123;
 	tmout->tv_nsec = 0xbadc0de;
 
@@ -189,37 +188,59 @@
 	/* uaddr is NULL */
 	CHECK_FUTEX(NULL, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
-	printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		VAL_PR, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* uaddr is faulty */
 	CHECK_FUTEX(uaddr + 1, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr + 1, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr + 1, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* timeout is faulty */
 	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout + 1, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
 	printf("futex(%p, FUTEX_WAIT, %u, %p) = %s\n",
-		uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+	       uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+
+	/* timeout is invalid */
+	tmout->tv_sec = 0xdeadbeefU;
+	tmout->tv_nsec = 0xfacefeedU;
+
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+	tmout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tmout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+	tmout->tv_sec = 123;
+	tmout->tv_nsec = 0xbadc0de;
 
 	/* uaddr is not as provided; uaddr2 is faulty but ignored */
 	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2 + 1, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* uaddr is not as provided; uaddr2 is faulty but ignored */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT, VAL, tmout,
 		uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
-		"%s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* Next 2 tests are with CLOCKRT bit set */
 
@@ -227,18 +248,18 @@
 	CHECK_FUTEX_ENOSYS(uaddr,
 		FUTEX_CLOCK_REALTIME | FUTEX_WAIT,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr,
 		FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG | FUTEX_WAIT ,
 		VAL, tmout, uaddr2, 0, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* FUTEX_WAIT_BITSET - FUTEX_WAIT which provides additional bitmask
 	 *                     which should be matched at least in one bit with
@@ -254,50 +275,54 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1,
 		VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
-		"%#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+	       ", %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* val3 of 0 is invalid  */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, 0,
 		(rc == -1) && (errno == EINVAL));
-	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
-		"%#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, 0, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+	       ", %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), 0, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* Next 3 tests are with CLOCKRT bit set */
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* val3 of 0 is invalid  */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, 0, (rc == -1) && (errno == EINVAL));
-	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, 0,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), 0, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
 		FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* FUTEX_WAKE - wake val processes waiting for uaddr
 	 * Possible flags: PRIVATE
@@ -522,9 +547,9 @@
 			CHECK_FUTEX_ENOSYS(uaddr,
 				j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
 				VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
-			printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s) = "
-				"%s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i,
-				uaddr2, wake_ops[i].str, sprintrc(rc));
+			printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)"
+			       " = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR,
+			       i, uaddr2, wake_ops[i].str, sprintrc(rc));
 		}
 	}
 
@@ -552,16 +577,16 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_LOCK_PI, VAL, tmout, uaddr2 + 1,
 		VAL3, (rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr + 1, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_PRIVATE_FLAG | FUTEX_LOCK_PI, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%jd, tv_nsec=%jd}) = "
-		"%s\n",
-		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
+	       uaddr + 1, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* NULL is passed by invalid_op() in cases valid timeout address is
 	 * needed */
@@ -633,32 +658,32 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2,
 		VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_REQUEUE_PI,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) "
-		"= %s\n", uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_REQUEUE_PI,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
 		FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME, "
-		"%u, {tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME"
+	       ", %u, {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	/* FUTEX_CMP_REQUEUE_PI - version of FUTEX_CMP_REQUEUE which re-queues
 	 *                        on PI-aware futex.
diff --git a/tests-m32/futimesat.c b/tests-m32/futimesat.c
index c356629..733fd09 100644
--- a/tests-m32/futimesat.c
+++ b/tests-m32/futimesat.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of futimesat syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,46 +37,123 @@
 # include <sys/time.h>
 # include <unistd.h>
 
+static void
+print_tv(const struct timeval *tv)
+{
+	printf("{tv_sec=%lld, tv_usec=%llu}",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
+	print_time_t_usec(tv->tv_sec,
+			  zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_futimesat(const kernel_ulong_t dirfd,
+	    const kernel_ulong_t pathname,
+	    const kernel_ulong_t times)
+{
+	long rc = syscall(__NR_futimesat, dirfd, pathname, times);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	struct timeval tv;
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_fail("gettimeofday");
+	static const kernel_ulong_t bogus_fd =
+		(kernel_ulong_t) 0xbadfaceddeadbeaf;
+	static const kernel_ulong_t kfdcwd =
+		(kernel_ulong_t) 0xdefaced00000000 | -100U;
+	static const char proto_fname[] = "futimesat_sample";
+	static const char qname[] = "\"futimesat_sample\"";
 
-	static const char sample[] = "futimesat_sample";
-	unsigned long dirfd = (unsigned long) 0xdeadbeef00000000ULL | -100U;
-
-	long rc = syscall(__NR_futimesat, dirfd, sample, 0);
-	printf("futimesat(AT_FDCWD, \"%s\", NULL) = %ld %s (%m)\n",
-	       sample, rc, errno2name());
-
-	struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
-	dirfd = (unsigned long) 0xdeadbeefffffffffULL;
-
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_usec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_usec = tv.tv_usec + 1;
-
-	rc = syscall(__NR_futimesat, dirfd, 0, ts + 2);
-	printf("futimesat(%d, NULL, %p) = %ld %s (%m)\n",
-	       (int) dirfd, ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_futimesat, dirfd, 0, ts + 1);
-	printf("futimesat(%d, NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
-	       "%ld %s (%m)\n", (int) dirfd,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       ts + 2, rc, errno2name());
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	struct timeval *const tv = tail_alloc(sizeof(*tv) * 2);
 
 	(void) close(0);
-	rc = syscall(__NR_futimesat, 0, "", ts);
-	printf("futimesat(0, \"\", [{tv_sec=%jd, tv_usec=%jd}, "
-	       "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
-	       (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       rc, errno2name());
+
+	/* dirfd */
+	k_futimesat(0, kfname, 0);
+	printf("futimesat(0, %s, NULL) = %s\n", qname, errstr);
+
+	k_futimesat(bogus_fd, kfname, 0);
+	printf("futimesat(%d, %s, NULL) = %s\n", (int) bogus_fd, qname, errstr);
+
+	k_futimesat(-100U, kfname, 0);
+	printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+	k_futimesat(kfdcwd, kfname, 0);
+	printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+	/* pathname */
+	k_futimesat(kfdcwd, 0, 0);
+	printf("futimesat(AT_FDCWD, NULL, NULL) = %s\n", errstr);
+
+	k_futimesat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0);
+	printf("futimesat(AT_FDCWD, \"\", NULL) = %s\n", errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_futimesat(kfdcwd, kfname, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("futimesat(AT_FDCWD, %p, NULL) = %s\n", fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_futimesat(kfdcwd, f8ill_ptr_to_kulong(fname), 0);
+		printf("futimesat(AT_FDCWD, %#jx, NULL) = %s\n",
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 1));
+	printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+	       qname, tv + 1, errstr);
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 2));
+	printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+	       qname, tv + 2, errstr);
+
+	tv[0].tv_sec = 0xdeadbeefU;
+	tv[0].tv_usec = 0xfacefeedU;
+	tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_sec = 1492356708;
+	tv[0].tv_usec = 567891234;
+	tv[1].tv_sec = 1492357086;
+	tv[1].tv_usec = 678902345;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_usec = 567891;
+	tv[1].tv_usec = 678902;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_futimesat(kfdcwd, kfname, f8ill_ptr_to_kulong(tv));
+		printf("futimesat(AT_FDCWD, %s, %#jx) = %s\n",
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/futimesat.gen.test b/tests-m32/futimesat.gen.test
new file mode 100755
index 0000000..c3add8c
--- /dev/null
+++ b/tests-m32/futimesat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-m32/futimesat.test b/tests-m32/futimesat.test
deleted file mode 100755
index 3a67c04..0000000
--- a/tests-m32/futimesat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check futimesat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-m32/gen_pure_executables.sh b/tests-m32/gen_pure_executables.sh
new file mode 100755
index 0000000..c0e2152
--- /dev/null
+++ b/tests-m32/gen_pure_executables.sh
@@ -0,0 +1,50 @@
+#!/bin/sh -efu
+#
+# 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.
+
+usage()
+{
+	cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
+
+Generate pure_executables.am from <input> list.
+Deduce output file from <input> unless an <output> is specified.
+EOF
+	exit 1
+}
+
+input="${0%/*}/pure_executables.list"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output="$(dirname "$input")/pure_executables.am"
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
+
+exec > "$output"
+
+echo "# Generated by $0 from $input; do not edit."
+echo 'PURE_EXECUTABLES = \'
+sed -n 's/^[^#].*/  & \\/p' < "$input"
+echo '  #'
diff --git a/tests-m32/gen_tests.in b/tests-m32/gen_tests.in
new file mode 100644
index 0000000..be0a3a2
--- /dev/null
+++ b/tests-m32/gen_tests.in
@@ -0,0 +1,348 @@
+# Input for gen_tests.sh
+#
+# 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.
+
+_newselect
+accept	-a22
+accept4	-a37
+access	-a30 -P access_sample
+acct	-a20
+add_key	-a30 -s12
+adjtimex	-a15
+aio	-a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
+alarm	-a10
+bpf	-a20
+btrfs	+ioctl.test
+chmod	-a28
+chown	-a28
+chown32	-a31
+chroot	-a24
+clock	test_trace_expr 'times|fcntl.*' -e/clock
+clock_adjtime	-a37
+clock_nanosleep	-e trace=clock_nanosleep,clock_gettime
+clock_xettime	-a36 -e trace=clock_getres,clock_gettime,clock_settime
+copy_file_range
+creat	-a20
+delete_module	-a23
+dup	-a8
+dup2	-a13
+dup3	-a24
+epoll_create	-a17
+epoll_create1	-a28
+epoll_ctl
+epoll_pwait
+epoll_wait	-a26
+erestartsys	-a34 -e signal=none -e trace=recvfrom
+execveat
+execveat-v	-v -e trace=execveat
+faccessat	-P $NAME.sample
+fadvise64_64	+fadvise64.test
+fallocate	-a18
+fanotify_init
+fanotify_mark	-a32
+fchdir	-a11
+fchmod	-a15
+fchmodat
+fchown	-a16
+fchown32	-a18
+fchownat
+fcntl	-a8
+fcntl64	-a8
+fdatasync	-a14
+file_handle	-e trace=name_to_handle_at,open_by_handle_at
+file_ioctl	+ioctl.test
+finit_module	-a25
+flock	-a19
+fork-f	-a26 -qq -f -e signal=none -e trace=chdir
+fstat	-a15 -v -P stat.sample
+fstat64	-a17 -v -P stat.sample
+fstatat64	-a32 -v -P stat.sample -P /dev/full
+fstatfs	-a18
+fstatfs64	-a24
+fsync	-a10
+ftruncate	-a24
+ftruncate64	-a36
+futimesat	-a28
+get_mempolicy	-s3 -a38
+getcpu	-a25
+getcwd	-a18
+getdents	-a22 -v
+getdents64	-a24 -v
+getegid	+getuid.test
+getegid32	+getuid.test
+geteuid	+getuid.test
+geteuid32	+getuid.test
+getgid	+getuid.test
+getgid32	+getuid.test
+getgroups	-a17
+getgroups32	-a19
+getpeername	-a27
+getpgrp	-a10
+getpid	-a9
+getppid	-a10
+getrandom	-a32 -s3
+getresgid	-a25
+getresgid32	-a27
+getresuid	-a25
+getresuid32	-a27
+getrlimit	-a27
+getrusage	-v
+getsid	-a10
+getsockname	-a27
+gettid	-a9
+getuid32	+getuid.test
+getxxid	-a10 -e trace=getxpid,getxuid,getxgid
+inet-cmsg	-e trace=recvmsg
+init_module	-a27
+inotify	-a23 -e trace=inotify_add_watch,inotify_rm_watch
+inotify_init1	-a27
+int_0x80	-a11 -e trace=getgid32
+ioctl_block	+ioctl.test
+ioctl_evdev	+ioctl.test
+ioctl_evdev-v	+ioctl-v.sh
+ioctl_loop	+ioctl.test
+ioctl_loop-v	+ioctl-v.sh
+ioctl_mtd	+ioctl.test
+ioctl_rtc	+ioctl.test
+ioctl_rtc-v	+ioctl-v.sh
+ioctl_scsi	+ioctl.test
+ioctl_sg_io_v3	+ioctl.test
+ioctl_sg_io_v4	+ioctl.test
+ioctl_uffdio	+ioctl.test
+ioctl_v4l2	+ioctl.test
+ioperm	-a27
+iopl	-a8
+ioprio	-a18 -e trace=ioprio_get,ioprio_set
+ip_mreq	-e trace=setsockopt
+ipc	-a19
+ipc_msg	+ipc.sh
+ipc_sem	+ipc.sh
+ipc_shm	+ipc.sh
+kcmp	-a27
+kexec_file_load	-s9
+kexec_load	-s9
+keyctl	-a31 -s10
+kill	-a12 -esignal=none
+lchown	-a30
+lchown32	-a32
+link
+linkat
+lookup_dcookie	-a27
+lstat	-a32 -v -P stat.sample -P /dev/full
+lstat64	-a32 -v -P stat.sample -P /dev/full
+madvise	-a33
+mbind
+membarrier	-a36
+memfd_create
+migrate_pages	-a33
+mincore	-a22
+mkdir	-a20
+mkdirat	-a28
+mknod	-a18
+mknodat	-a35
+mlock	-a20 -e trace=mlock,munlock
+mlock2
+mlockall	-a12
+mmap64	+mmap.test
+mmsg	-e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
+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
+mount
+move_pages	-s3
+mq	-a32 -e trace=mq_getsetattr,mq_open,mq_unlink
+mq_sendrecv	-a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-read	-eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-write	-ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+msg_control	-a21 -e trace=sendmsg
+msg_control-v	-v -a21 -e trace=sendmsg
+msg_name	-a20 -e trace=recvmsg
+munlockall	-a13
+nanosleep	-a20
+net-icmp_filter	-e trace=getsockopt,setsockopt
+net-sockaddr	-a24 -e trace=connect
+netlink_protocol	-e trace=%network
+newfstatat	-a32 -v -P stat.sample -P /dev/full
+old_mmap	-a11 -e trace=mmap
+oldfstat	-a18 -v -P stat.sample
+oldlstat	-a32 -v -P stat.sample -P /dev/full
+oldstat	-a32 -v -P stat.sample -P /dev/full
+open	-a30 -P $NAME.sample
+openat	-P $NAME.sample
+osf_utimes	-a21
+pause	-a8 -esignal=none
+perf_event_open	-a1
+perf_event_open_nonverbose	-a34 -e verbose=none -e trace=perf_event_open
+perf_event_open_unabbrev	-a1 -v -e trace=perf_event_open
+pipe2	-a15
+pkey_alloc	-a17
+pkey_free	-a13
+pkey_mprotect	-a37
+ppoll	-s2
+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
+preadv-pwritev	-a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
+preadv2-pwritev2	-a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
+printstr	-e trace=writev
+prlimit64
+process_vm_readv	-s5 -a37
+process_vm_writev	-s5 -a38
+pselect6
+ptrace	-a23 -e signal=none
+pwritev	-a22 -s7
+quotactl
+quotactl-v	-v -e trace=quotactl
+quotactl-xfs	-e trace=quotactl
+quotactl-xfs-v	-v -e trace=quotactl
+read-write	-a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
+readahead	-a1
+readdir	-a16
+readlink	-xx
+readlinkat	-xx
+reboot
+recvfrom	-a35
+recvmmsg-timeout	-a25 -e trace=recvmmsg
+recvmsg	-eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
+regex	test_trace_expr '' -etrace='/^(.*_)?statv?fs'
+remap_file_pages
+rename	-a35
+renameat
+renameat2
+request_key	-a33 -s12
+rmdir	-a22
+rt_sigpending	-a20
+rt_sigprocmask
+rt_sigqueueinfo	-esignal=none
+rt_sigreturn	-esignal='!USR1'
+rt_sigsuspend	-a20 -esignal=none
+rt_sigtimedwait	-a38
+rt_tgsigqueueinfo	-esignal=none
+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
+sched_xetaffinity	-a28 -e trace=sched_getaffinity,sched_setaffinity
+sched_xetattr	-a29 -e trace=sched_getattr,sched_setattr
+sched_xetparam	-a23 -e trace=sched_getparam,sched_setparam
+sched_xetscheduler	-a22 -e trace=sched_getscheduler,sched_setscheduler
+sched_yield	-a14
+seccomp-filter	-e trace=seccomp
+seccomp-filter-v	-v -e trace=seccomp
+select	-a36
+semop	-a32 -e trace=semop,semtimedop
+sendfile	-a27
+sendfile64	-a29
+set_mempolicy	-s3 -a35
+setdomainname	-a24
+setfsgid	-a12
+setfsgid32	-a14
+setfsuid	-a12
+setfsuid32	-a14
+setgid	-a10
+setgid32	-a12
+setgroups	-s2 -a17
+setgroups32	-s2 -a19
+sethostname	-a22
+setns	-a21
+setregid	-a15
+setregid32	-a17
+setresgid	-a19
+setresgid32	-a21
+setresuid	-a19
+setresuid32	-a21
+setreuid	-a15
+setreuid32	-a17
+setrlimit	-a27
+setuid	-a10
+setuid32	-a12
+shmxt	-a11 -e trace='/(osf_)?shmat,shmdt'
+shutdown	-a24
+siginfo	-e trace=none
+signal_receive	-a16 -e trace=kill
+signalfd4
+sigreturn	-esignal='!USR1'
+sigsuspend	-a19 -esignal=none
+socketcall	-a20
+splice
+stat	-a32 -v -P stat.sample -P /dev/full
+stat64	-a32 -v -P stat.sample -P /dev/full
+statfs	-a17
+statfs64	-a23
+statx	-a32 -v -P stat.sample -P /dev/full
+swap	-a23 -e trace=swapon,swapoff
+sxetmask	-a11 -e trace=sgetmask,ssetmask
+symlink	-a34
+symlinkat
+sync	-a7
+sync_file_range
+sync_file_range2
+sysinfo	-a14
+syslog	-a36
+tee
+time	-a10
+timer_create
+timer_xettime	-e trace=timer_create,timer_settime,timer_gettime
+timerfd_xettime	-e trace=timerfd_create,timerfd_settime,timerfd_gettime
+times	-esignal=none
+times-fail	-a12 -e trace=times
+trace_fstat	test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
+trace_fstatfs	test_trace_expr '' -e%fstatfs
+trace_lstat	test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
+trace_question	test_trace_expr '' -e?osf_utimes,?/^pkey_.*
+trace_stat	test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
+trace_stat_like	test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
+trace_statfs	test_trace_expr '' -e%statfs
+trace_statfs_like	test_trace_expr '' -e%%statfs
+truncate
+truncate64
+ugetrlimit	-a28
+umask	-a11
+umoven-illptr	-a36 -e trace=nanosleep
+umovestr-illptr	-a11 -e trace=chdir
+umovestr3	-a14 -e trace=chdir
+unlink	-a24
+unlinkat	-a35
+unshare	-a11
+userfaultfd	-a38
+ustat	-a33
+utime	-a16
+utimensat	-a33
+utimes	-a17
+vfork-f	-a26 -qq -f -e signal=none -e trace=chdir
+vhangup	-a10
+vmsplice	-ewrite=1
+wait4	-esignal=none
+wait4-v	-v -e signal=none -e trace=wait4
+waitid	-esignal=none
+waitid-v	-v -e signal=none -e trace=waitid
+waitpid	-a28
+xattr	-a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
+xattr-strings	-a22 -s 4 -e trace=fsetxattr
+xet_robust_list	-a24 -e trace=get_robust_list,set_robust_list
+xetitimer	-a29 -e trace=setitimer,getitimer
+xetpgid	-a11 -e trace=getpgid,setpgid
+xetpriority	-a29 -e trace=getpriority,setpriority
+xettimeofday	-a20 -e trace=gettimeofday,settimeofday
diff --git a/tests-m32/gen_tests.sh b/tests-m32/gen_tests.sh
new file mode 100755
index 0000000..b062436
--- /dev/null
+++ b/tests-m32/gen_tests.sh
@@ -0,0 +1,110 @@
+#!/bin/sh -efu
+#
+# 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.
+
+usage()
+{
+	cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
+
+Generate test script(s) from <input> table.
+If a <output> is specified, generate the script for this test only,
+otherwise generate scripts for all tests specified in <input> table.
+EOF
+	exit 1
+}
+
+input="${0%/*}/gen_tests.in"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output=
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
+
+if [ -n "$output" ]; then
+	match="${output##*/}"
+	match="${match%.gen.test}"
+	[ -n "$match" ] || usage
+else
+	match=
+	dir="$(dirname "$input")"
+fi
+
+names=
+
+while read -r name args; do {
+	[ -n "${name###*}" ] || continue
+	if [ -z "$match" ]; then
+		names="$names $name"
+		output="$dir/$name.gen.test"
+	else
+		[ "$match" = "$name" ] || continue
+	fi
+
+	hdr="\
+#!/bin/sh -efu
+# Generated by $0 from $input ($name $args); do not edit."
+
+	case "$args" in
+		+*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/${args#+}"
+		EOF
+		;;
+
+		''|-*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/init.sh"
+		run_strace_match_diff $args
+		EOF
+		;;
+
+		*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/init.sh"
+		$args
+		EOF
+		;;
+	esac > "$output"
+
+	chmod a+x "$output"
+} < /dev/null; done < "$input"
+
+if [ -n "$names" ]; then
+	{
+		printf '# Generated by %s from %s; do not edit.\n' "$0" "$input"
+		printf 'GEN_TESTS ='
+		printf ' %s.gen.test' $names
+		echo
+		target='$(srcdir)/%s.gen.test'
+		dep1='$(abs_srcdir)/gen_tests.sh'
+		dep2='$(srcdir)/gen_tests.in'
+		recipe='$(AM_V_GEN) $^ $@'
+		printf "\\n$target: $dep1 $dep2\\n\\t$recipe\\n" $names
+	} > "$dir/gen_tests.am"
+fi
diff --git a/tests-m32/get_mempolicy.gen.test b/tests-m32/get_mempolicy.gen.test
new file mode 100755
index 0000000..ec6efb3
--- /dev/null
+++ b/tests-m32/get_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (get_mempolicy -s3 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a38
diff --git a/tests-m32/get_mempolicy.test b/tests-m32/get_mempolicy.test
deleted file mode 100755
index 9227097..0000000
--- a/tests-m32/get_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a38
diff --git a/tests-m32/get_regs.test b/tests-m32/get_regs.test
new file mode 100755
index 0000000..c673fe9
--- /dev/null
+++ b/tests-m32/get_regs.test
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# Check that get_regs is skipped for filtered syscalls.
+#
+# 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.
+
+. "${srcdir=.}/init.sh"
+
+check_prog env
+check_prog grep
+run_prog ../gettid > /dev/null
+
+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
+
+[ "$(cat less)" -gt 0 ] ||
+	fail_ "$STRACE $args failed to catch any ptrace syscalls"
+
+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
+
+[ "$(cat more)" -gt 0 ] ||
+	fail_ "$STRACE $args failed to catch any ptrace syscalls"
+
+[ "$(cat more)" -gt "$(cat less)" ] ||
+	fail_ "$STRACE failed to skip get_regs for filtered syscalls"
diff --git a/tests-m32/get_sigset_size.c b/tests-m32/get_sigset_size.c
new file mode 100644
index 0000000..357829d
--- /dev/null
+++ b/tests-m32/get_sigset_size.c
@@ -0,0 +1,66 @@
+/*
+ * Find out the size of kernel's sigset_t.
+ *
+ * Copyright (c) 2016-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 <signal.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+/*
+ * If the sigset size specified to rt_sigprocmask is not equal to the size
+ * of kernel's sigset_t, the kernel does not look at anything else and fails
+ * with EINVAL.
+ *
+ * Otherwise, if both pointers specified to rt_sigprocmask are NULL,
+ * the kernel just returns 0.
+ *
+ * This vaguely documented kernel feature can be used to probe
+ * the kernel and find out the size of kernel's sigset_t.
+ */
+
+unsigned int
+get_sigset_size(void)
+{
+	static unsigned int set_size;
+
+	if (!set_size) {
+		static const unsigned int big_size = 1024 / 8;
+
+		for (set_size = big_size; set_size; set_size >>= 1) {
+			if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
+				     NULL, NULL, set_size))
+				break;
+		}
+
+		if (!set_size)
+			perror_msg_and_fail("rt_sigprocmask");
+	}
+
+	return set_size;
+}
diff --git a/tests-m32/getcpu.c b/tests-m32/getcpu.c
index ec671f1..3cb49cb 100644
--- a/tests-m32/getcpu.c
+++ b/tests-m32/getcpu.c
@@ -2,6 +2,7 @@
  * Check decoding of getcpu syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,8 +48,8 @@
 		(unsigned *) tail_alloc(sizeof(* bogus_tcache)) + 1;
 
 	long res;
-	unsigned *cpu = tail_alloc(sizeof(*cpu));
-	unsigned *node = tail_alloc(sizeof(*node));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, cpu);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, node);
 	long * tcache = tail_alloc(128);
 
 	res = syscall(__NR_getcpu, NULL, NULL, NULL);
diff --git a/tests-m32/getcpu.gen.test b/tests-m32/getcpu.gen.test
new file mode 100755
index 0000000..44d9a4b
--- /dev/null
+++ b/tests-m32/getcpu.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests-m32/getcpu.test b/tests-m32/getcpu.test
deleted file mode 100755
index fe21265..0000000
--- a/tests-m32/getcpu.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getcpu syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-m32/getcwd.gen.test b/tests-m32/getcwd.gen.test
new file mode 100755
index 0000000..af2ff08
--- /dev/null
+++ b/tests-m32/getcwd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-m32/getcwd.test b/tests-m32/getcwd.test
deleted file mode 100755
index 405187e..0000000
--- a/tests-m32/getcwd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-m32/getdents.c b/tests-m32/getdents.c
index b787c83..338eab0 100644
--- a/tests-m32/getdents.c
+++ b/tests-m32/getdents.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -92,12 +93,10 @@
 }
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "getdents.test.tmp.dir";
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests-m32/getdents.gen.test b/tests-m32/getdents.gen.test
new file mode 100755
index 0000000..0db5f20
--- /dev/null
+++ b/tests-m32/getdents.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a22 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -v
diff --git a/tests-m32/getdents.test b/tests-m32/getdents.test
deleted file mode 100755
index 23c4ac3..0000000
--- a/tests-m32/getdents.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a22 -v
diff --git a/tests-m32/getdents64.c b/tests-m32/getdents64.c
index 9da2a23..1f6b47e 100644
--- a/tests-m32/getdents64.c
+++ b/tests-m32/getdents64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -98,12 +99,10 @@
 }
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "getdents64.test.tmp.dir";
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests-m32/getdents64.gen.test b/tests-m32/getdents64.gen.test
new file mode 100755
index 0000000..6e24d40
--- /dev/null
+++ b/tests-m32/getdents64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a24 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -v
diff --git a/tests-m32/getdents64.test b/tests-m32/getdents64.test
deleted file mode 100755
index 401cfc7..0000000
--- a/tests-m32/getdents64.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a24 -v
diff --git a/tests-m32/getegid.gen.test b/tests-m32/getegid.gen.test
new file mode 100755
index 0000000..d6fecc2
--- /dev/null
+++ b/tests-m32/getegid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getegid.test b/tests-m32/getegid.test
deleted file mode 100755
index 4354158..0000000
--- a/tests-m32/getegid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getegid32.gen.test b/tests-m32/getegid32.gen.test
new file mode 100755
index 0000000..38c4a4b
--- /dev/null
+++ b/tests-m32/getegid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getegid32.test b/tests-m32/getegid32.test
deleted file mode 100755
index a266620..0000000
--- a/tests-m32/getegid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/geteuid.gen.test b/tests-m32/geteuid.gen.test
new file mode 100755
index 0000000..9e8c12f
--- /dev/null
+++ b/tests-m32/geteuid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/geteuid.test b/tests-m32/geteuid.test
deleted file mode 100755
index 14ff6a6..0000000
--- a/tests-m32/geteuid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/geteuid32.gen.test b/tests-m32/geteuid32.gen.test
new file mode 100755
index 0000000..5b78331
--- /dev/null
+++ b/tests-m32/geteuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/geteuid32.test b/tests-m32/geteuid32.test
deleted file mode 100755
index 9dd173d..0000000
--- a/tests-m32/geteuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgid.gen.test b/tests-m32/getgid.gen.test
new file mode 100755
index 0000000..5a87aee
--- /dev/null
+++ b/tests-m32/getgid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgid.test b/tests-m32/getgid.test
deleted file mode 100755
index f4f0c2e..0000000
--- a/tests-m32/getgid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgid32.gen.test b/tests-m32/getgid32.gen.test
new file mode 100755
index 0000000..05e2d70
--- /dev/null
+++ b/tests-m32/getgid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgid32.test b/tests-m32/getgid32.test
deleted file mode 100755
index 3bc98d1..0000000
--- a/tests-m32/getgid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getgroups.c b/tests-m32/getgroups.c
index 2617303..c7cd874 100644
--- a/tests-m32/getgroups.c
+++ b/tests-m32/getgroups.c
@@ -2,6 +2,7 @@
  * Check decoding of getgroups/getgroups32 syscalls.
  *
  * 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
@@ -91,7 +92,7 @@
 	if (ngroups < 0)
 		perror_msg_and_fail(SYSCALL_NAME);
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
 	printf("%s(0, NULL) = %ld\n", SYSCALL_NAME, rc);
 
 	rc = syscall(SYSCALL_NR, -1U, 0);
@@ -105,7 +106,7 @@
 	rc = syscall(SYSCALL_NR, ngroups_max, 0);
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL | ngroups_max, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, 0);
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
 	/* check how the second argument is decoded */
diff --git a/tests-m32/getgroups.gen.test b/tests-m32/getgroups.gen.test
new file mode 100755
index 0000000..48b09be
--- /dev/null
+++ b/tests-m32/getgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-m32/getgroups.test b/tests-m32/getgroups.test
deleted file mode 100755
index 2eb3056..0000000
--- a/tests-m32/getgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-m32/getgroups32.gen.test b/tests-m32/getgroups32.gen.test
new file mode 100755
index 0000000..74637d0
--- /dev/null
+++ b/tests-m32/getgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-m32/getgroups32.test b/tests-m32/getgroups32.test
deleted file mode 100755
index 12a8bcc..0000000
--- a/tests-m32/getgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-m32/getpeername.gen.test b/tests-m32/getpeername.gen.test
new file mode 100755
index 0000000..66fb0a9
--- /dev/null
+++ b/tests-m32/getpeername.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/getpeername.test b/tests-m32/getpeername.test
deleted file mode 100755
index 81f01bb..0000000
--- a/tests-m32/getpeername.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getpeername syscall.
-
-. "${srcdir=.}/getsockname.test"
diff --git a/tests-m32/getpgrp.gen.test b/tests-m32/getpgrp.gen.test
new file mode 100755
index 0000000..1ec48e9
--- /dev/null
+++ b/tests-m32/getpgrp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/getpgrp.test b/tests-m32/getpgrp.test
deleted file mode 100755
index e116bb5..0000000
--- a/tests-m32/getpgrp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgrp syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-m32/getpid.c b/tests-m32/getpid.c
new file mode 100644
index 0000000..96f2d15
--- /dev/null
+++ b/tests-m32/getpid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getpid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	printf("getpid() = %ld\n", syscall(__NR_getpid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getpid")
+
+#endif
diff --git a/tests-m32/getpid.gen.test b/tests-m32/getpid.gen.test
new file mode 100755
index 0000000..4691774
--- /dev/null
+++ b/tests-m32/getpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests-m32/getppid.c b/tests-m32/getppid.c
new file mode 100644
index 0000000..58901fc
--- /dev/null
+++ b/tests-m32/getppid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getppid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	printf("getppid() = %ld\n", syscall(__NR_getppid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getppid")
+
+#endif
diff --git a/tests-m32/getppid.gen.test b/tests-m32/getppid.gen.test
new file mode 100755
index 0000000..52116a0
--- /dev/null
+++ b/tests-m32/getppid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/getrandom.gen.test b/tests-m32/getrandom.gen.test
new file mode 100755
index 0000000..2f5b989
--- /dev/null
+++ b/tests-m32/getrandom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrandom -a32 -s3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -s3
diff --git a/tests-m32/getrandom.test b/tests-m32/getrandom.test
deleted file mode 100755
index ad34048..0000000
--- a/tests-m32/getrandom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrandom syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -s3
diff --git a/tests-m32/getresgid.gen.test b/tests-m32/getresgid.gen.test
new file mode 100755
index 0000000..f53bccc
--- /dev/null
+++ b/tests-m32/getresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests-m32/getresgid.test b/tests-m32/getresgid.test
deleted file mode 100755
index 9f5186e..0000000
--- a/tests-m32/getresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-m32/getresgid32.gen.test b/tests-m32/getresgid32.gen.test
new file mode 100755
index 0000000..5f00506
--- /dev/null
+++ b/tests-m32/getresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/getresgid32.test b/tests-m32/getresgid32.test
deleted file mode 100755
index a979891..0000000
--- a/tests-m32/getresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/getresugid.c b/tests-m32/getresugid.c
index 0ee721c..af9f015 100644
--- a/tests-m32/getresugid.c
+++ b/tests-m32/getresugid.c
@@ -2,6 +2,7 @@
  * Check decoding of getresuid/getresgid/getresuid32/getresgid32 syscalls.
  *
  * 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
@@ -34,9 +35,9 @@
 int
 main(void)
 {
-	unsigned UGID_TYPE *const r = tail_alloc(sizeof(*r));
-	unsigned UGID_TYPE *const e = tail_alloc(sizeof(*e));
-	unsigned UGID_TYPE *const s = tail_alloc(sizeof(*s));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, r);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, e);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, s);
 
 	if (syscall(SYSCALL_NR, r, e, s))
 		perror_msg_and_fail(SYSCALL_NAME);
diff --git a/tests-m32/getresuid.gen.test b/tests-m32/getresuid.gen.test
new file mode 100755
index 0000000..e947a94
--- /dev/null
+++ b/tests-m32/getresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests-m32/getresuid.test b/tests-m32/getresuid.test
deleted file mode 100755
index eee1ac0..0000000
--- a/tests-m32/getresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-m32/getresuid32.gen.test b/tests-m32/getresuid32.gen.test
new file mode 100755
index 0000000..b088a22
--- /dev/null
+++ b/tests-m32/getresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/getresuid32.test b/tests-m32/getresuid32.test
deleted file mode 100755
index fdc76a3..0000000
--- a/tests-m32/getresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/getrlimit.gen.test b/tests-m32/getrlimit.gen.test
new file mode 100755
index 0000000..b97c176
--- /dev/null
+++ b/tests-m32/getrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/getrlimit.test b/tests-m32/getrlimit.test
deleted file mode 100755
index 6fd88ae..0000000
--- a/tests-m32/getrlimit.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit syscall.
-
-. "${srcdir=.}/setrlimit.test"
diff --git a/tests-m32/getrusage.c b/tests-m32/getrusage.c
index 8b76eff..bb52dd9 100644
--- a/tests-m32/getrusage.c
+++ b/tests-m32/getrusage.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * 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
@@ -35,27 +36,46 @@
 # include <stdint.h>
 # include <sys/resource.h>
 # include <unistd.h>
+# include <errno.h>
+
+# include "xlat.h"
+# include "xlat/usagewho.h"
 
 int
-main(void)
+invoke_print(int who, const char *who_str, struct rusage *usage)
 {
-	struct rusage *const usage = tail_alloc(sizeof(struct rusage));
-	int rc = syscall(__NR_getrusage, RUSAGE_SELF, usage);
-	printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%jd, tv_usec=%jd}"
-	       ", ru_stime={tv_sec=%jd, tv_usec=%jd}, ru_maxrss=%lu"
+	int rc = syscall(__NR_getrusage, who, usage);
+	int saved_errno = errno;
+	printf("getrusage(%s, {ru_utime={tv_sec=%lld, tv_usec=%llu}"
+	       ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%lu"
 	       ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
 	       ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
 	       ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
-	       ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %d\n",
-	       (intmax_t) usage->ru_utime.tv_sec,
-	       (intmax_t) usage->ru_utime.tv_usec,
-	       (intmax_t) usage->ru_stime.tv_sec,
-	       (intmax_t) usage->ru_stime.tv_usec,
+	       ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %s\n",
+	       who_str,
+	       (long long) usage->ru_utime.tv_sec,
+	       zero_extend_signed_to_ull(usage->ru_utime.tv_usec),
+	       (long long) usage->ru_stime.tv_sec,
+	       zero_extend_signed_to_ull(usage->ru_stime.tv_usec),
 	       usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
 	       usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
 	       usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
 	       usage->ru_msgsnd, usage->ru_msgrcv, usage->ru_nsignals,
-	       usage->ru_nvcsw, usage->ru_nivcsw, rc);
+	       usage->ru_nvcsw, usage->ru_nivcsw, sprintrc(rc));
+	errno = saved_errno;
+	return rc;
+}
+
+int
+main(void)
+{
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+	if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {
+		perror_msg_and_fail("RUSAGE_SELF");
+	}
+	if (invoke_print(ARG_STR(RUSAGE_THREAD), usage) && errno != EINVAL) {
+		perror_msg_and_fail("RUSAGE_THREAD");
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/getrusage.gen.test b/tests-m32/getrusage.gen.test
new file mode 100755
index 0000000..c4fb182
--- /dev/null
+++ b/tests-m32/getrusage.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v
diff --git a/tests-m32/getrusage.test b/tests-m32/getrusage.test
deleted file mode 100755
index 4a3e8ed..0000000
--- a/tests-m32/getrusage.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrusage syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v
diff --git a/tests-m32/getsid.gen.test b/tests-m32/getsid.gen.test
new file mode 100755
index 0000000..123f177
--- /dev/null
+++ b/tests-m32/getsid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/getsid.test b/tests-m32/getsid.test
deleted file mode 100755
index 3fcf979..0000000
--- a/tests-m32/getsid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getsid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-m32/getsockname.gen.test b/tests-m32/getsockname.gen.test
new file mode 100755
index 0000000..cd40d3e
--- /dev/null
+++ b/tests-m32/getsockname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/getsockname.test b/tests-m32/getsockname.test
deleted file mode 100755
index 99b2850..0000000
--- a/tests-m32/getsockname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getsockname syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/gettid.c b/tests-m32/gettid.c
new file mode 100644
index 0000000..9b13eb8
--- /dev/null
+++ b/tests-m32/gettid.c
@@ -0,0 +1,12 @@
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+int
+main(void)
+{
+	printf("gettid() = %ld\n", syscall(__NR_gettid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-m32/gettid.gen.test b/tests-m32/gettid.gen.test
new file mode 100755
index 0000000..1ceaa53
--- /dev/null
+++ b/tests-m32/gettid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests-m32/getuid.test b/tests-m32/getuid.test
index 9aaf74b..0bad1ff 100755
--- a/tests-m32/getuid.test
+++ b/tests-m32/getuid.test
@@ -9,4 +9,3 @@
 run_strace -qq -a9 -e$NAME $args > "$EXP"
 uniq < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests-m32/getuid32.gen.test b/tests-m32/getuid32.gen.test
new file mode 100755
index 0000000..ac0d0ad
--- /dev/null
+++ b/tests-m32/getuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getuid32.test b/tests-m32/getuid32.test
deleted file mode 100755
index ae0c557..0000000
--- a/tests-m32/getuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-m32/getxxid.gen.test b/tests-m32/getxxid.gen.test
new file mode 100755
index 0000000..5aa89f6
--- /dev/null
+++ b/tests-m32/getxxid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxxid -a10 -e trace=getxpid,getxuid,getxgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests-m32/getxxid.test b/tests-m32/getxxid.test
deleted file mode 100755
index 9b89d7c..0000000
--- a/tests-m32/getxxid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getxpid, getxuid, and getxgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests-m32/inet-cmsg.gen.test b/tests-m32/inet-cmsg.gen.test
new file mode 100755
index 0000000..8eeb7c9
--- /dev/null
+++ b/tests-m32/inet-cmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inet-cmsg -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=recvmsg
diff --git a/tests-m32/inet-cmsg.test b/tests-m32/inet-cmsg.test
deleted file mode 100755
index 52ff5f5..0000000
--- a/tests-m32/inet-cmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check IPPROTO_IP control messages decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmsg
diff --git a/tests-m32/init.sh b/tests-m32/init.sh
index f368b98..2844765 100644
--- a/tests-m32/init.sh
+++ b/tests-m32/init.sh
@@ -1,6 +1,7 @@
 #!/bin/sh
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -26,10 +27,9 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ME_="${0##*/}"
-LOG="$ME_.tmp"
-OUT="$LOG.out"
-EXP="$LOG.exp"
-NAME="${ME_%.test}"
+LOG="log"
+OUT="out"
+EXP="exp"
 
 warn_() { printf >&2 '%s\n' "$*"; }
 fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
@@ -52,7 +52,7 @@
 run_prog()
 {
 	if [ $# -eq 0 ]; then
-		set -- "./$NAME"
+		set -- "../$NAME"
 	fi
 	args="$*"
 	"$@" || {
@@ -72,6 +72,20 @@
 	"$@" || framework_skip_ "$args failed with code $?"
 }
 
+try_run_prog()
+{
+	local rc
+
+	"$@" > /dev/null || {
+		rc=$?
+		if [ $rc -eq 77 ]; then
+			return 1
+		else
+			fail_ "$* failed with code $rc"
+		fi
+	}
+}
+
 run_strace()
 {
 	> "$LOG" || fail_ "failed to write $LOG"
@@ -213,7 +227,6 @@
 	run_prog > /dev/null
 	run_strace "$@" $args > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 # Print kernel version code.
@@ -250,22 +263,110 @@
 	cat < "/proc/$pid/status" | grep "$@"
 }
 
+# Subtracts one program set from another.
+# If an optional regular expression is specified, the lines in the minuend file
+# that match this regular expression are elso excluded from the output.
+#
+# Usage: prog_set_subtract minuend_file subtrahend_file [subtrahend_regexp]
+prog_set_subtract()
+{
+	local min sub re pat
+	min="$1"; shift
+	sub="$1"; shift
+	re="${1-}"
+	pat="$re|$(sed 's/[[:space:]].*//' < "$sub" | tr -s '\n' '|')"
+	grep -E -v -x -e "$pat" < "$min"
+}
+
+# Usage: test_pure_prog_set [--expfile FILE] COMMON_ARGS < tests_file
+# stdin should consist of lines in "test_name strace_args..." format.
+test_pure_prog_set()
+{
+	local expfile
+
+	expfile="$EXP"
+
+	while [ -n "$1" ]; do
+		case "$1" in
+		--expfile)
+			shift
+			expfile="$1"
+			shift
+			;;
+		*)
+			break
+			;;
+		esac
+	done
+
+	while read -r t prog_args; do {
+		# skip lines beginning with "#" symbol
+		[ "${t###}" = "$t" ] || continue
+
+		try_run_prog "../$t" || continue
+		run_strace $prog_args "$@" "../$t" > "$expfile"
+		match_diff "$LOG" "$expfile"
+	} < /dev/null; done
+}
+
+# Run strace against list of programs put in "$NAME.in" and then against the
+# rest of pure_executables.list with the expectation of empty output in the
+# latter case.
+#
+# Usage: source this file after init.sh and call:
+#   test_trace_expr subtrahend_regexp strace_args
+# Environment:
+#   $NAME:	test name, used for "$NAME.in" file containing list of tests
+#		for positive trace expression match;
+#   $srcdir:	used to find pure_executables.list and "$NAME.in" files.
+# Files created:
+#   negative.list: File containing list of tests for negative match.
+test_trace_expr()
+{
+	local subtrahend_regexp
+	subtrahend_regexp="$1"; shift
+	test_pure_prog_set "$@" < "$srcdir/$NAME.in"
+	prog_set_subtract "$srcdir/pure_executables.list" "$srcdir/$NAME.in" \
+		"$subtrahend_regexp" > negative.list
+	test_pure_prog_set --expfile /dev/null -qq -esignal=none "$@" \
+		< negative.list
+}
+
 check_prog cat
 check_prog rm
 
-rm -f "$LOG"
+case "$ME_" in
+	*.gen.test) NAME="${ME_%.gen.test}" ;;
+	*.test) NAME="${ME_%.test}" ;;
+	*) NAME=
+esac
 
-[ -n "${STRACE-}" ] || {
-	STRACE=../strace
-	case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
-		*--suppressions=*--error-exitcode=*--tool=*)
+if [ -n "$NAME" ]; then
+	TESTDIR="$NAME.dir"
+	rm -rf -- "$TESTDIR"
+	mkdir -- "$TESTDIR"
+	cd "$TESTDIR"
+
+	case "$srcdir" in
+		/*) ;;
+		*) srcdir="../$srcdir" ;;
+	esac
+
+	[ -n "${STRACE-}" ] || {
+		STRACE=../../strace
+		case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
+			*--suppressions=*--error-exitcode=*--tool=*)
 			# add valgrind command prefix
 			STRACE="${LOG_COMPILER-} ${LOG_FLAGS-} $STRACE"
 			;;
-	esac
-}
+		esac
+	}
+else
+	[ -n "${STRACE-}" ] ||
+		STRACE=../strace
+fi
 
-: "${TIMEOUT_DURATION:=60}"
+: "${TIMEOUT_DURATION:=120}"
 : "${SLEEP_A_BIT:=sleep 1}"
 
 [ -z "${VERBOSE-}" ] ||
diff --git a/tests-m32/init_delete_module.h b/tests-m32/init_delete_module.h
index db550c3..cabf26f 100644
--- a/tests-m32/init_delete_module.h
+++ b/tests-m32/init_delete_module.h
@@ -3,6 +3,7 @@
  * and delete_module tests.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,9 +43,6 @@
 	MAX_STRLEN = 32,
 };
 
-static const kernel_ulong_t bogus_zero =
-	(kernel_ulong_t) 0xffffffff00000000ULL;
-
 static void
 print_str(unsigned int base, unsigned int len, bool escape)
 {
diff --git a/tests-m32/init_module.c b/tests-m32/init_module.c
index 88ef9ec..8fbb263 100644
--- a/tests-m32/init_module.c
+++ b/tests-m32/init_module.c
@@ -2,6 +2,7 @@
  * Check decoding of init_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,9 +56,9 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_init_module, NULL, bogus_zero, NULL);
+	rc = syscall(__NR_init_module, NULL, F8ILL_KULONG_MASK, NULL);
 	printf("init_module(NULL, %llu, NULL) = %s\n",
-	       (unsigned long long) bogus_zero, sprintrc(rc));
+	       (unsigned long long) F8ILL_KULONG_MASK, sprintrc(rc));
 
 	rc = syscall(__NR_init_module, bogus_addr, 0, bogus_param1);
 	errstr = sprintrc(rc);
diff --git a/tests-m32/init_module.gen.test b/tests-m32/init_module.gen.test
new file mode 100755
index 0000000..8948e2e
--- /dev/null
+++ b/tests-m32/init_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/init_module.test b/tests-m32/init_module.test
deleted file mode 100755
index ef7c732..0000000
--- a/tests-m32/init_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of init_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/inotify.gen.test b/tests-m32/inotify.gen.test
new file mode 100755
index 0000000..7010206
--- /dev/null
+++ b/tests-m32/inotify.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify -a23 -e trace=inotify_add_watch,inotify_rm_watch); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=inotify_add_watch,inotify_rm_watch
diff --git a/tests-m32/inotify.test b/tests-m32/inotify.test
deleted file mode 100755
index 436f3bc..0000000
--- a/tests-m32/inotify.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=inotify_add_watch,inotify_rm_watch -a23
diff --git a/tests-m32/inotify_init1.gen.test b/tests-m32/inotify_init1.gen.test
new file mode 100755
index 0000000..d847b50
--- /dev/null
+++ b/tests-m32/inotify_init1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/inotify_init1.test b/tests-m32/inotify_init1.test
deleted file mode 100755
index 1a7c926..0000000
--- a/tests-m32/inotify_init1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of inotify_init1 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/int_0x80.c b/tests-m32/int_0x80.c
new file mode 100644
index 0000000..012694f
--- /dev/null
+++ b/tests-m32/int_0x80.c
@@ -0,0 +1,52 @@
+/*
+ * Check decoding of int 0x80 on x86_64, x32, and x86.
+ *
+ * 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"
+
+#if defined __x86_64__ || defined __i386__
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	/* 200 is __NR_getgid32 on x86 and __NR_tkill on x86_64. */
+	__asm__("movl $200, %eax; int $0x80");
+	printf("getgid32() = %d\n", getegid());
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__x86_64__ || __i386__")
+
+#endif
diff --git a/tests-m32/int_0x80.gen.test b/tests-m32/int_0x80.gen.test
new file mode 100755
index 0000000..2ab4f2f
--- /dev/null
+++ b/tests-m32/int_0x80.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (int_0x80 -a11 -e trace=getgid32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getgid32
diff --git a/tests-m32/ioctl-v.sh b/tests-m32/ioctl-v.sh
new file mode 100755
index 0000000..be89671
--- /dev/null
+++ b/tests-m32/ioctl-v.sh
@@ -0,0 +1,11 @@
+#!/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 92a3191..5dc0864 100644
--- a/tests-m32/ioctl.c
+++ b/tests-m32/ioctl.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/ioctl.test b/tests-m32/ioctl.test
index 94bc5d4..1eb469e 100755
--- a/tests-m32/ioctl.test
+++ b/tests-m32/ioctl.test
@@ -4,12 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-m32/ioctl_block.c b/tests-m32/ioctl_block.c
index f62b0b3..8e883d4 100644
--- a/tests-m32/ioctl_block.c
+++ b/tests-m32/ioctl_block.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_block strace test.
  *
  * 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
@@ -113,7 +114,7 @@
 	ioctl(-1, BLKFRASET, lmagic);
 	printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
-	int *const val_int = tail_alloc(sizeof(*val_int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
 	*val_int = magic;
 
 	ioctl(-1, BLKROSET, val_int);
@@ -144,7 +145,7 @@
 	       " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
-	struct blkpg_ioctl_arg *const blkpg = tail_alloc(sizeof(*blkpg));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_ioctl_arg, blkpg);
 	blkpg->op = 3;
 	blkpg->flags = 0xdeadbeef;
 	blkpg->datalen = 0xbadc0ded;
@@ -156,7 +157,7 @@
 	       "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen,
 	       (unsigned long) blkpg->data);
 
-	struct blkpg_partition *const bp = tail_alloc(sizeof(*bp));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_partition, bp);
 	bp->start = 0xfac1fed2dad3bef4ULL;
 	bp->length = 0xfac5fed6dad7bef8ULL;
 	bp->pno = magic;
@@ -177,7 +178,7 @@
 	       (int) sizeof(bp->volname) - 1, bp->volname);
 
 #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
-	struct blk_user_trace_setup *const buts = tail_alloc(sizeof(*buts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts);
 	fill_memory(buts, sizeof(*buts));
 
 	ioctl(-1, BLKTRACESETUP, buts);
diff --git a/tests-m32/ioctl_block.gen.test b/tests-m32/ioctl_block.gen.test
new file mode 100755
index 0000000..0ffec6f
--- /dev/null
+++ b/tests-m32/ioctl_block.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_block.test b/tests-m32/ioctl_block.test
deleted file mode 100755
index 0bf2500..0000000
--- a/tests-m32/ioctl_block.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of BLK* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_dm-v.test b/tests-m32/ioctl_dm-v.test
index ade3b9e..eed37c2 100755
--- a/tests-m32/ioctl_dm-v.test
+++ b/tests-m32/ioctl_dm-v.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -s9 -veioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_dm.c b/tests-m32/ioctl_dm.c
index 08f036c..544d70b 100644
--- a/tests-m32/ioctl_dm.c
+++ b/tests-m32/ioctl_dm.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -234,15 +235,15 @@
 	dm_arg->version[1] = 0xbadc0dee;
 	dm_arg->version[2] = 0xbadc0def;
 	ioctl(-1, DM_VERSION, dm_arg);
-	printf("ioctl(-1, DM_VERSION, {version=%u.%u.%u, "
-	       "/* Unsupported device mapper ABI version */ ...}) = "
+	printf("ioctl(-1, DM_VERSION, {version=%u.%u.%u"
+	       " /* unsupported device mapper ABI version */}) = "
 	       "-1 EBADF (%m)\n", 0xbadc0ded, 0xbadc0dee, 0xbadc0def);
 
 	/* Incorrect data_size */
 	init_s(dm_arg, 14, 64);
 	ioctl(-1, DM_VERSION, dm_arg);
-	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14, "
-	       "/* Incorrect data_size */ ...}) = -1 EBADF (%m)\n");
+	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14"
+	       " /* data_size too small */}) = -1 EBADF (%m)\n");
 
 	/* Unterminated name/uuid */
 	init_s(dm_arg, min_sizeof_dm_ioctl, 0);
@@ -395,8 +396,8 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
 	       "target_count=1234, flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_spec */ ..."
-# else /* !VERBOSE */
+	       "??? /* misplaced struct dm_target_spec */"
+# else
 	       "..."
 # endif /* VERBOSE */
 	       "}) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
@@ -491,7 +492,7 @@
 	print_dm_target_spec(&dm_arg_open3->target1, 15);
 	printf("\"\\377\"}, ");
 	print_dm_target_spec(&dm_arg_open3->target1, 42);
-	printf("\"\\1\\2\"}, /* misplaced struct dm_target_spec */ ...");
+	printf("\"\\1\\2\"}, ??? /* misplaced struct dm_target_spec */");
 # else /* !VERBOSE */
 	printf("...");
 # endif /* VERBOSE */
@@ -575,7 +576,7 @@
 	       "{version=4.1.2, data_size=%zu, data_start=%zu, "
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_msg */"
+	       "??? /* misplaced struct dm_target_msg */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -590,7 +591,7 @@
 	       "{version=4.1.2, data_size=%zu, data_start=%u, "
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_msg */"
+	       "??? /* misplaced struct dm_target_msg */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -706,7 +707,7 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
 	       "flags=0, "
 # if VERBOSE
-	       "/* misplaced string */"
+	       "??? /* misplaced string */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -757,10 +758,12 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
 	       "target_count=4294967295, flags=0, "
 # if VERBOSE
-	       "{sector_start=0, length=0, target_type=\"\", string=\"\"}, "
-	       "/* misplaced struct dm_target_spec */ "
+	       "{sector_start=0, length=0, target_type=\"\", string=\"\"}"
+	       ", ??? /* misplaced struct dm_target_spec */"
+# else
+	       "..."
 # endif /* VERBOSE */
-	       "...}) = -1 EBADF (%m)\n",
+	       "}) = -1 EBADF (%m)\n",
 	       s.ioc.data_size, s.ioc.data_start);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-m32/ioctl_dm.test b/tests-m32/ioctl_dm.test
index 6485205..e9cca03 100755
--- a/tests-m32/ioctl_dm.test
+++ b/tests-m32/ioctl_dm.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -s9 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_evdev-v.gen.test b/tests-m32/ioctl_evdev-v.gen.test
new file mode 100755
index 0000000..fc7e2f0
--- /dev/null
+++ b/tests-m32/ioctl_evdev-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests-m32/ioctl_evdev-v.test b/tests-m32/ioctl_evdev-v.test
deleted file mode 100755
index 8794101..0000000
--- a/tests-m32/ioctl_evdev-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding EVIOC* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_evdev.c b/tests-m32/ioctl_evdev.c
index d12323e..6cbc09f 100644
--- a/tests-m32/ioctl_evdev.c
+++ b/tests-m32/ioctl_evdev.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_evdev strace test.
  *
  * 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
@@ -148,7 +149,7 @@
 	void *const page = tail_alloc(size);
 	fill_memory(page, size);
 
-	int *const val_int = tail_alloc(sizeof(*val_int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
 	*val_int = magic;
 
 # ifdef EVIOCSCLOCKID
@@ -172,7 +173,7 @@
 	       pair_int[0], "KEY_ESC");
 
 # ifdef EVIOCSKEYCODE_V2
-	struct input_keymap_entry *const ike = tail_alloc(sizeof(*ike));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_keymap_entry, ike);
 	fill_memory(ike, sizeof(*ike));
 	ike->keycode = 2;
 
@@ -196,7 +197,7 @@
 	printf("}) = -1 EBADF (%m)\n");
 # endif
 
-	struct ff_effect *const ffe = tail_alloc(sizeof(*ffe));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ff_effect, ffe);
 	fill_memory(ffe, sizeof(*ffe));
 
 	ffe->type = FF_CONSTANT;
diff --git a/tests-m32/ioctl_evdev.gen.test b/tests-m32/ioctl_evdev.gen.test
new file mode 100755
index 0000000..26f0a28
--- /dev/null
+++ b/tests-m32/ioctl_evdev.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_evdev.test b/tests-m32/ioctl_evdev.test
deleted file mode 100755
index 7ed2e98..0000000
--- a/tests-m32/ioctl_evdev.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of EVIOC* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_loop-nv.test b/tests-m32/ioctl_loop-nv.test
index dcc27e1..7d59cc2 100755
--- a/tests-m32/ioctl_loop-nv.test
+++ b/tests-m32/ioctl_loop-nv.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_loop-v.gen.test b/tests-m32/ioctl_loop-v.gen.test
new file mode 100755
index 0000000..7fd9f66
--- /dev/null
+++ b/tests-m32/ioctl_loop-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests-m32/ioctl_loop-v.test b/tests-m32/ioctl_loop-v.test
deleted file mode 100755
index ff3995d..0000000
--- a/tests-m32/ioctl_loop-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a22 -v -eioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_loop.c b/tests-m32/ioctl_loop.c
index a95e775..4dcbf9a 100644
--- a/tests-m32/ioctl_loop.c
+++ b/tests-m32/ioctl_loop.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@gmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -175,8 +176,8 @@
 	static const kernel_ulong_t kernel_mask =
 		((kernel_ulong_t) -1) - ((unsigned long) -1L);
 
-	struct loop_info * const info = tail_alloc(sizeof(*info));
-	struct loop_info64 * const info64 = tail_alloc(sizeof(*info64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info, info);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info64, info64);
 
 	/* Unknown loop commands */
 	ioctl(-1, unknown_loop_cmd, magic);
diff --git a/tests-m32/ioctl_loop.gen.test b/tests-m32/ioctl_loop.gen.test
new file mode 100755
index 0000000..f7aee8e
--- /dev/null
+++ b/tests-m32/ioctl_loop.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_loop.test b/tests-m32/ioctl_loop.test
deleted file mode 100755
index 112cd63..0000000
--- a/tests-m32/ioctl_loop.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a22 -eioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_mtd.c b/tests-m32/ioctl_mtd.c
index a37d5d0..71d0c0d 100644
--- a/tests-m32/ioctl_mtd.c
+++ b/tests-m32/ioctl_mtd.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_mtd strace test.
  *
  * 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
@@ -95,13 +96,13 @@
 	ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL);
 	printf("ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL) = -1 EBADF (%m)\n");
 
-	int *const opt = tail_alloc(sizeof(*opt));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, opt);
 	*opt = MTD_OTP_OFF;
 	ioctl(-1, OTPSELECT, opt);
 	printf("ioctl(-1, MIXER_READ(%u) or OTPSELECT, [MTD_OTP_OFF])"
 	       " = -1 EBADF (%m)\n", (unsigned int) _IOC_NR(OTPSELECT));
 
-	uint64_t *const v64 = tail_alloc(sizeof(*v64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, v64);
 	fill_memory(v64, sizeof(*v64));
 
 	ioctl(-1, MEMGETBADBLOCK, v64);
@@ -114,7 +115,7 @@
 	       " = -1 EBADF (%m)\n",
 	       (unsigned int) _IOC_NR(MEMSETBADBLOCK), *v64);
 
-	struct region_info_user *const riu = tail_alloc(sizeof(*riu));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct region_info_user, riu);
 	fill_memory(riu, sizeof(*riu));
 	ioctl(-1, MEMGETREGIONINFO, riu);
 	printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
@@ -124,7 +125,7 @@
 #endif
 	       , riu->regionindex);
 
-	struct erase_info_user *const eiu = tail_alloc(sizeof(*eiu));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user, eiu);
 	fill_memory(eiu, sizeof(*eiu));
 
 	TEST_erase_info_user(MEMERASE, eiu);
@@ -132,7 +133,7 @@
 	TEST_erase_info_user(MEMUNLOCK, eiu);
 	TEST_erase_info_user(MEMISLOCKED, eiu);
 
-	struct erase_info_user64 *const eiu64 = tail_alloc(sizeof(*eiu64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user64, eiu64);
 	fill_memory(eiu64, sizeof(*eiu64));
 	ioctl(-1, MEMERASE64, eiu64);
 	printf("ioctl(-1, MIXER_WRITE(%u) or %s, {start=%#llx, length=%#llx})"
@@ -141,7 +142,7 @@
 	       (unsigned long long) eiu64->start,
 	       (unsigned long long) eiu64->length);
 
-	struct mtd_oob_buf *const oob = tail_alloc(sizeof(*oob));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf, oob);
 	fill_memory(oob, sizeof(*oob));
 
 	ioctl(-1, MEMWRITEOOB, oob);
@@ -152,7 +153,7 @@
 	printf("ioctl(-1, MEMREADOOB, {start=%#x, length=%#x, ptr=%p})"
 	       " = -1 EBADF (%m)\n", oob->start, oob->length, oob->ptr);
 
-	struct mtd_oob_buf64 *const oob64 = tail_alloc(sizeof(*oob64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf64, oob64);
 	fill_memory(oob64, sizeof(*oob64));
 
 	ioctl(-1, MEMWRITEOOB64, oob64);
@@ -168,14 +169,14 @@
 	       (unsigned long long) oob64->usr_ptr);
 
 
-	struct otp_info *const oi = tail_alloc(sizeof(*oi));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct otp_info, oi);
 	fill_memory(oi, sizeof(*oi));
 	ioctl(-1, OTPLOCK, oi);
 	printf("ioctl(-1, MIXER_READ(%u) or OTPLOCK"
 	       ", {start=%#x, length=%#x, locked=%u}) = -1 EBADF (%m)\n",
 	       (unsigned int) _IOC_NR(OTPLOCK),  oi->start, oi->length, oi->locked);
 
-	struct mtd_write_req *const wr = tail_alloc(sizeof(*wr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_write_req, wr);
 	fill_memory(wr, sizeof(*wr));
 	wr->mode = MTD_OPS_PLACE_OOB;
 	ioctl(-1, MEMWRITE, wr);
diff --git a/tests-m32/ioctl_mtd.gen.test b/tests-m32/ioctl_mtd.gen.test
new file mode 100755
index 0000000..cbc3104
--- /dev/null
+++ b/tests-m32/ioctl_mtd.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_mtd.test b/tests-m32/ioctl_mtd.test
deleted file mode 100755
index 0842807..0000000
--- a/tests-m32/ioctl_mtd.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of 'M' type ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_nsfs.c b/tests-m32/ioctl_nsfs.c
new file mode 100644
index 0000000..b2dbd1b
--- /dev/null
+++ b/tests-m32/ioctl_nsfs.c
@@ -0,0 +1,145 @@
+/*
+ * Check decoding of NS_* commands of ioctl syscall.
+ *
+ * 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.
+ */
+
+#include "tests.h"
+
+#include <fcntl.h>
+#include <sched.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include "nsfs.h"
+
+#ifndef CLONE_NEWUSER
+# define CLONE_NEWUSER 0x10000000
+#endif
+
+static void
+test_no_namespace(void)
+{
+	ioctl(-1, NS_GET_USERNS);
+	printf("ioctl(-1, NS_GET_USERNS) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_PARENT);
+	printf("ioctl(-1, NS_GET_PARENT) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_NSTYPE);
+	printf("ioctl(-1, NS_GET_NSTYPE) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_OWNER_UID, NULL);
+	printf("ioctl(-1, NS_GET_OWNER_UID, NULL) = -1 EBADF (%m)\n");
+}
+
+static void
+test_clone(pid_t pid)
+{
+	char path[sizeof("/proc/%d/ns/user") + sizeof(int)*3];
+	snprintf(path, sizeof(path), "/proc/%d/ns/user", pid);
+
+	int ns_fd = open(path, O_RDONLY);
+	if (ns_fd == -1)
+		perror_msg_and_skip("open: %s", path);
+
+	int userns_fd = ioctl(ns_fd, NS_GET_USERNS);
+	printf("ioctl(%d, NS_GET_USERNS) = %s\n", ns_fd, sprintrc(userns_fd));
+
+	int parent_ns_fd = ioctl(userns_fd, NS_GET_PARENT);
+	printf("ioctl(%d, NS_GET_PARENT) = %s\n",
+	       userns_fd, sprintrc(parent_ns_fd));
+
+	int nstype = ioctl(userns_fd, NS_GET_NSTYPE);
+	if (nstype == -1) {
+		printf("ioctl(%d, NS_GET_NSTYPE) = %s\n",
+		       userns_fd, sprintrc(nstype));
+	} else {
+		printf("ioctl(%d, NS_GET_NSTYPE) = %d (CLONE_NEWUSER)\n",
+		       userns_fd, nstype);
+	}
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, uid);
+	int rc = ioctl(userns_fd, NS_GET_OWNER_UID, uid);
+	if (rc == -1) {
+		printf("ioctl(%d, NS_GET_OWNER_UID, %p) = %s\n",
+		       userns_fd, uid, sprintrc(rc));
+	} else {
+		printf("ioctl(%d, NS_GET_OWNER_UID, [%u]) = %d\n",
+		       userns_fd, *uid, rc);
+	}
+}
+
+static int
+child(void *arg)
+{
+	int *pipefd = (int *) arg;
+	close(pipefd[1]);
+	/* Wait for EOF from pipe. */
+	if (read(pipefd[0], &pipefd[1], 1))
+		perror_msg_and_fail("read");
+	return 0;
+}
+
+#ifdef IA64
+extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
+# define clone(fn, child_stack, flags, arg)	\
+		__clone2(fn, child_stack, get_page_size() / 2, flags, arg)
+#endif
+
+static void
+test_user_namespace(void)
+{
+	pid_t pid;
+	int pipefd[2];
+	int status;
+
+	if (pipe(pipefd))
+		perror_msg_and_fail("pipe");
+
+	pid = clone(child, tail_alloc(get_page_size() / 2),
+		    CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD, pipefd);
+	if (pid == -1) {
+		perror("clone");
+		return;
+	}
+	close(pipefd[0]);
+	test_clone(pid);
+	close(pipefd[1]);
+	if (wait(&status) != pid) {
+		perror_msg_and_fail("wait");
+	} else if (status != 0) {
+		error_msg_and_fail("unexpected child exit status %d", status);
+	}
+}
+
+int
+main(void)
+{
+	test_no_namespace();
+	test_user_namespace();
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-m32/ioctl_nsfs.test b/tests-m32/ioctl_nsfs.test
new file mode 100755
index 0000000..acdfb61
--- /dev/null
+++ b/tests-m32/ioctl_nsfs.test
@@ -0,0 +1,11 @@
+#!/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
new file mode 100755
index 0000000..b534a02
--- /dev/null
+++ b/tests-m32/ioctl_rtc-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests-m32/ioctl_rtc-v.test b/tests-m32/ioctl_rtc-v.test
deleted file mode 100755
index a255322..0000000
--- a/tests-m32/ioctl_rtc-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of RTC_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_rtc.c b/tests-m32/ioctl_rtc.c
index 49d7ec7..466a1d3 100644
--- a/tests-m32/ioctl_rtc.c
+++ b/tests-m32/ioctl_rtc.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_rtc strace test.
  *
  * 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
@@ -73,13 +74,13 @@
 	void *const page = tail_alloc(size);
 	fill_memory(page, size);
 
-	struct rtc_time *rt = tail_alloc(sizeof(*rt));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_time, rt);
 	fill_memory(rt, sizeof(*rt));
 
-	struct rtc_wkalrm *wk = tail_alloc(sizeof(*wk));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_wkalrm, wk);
 	fill_memory(wk, sizeof(*wk));
 
-	struct rtc_pll_info *pll = tail_alloc(sizeof(*pll));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_pll_info, pll);
 	fill_memory(pll, sizeof(*pll));
 
 	/* RTC_ALM_READ */
diff --git a/tests-m32/ioctl_rtc.gen.test b/tests-m32/ioctl_rtc.gen.test
new file mode 100755
index 0000000..e430a82
--- /dev/null
+++ b/tests-m32/ioctl_rtc.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_rtc.test b/tests-m32/ioctl_rtc.test
deleted file mode 100755
index 4545f2a..0000000
--- a/tests-m32/ioctl_rtc.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic decoding of RTC_* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_scsi.c b/tests-m32/ioctl_scsi.c
index 0db94d8..a9ecf28 100644
--- a/tests-m32/ioctl_scsi.c
+++ b/tests-m32/ioctl_scsi.c
@@ -69,7 +69,7 @@
 int
 main(void)
 {
-	int *const pint = tail_alloc(sizeof(*pint));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, pint);
 	*pint = (int) 0xfacefeed;
 
 	TEST_NO_ARG(SG_GET_TIMEOUT);
diff --git a/tests-m32/ioctl_scsi.gen.test b/tests-m32/ioctl_scsi.gen.test
new file mode 100755
index 0000000..23ac307
--- /dev/null
+++ b/tests-m32/ioctl_scsi.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_scsi.test b/tests-m32/ioctl_scsi.test
deleted file mode 100755
index 2710f12..0000000
--- a/tests-m32/ioctl_scsi.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of SCSI ioctl commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sg_io_v3.c b/tests-m32/ioctl_sg_io_v3.c
index ef25795..3808b20 100644
--- a/tests-m32/ioctl_sg_io_v3.c
+++ b/tests-m32/ioctl_sg_io_v3.c
@@ -43,7 +43,7 @@
 	ioctl(-1, SG_IO, 0);
 	printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
 
-	struct sg_io_hdr *const sg_io = tail_alloc(sizeof(*sg_io));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_hdr, sg_io);
 	fill_memory(sg_io, sizeof(*sg_io));
 
 	const void *const efault = sg_io + 1;
@@ -53,7 +53,7 @@
 	ioctl(-1, SG_IO, sg_io);
 	printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->interface_id);
 
-	unsigned int *const piid = tail_alloc(sizeof(*piid));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, piid);
 	*piid = (unsigned char) 'S';
 	ioctl(-1, SG_IO, piid);
 	printf("ioctl(-1, SG_IO, {interface_id='S', %p}) = -1 EBADF (%m)\n", piid + 1);
diff --git a/tests-m32/ioctl_sg_io_v3.gen.test b/tests-m32/ioctl_sg_io_v3.gen.test
new file mode 100755
index 0000000..e7e5ea5
--- /dev/null
+++ b/tests-m32/ioctl_sg_io_v3.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sg_io_v3.test b/tests-m32/ioctl_sg_io_v3.test
deleted file mode 100755
index dacacdf..0000000
--- a/tests-m32/ioctl_sg_io_v3.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ioctl SG_IO v3 commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sg_io_v4.c b/tests-m32/ioctl_sg_io_v4.c
index 5f899ee..9c1e9fa 100644
--- a/tests-m32/ioctl_sg_io_v4.c
+++ b/tests-m32/ioctl_sg_io_v4.c
@@ -45,7 +45,7 @@
 	ioctl(-1, SG_IO, 0);
 	printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
 
-	struct sg_io_v4 *const sg_io = tail_alloc(sizeof(*sg_io));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_v4, sg_io);
 	fill_memory(sg_io, sizeof(*sg_io));
 
 	const void *const efault = sg_io + 1;
@@ -55,7 +55,7 @@
 	ioctl(-1, SG_IO, sg_io);
 	printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->guard);
 
-	unsigned int *const pguard = tail_alloc(sizeof(*pguard));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, pguard);
 	*pguard = (unsigned char) 'Q';
 	ioctl(-1, SG_IO, pguard);
 	printf("ioctl(-1, SG_IO, {guard='Q', %p}) = -1 EBADF (%m)\n", pguard + 1);
diff --git a/tests-m32/ioctl_sg_io_v4.gen.test b/tests-m32/ioctl_sg_io_v4.gen.test
new file mode 100755
index 0000000..575ad96
--- /dev/null
+++ b/tests-m32/ioctl_sg_io_v4.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sg_io_v4.test b/tests-m32/ioctl_sg_io_v4.test
deleted file mode 100755
index 2556722..0000000
--- a/tests-m32/ioctl_sg_io_v4.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ioctl SG_IO v4 commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_sock_gifconf.c b/tests-m32/ioctl_sock_gifconf.c
index ae0bea4..f81faef 100644
--- a/tests-m32/ioctl_sock_gifconf.c
+++ b/tests-m32/ioctl_sock_gifconf.c
@@ -2,6 +2,7 @@
  * Check decoding of SIOCGIFCONF command of ioctl syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -134,7 +135,7 @@
 main(int argc, char *argv[])
 {
 	struct ifreq *ifr = tail_alloc(2 * sizeof(*ifr));
-	struct ifconf *ifc = tail_alloc(sizeof(*ifc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ifconf, ifc);
 
 	struct sockaddr_in addr;
 	int fd;
diff --git a/tests-m32/ioctl_sock_gifconf.test b/tests-m32/ioctl_sock_gifconf.test
index 2e2fc01..22d7ea4 100755
--- a/tests-m32/ioctl_sock_gifconf.test
+++ b/tests-m32/ioctl_sock_gifconf.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a28 -s1 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/ioctl_uffdio.c b/tests-m32/ioctl_uffdio.c
index 10b8b84..c98e4a0 100644
--- a/tests-m32/ioctl_uffdio.c
+++ b/tests-m32/ioctl_uffdio.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c)      2016 Red Hat, Inc.
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
 		perror_msg_and_skip("userfaultfd");
 
 	/* ---- API ---- */
-	struct uffdio_api *api_struct = tail_alloc(sizeof(*api_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_api, api_struct);
 
 	/* With a bad fd */
 	memset(api_struct, 0, sizeof(*api_struct));
@@ -127,7 +128,7 @@
 	 * userfaultfd will cause us to stall.
 	 */
 	/* ---- COPY ---- */
-	struct uffdio_copy *copy_struct = tail_alloc(sizeof(*copy_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_copy, copy_struct);
 
 	memset(copy_struct, 0, sizeof(*copy_struct));
 	rc = ioctl(-1, UFFDIO_COPY, copy_struct);
@@ -148,7 +149,7 @@
 	       fd, area2, area1, pagesize, pagesize, rc);
 
 	/* ---- ZEROPAGE ---- */
-	struct uffdio_zeropage *zero_struct = tail_alloc(sizeof(*zero_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_zeropage, zero_struct);
 	madvise(area2, pagesize, MADV_DONTNEED);
 
 	memset(zero_struct, 0, sizeof(*zero_struct));
@@ -169,7 +170,7 @@
 	       fd, area2, pagesize, pagesize, rc);
 
 	/* ---- WAKE ---- */
-	struct uffdio_range *range_struct = tail_alloc(sizeof(*range_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_range, range_struct);
 	memset(range_struct, 0, sizeof(*range_struct));
 
 	rc = ioctl(-1, UFFDIO_WAKE, range_struct);
diff --git a/tests-m32/ioctl_uffdio.gen.test b/tests-m32/ioctl_uffdio.gen.test
new file mode 100755
index 0000000..80fd2a6
--- /dev/null
+++ b/tests-m32/ioctl_uffdio.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_uffdio.test b/tests-m32/ioctl_uffdio.test
deleted file mode 100755
index fae9b55..0000000
--- a/tests-m32/ioctl_uffdio.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2.c b/tests-m32/ioctl_v4l2.c
index af8c341..921e7a8 100644
--- a/tests-m32/ioctl_v4l2.c
+++ b/tests-m32/ioctl_v4l2.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
@@ -56,6 +57,272 @@
 
 static const unsigned int magic = 0xdeadbeef;
 
+static void
+init_v4l2_format(struct v4l2_format *const f,
+		 const unsigned int buf_type)
+{
+	memset(f, -1, sizeof(*f));
+	f->type = buf_type;
+	switch (buf_type) {
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+		f->fmt.pix.width = 0x657b8160;
+		f->fmt.pix.height = 0x951c0047;
+		f->fmt.pix.pixelformat = magic;
+		f->fmt.pix.field = V4L2_FIELD_NONE;
+		f->fmt.pix.bytesperline = 0xdf20d185;
+		f->fmt.pix.sizeimage = 0x0cf7be41;
+		f->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+		unsigned int i;
+
+		f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+		f->fmt.pix_mp.width = 0x1f3b774b;
+		f->fmt.pix_mp.height = 0xab96a8d6;
+		f->fmt.pix_mp.pixelformat = magic;
+		f->fmt.pix_mp.field = V4L2_FIELD_NONE;
+		f->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
+		struct v4l2_plane_pix_format* cur_pix =
+		       f->fmt.pix_mp.plane_fmt;
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+		     i++) {
+			cur_pix[i].sizeimage = 0x1e3c531c | i;
+			cur_pix[i].bytesperline = 0xa983d721 | i;
+		}
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+		f->fmt.win.w.left = 0xe8373662;
+		f->fmt.win.w.top = 0x0336d283;
+		f->fmt.win.w.width = 0x9235fe72;
+		f->fmt.win.w.height = 0xbbd886c8;
+		f->fmt.win.field = V4L2_FIELD_ANY;
+		f->fmt.win.chromakey = 0xdb1f991f;
+		f->fmt.win.clipcount = 2;
+		f->fmt.win.clips =
+			tail_alloc(sizeof(*f->fmt.win.clips) *
+			f->fmt.win.clipcount);
+		f->fmt.win.clips[0].c.left = 0x3313d36e;
+		f->fmt.win.clips[0].c.top = 0xcdffe510;
+		f->fmt.win.clips[0].c.width = 0x2064f3a8;
+		f->fmt.win.clips[0].c.height = 0xd06d314a;
+		f->fmt.win.clips[1].c.left = 0xd8c8a83f;
+		f->fmt.win.clips[1].c.top = 0x336e87ba;
+		f->fmt.win.clips[1].c.width = 0x9e3a6fb3;
+		f->fmt.win.clips[1].c.height = 0x05617b76;
+
+		f->fmt.win.bitmap = (void*) -2UL;
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		f->fmt.win.global_alpha = 0xce;
+#endif
+		break;
+	case V4L2_BUF_TYPE_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_VBI_OUTPUT:
+		f->fmt.vbi.sampling_rate = 0x3d9b5b79;
+		f->fmt.vbi.offset = 0x055b3a09;
+		f->fmt.vbi.samples_per_line = 0xf176d436;
+		f->fmt.vbi.sample_format = magic;
+		f->fmt.vbi.start[0] = 0x9858e2eb;
+		f->fmt.vbi.start[1] = 0x8a4dc8c1;
+		f->fmt.vbi.count[0] = 0x4bcf36a3;
+		f->fmt.vbi.count[1] = 0x97dff65f;
+		f->fmt.vbi.flags = V4L2_VBI_INTERLACED;
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+		unsigned int i;
+
+		f->fmt.sliced.service_set = V4L2_SLICED_VPS;
+		f->fmt.sliced.io_size = 0xd897925a;
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+		     i++) {
+			f->fmt.sliced.service_lines[0][i] = 0xc38e | i;
+			f->fmt.sliced.service_lines[1][i] = 0x3abb | i;
+		}
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	case V4L2_BUF_TYPE_SDR_CAPTURE:
+		f->fmt.sdr.pixelformat = magic;
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		f->fmt.sdr.buffersize = 0x25afabfb;
+#endif
+		break;
+#endif
+	}
+}
+
+static void
+dprint_ioctl_v4l2(struct v4l2_format *const f,
+		  const char* request, const unsigned int buf_type,
+		  const char* buf_type_string)
+{
+	switch (buf_type) {
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.pix={width=%u, height=%u, pixelformat="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
+		       ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.pix.width, f->fmt.pix.height,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+		       f->fmt.pix.bytesperline,
+		       f->fmt.pix.sizeimage);
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+		unsigned int i;
+
+		printf("ioctl(-1, %s"
+		       ", {type=%s"
+		       ", fmt.pix_mp={width=%u, height=%u, pixelformat="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", field=V4L2_FIELD_NONE, colorspace="
+		       "V4L2_COLORSPACE_JPEG, plane_fmt=[",
+		       request,
+		       buf_type_string,
+		       f->fmt.pix_mp.width, f->fmt.pix_mp.height,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic));
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+		     ++i) {
+			if (i)
+				printf(", ");
+			printf("{sizeimage=%u, bytesperline=%u}",
+			f->fmt.pix_mp.plane_fmt[i].sizeimage,
+			f->fmt.pix_mp.plane_fmt[i].bytesperline);
+		}
+		printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
+		f->fmt.pix_mp.num_planes);
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.win={left=%d, top=%d, width=%u, height=%u"
+		       ", field=V4L2_FIELD_ANY, chromakey=%#x, clips="
+		       "[{left=%d, top=%d, width=%u, height=%u}, "
+		       "{left=%d, top=%d, width=%u, height=%u}]"
+		       ", clipcount=%u, bitmap=%p"
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		       ", global_alpha=%#x"
+#endif
+		       "}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.win.w.left, f->fmt.win.w.top,
+		       f->fmt.win.w.width, f->fmt.win.w.height,
+		       f->fmt.win.chromakey,
+		       f->fmt.win.clips[0].c.left,
+		       f->fmt.win.clips[0].c.top,
+		       f->fmt.win.clips[0].c.width,
+		       f->fmt.win.clips[0].c.height,
+		       f->fmt.win.clips[1].c.left,
+		       f->fmt.win.clips[1].c.top,
+		       f->fmt.win.clips[1].c.width,
+		       f->fmt.win.clips[1].c.height,
+		       f->fmt.win.clipcount, f->fmt.win.bitmap
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		       , f->fmt.win.global_alpha
+#endif
+		       );
+		break;
+	case V4L2_BUF_TYPE_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_VBI_OUTPUT:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.vbi={sampling_rate=%u, offset=%u"
+		       ", samples_per_line=%u, sample_format="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", start=[%u, %u], count=[%u, %u]"
+		       ", flags=V4L2_VBI_INTERLACED}})"
+		       " = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
+		       f->fmt.vbi.samples_per_line,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+		       f->fmt.vbi.start[0], f->fmt.vbi.start[1],
+		       f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+		unsigned int i, j;
+
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.sliced={service_set=V4L2_SLICED_VPS"
+		       ", io_size=%u, service_lines=[",
+		       request,
+		       buf_type_string,
+		       f->fmt.sliced.io_size);
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.sliced.service_lines);
+		     i++) {
+			if (i > 0)
+				printf(", ");
+			printf("[");
+			for (j = 0;
+			     j < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+			     j++) {
+				if (j > 0)
+					printf(", ");
+				printf("%#x",
+				       f->fmt.sliced.service_lines[i][j]);
+			}
+			printf("]");
+		}
+		printf("]}}) = -1 EBADF (%m)\n");
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	case V4L2_BUF_TYPE_SDR_CAPTURE:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.sdr={pixelformat=v4l2_fourcc('\\x%x', '\\x%x',"
+		       " '\\x%x', '\\x%x')"
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		       ", buffersize=%u"
+#endif
+		       "}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic)
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		       , f->fmt.sdr.buffersize
+#endif
+		       );
+		break;
+#endif
+	}
+}
+#define print_ioctl_v4l2(v4l2_format, request, buf_type) do { \
+	dprint_ioctl_v4l2((v4l2_format), (request), (buf_type), #buf_type); \
+} while (0)
+
 int
 main(void )
 {
@@ -76,7 +343,7 @@
 	ioctl(-1, VIDIOC_ENUM_FMT, 0);
 	printf("ioctl(-1, VIDIOC_ENUM_FMT, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_fmtdesc *const p_fmtdesc = tail_alloc(sizeof(*p_fmtdesc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_fmtdesc, p_fmtdesc);
 	p_fmtdesc->index = magic;
 	p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
@@ -88,78 +355,146 @@
 	ioctl(-1, VIDIOC_G_FMT, 0);
 	printf("ioctl(-1, VIDIOC_G_FMT, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_format *const p_format = tail_alloc(sizeof(*p_format));
-	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_format, p_format);
 
+	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	ioctl(-1, VIDIOC_G_FMT, p_format);
 	printf("ioctl(-1, VIDIOC_G_FMT"
 	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE}) ="
+	       " -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY}) ="
+	       " -1 EBADF (%m)\n");
+#endif
+	p_format->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_OVERLAY}) ="
+	       " -1 EBADF (%m)\n");
 
+	p_format->type = V4L2_BUF_TYPE_VBI_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	p_format->type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SLICED_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	p_format->type = V4L2_BUF_TYPE_SDR_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SDR_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	p_format->type = V4L2_BUF_TYPE_SDR_OUTPUT;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SDR_OUTPUT}) = -1 EBADF (%m)\n");
+#endif
 	/* VIDIOC_S_FMT */
 	ioctl(-1, VIDIOC_S_FMT, 0);
 	printf("ioctl(-1, VIDIOC_S_FMT, NULL) = -1 EBADF (%m)\n");
 
-	p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-	p_format->fmt.pix.width = 0xdad1beaf;
-	p_format->fmt.pix.height = 0xdad2beaf;
-	p_format->fmt.pix.pixelformat = magic;
-	p_format->fmt.pix.field = V4L2_FIELD_NONE;
-	p_format->fmt.pix.bytesperline = 0xdad3beaf;
-	p_format->fmt.pix.sizeimage = 0xdad4beaf;
-	p_format->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
-
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
 	ioctl(-1, VIDIOC_S_FMT, p_format);
-	printf("ioctl(-1, VIDIOC_S_FMT, {type=V4L2_BUF_TYPE_VIDEO_OUTPUT"
-	       ", fmt.pix={width=%u, height=%u, pixelformat="
-	       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
-	       ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
-	       ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
-	       p_format->fmt.pix.width, p_format->fmt.pix.height,
-	       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
-	       p_format->fmt.pix.bytesperline, p_format->fmt.pix.sizeimage);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
 	/* VIDIOC_TRY_FMT */
 	ioctl(-1, VIDIOC_TRY_FMT, 0);
 	printf("ioctl(-1, VIDIOC_TRY_FMT, NULL) = -1 EBADF (%m)\n");
 
-#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
-	memset(p_format, -1, sizeof(*p_format));
-	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
-	p_format->fmt.pix_mp.width = 0xdad1beaf;
-	p_format->fmt.pix_mp.height = 0xdad2beaf;
-	p_format->fmt.pix_mp.pixelformat = magic;
-	p_format->fmt.pix_mp.field = V4L2_FIELD_NONE;
-	p_format->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
-	unsigned int i;
-	for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
-		p_format->fmt.pix_mp.plane_fmt[i].sizeimage = 0xbadc0de0 | i;
-		p_format->fmt.pix_mp.plane_fmt[i].bytesperline = 0xdadbeaf0 | i;
-	}
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
 	ioctl(-1, VIDIOC_TRY_FMT, p_format);
-	printf("ioctl(-1, VIDIOC_TRY_FMT"
-	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE"
-	       ", fmt.pix_mp={width=%u, height=%u, pixelformat="
-	       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
-	       ", field=V4L2_FIELD_NONE, colorspace=V4L2_COLORSPACE_JPEG"
-	       ", plane_fmt=[",
-	       p_format->fmt.pix_mp.width, p_format->fmt.pix_mp.height,
-	       cc0(magic), cc1(magic), cc2(magic), cc3(magic));
-	for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
-		if (i)
-			printf(", ");
-		printf("{sizeimage=%u, bytesperline=%u}",
-		       p_format->fmt.pix_mp.plane_fmt[i].sizeimage,
-		       p_format->fmt.pix_mp.plane_fmt[i].bytesperline);
-	}
-	printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
-	       p_format->fmt.pix_mp.num_planes);
-#else
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OVERLAY);
+
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
 	struct v4l2_format *const p_v4l2_format =
 		page + size - sizeof(*p_v4l2_format);
 	ioctl(-1, VIDIOC_TRY_FMT, p_v4l2_format);
 	printf("ioctl(-1, VIDIOC_TRY_FMT, {type=%#x /* V4L2_BUF_TYPE_??? */})"
 	       " = -1 EBADF (%m)\n", p_v4l2_format->type);
-#endif
 
 	/* VIDIOC_REQBUFS */
 	ioctl(-1, VIDIOC_REQBUFS, 0);
@@ -259,8 +594,7 @@
 	printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
 	       " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
 
-	struct v4l2_streamparm *const p_streamparm =
-		tail_alloc(sizeof(*p_streamparm));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_streamparm, p_streamparm);
 	p_streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	p_streamparm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
 	p_streamparm->parm.capture.capturemode = V4L2_MODE_HIGHQUALITY;
@@ -339,6 +673,42 @@
 	       ", value=%d}) = -1 EBADF (%m)\n",
 	       p_v4l2_control->id, p_v4l2_control->value);
 
+	/* VIDIOC_G_TUNER */
+	ioctl(-1, VIDIOC_G_TUNER, 0);
+	printf("ioctl(-1, VIDIOC_G_TUNER, NULL) = -1 EBADF (%m)\n");
+
+	struct v4l2_tuner *const p_v4l2_tuner =
+		page + size - sizeof(*p_v4l2_tuner);
+	ioctl(-1, VIDIOC_G_TUNER, p_v4l2_tuner);
+	printf("ioctl(-1, VIDIOC_G_TUNER, {index=%u})"
+	       " = -1 EBADF (%m)\n", p_v4l2_tuner->index);
+
+	/* VIDIOC_S_TUNER */
+	ioctl(-1, VIDIOC_S_TUNER, 0);
+	printf("ioctl(-1, VIDIOC_S_TUNER, NULL) = -1 EBADF (%m)\n");
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_tuner, p_tuner);
+	p_tuner->index = 0x4fb6df39;
+	strcpy((char*)p_tuner->name, "cum tacent clamant");
+	p_tuner->type = V4L2_TUNER_RADIO;
+	p_tuner->capability = V4L2_TUNER_CAP_LOW;
+	p_tuner->rangelow = 0xa673bc29;
+	p_tuner->rangehigh = 0xbaf16d12;
+	p_tuner->rxsubchans = V4L2_TUNER_SUB_MONO;
+	p_tuner->audmode = V4L2_TUNER_MODE_MONO;
+	p_tuner->signal = 0x10bf92c8;
+	p_tuner->afc = 0x3bf7e18b;
+	ioctl(-1, VIDIOC_S_TUNER, p_tuner);
+	printf("ioctl(-1, VIDIOC_S_TUNER, {index=%u"
+	       ", name=\"cum tacent clamant\""
+	       ", type=V4L2_TUNER_RADIO, capability=V4L2_TUNER_CAP_LOW"
+	       ", rangelow=%u, rangehigh=%u"
+	       ", rxsubchans=V4L2_TUNER_SUB_MONO"
+	       ", audmode=V4L2_TUNER_MODE_MONO, signal=%d, afc=%d"
+	       "}) = -1 EBADF (%m)\n",
+	       p_tuner->index, p_tuner->rangelow,
+	       p_tuner->rangehigh, p_tuner->signal, p_tuner->afc);
+
 	/* VIDIOC_QUERYCTRL */
 	ioctl(-1, VIDIOC_QUERYCTRL, 0);
 	printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
@@ -355,8 +725,7 @@
 	       " = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
 # endif
 
-	struct v4l2_queryctrl *const p_queryctrl =
-		tail_alloc(sizeof(*p_queryctrl));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
 	p_queryctrl->id = V4L2_CID_SATURATION;
 	ioctl(-1, VIDIOC_QUERYCTRL, p_queryctrl);
 	printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CID_SATURATION})"
@@ -414,8 +783,7 @@
 	ioctl(-1, VIDIOC_S_EXT_CTRLS, 0);
 	printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_ext_controls *const p_ext_controls =
-		tail_alloc(sizeof(*p_ext_controls));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_ext_controls, p_ext_controls);
 	p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
 	p_ext_controls->count = 0;
 	p_ext_controls->controls = (void *) -2UL;
@@ -500,8 +868,7 @@
 	ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
 	printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_frmsizeenum *const p_frmsizeenum =
-		tail_alloc(sizeof(*p_frmsizeenum));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_frmsizeenum, p_frmsizeenum);
 	p_frmsizeenum->index = magic;
 	p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
 
diff --git a/tests-m32/ioctl_v4l2.gen.test b/tests-m32/ioctl_v4l2.gen.test
new file mode 100755
index 0000000..cbd36ba
--- /dev/null
+++ b/tests-m32/ioctl_v4l2.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioctl_v4l2.test b/tests-m32/ioctl_v4l2.test
deleted file mode 100755
index a092a3c..0000000
--- a/tests-m32/ioctl_v4l2.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic VIDIOC_* ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-m32/ioperm.gen.test b/tests-m32/ioperm.gen.test
new file mode 100755
index 0000000..154d60a
--- /dev/null
+++ b/tests-m32/ioperm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/ioperm.test b/tests-m32/ioperm.test
deleted file mode 100755
index 8c1c1cc..0000000
--- a/tests-m32/ioperm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ioperm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/iopl.gen.test b/tests-m32/iopl.gen.test
new file mode 100755
index 0000000..3d9704c
--- /dev/null
+++ b/tests-m32/iopl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-m32/iopl.test b/tests-m32/iopl.test
deleted file mode 100755
index d0b5b11..0000000
--- a/tests-m32/iopl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check iopl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests-m32/ioprio.gen.test b/tests-m32/ioprio.gen.test
new file mode 100755
index 0000000..f43f78e
--- /dev/null
+++ b/tests-m32/ioprio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioprio -a18 -e trace=ioprio_get,ioprio_set); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests-m32/ioprio.test b/tests-m32/ioprio.test
deleted file mode 100755
index e79310b..0000000
--- a/tests-m32/ioprio.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check iprio_get and iprio_set syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests-m32/ip_mreq.c b/tests-m32/ip_mreq.c
index fa0c504..4bcda09 100644
--- a/tests-m32/ip_mreq.c
+++ b/tests-m32/ip_mreq.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,8 +45,8 @@
 	static const char multi6addr[] = "ff01::c";
 	static const char interface[] = "127.0.0.1";
 
-	struct ip_mreq *const m4 = tail_alloc(sizeof(*m4));
-	struct ipv6_mreq *const m6 = tail_alloc(sizeof(*m6));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ip_mreq, m4);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ipv6_mreq, m6);
 	unsigned int i;
 	int rc;
 
diff --git a/tests-m32/ip_mreq.gen.test b/tests-m32/ip_mreq.gen.test
new file mode 100755
index 0000000..990387a
--- /dev/null
+++ b/tests-m32/ip_mreq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ip_mreq -e trace=setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=setsockopt
diff --git a/tests-m32/ip_mreq.test b/tests-m32/ip_mreq.test
deleted file mode 100755
index d0a9e0f..0000000
--- a/tests-m32/ip_mreq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check {IP,IPV6}_{ADD,DROP}_MEMBERSHIP setsockopt decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setsockopt
diff --git a/tests-m32/ipc.gen.test b/tests-m32/ipc.gen.test
new file mode 100755
index 0000000..5ed1f0d
--- /dev/null
+++ b/tests-m32/ipc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-m32/ipc.sh b/tests-m32/ipc.sh
index 752d4bb..5943c1a 100644
--- a/tests-m32/ipc.sh
+++ b/tests-m32/ipc.sh
@@ -5,9 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -eipc $args > "$OUT"
-match_grep "$LOG" "$OUT"
-
-rm -f "$OUT"
+run_strace -eipc $args > "$EXP"
+match_grep "$LOG" "$EXP"
 
 exit 0
diff --git a/tests-m32/ipc.test b/tests-m32/ipc.test
deleted file mode 100755
index aa33fa6..0000000
--- a/tests-m32/ipc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-m32/ipc_msg.gen.test b/tests-m32/ipc_msg.gen.test
new file mode 100755
index 0000000..f4fec80
--- /dev/null
+++ b/tests-m32/ipc_msg.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/ipc_msg.test b/tests-m32/ipc_msg.test
deleted file mode 100755
index 177495b..0000000
--- a/tests-m32/ipc_msg.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc msgget/msgctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/ipc_sem.c b/tests-m32/ipc_sem.c
index 8f6382c..0b730c1 100644
--- a/tests-m32/ipc_sem.c
+++ b/tests-m32/ipc_sem.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Andreas Schwab <schwab@suse.de>
  * 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
diff --git a/tests-m32/ipc_sem.gen.test b/tests-m32/ipc_sem.gen.test
new file mode 100755
index 0000000..54159a6
--- /dev/null
+++ b/tests-m32/ipc_sem.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/ipc_sem.test b/tests-m32/ipc_sem.test
deleted file mode 100755
index cc93d07..0000000
--- a/tests-m32/ipc_sem.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc semget/semctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/ipc_shm.gen.test b/tests-m32/ipc_shm.gen.test
new file mode 100755
index 0000000..505eaba
--- /dev/null
+++ b/tests-m32/ipc_shm.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/ipc_shm.test b/tests-m32/ipc_shm.test
deleted file mode 100755
index a67ea29..0000000
--- a/tests-m32/ipc_shm.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc shmget/shmctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests-m32/kcmp.gen.test b/tests-m32/kcmp.gen.test
new file mode 100755
index 0000000..da79d7c
--- /dev/null
+++ b/tests-m32/kcmp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/kcmp.test b/tests-m32/kcmp.test
deleted file mode 100755
index d022aeb..0000000
--- a/tests-m32/kcmp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kcmp syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/kexec_file_load.c b/tests-m32/kexec_file_load.c
index be90a37..c939e4f 100644
--- a/tests-m32/kexec_file_load.c
+++ b/tests-m32/kexec_file_load.c
@@ -2,6 +2,7 @@
  * Check decoding of kexec_file_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/kexec_file_load.gen.test b/tests-m32/kexec_file_load.gen.test
new file mode 100755
index 0000000..aefaab3
--- /dev/null
+++ b/tests-m32/kexec_file_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/kexec_file_load.test b/tests-m32/kexec_file_load.test
deleted file mode 100755
index c95e123..0000000
--- a/tests-m32/kexec_file_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kexec_file_load syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
diff --git a/tests-m32/kexec_load.c b/tests-m32/kexec_load.c
index 330238d..2a6b441 100644
--- a/tests-m32/kexec_load.c
+++ b/tests-m32/kexec_load.c
@@ -2,6 +2,7 @@
  * Check decoding of kexec_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,8 +63,7 @@
 	};
 
 	static const kernel_ulong_t bogus_zero =
-		sizeof(long) < sizeof(kernel_long_t) ?
-			(kernel_ulong_t) 0xffffffff00000000ULL : 0;
+		sizeof(long) < sizeof(kernel_long_t) ? F8ILL_KULONG_MASK : 0;
 	static const kernel_ulong_t bogus_entry =
 		(kernel_ulong_t) 0xdeadca57badda7a1ULL;
 	static const kernel_ulong_t bogus_nsegs =
diff --git a/tests-m32/kexec_load.gen.test b/tests-m32/kexec_load.gen.test
new file mode 100755
index 0000000..0af9527
--- /dev/null
+++ b/tests-m32/kexec_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/kexec_load.test b/tests-m32/kexec_load.test
deleted file mode 100755
index 4b1511e..0000000
--- a/tests-m32/kexec_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kexec_load syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
diff --git a/tests-m32/keyctl.gen.test b/tests-m32/keyctl.gen.test
new file mode 100755
index 0000000..82afad9
--- /dev/null
+++ b/tests-m32/keyctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (keyctl -a31 -s10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31 -s10
diff --git a/tests-m32/keyctl.test b/tests-m32/keyctl.test
deleted file mode 100755
index 875a82d..0000000
--- a/tests-m32/keyctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of keyctl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31 -s10
diff --git a/tests-m32/kill.gen.test b/tests-m32/kill.gen.test
new file mode 100755
index 0000000..08a004e
--- /dev/null
+++ b/tests-m32/kill.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kill -a12 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -esignal=none
diff --git a/tests-m32/kill.test b/tests-m32/kill.test
deleted file mode 100755
index 7a3a51a..0000000
--- a/tests-m32/kill.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kill syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -esignal=none
diff --git a/tests-m32/ksysent.c b/tests-m32/ksysent.c
index 8cac93c..f598664 100644
--- a/tests-m32/ksysent.c
+++ b/tests-m32/ksysent.c
@@ -2,6 +2,7 @@
  * Validate syscallent.h file.
  *
  * 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
@@ -40,6 +41,13 @@
 #define TP 0
 #define TS 0
 #define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests-m32/lchown.gen.test b/tests-m32/lchown.gen.test
new file mode 100755
index 0000000..b31e29d
--- /dev/null
+++ b/tests-m32/lchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30
diff --git a/tests-m32/lchown.test b/tests-m32/lchown.test
deleted file mode 100755
index ceeaa85..0000000
--- a/tests-m32/lchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30
diff --git a/tests-m32/lchown32.gen.test b/tests-m32/lchown32.gen.test
new file mode 100755
index 0000000..83be4bc
--- /dev/null
+++ b/tests-m32/lchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32
diff --git a/tests-m32/lchown32.test b/tests-m32/lchown32.test
deleted file mode 100755
index 6ee1ac9..0000000
--- a/tests-m32/lchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests-m32/link.gen.test b/tests-m32/link.gen.test
new file mode 100755
index 0000000..b6db34d
--- /dev/null
+++ b/tests-m32/link.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/link.test b/tests-m32/link.test
deleted file mode 100755
index cfa2b0c..0000000
--- a/tests-m32/link.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check link syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/linkat.gen.test b/tests-m32/linkat.gen.test
new file mode 100755
index 0000000..54b12b9
--- /dev/null
+++ b/tests-m32/linkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/linkat.test b/tests-m32/linkat.test
deleted file mode 100755
index 5627de7..0000000
--- a/tests-m32/linkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check linkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/llseek.test b/tests-m32/llseek.test
index cf1607e..8dcd65d 100755
--- a/tests-m32/llseek.test
+++ b/tests-m32/llseek.test
@@ -9,7 +9,3 @@
 run_strace -e_llseek $args > "$EXP"
 grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-m32/lookup_dcookie.gen.test b/tests-m32/lookup_dcookie.gen.test
new file mode 100755
index 0000000..6357e19
--- /dev/null
+++ b/tests-m32/lookup_dcookie.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/lookup_dcookie.test b/tests-m32/lookup_dcookie.test
deleted file mode 100755
index 47e1c2d..0000000
--- a/tests-m32/lookup_dcookie.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of lookup_cookie syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/lseek.test b/tests-m32/lseek.test
index f96a91d..5b20a7f 100755
--- a/tests-m32/lseek.test
+++ b/tests-m32/lseek.test
@@ -9,7 +9,3 @@
 run_strace -a30 -elseek $args > "$EXP"
 grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-m32/lstat.c b/tests-m32/lstat.c
index 3754f76..8441bf8 100644
--- a/tests-m32/lstat.c
+++ b/tests-m32/lstat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/lstat.gen.test b/tests-m32/lstat.gen.test
new file mode 100755
index 0000000..7231c49
--- /dev/null
+++ b/tests-m32/lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/lstat.test b/tests-m32/lstat.test
deleted file mode 100755
index f513bb4..0000000
--- a/tests-m32/lstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/lstat64.c b/tests-m32/lstat64.c
index da06609..500b60f 100644
--- a/tests-m32/lstat64.c
+++ b/tests-m32/lstat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/lstat64.gen.test b/tests-m32/lstat64.gen.test
new file mode 100755
index 0000000..124cce4
--- /dev/null
+++ b/tests-m32/lstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/lstat64.test b/tests-m32/lstat64.test
deleted file mode 100755
index fcafe79..0000000
--- a/tests-m32/lstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/lstatx.c b/tests-m32/lstatx.c
index cdd1124..8049bea 100644
--- a/tests-m32/lstatx.c
+++ b/tests-m32/lstatx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/tests-m32/madvise.c b/tests-m32/madvise.c
new file mode 100644
index 0000000..bf9cd78
--- /dev/null
+++ b/tests-m32/madvise.c
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+
+#include "tests.h"
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+static const char *errstr;
+
+static long
+k_madvise(const kernel_ulong_t addr,
+	  const kernel_ulong_t length,
+	  const kernel_ulong_t advice)
+{
+	long rc = syscall(__NR_madvise, addr, length, advice);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	const unsigned long length = get_page_size();
+	void *const addr = tail_alloc(length);
+	long rc;
+
+	rc = madvise(addr, length, MADV_NORMAL);
+	printf("madvise(%p, %lu, MADV_NORMAL) = %s\n",
+	       addr, length, sprintrc(rc));
+
+	static const kernel_ulong_t advice =
+		(kernel_ulong_t) 0xfacefeed00000000ULL | MADV_RANDOM;
+	rc = k_madvise((uintptr_t) addr, length, advice);
+	printf("madvise(%p, %lu, MADV_RANDOM) = %s\n",
+	       addr, length, sprintrc(rc));
+
+	static const kernel_ulong_t bogus_length =
+		(kernel_ulong_t) 0xfffffffffffffaceULL;
+	rc = k_madvise(0, bogus_length, MADV_SEQUENTIAL);
+	printf("madvise(NULL, %llu, MADV_SEQUENTIAL) = %s\n",
+	       (unsigned long long) bogus_length, sprintrc(rc));
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		rc = k_madvise(f8ill_ptr_to_kulong(addr), length, MADV_NORMAL);
+		printf("madvise(%#llx, %lu, MADV_NORMAL) = %s\n",
+		       (unsigned long long) f8ill_ptr_to_kulong(addr),
+		       length, sprintrc(rc));
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-m32/madvise.gen.test b/tests-m32/madvise.gen.test
new file mode 100755
index 0000000..bd36dad
--- /dev/null
+++ b/tests-m32/madvise.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests-m32/mbind.gen.test b/tests-m32/mbind.gen.test
new file mode 100755
index 0000000..a0d144d
--- /dev/null
+++ b/tests-m32/mbind.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/mbind.test b/tests-m32/mbind.test
deleted file mode 100755
index 2a07cac..0000000
--- a/tests-m32/mbind.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mbind syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/membarrier.gen.test b/tests-m32/membarrier.gen.test
new file mode 100755
index 0000000..7a6ea10
--- /dev/null
+++ b/tests-m32/membarrier.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-m32/membarrier.test b/tests-m32/membarrier.test
deleted file mode 100755
index ad1f713..0000000
--- a/tests-m32/membarrier.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check membarrier syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-m32/memfd_create.gen.test b/tests-m32/memfd_create.gen.test
new file mode 100755
index 0000000..11762be
--- /dev/null
+++ b/tests-m32/memfd_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/memfd_create.test b/tests-m32/memfd_create.test
deleted file mode 100755
index 4361dae..0000000
--- a/tests-m32/memfd_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of memfd_create syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/migrate_pages.gen.test b/tests-m32/migrate_pages.gen.test
new file mode 100755
index 0000000..20b7cad
--- /dev/null
+++ b/tests-m32/migrate_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/migrate_pages.test b/tests-m32/migrate_pages.test
deleted file mode 100755
index fad53b7..0000000
--- a/tests-m32/migrate_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check migrate_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
diff --git a/tests-m32/mincore.gen.test b/tests-m32/mincore.gen.test
new file mode 100755
index 0000000..dc40726
--- /dev/null
+++ b/tests-m32/mincore.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-m32/mincore.test b/tests-m32/mincore.test
deleted file mode 100755
index 6af9f49..0000000
--- a/tests-m32/mincore.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mincore syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-m32/mkdir.gen.test b/tests-m32/mkdir.gen.test
new file mode 100755
index 0000000..80b4995
--- /dev/null
+++ b/tests-m32/mkdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-m32/mkdir.test b/tests-m32/mkdir.test
deleted file mode 100755
index 38ed692..0000000
--- a/tests-m32/mkdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-m32/mkdirat.gen.test b/tests-m32/mkdirat.gen.test
new file mode 100755
index 0000000..0f3fdae
--- /dev/null
+++ b/tests-m32/mkdirat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-m32/mkdirat.test b/tests-m32/mkdirat.test
deleted file mode 100755
index 0fcb841..0000000
--- a/tests-m32/mkdirat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdirat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-m32/mknod.c b/tests-m32/mknod.c
index 4cc1c5c..b387149 100644
--- a/tests-m32/mknod.c
+++ b/tests-m32/mknod.c
@@ -8,7 +8,7 @@
 # include <sys/sysmacros.h>
 # include <unistd.h>
 
-static const char sample[] = "mknod";
+static const char *sample;
 
 static long
 call_mknod(unsigned short mode, unsigned long dev)
@@ -18,9 +18,10 @@
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
 	unsigned long dev = (unsigned long) 0xdeadbeefbadc0dedULL;
+	sample = av[0];
 
 	long rc = call_mknod(0, dev);
 	printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
diff --git a/tests-m32/mknod.gen.test b/tests-m32/mknod.gen.test
new file mode 100755
index 0000000..870c88b
--- /dev/null
+++ b/tests-m32/mknod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-m32/mknod.test b/tests-m32/mknod.test
deleted file mode 100755
index 195f1e3..0000000
--- a/tests-m32/mknod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-m32/mknodat.gen.test b/tests-m32/mknodat.gen.test
new file mode 100755
index 0000000..747fcbe
--- /dev/null
+++ b/tests-m32/mknodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-m32/mknodat.test b/tests-m32/mknodat.test
deleted file mode 100755
index 1701a36..0000000
--- a/tests-m32/mknodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknodat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-m32/mlock.gen.test b/tests-m32/mlock.gen.test
new file mode 100755
index 0000000..2c8ea5e
--- /dev/null
+++ b/tests-m32/mlock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock -a20 -e trace=mlock,munlock); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=mlock,munlock
diff --git a/tests-m32/mlock.test b/tests-m32/mlock.test
deleted file mode 100755
index 9a73a30..0000000
--- a/tests-m32/mlock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock and munlock syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mlock,munlock -a20
diff --git a/tests-m32/mlock2.gen.test b/tests-m32/mlock2.gen.test
new file mode 100755
index 0000000..aa1818e
--- /dev/null
+++ b/tests-m32/mlock2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/mlock2.test b/tests-m32/mlock2.test
deleted file mode 100755
index bc412e9..0000000
--- a/tests-m32/mlock2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/mlockall.gen.test b/tests-m32/mlockall.gen.test
new file mode 100755
index 0000000..06d8ca4
--- /dev/null
+++ b/tests-m32/mlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-m32/mlockall.test b/tests-m32/mlockall.test
deleted file mode 100755
index d7a6182..0000000
--- a/tests-m32/mlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mlockall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-m32/mmap.c b/tests-m32/mmap.c
index f726f63..0321bf5 100644
--- a/tests-m32/mmap.c
+++ b/tests-m32/mmap.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -89,10 +90,6 @@
 	printf("mremap(%p, %lu, %lu, MREMAP_MAYMOVE|MREMAP_FIXED"
 	       ", %p) = %p\n", addr, length2, length3, addr + length2, p);
 
-	if (madvise(p, length3, MADV_NORMAL))
-		perror_msg_and_fail("madvise");
-	printf("madvise(%p, %lu, MADV_NORMAL) = 0\n", p, length3);
-
 	if (munmap(p, length3))
 		perror_msg_and_fail("munmap");
 	printf("munmap(%p, %lu) = 0\n", p, length3);
diff --git a/tests-m32/mmap.test b/tests-m32/mmap.test
index 0b87114..7ba664e 100755
--- a/tests-m32/mmap.test
+++ b/tests-m32/mmap.test
@@ -4,6 +4,7 @@
 # syscalls decoding.
 #
 # 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
@@ -50,9 +51,7 @@
 
 syscall=$mmap,madvise,mlockall,mprotect,mremap,msync,munmap
 
-run_prog "./$NAME" $mmap > /dev/null
+run_prog "../$NAME" $mmap > /dev/null
 run_strace -a20 -e$syscall $args > "$EXP"
 sed -n "/^$mmap(NULL, 0, PROT_NONE,/,\$p" < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/mmap64.gen.test b/tests-m32/mmap64.gen.test
new file mode 100755
index 0000000..5e747b0
--- /dev/null
+++ b/tests-m32/mmap64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test); do not edit.
+. "${srcdir=.}/mmap.test"
diff --git a/tests-m32/mmap64.test b/tests-m32/mmap64.test
deleted file mode 100755
index 51f1896..0000000
--- a/tests-m32/mmap64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mmap/mprotect/munmap syscalls decoding.
-# Target executable was compiled with -D_FILE_OFFSET_BITS=64.
-
-. "${srcdir=.}/mmap.test"
diff --git a/tests-m32/mmsg-silent.gen.test b/tests-m32/mmsg-silent.gen.test
new file mode 100755
index 0000000..47863f2
--- /dev/null
+++ b/tests-m32/mmsg-silent.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg-silent -a25 -e verbose=none -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests-m32/mmsg-silent.test b/tests-m32/mmsg-silent.test
deleted file mode 100755
index 775e0ad..0000000
--- a/tests-m32/mmsg-silent.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check silent decoding of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests-m32/mmsg.gen.test b/tests-m32/mmsg.gen.test
new file mode 100755
index 0000000..4d90e3d
--- /dev/null
+++ b/tests-m32/mmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
diff --git a/tests-m32/mmsg.test b/tests-m32/mmsg.test
deleted file mode 100755
index a8148ba..0000000
--- a/tests-m32/mmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how iovecs in struct mmsghdr are decoded.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmmsg,sendmmsg -e read=0 -e write=1
diff --git a/tests-m32/mmsg_name-v.gen.test b/tests-m32/mmsg_name-v.gen.test
new file mode 100755
index 0000000..e34946f
--- /dev/null
+++ b/tests-m32/mmsg_name-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name-v -v -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-m32/mmsg_name-v.test b/tests-m32/mmsg_name-v.test
deleted file mode 100755
index ab8dfba..0000000
--- a/tests-m32/mmsg_name-v.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-m32/mmsg_name.gen.test b/tests-m32/mmsg_name.gen.test
new file mode 100755
index 0000000..ac54294
--- /dev/null
+++ b/tests-m32/mmsg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-m32/mmsg_name.test b/tests-m32/mmsg_name.test
deleted file mode 100755
index e18c972..0000000
--- a/tests-m32/mmsg_name.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-m32/mount.gen.test b/tests-m32/mount.gen.test
new file mode 100755
index 0000000..0b124bc
--- /dev/null
+++ b/tests-m32/mount.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/mount.test b/tests-m32/mount.test
deleted file mode 100755
index 40fdca9..0000000
--- a/tests-m32/mount.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mount syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/move_pages.c b/tests-m32/move_pages.c
index f4ccafa..5ec25aa 100644
--- a/tests-m32/move_pages.c
+++ b/tests-m32/move_pages.c
@@ -2,6 +2,7 @@
  * Check decoding of move_pages syscall.
  *
  * 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
@@ -126,7 +127,7 @@
 			printf("%d", status[i]);
 		} else {
 			errno = -status[i];
-			printf("%s", errno2name());
+			printf("-%s", errno2name());
 		}
 	}
 	printf("]");
@@ -190,9 +191,9 @@
 	const unsigned page_size = get_page_size();
 	const void *const page = tail_alloc(page_size);
 	const void *const efault = page + page_size;
-	const void **pages = tail_alloc(sizeof(*pages));
-	int *nodes = tail_alloc(sizeof(*nodes));
-	int *status = tail_alloc(sizeof(*status));
+	TAIL_ALLOC_OBJECT_VAR_PTR(const void *, pages);
+	TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes);
+	TAIL_ALLOC_OBJECT_VAR_PTR(int, status);
 
 	print_stat_pages(pid, 0, pages, status);
 	print_move_pages(pid, 0, 0, pages, nodes, status);
diff --git a/tests-m32/move_pages.gen.test b/tests-m32/move_pages.gen.test
new file mode 100755
index 0000000..2f060fa
--- /dev/null
+++ b/tests-m32/move_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/move_pages.test b/tests-m32/move_pages.test
deleted file mode 100755
index f957717..0000000
--- a/tests-m32/move_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of move_pages syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3
diff --git a/tests-m32/mq.c b/tests-m32/mq.c
index 9c2ffc8..ee2d059 100644
--- a/tests-m32/mq.c
+++ b/tests-m32/mq.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
@@ -37,17 +38,19 @@
 # include <unistd.h>
 # include <sys/stat.h>
 
-# define NAME "strace-mq.test"
-
 int
 main (void)
 {
 	struct mq_attr attr;
 	(void) close(0);
 
-	if (mq_open("/" NAME, O_CREAT, 0700, NULL))
+	char *name;
+	if (asprintf(&name, "/strace-mq-%u.sample", getpid()) < 0)
+		perror_msg_and_fail("asprintf");
+
+	if (mq_open(name, O_CREAT, 0700, NULL))
 		perror_msg_and_skip("mq_open");
-	printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", NAME);
+	printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", name + 1);
 
 	if (mq_getattr(0, &attr))
 		perror_msg_and_skip("mq_getattr");
@@ -63,9 +66,9 @@
 	       (long long) attr.mq_maxmsg,
 	       (long long) attr.mq_msgsize);
 
-	if (mq_unlink("/" NAME))
+	if (mq_unlink(name))
 		perror_msg_and_skip("mq_unlink");
-	printf("mq_unlink(\"%s\") = 0\n", NAME);
+	printf("mq_unlink(\"%s\") = 0\n", name + 1);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/mq.gen.test b/tests-m32/mq.gen.test
new file mode 100755
index 0000000..8be520d
--- /dev/null
+++ b/tests-m32/mq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests-m32/mq.test b/tests-m32/mq.test
deleted file mode 100755
index 746b07b..0000000
--- a/tests-m32/mq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_getsetattr, and mq_unlink syscalls.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a28 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests-m32/mq_sendrecv-read.gen.test b/tests-m32/mq_sendrecv-read.gen.test
new file mode 100755
index 0000000..278e9b7
--- /dev/null
+++ b/tests-m32/mq_sendrecv-read.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests-m32/mq_sendrecv-read.test b/tests-m32/mq_sendrecv-read.test
deleted file mode 100755
index eb4ad75..0000000
--- a/tests-m32/mq_sendrecv-read.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -eread=0 -a14
diff --git a/tests-m32/mq_sendrecv-write.gen.test b/tests-m32/mq_sendrecv-write.gen.test
new file mode 100755
index 0000000..5963eb4
--- /dev/null
+++ b/tests-m32/mq_sendrecv-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-write -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests-m32/mq_sendrecv-write.test b/tests-m32/mq_sendrecv-write.test
deleted file mode 100755
index 38277ec..0000000
--- a/tests-m32/mq_sendrecv-write.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -ewrite=0 -a14
diff --git a/tests-m32/mq_sendrecv.c b/tests-m32/mq_sendrecv.c
index c151542..e3ad0d5 100644
--- a/tests-m32/mq_sendrecv.c
+++ b/tests-m32/mq_sendrecv.c
@@ -3,6 +3,7 @@
  * mq_unlink syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,10 +50,6 @@
 
 # include "sigevent.h"
 
-# ifndef MQ_NAME
-#  define MQ_NAME "mq_sendrecv.sample"
-# endif
-
 # ifndef DUMPIO_READ
 #  define DUMPIO_READ 0
 # endif
@@ -61,6 +58,7 @@
 #  define DUMPIO_WRITE 0
 # endif
 
+static char *mq_name;
 
 enum {
 	NUM_ATTRS = 8,
@@ -124,8 +122,8 @@
 {
 	long rc;
 
-	rc = syscall(__NR_mq_unlink, MQ_NAME);
-	printf("mq_unlink(\"" MQ_NAME "\") = %s\n", sprintrc(rc));
+	rc = syscall(__NR_mq_unlink, mq_name);
+	printf("mq_unlink(\"%s\") = %s\n", mq_name, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 }
@@ -147,9 +145,9 @@
 		if (cropped)
 			printf("...");
 		errno = saved_errno;
-		printf(", %u, 42, {tv_sec=%jd, tv_nsec=%jd}) = %s\n", msg_size,
-		       (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		       sprintrc(rc));
+		printf(", %u, 42, {tv_sec=%lld, tv_nsec=%llu}) = %s\n", msg_size,
+		       (long long) tmout->tv_sec,
+		       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 		errno = saved_errno;
 
 		if (rc == -1) {
@@ -185,9 +183,9 @@
 			printf("%p", msg);
 		}
 		errno = saved_errno;
-		printf(", %u, [42], {tv_sec=%jd, tv_nsec=%jd}) = %s\n", MSG_SIZE,
-		       (intmax_t) tmout->tv_sec,
-		       (intmax_t) tmout->tv_nsec, sprintrc(rc));
+		printf(", %u, [42], {tv_sec=%lld, tv_nsec=%llu}) = %s\n", MSG_SIZE,
+		       (long long) tmout->tv_sec,
+		       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 		errno = saved_errno;
 
 		if (rc == -1) {
@@ -242,7 +240,7 @@
 	kernel_long_t *bogus_attrs = tail_alloc(sizeof(*bogus_attrs) *
 		NUM_ATTRS);
 	char *msg = tail_alloc(MSG_SIZE);
-	unsigned *bogus_prio_ptr = tail_alloc(sizeof(*bogus_prio_ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, bogus_prio_ptr);
 	struct timespec *bogus_tmout = tail_memdup(&bogus_tmout_data,
 		sizeof(*bogus_tmout));
 	struct timespec *future_tmout = tail_memdup(&future_tmout_data,
@@ -278,8 +276,8 @@
 	/* Valid attributes structure */
 	rc = syscall(__NR_mq_open, msg, O_CREAT | bogus_oflags, bogus_mode,
 		     bogus_attrs);
-	printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, {mq_flags=%#llx, "
-	       "mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}) = %s\n",
+	printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, {mq_flags=%#llx"
+	       ", mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}) = %s\n",
 	       msg, (unsigned short) bogus_mode,
 	       (unsigned long long) (kernel_ulong_t) bogus_attrs[0],
 	       (long long) bogus_attrs[1],
@@ -304,12 +302,12 @@
 	/* Partially invalid message (memory only partially available) */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
 		     MSG_SIZE, bogus_prio, bogus_tmout);
-	printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
-	       "%s\n",
+	printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
 	       (int) bogus_fd, msg + MSG_SIZE - MSG_CUT,
 	       (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       sprintrc(rc));
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
 
 	/* Fully valid message, uncut */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
@@ -317,10 +315,10 @@
 	errstr = sprintrc(rc);
 	printf("mq_timedsend(%d, ", (int) bogus_fd);
 	printstr(MSG_START + MSG_SIZE - MSG_CUT, MSG_CUT);
-	printf(", %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf(", %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 	       (unsigned long long) MSG_CUT, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       errstr);
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
 
 	/* Partially invalid message, cut at maxstrlen */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_CUT, MSG_SIZE,
@@ -328,10 +326,10 @@
 	errstr = sprintrc(rc);
 	printf("mq_timedsend(%d, ", (int) bogus_fd);
 	printstr(MSG_START + MSG_CUT, MSG_MAX_UNCUT);
-	printf("..., %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf("..., %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 	       (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       errstr);
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
 
 
 	/* mq_timedreceive */
@@ -351,11 +349,11 @@
 	/* Invalid fd, valid msg pointer */
 	rc = syscall(__NR_mq_timedreceive, bogus_fd, msg, bogus_size,
 		     bogus_prio_ptr, bogus_tmout);
-	printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%jd, tv_nsec=%jd}) = "
-	       "%s\n",
+	printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%lld, tv_nsec=%llu}) "
+	       "= %s\n",
 	       (int) bogus_fd, msg, (unsigned long long) bogus_size,
-	       bogus_prio_ptr, (intmax_t) bogus_tmout->tv_sec,
-	       (intmax_t) bogus_tmout->tv_nsec, sprintrc(rc));
+	       bogus_prio_ptr, (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
 
 
 	/* mq_notify */
@@ -381,8 +379,8 @@
 	/* SIGEV_NONE */
 	bogus_sev->sigev_notify = SIGEV_NONE;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=%u, sigev_notify=SIGEV_NONE}) = %s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=%u, sigev_notify=SIGEV_NONE}) = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr,
 	       bogus_sev->sigev_signo, sprintrc(rc));
@@ -391,8 +389,8 @@
 	bogus_sev->sigev_notify = SIGEV_SIGNAL;
 	bogus_sev->sigev_signo = SIGALRM;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}) = %s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}) = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr, sprintrc(rc));
 
@@ -403,10 +401,10 @@
 	bogus_sev->sigev_un.sigev_thread.attribute =
 		(unsigned long) 0xcafef00dfacefeedULL;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD, "
-	       "sigev_notify_function=%#lx, sigev_notify_attributes=%#lx}) = "
-	       "%s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD"
+	       ", sigev_notify_function=%#lx, sigev_notify_attributes=%#lx})"
+	       " = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr,
 	       bogus_sev->sigev_un.sigev_thread.function,
@@ -430,12 +428,15 @@
 
 	/* Sending and receiving test */
 
+	if (asprintf(&mq_name, "strace-mq_sendrecv-%u.sample", getpid()) < 0)
+		perror_msg_and_fail("asprintf");
+
 # if DUMPIO_READ || DUMPIO_WRITE
 	close(0);
 # endif
 	bogus_attrs[1] = 2;
 	bogus_attrs[2] = MSG_SIZE;
-	fd = rc = syscall(__NR_mq_open, MQ_NAME,
+	fd = rc = syscall(__NR_mq_open, mq_name,
 		          O_CREAT|O_RDWR|O_NONBLOCK, S_IRWXU, bogus_attrs);
 	errstr = sprintrc(rc);
 	if (rc < 0)
@@ -448,11 +449,11 @@
 # endif
 	fill_memory_ex(bogus_attrs, sizeof(*bogus_attrs) * NUM_ATTRS,
 		       0xbb, 0x70);
-	printf("mq_open(\"" MQ_NAME "\", O_RDWR|O_CREAT|O_NONBLOCK, "
-	       "0700, {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u, "
-	       "mq_curmsgs=%lld}) = %s\n",
-	       (unsigned long long) (kernel_ulong_t) bogus_attrs[0], MSG_SIZE,
-	       (long long) bogus_attrs[3], errstr);
+	printf("mq_open(\"%s\", O_RDWR|O_CREAT|O_NONBLOCK, 0700"
+	       ", {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u"
+	       ", mq_curmsgs=%lld}) = %s\n",
+	       mq_name, (unsigned long long) (kernel_ulong_t) bogus_attrs[0],
+	       MSG_SIZE, (long long) bogus_attrs[3], errstr);
 
 	rc = syscall(__NR_mq_getsetattr, fd, NULL, bogus_attrs);
 	if (rc < 0)
diff --git a/tests-m32/mq_sendrecv.gen.test b/tests-m32/mq_sendrecv.gen.test
new file mode 100755
index 0000000..d82576f
--- /dev/null
+++ b/tests-m32/mq_sendrecv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests-m32/mq_sendrecv.test b/tests-m32/mq_sendrecv.test
deleted file mode 100755
index 67f4d63..0000000
--- a/tests-m32/mq_sendrecv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -a14
diff --git a/tests-m32/msg_control-v.gen.test b/tests-m32/msg_control-v.gen.test
new file mode 100755
index 0000000..0a0de15
--- /dev/null
+++ b/tests-m32/msg_control-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control-v -v -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests-m32/msg_control-v.test b/tests-m32/msg_control-v.test
deleted file mode 100755
index 41f9842..0000000
--- a/tests-m32/msg_control-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests-m32/msg_control.c b/tests-m32/msg_control.c
index 709a307..1e64f1a 100644
--- a/tests-m32/msg_control.c
+++ b/tests-m32/msg_control.c
@@ -2,6 +2,7 @@
  * Check decoding of struct msghdr ancillary data.
  *
  * 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
@@ -689,7 +690,7 @@
 	int rc = sendmsg(-1, 0, 0);
 	printf("sendmsg(-1, NULL, 0) = %d %s (%m)\n", rc, errno2name());
 
-	struct msghdr *mh = tail_alloc(sizeof(*mh));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
 	memset(mh, 0, sizeof(*mh));
 	test_big_len(mh);
 
diff --git a/tests-m32/msg_control.gen.test b/tests-m32/msg_control.gen.test
new file mode 100755
index 0000000..446ebcb
--- /dev/null
+++ b/tests-m32/msg_control.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests-m32/msg_control.test b/tests-m32/msg_control.test
deleted file mode 100755
index 809ec7b..0000000
--- a/tests-m32/msg_control.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests-m32/msg_name.c b/tests-m32/msg_name.c
index c2ddda2..9e98e4e 100644
--- a/tests-m32/msg_name.c
+++ b/tests-m32/msg_name.c
@@ -2,6 +2,7 @@
  * Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
  *
  * 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
@@ -47,13 +48,13 @@
 static void
 test_msg_name(const int send_fd, const int recv_fd)
 {
-	char *const recv_buf = tail_alloc(sizeof(*recv_buf));
-	struct iovec *const iov = tail_alloc(sizeof(*iov));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char, recv_buf);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = recv_buf;
 	iov->iov_len = sizeof(*recv_buf);
 
-	struct sockaddr_un *const addr = tail_alloc(sizeof(*addr));
-	struct msghdr *const msg = tail_alloc(sizeof(*msg));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sockaddr_un, addr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, msg);
 	msg->msg_name = addr;
 	msg->msg_namelen = sizeof(*addr);
 	msg->msg_iov = iov;
diff --git a/tests-m32/msg_name.gen.test b/tests-m32/msg_name.gen.test
new file mode 100755
index 0000000..2d0ae90
--- /dev/null
+++ b/tests-m32/msg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_name -a20 -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests-m32/msg_name.test b/tests-m32/msg_name.test
deleted file mode 100755
index ac06dd5..0000000
--- a/tests-m32/msg_name.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests-m32/munlockall.gen.test b/tests-m32/munlockall.gen.test
new file mode 100755
index 0000000..18343cb
--- /dev/null
+++ b/tests-m32/munlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests-m32/munlockall.test b/tests-m32/munlockall.test
deleted file mode 100755
index e25d60a..0000000
--- a/tests-m32/munlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check munlockall syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests-m32/nanosleep.c b/tests-m32/nanosleep.c
index 9f0e626..8f9724e 100644
--- a/tests-m32/nanosleep.c
+++ b/tests-m32/nanosleep.c
@@ -1,5 +1,8 @@
 /*
+ * Check decoding of nanosleep syscall.
+ *
  * 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
@@ -57,40 +60,62 @@
 
 	if (nanosleep(&req.ts, NULL))
 		perror_msg_and_fail("nanosleep");
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, NULL) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	assert(nanosleep(NULL, &rem.ts) == -1);
 	printf("nanosleep(NULL, %p) = -1 EFAULT (%m)\n", &rem.ts);
 
 	if (nanosleep(&req.ts, &rem.ts))
 		perror_msg_and_fail("nanosleep");
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	req.ts.tv_nsec = 1000000000;
 	assert(nanosleep(&req.ts, &rem.ts) == -1);
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = 0xdeadbeefU;
+	req.ts.tv_nsec = 0xfacefeedU;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = -1;
+	req.ts.tv_nsec = -1;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
 
 	if (setitimer(ITIMER_REAL, &itv, NULL))
 		perror_msg_and_skip("setitimer");
-	printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
-	       (intmax_t) itv.it_interval.tv_sec,
-	       (intmax_t) itv.it_interval.tv_usec,
-	       (intmax_t) itv.it_value.tv_sec,
-	       (intmax_t) itv.it_value.tv_usec);
 
+	req.ts.tv_sec = 0;
 	req.ts.tv_nsec = 999999999;
 	assert(nanosleep(&req.ts, &rem.ts) == -1);
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, {tv_sec=%jd, tv_nsec=%jd})"
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}"
+	       ", {tv_sec=%lld, tv_nsec=%llu})"
 	       " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
-	       (intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec),
+	       (long long) rem.ts.tv_sec,
+	       zero_extend_signed_to_ull(rem.ts.tv_nsec));
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-m32/nanosleep.gen.test b/tests-m32/nanosleep.gen.test
new file mode 100755
index 0000000..ea5b19a
--- /dev/null
+++ b/tests-m32/nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-m32/nanosleep.test b/tests-m32/nanosleep.test
deleted file mode 100755
index 055a8dc..0000000
--- a/tests-m32/nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check nanosleep and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=nanosleep,setitimer
diff --git a/tests-m32/net-icmp_filter.c b/tests-m32/net-icmp_filter.c
index f3f99f1..71e530d 100644
--- a/tests-m32/net-icmp_filter.c
+++ b/tests-m32/net-icmp_filter.c
@@ -2,6 +2,7 @@
  * Check decoding of ICMP_FILTER.
  *
  * 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
@@ -43,9 +44,9 @@
 	printf("setsockopt(-1, SOL_RAW, ICMP_FILTER, NULL, 0) = -1 %s (%m)\n",
 	       errno2name());
 
-	socklen_t *const plen = tail_alloc(sizeof(*plen));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
 	void *const efault = plen + 1;
-	struct icmp_filter *const f = tail_alloc(sizeof(*f));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct icmp_filter, f);
 
 	getsockopt(-1, SOL_RAW, ICMP_FILTER, f, plen);
 	printf("getsockopt(-1, SOL_RAW, ICMP_FILTER, %p, %p) = -1 %s (%m)\n",
diff --git a/tests-m32/net-icmp_filter.gen.test b/tests-m32/net-icmp_filter.gen.test
new file mode 100755
index 0000000..bf6c765
--- /dev/null
+++ b/tests-m32/net-icmp_filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-icmp_filter -e trace=getsockopt,setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests-m32/net-icmp_filter.test b/tests-m32/net-icmp_filter.test
deleted file mode 100755
index c05a5e6..0000000
--- a/tests-m32/net-icmp_filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ICMP_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests-m32/net-sockaddr.c b/tests-m32/net-sockaddr.c
index bf37779..9dc9ecf 100644
--- a/tests-m32/net-sockaddr.c
+++ b/tests-m32/net-sockaddr.c
@@ -2,6 +2,7 @@
  * Check decoding of sockaddr structures
  *
  * 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
@@ -57,7 +58,7 @@
 static void
 check_un(void)
 {
-	struct sockaddr_un *un = tail_alloc(sizeof(*un));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_un, un);
 	un->sun_family = AF_UNIX;
 	memset(un->sun_path, '0', sizeof(un->sun_path));
 	unsigned int len = sizeof(*un);
@@ -133,7 +134,7 @@
 	const unsigned short h_port = 12345;
 	static const char h_addr[] = "12.34.56.78";
 
-	struct sockaddr_in *in = tail_alloc(sizeof(*in));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in, in);
 	in->sin_family = AF_INET;
 	in->sin_port = htons(h_port);
 	in->sin_addr.s_addr = inet_addr(h_addr);
@@ -207,7 +208,7 @@
 	const unsigned int h_flowinfo = 1234567890;
 	static const char h_addr[] = "12:34:56:78:90:ab:cd:ef";
 
-	struct sockaddr_in6 *in6 = tail_alloc(sizeof(*in6));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in6, in6);
 	in6->sin6_family = AF_INET6;
 	in6->sin6_port = htons(h_port);
 	in6->sin6_flowinfo = htonl(h_flowinfo);
@@ -298,7 +299,7 @@
 static void
 check_nl(void)
 {
-	struct sockaddr_nl *nl = tail_alloc(sizeof(*nl));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_nl, nl);
 	nl->nl_family = AF_NETLINK;
 	nl->nl_pid = 1234567890;
 	nl->nl_groups = 0xfacefeed;
@@ -390,7 +391,7 @@
 check_hci(void)
 {
 	const unsigned short h_port = 12345;
-	struct sockaddr_hci *hci = tail_alloc(sizeof(*hci));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
 	hci->hci_family = AF_BLUETOOTH;
 	hci->hci_dev = htobs(h_port);
 	hci->hci_channel = HCI_CHANNEL_RAW;
diff --git a/tests-m32/net-sockaddr.gen.test b/tests-m32/net-sockaddr.gen.test
new file mode 100755
index 0000000..53c8335
--- /dev/null
+++ b/tests-m32/net-sockaddr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-sockaddr -a24 -e trace=connect); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=connect
diff --git a/tests-m32/net-sockaddr.test b/tests-m32/net-sockaddr.test
deleted file mode 100755
index cdfe536..0000000
--- a/tests-m32/net-sockaddr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr structures.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=connect
diff --git a/tests-m32/net-y-unix.c b/tests-m32/net-y-unix.c
index 3efc2f6..df56ad6 100644
--- a/tests-m32/net-y-unix.c
+++ b/tests-m32/net-y-unix.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-y-unix strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-int
-main(int ac, const char **av)
-{
-	assert(ac == 2);
+#define TEST_SOCKET "net-y-unix.socket"
 
-	struct sockaddr_un addr = { .sun_family = AF_UNIX };
-	unsigned int sun_path_len = strlen(av[1]);
-	assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const struct sockaddr_un addr = {
+		.sun_family = AF_UNIX,
+		.sun_path = TEST_SOCKET
+	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
 
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
-	*len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	*len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
 	if (*len > sizeof(addr))
 		*len = sizeof(addr);
 
@@ -61,17 +63,18 @@
 	printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<socket:[%lu]>\n",
 	       listen_fd, listen_inode);
 
-	(void) unlink(av[1]);
+	(void) unlink(TEST_SOCKET);
 	if (bind(listen_fd, listen_sa, *len))
 		perror_msg_and_skip("bind");
 	printf("bind(%d<socket:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
-	       ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+	       ", %u) = 0\n",
+	       listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
 
 	if (listen(listen_fd, 1))
 		perror_msg_and_skip("listen");
 	printf("listen(%d<socket:[%lu]>, 1) = 0\n", listen_fd, listen_inode);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
 		perror_msg_and_fail("getsockopt");
@@ -85,7 +88,7 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -98,7 +101,7 @@
 		perror_msg_and_fail("connect");
 	printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
@@ -119,7 +122,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
-	       av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	char text[] = "text";
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -163,14 +166,14 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
-	       listen_fd, listen_inode, av[1],
+	       listen_fd, listen_inode, TEST_SOCKET,
 	       (int) sizeof(addr), (int) *len);
 
 	if (connect(connect_fd, listen_sa, *len))
 		perror_msg_and_fail("connect");
 	printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -192,7 +195,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
-	       connect_fd, connect_inode, av[1],
+	       connect_fd, connect_inode, TEST_SOCKET,
 	       (int) sizeof(addr), (int) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
@@ -224,7 +227,7 @@
 	assert(close(accept_fd) == 0);
 	printf("close(%d<socket:[%lu]>) = 0\n", accept_fd, accept_inode);
 
-	assert(unlink(av[1]) == 0);
+	assert(unlink(TEST_SOCKET) == 0);
 
 	assert(close(listen_fd) == 0);
 	printf("close(%d<socket:[%lu]>) = 0\n",
diff --git a/tests-m32/net-y-unix.test b/tests-m32/net-y-unix.test
index aec8159..fd3fd68 100755
--- a/tests-m32/net-y-unix.test
+++ b/tests-m32/net-y-unix.test
@@ -2,7 +2,7 @@
 #
 # Check decoding of network syscalls in -y mode.
 #
-# 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
@@ -29,18 +29,11 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -y is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
 
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog > /dev/null
 run_strace -a20 -y -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/net-yy-inet.c b/tests-m32/net-yy-inet.c
index f76f941..af1262e 100644
--- a/tests-m32/net-yy-inet.c
+++ b/tests-m32/net-yy-inet.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,12 +42,14 @@
 int
 main(void)
 {
+	skip_if_unavailable("/proc/self/fd/");
+
 	const struct sockaddr_in addr = {
 		.sin_family = AF_INET,
 		.sin_addr.s_addr = htonl(INADDR_LOOPBACK)
 	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 	*len = sizeof(addr);
 
 	const int listen_fd = socket(AF_INET, SOCK_STREAM, 0);
@@ -77,7 +80,7 @@
 	       ", [%u]) = 0\n",
 	       listen_fd, listen_port, listen_port, (unsigned) *len);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_TCP, TCP_MAXSEG, optval, len))
 		perror_msg_and_fail("getsockopt");
diff --git a/tests-m32/net-yy-inet.test b/tests-m32/net-yy-inet.test
index 2ebf91f..6b527db 100755
--- a/tests-m32/net-yy-inet.test
+++ b/tests-m32/net-yy-inet.test
@@ -3,6 +3,7 @@
 # Check decoding of ip:port pairs associated with socket descriptors
 #
 # Copyright (c) 2014-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,18 +30,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_inet_diag
 
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_inet_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/net-yy-netlink.c b/tests-m32/net-yy-netlink.c
index 64d0efc..6539eda 100644
--- a/tests-m32/net-yy-netlink.c
+++ b/tests-m32/net-yy-netlink.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-yy-netlink strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * All rights reserved.
  *
@@ -47,13 +47,14 @@
 int
 main(void)
 {
-	unsigned magic = 1234;
+	skip_if_unavailable("/proc/self/fd/");
+
 	struct sockaddr_nl addr = {
 		.nl_family = AF_NETLINK,
-		.nl_pid = 1234
+		.nl_pid = getpid()
 	};
 	struct sockaddr *const sa = tail_memdup(&addr, sizeof(addr));
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 	*len = sizeof(addr);
 
 	const int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
@@ -67,17 +68,17 @@
 		perror_msg_and_skip("bind");
 	printf("bind(%d<NETLINK:[%lu]>, {sa_family=AF_NETLINK"
 	       ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n",
-	       fd, inode, magic, (unsigned) *len);
+	       fd, inode, addr.nl_pid, (unsigned) *len);
 
 	if (getsockname(fd, sa, len))
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<NETLINK:[SOCK_DIAG:%u]>, {sa_family=AF_NETLINK"
 	       ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n",
-	       fd, magic, magic, (unsigned) *len);
+	       fd, addr.nl_pid, addr.nl_pid, (unsigned) *len);
 
 	if (close(fd))
 		perror_msg_and_fail("close");
-	printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, magic);
+	printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, addr.nl_pid);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/net-yy-netlink.test b/tests-m32/net-yy-netlink.test
index bff1d86..3a07e45 100755
--- a/tests-m32/net-yy-netlink.test
+++ b/tests-m32/net-yy-netlink.test
@@ -6,6 +6,7 @@
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
+# Copyright (c) 2016-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -32,18 +33,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_netlink_diag
 
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_netlink_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/net-yy-unix.c b/tests-m32/net-yy-unix.c
index 63637bd..f27cdc0 100644
--- a/tests-m32/net-yy-unix.c
+++ b/tests-m32/net-yy-unix.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-yy-unix strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-int
-main(int ac, const char **av)
-{
-	assert(ac == 2);
+#define TEST_SOCKET "net-yy-unix.socket"
 
-	struct sockaddr_un addr = { .sun_family = AF_UNIX };
-	unsigned int sun_path_len = strlen(av[1]);
-	assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	struct sockaddr_un addr = {
+		.sun_family = AF_UNIX,
+		.sun_path = TEST_SOCKET
+	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
 
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
-	*len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	*len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
 	if (*len > sizeof(addr))
 		*len = sizeof(addr);
 
@@ -61,24 +63,25 @@
 	printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<UNIX:[%lu]>\n",
 	       listen_fd, listen_inode);
 
-	(void) unlink(av[1]);
+	(void) unlink(TEST_SOCKET);
 	if (bind(listen_fd, listen_sa, *len))
 		perror_msg_and_skip("bind");
 	printf("bind(%d<UNIX:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
-	       ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+	       ", %u) = 0\n",
+	       listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
 
 	if (listen(listen_fd, 1))
 		perror_msg_and_skip("listen");
 	printf("listen(%d<UNIX:[%lu,\"%s\"]>, 1) = 0\n",
-	       listen_fd, listen_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
 		perror_msg_and_fail("getsockopt");
 	printf("getsockopt(%d<UNIX:[%lu,\"%s\"]>, SOL_SOCKET, SO_PASSCRED"
 	       ", [%u], [%u]) = 0\n",
-	       listen_fd, listen_inode, av[1], *optval, (unsigned) *len);
+	       listen_fd, listen_inode, TEST_SOCKET, *optval, (unsigned) *len);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -86,7 +89,7 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -99,7 +102,7 @@
 		perror_msg_and_fail("connect");
 	printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
@@ -110,8 +113,9 @@
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
 	printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX}"
 	       ", [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
-	       listen_fd, listen_inode, av[1], (int) sizeof(addr), (int) *len,
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET,
+	       (int) sizeof(addr), (int) *len,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -120,7 +124,7 @@
 	printf("getpeername(%d<UNIX:[%lu->%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
 	       connect_fd, connect_inode,
-	       accept_inode, av[1], (int) sizeof(addr), (int) *len);
+	       accept_inode, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	char text[] = "text";
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -134,7 +138,7 @@
 	       == sizeof(text) - 1);
 	printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
 	       ", NULL, NULL) = %u\n",
-	       accept_fd, accept_inode, connect_inode, av[1], text,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
 	       (unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
 
 	assert(close(connect_fd) == 0);
@@ -143,7 +147,7 @@
 
 	assert(close(accept_fd) == 0);
 	printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -166,13 +170,13 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	if (connect(connect_fd, listen_sa, *len))
 		perror_msg_and_fail("connect");
 	printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -184,9 +188,9 @@
 		((struct sockaddr_un *) accept_sa) -> sun_path + 1;
 	printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=@\"%s\"}, [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
-	       listen_fd, listen_inode, av[1], sun_path1,
+	       listen_fd, listen_inode, TEST_SOCKET, sun_path1,
 	       (int) sizeof(addr), (int) *len,
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -194,7 +198,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<UNIX:[%lu->%lu,@\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
-	       accept_inode, sun_path1, av[1], (int) sizeof(addr), (int) *len);
+	       accept_inode, sun_path1, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
 	       == sizeof(text) - 1);
@@ -207,7 +211,7 @@
 	       == sizeof(text) - 1);
 	printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
 	       ", NULL, NULL) = %u\n",
-	       accept_fd, accept_inode, connect_inode, av[1], text,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
 	       (unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
 
 	assert(close(connect_fd) == 0);
@@ -216,13 +220,13 @@
 
 	assert(close(accept_fd) == 0);
 	printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
-	assert(unlink(av[1]) == 0);
+	assert(unlink(TEST_SOCKET) == 0);
 
 	assert(close(listen_fd) == 0);
 	printf("close(%d<UNIX:[%lu,\"%s\"]>) = 0\n",
-	       listen_fd, listen_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/net-yy-unix.test b/tests-m32/net-yy-unix.test
index b82761c..59323a4 100755
--- a/tests-m32/net-yy-unix.test
+++ b/tests-m32/net-yy-unix.test
@@ -4,7 +4,7 @@
 # associated with unix domain socket descriptors.
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
-# Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -31,19 +31,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_unix_diag
 
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog ../netlink_unix_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/net.test b/tests-m32/net.test
index cf943ff..8320707 100755
--- a/tests-m32/net.test
+++ b/tests-m32/net.test
@@ -4,8 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./net-accept-connect net-local-stream
-run_strace_merge -enetwork $args
+run_prog ../net-accept-connect net-local-stream
+run_strace_merge -e%network $args
 match_grep
 
 exit 0
diff --git a/tests-m32/netlink_protocol.c b/tests-m32/netlink_protocol.c
index 34e114b..35f954f 100644
--- a/tests-m32/netlink_protocol.c
+++ b/tests-m32/netlink_protocol.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of netlink protocol.
  *
- * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * All rights reserved.
  *
@@ -199,6 +199,121 @@
 	printf(", ...], %u, MSG_DONTWAIT, NULL, 0) = %s\n", msg_len, errstr);
 }
 
+static void
+test_nlmsgerr(const int fd)
+{
+	struct nlmsgerr *err;
+	struct nlmsghdr *nlh;
+	void *const nlh0 = tail_alloc(NLMSG_HDRLEN);
+	long rc;
+
+	/* error message without enough room for the error code */
+	nlh = nlh0;
+	nlh->nlmsg_len = NLMSG_HDRLEN + 4;
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, %p}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	nlh->nlmsg_len = NLMSG_HDRLEN + 2;
+	nlh = nlh0 - 2;
+	memmove(nlh, nlh0, sizeof(*nlh));
+	memcpy(NLMSG_DATA(nlh), "42", 2);
+
+	rc = sendto(fd, nlh, NLMSG_HDRLEN + 2, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, \"42\"}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, NLMSG_HDRLEN + 2, NLMSG_HDRLEN + 2, sprintrc(rc));
+
+	/* error message with room for the error code only */
+	nlh = nlh0 - sizeof(err->error);
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(err->error);
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = 42;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=42}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+	err->error = -1;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EPERM}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+	err->error = -32767;
+	nlh->nlmsg_len += sizeof(err->msg.nlmsg_len);
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-32767, msg=%p}}"
+	       ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	/* error message with room for the error code and a header */
+	nlh = nlh0 - sizeof(*err);
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err);
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = -13;
+	err->msg.nlmsg_len = NLMSG_HDRLEN;
+	err->msg.nlmsg_type = NLMSG_NOOP;
+	err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+	err->msg.nlmsg_seq = 42;
+	err->msg.nlmsg_pid = 1234;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EACCES"
+	       ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+	       ", seq=%u, pid=%u}}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+	       err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	/* error message with room for the error code, a header, and some data */
+	nlh = nlh0 - sizeof(*err) - 4;
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err) + 4;
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = -13;
+	err->msg.nlmsg_len = NLMSG_HDRLEN + 4;
+	err->msg.nlmsg_type = NLMSG_NOOP;
+	err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+	err->msg.nlmsg_seq = 421;
+	err->msg.nlmsg_pid = 12345;
+	memcpy(NLMSG_DATA(&err->msg), "abcd", 4);
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EACCES"
+	       ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+	       ", seq=%u, pid=%u}, \"abcd\"}}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n",
+	       fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+	       err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+	       nlh->nlmsg_len, sprintrc(rc));
+}
+
 int main(void)
 {
 	struct sockaddr_nl addr;
@@ -227,6 +342,7 @@
 	free(path);
 
 	send_query(fd);
+	test_nlmsgerr(fd);
 
 	printf("+++ exited with 0 +++\n");
 
diff --git a/tests-m32/netlink_protocol.gen.test b/tests-m32/netlink_protocol.gen.test
new file mode 100755
index 0000000..9a132fa
--- /dev/null
+++ b/tests-m32/netlink_protocol.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_protocol -e trace=%network); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=%network
diff --git a/tests-m32/netlink_protocol.test b/tests-m32/netlink_protocol.test
deleted file mode 100755
index ab2bb1e..0000000
--- a/tests-m32/netlink_protocol.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of netlink protocol.
-
-. "${srcdir=.}/init.sh"
-
-# getfdproto is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-    framework_skip_ '/proc/self/fd/ is not available'
-
-run_strace_match_diff -e trace=network
diff --git a/tests-m32/newfstatat.gen.test b/tests-m32/newfstatat.gen.test
new file mode 100755
index 0000000..40ec797
--- /dev/null
+++ b/tests-m32/newfstatat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/newfstatat.test b/tests-m32/newfstatat.test
deleted file mode 100755
index 6d83ec0..0000000
--- a/tests-m32/newfstatat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check newfstatat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/nsyscalls.c b/tests-m32/nsyscalls.c
index aecf7aa..7fda5ba 100644
--- a/tests-m32/nsyscalls.c
+++ b/tests-m32/nsyscalls.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,6 +42,13 @@
 #define TP 0
 #define TS 0
 #define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests-m32/old_mmap.gen.test b/tests-m32/old_mmap.gen.test
new file mode 100755
index 0000000..1913eec
--- /dev/null
+++ b/tests-m32/old_mmap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap -a11 -e trace=mmap); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests-m32/old_mmap.test b/tests-m32/old_mmap.test
deleted file mode 100755
index af776ff..0000000
--- a/tests-m32/old_mmap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of "old mmap" edition of mmap syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests-m32/oldfstat.c b/tests-m32/oldfstat.c
index f5a9441..353614c 100644
--- a/tests-m32/oldfstat.c
+++ b/tests-m32/oldfstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/oldfstat.gen.test b/tests-m32/oldfstat.gen.test
new file mode 100755
index 0000000..2b48b39
--- /dev/null
+++ b/tests-m32/oldfstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldfstat -a18 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -v -P stat.sample
diff --git a/tests-m32/oldfstat.test b/tests-m32/oldfstat.test
deleted file mode 100755
index 66a1056..0000000
--- a/tests-m32/oldfstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Check oldfstat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-syscall=$NAME
-run_prog > /dev/null
-sample=$syscall.sample
-> "$sample"
-run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-m32/oldlstat.c b/tests-m32/oldlstat.c
index 6613237..6f07531 100644
--- a/tests-m32/oldlstat.c
+++ b/tests-m32/oldlstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/oldlstat.gen.test b/tests-m32/oldlstat.gen.test
new file mode 100755
index 0000000..3202b92
--- /dev/null
+++ b/tests-m32/oldlstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldlstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/oldlstat.test b/tests-m32/oldlstat.test
deleted file mode 100755
index a0f9ab9..0000000
--- a/tests-m32/oldlstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldlstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/oldstat.c b/tests-m32/oldstat.c
index d06e2bc..ddacd24 100644
--- a/tests-m32/oldstat.c
+++ b/tests-m32/oldstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/oldstat.gen.test b/tests-m32/oldstat.gen.test
new file mode 100755
index 0000000..f265ac5
--- /dev/null
+++ b/tests-m32/oldstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/oldstat.test b/tests-m32/oldstat.test
deleted file mode 100755
index 42d70f7..0000000
--- a/tests-m32/oldstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/open.gen.test b/tests-m32/open.gen.test
new file mode 100755
index 0000000..eb931a3
--- /dev/null
+++ b/tests-m32/open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open -a30 -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests-m32/open.test b/tests-m32/open.test
deleted file mode 100755
index 6df19cb..0000000
--- a/tests-m32/open.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests-m32/openat.gen.test b/tests-m32/openat.gen.test
new file mode 100755
index 0000000..fe29e1c
--- /dev/null
+++ b/tests-m32/openat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests-m32/openat.test b/tests-m32/openat.test
deleted file mode 100755
index 68c4cee..0000000
--- a/tests-m32/openat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check openat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
diff --git a/tests-m32/opipe.test b/tests-m32/opipe.test
index 90e6838..f622045 100755
--- a/tests-m32/opipe.test
+++ b/tests-m32/opipe.test
@@ -6,11 +6,9 @@
 
 check_prog grep
 run_prog grep chdir $srcdir/umovestr.expected > "$EXP"
-run_prog ./umovestr
+run_prog ../umovestr
 
-> "$LOG" || fail_ "failed to write $LOG"
 $STRACE -o "|cat > $LOG && $SLEEP_A_BIT && grep chdir < $LOG > $OUT" -e chdir $args ||
 	dump_log_and_fail_with "$STRACE $args failed"
 
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/options-syntax.test b/tests-m32/options-syntax.test
index 592b0e0..4c778b3 100755
--- a/tests-m32/options-syntax.test
+++ b/tests-m32/options-syntax.test
@@ -3,6 +3,7 @@
 # Check strace options syntax.
 #
 # 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
@@ -39,6 +40,16 @@
 			"strace $* failed to print expected diagnostics"
 }
 
+check_exit_status_and_stderr_using_grep()
+{
+	$STRACE "$@" 2> "$LOG" &&
+		dump_log_and_fail_with \
+			"strace $* failed to handle the error properly"
+	match_grep "$LOG" "$EXP" ||
+		dump_log_and_fail_with \
+			"strace $* failed to print expected diagnostics"
+}
+
 strace_exp="${STRACE##* }"
 
 check_e()
@@ -50,6 +61,15 @@
 	check_exit_status_and_stderr "$@"
 }
 
+check_e_using_grep()
+{
+	local pattern="$1"; shift
+	cat > "$EXP" << __EOF__
+$strace_exp: $pattern
+__EOF__
+	check_exit_status_and_stderr_using_grep "$@"
+}
+
 check_h()
 {
 	local pattern="$1"; shift
@@ -72,6 +92,7 @@
 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
@@ -88,6 +109,12 @@
 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'
+
 check_h 'must have PROG [ARGS] or -p PID'
 check_h 'PROG [ARGS] must be specified with -D' -D -p $$
 check_h '-c and -C are mutually exclusive' -c -C true
@@ -144,5 +171,3 @@
 [ -z "$args" ] ||
 	dump_log_and_fail_with \
 		"strace $args failed to print expected diagnostics"
-
-rm -f "$EXP"
diff --git a/tests-m32/osf_utimes.c b/tests-m32/osf_utimes.c
new file mode 100644
index 0000000..7ac083e
--- /dev/null
+++ b/tests-m32/osf_utimes.c
@@ -0,0 +1,45 @@
+/*
+ * Check decoding of osf_utimes 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>
+
+#ifdef __NR_osf_utimes
+
+# define TEST_SYSCALL_NR	__NR_osf_utimes
+# define TEST_SYSCALL_STR	"osf_utimes"
+# define TEST_STRUCT		struct timeval32
+struct timeval32 { int tv_sec, tv_usec; };
+# include "xutimes.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_osf_utimes")
+
+#endif
diff --git a/tests-m32/osf_utimes.gen.test b/tests-m32/osf_utimes.gen.test
new file mode 100755
index 0000000..b6be305
--- /dev/null
+++ b/tests-m32/osf_utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/pause.gen.test b/tests-m32/pause.gen.test
new file mode 100755
index 0000000..76492b6
--- /dev/null
+++ b/tests-m32/pause.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pause -a8 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 -esignal=none
diff --git a/tests-m32/pause.test b/tests-m32/pause.test
deleted file mode 100755
index c5fdacd..0000000
--- a/tests-m32/pause.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pause syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8 -esignal=none
diff --git a/tests-m32/pc.test b/tests-m32/pc.test
index beadb7d..af09701 100755
--- a/tests-m32/pc.test
+++ b/tests-m32/pc.test
@@ -3,6 +3,7 @@
 # Check -i option.
 #
 # Copyright (c) 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
@@ -47,15 +48,11 @@
 [ -n "$addr" ] ||
 	dump_log_and_fail_with
 
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
 \\[[[:xdigit:]]{$len}\\] munmap\\(0x[[:xdigit:]]+, 0\\) += -1 .*
 \\[pid +$pid\\] \\[$ip\\] --- SIGSEGV \\{si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x$addr\\} ---
 \\[pid +$pid\\] \\[\\?{$len}\\] \\+\\+\\+ killed by SIGSEGV( \\(core dumped\\))? \\+\\+\\+
 \\[\\?{$len}\\] \\+\\+\\+ exited with 0 \\+\\+\\+
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests-m32/perf_event_open.c b/tests-m32/perf_event_open.c
index 0ffea29..3f544a6 100644
--- a/tests-m32/perf_event_open.c
+++ b/tests-m32/perf_event_open.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -681,7 +682,7 @@
 		ATTR_REC(attr_big_size),
 	};
 
-	struct perf_event_attr *small_attr = tail_alloc(sizeof(*small_attr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, small_attr);
 
 	struct {
 		struct perf_event_attr *attr;
diff --git a/tests-m32/perf_event_open.gen.test b/tests-m32/perf_event_open.gen.test
new file mode 100755
index 0000000..85336c3
--- /dev/null
+++ b/tests-m32/perf_event_open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/perf_event_open.test b/tests-m32/perf_event_open.test
deleted file mode 100755
index 499134b..0000000
--- a/tests-m32/perf_event_open.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check perf_event_open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a1
diff --git a/tests-m32/perf_event_open_nonverbose.c b/tests-m32/perf_event_open_nonverbose.c
index 45d7c8f..b67715c 100644
--- a/tests-m32/perf_event_open_nonverbose.c
+++ b/tests-m32/perf_event_open_nonverbose.c
@@ -2,6 +2,7 @@
  * Check decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,7 +63,7 @@
 int
 main(void)
 {
-	struct perf_event_attr *attr = tail_alloc(sizeof(*attr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, attr);
 
 	attr->type = PERF_TYPE_HARDWARE;
 	attr->size = sizeof(*attr);
diff --git a/tests-m32/perf_event_open_nonverbose.gen.test b/tests-m32/perf_event_open_nonverbose.gen.test
new file mode 100755
index 0000000..f1ed333
--- /dev/null
+++ b/tests-m32/perf_event_open_nonverbose.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_nonverbose -a34 -e verbose=none -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests-m32/perf_event_open_nonverbose.test b/tests-m32/perf_event_open_nonverbose.test
deleted file mode 100755
index 404827f..0000000
--- a/tests-m32/perf_event_open_nonverbose.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of perf_event_open syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests-m32/perf_event_open_unabbrev.gen.test b/tests-m32/perf_event_open_unabbrev.gen.test
new file mode 100755
index 0000000..1d9bd85
--- /dev/null
+++ b/tests-m32/perf_event_open_unabbrev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_unabbrev -a1 -v -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests-m32/perf_event_open_unabbrev.test b/tests-m32/perf_event_open_unabbrev.test
deleted file mode 100755
index f17fd17..0000000
--- a/tests-m32/perf_event_open_unabbrev.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check perf_event_open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests-m32/personality.test b/tests-m32/personality.test
index 8f8c0ad..ab2faf4 100755
--- a/tests-m32/personality.test
+++ b/tests-m32/personality.test
@@ -5,8 +5,5 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -a20 -epersonality $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -epersonality $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests-m32/pipe.c b/tests-m32/pipe.c
index 41c7f21..3df2094 100644
--- a/tests-m32/pipe.c
+++ b/tests-m32/pipe.c
@@ -2,6 +2,7 @@
  * Check decoding of pipe syscall.
  *
  * 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
diff --git a/tests-m32/pipe2.c b/tests-m32/pipe2.c
index 375ae74..3a0e046 100644
--- a/tests-m32/pipe2.c
+++ b/tests-m32/pipe2.c
@@ -39,18 +39,16 @@
 int
 main(void)
 {
-	static const kernel_ulong_t bogus_zero =
-		(kernel_ulong_t) 0xffffffff00000000ULL;
 	int *const fds = tail_alloc(sizeof(*fds) * 2);
 	int *const efault = fds + 1;
 	long rc;
 
-	rc = syscall(__NR_pipe2, fds, bogus_zero | O_NONBLOCK);
+	rc = syscall(__NR_pipe2, fds, F8ILL_KULONG_MASK | O_NONBLOCK);
 	if (rc)
 		perror_msg_and_skip("pipe2");
 	printf("pipe2([%d, %d], O_NONBLOCK) = 0\n", fds[0], fds[1]);
 
-	rc = syscall(__NR_pipe2, efault, bogus_zero);
+	rc = syscall(__NR_pipe2, efault, F8ILL_KULONG_MASK);
 	printf("pipe2(%p, 0) = %s\n", efault, sprintrc(rc));
 
 	if (F8ILL_KULONG_SUPPORTED) {
diff --git a/tests-m32/pipe2.gen.test b/tests-m32/pipe2.gen.test
new file mode 100755
index 0000000..5a06c03
--- /dev/null
+++ b/tests-m32/pipe2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-m32/pipe2.test b/tests-m32/pipe2.test
deleted file mode 100755
index aff6cd4..0000000
--- a/tests-m32/pipe2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pipe2 syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a15
diff --git a/tests-m32/pkey_alloc.gen.test b/tests-m32/pkey_alloc.gen.test
new file mode 100755
index 0000000..b3e5869
--- /dev/null
+++ b/tests-m32/pkey_alloc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/pkey_alloc.test b/tests-m32/pkey_alloc.test
deleted file mode 100755
index f168c21..0000000
--- a/tests-m32/pkey_alloc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_alloc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-m32/pkey_free.gen.test b/tests-m32/pkey_free.gen.test
new file mode 100755
index 0000000..588d1aa
--- /dev/null
+++ b/tests-m32/pkey_free.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/pkey_free.test b/tests-m32/pkey_free.test
deleted file mode 100755
index 9c01c3e..0000000
--- a/tests-m32/pkey_free.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_free syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests-m32/pkey_mprotect.gen.test b/tests-m32/pkey_mprotect.gen.test
new file mode 100755
index 0000000..14be231
--- /dev/null
+++ b/tests-m32/pkey_mprotect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/pkey_mprotect.test b/tests-m32/pkey_mprotect.test
deleted file mode 100755
index 922d491..0000000
--- a/tests-m32/pkey_mprotect.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_mprotect syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests-m32/poll.test b/tests-m32/poll.test
index b74be29..d09193d 100755
--- a/tests-m32/poll.test
+++ b/tests-m32/poll.test
@@ -5,13 +5,11 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -a16 -vepoll $args > "$OUT"
-match_diff "$LOG" "$OUT"
+run_strace -a16 -vepoll $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 $args > "$OUT"
-	match_diff "$LOG" "$OUT"
+	run_prog "../$NAME" $abbrev > /dev/null
+	run_strace -a16 -epoll -s$abbrev $args > "$EXP"
+	match_diff "$LOG" "$EXP"
 done
-
-rm -f "$OUT"
diff --git a/tests-m32/ppoll-v.c b/tests-m32/ppoll-v.c
new file mode 100644
index 0000000..cf4fdea
--- /dev/null
+++ b/tests-m32/ppoll-v.c
@@ -0,0 +1,3 @@
+/* This file is part of ppoll-v strace test. */
+#define VERBOSE 1
+#include "ppoll.c"
diff --git a/tests-m32/ppoll-v.expected b/tests-m32/ppoll-v.expected
deleted file mode 100644
index 31070ad..0000000
--- a/tests-m32/ppoll-v.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \{fd=3, events=POLLIN\|POLLPRI\}, \{fd=4, events=POLLOUT\}\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
-ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests-m32/ppoll-v.gen.test b/tests-m32/ppoll-v.gen.test
new file mode 100755
index 0000000..cd1fcc6
--- /dev/null
+++ b/tests-m32/ppoll-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll-v -v -s2 -e trace=ppoll); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -s2 -e trace=ppoll
diff --git a/tests-m32/ppoll.c b/tests-m32/ppoll.c
index 46d7e81..85a7e0c 100644
--- a/tests-m32/ppoll.c
+++ b/tests-m32/ppoll.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of ppoll 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
@@ -26,69 +28,165 @@
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <poll.h>
-#include <signal.h>
-#include <unistd.h>
+#include <asm/unistd.h>
 
-static void
-test1(void)
+#ifdef __NR_ppoll
+
+# include <errno.h>
+# include <poll.h>
+# include <signal.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+sys_ppoll(const kernel_ulong_t ufds,
+	  const kernel_ulong_t nfds,
+	  const kernel_ulong_t tsp,
+	  const kernel_ulong_t sigmask,
+	  const kernel_ulong_t sigsetsize)
 {
-	const struct timespec timeout = { .tv_sec = 42, .tv_nsec = 999999999 };
-	struct pollfd fds[] = {
-		{ .fd = 0, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 1, .events = POLLOUT | POLLWRNORM | POLLWRBAND },
-		{ .fd = 3, .events = POLLIN | POLLPRI },
-		{ .fd = 4, .events = POLLOUT }
-	};
-
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-
-	int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
-	if (rc < 0)
-		perror_msg_and_skip("ppoll");
-	assert(rc == 2);
-}
-
-static void
-test2(void)
-{
-	const struct timespec timeout = { .tv_sec = 0, .tv_nsec = 999 };
-	struct pollfd fds[] = {
-		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
-	};
-
-	sigset_t mask;
-	sigfillset(&mask);
-	sigdelset(&mask, SIGHUP);
-	sigdelset(&mask, SIGKILL);
-	sigdelset(&mask, SIGSTOP);
-
-	int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
-	if (rc < 0)
-		perror_msg_and_skip("ppoll");
-	assert(rc == 0);
+	long rc = syscall(__NR_ppoll, ufds, nfds, tsp, sigmask, sigsetsize);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 int
 main(void)
 {
-	int fds[2];
+	static const kernel_ulong_t bogus_nfds =
+		(kernel_ulong_t) 0xdeadbeeffacefeedULL;
+	static const kernel_ulong_t bogus_sigsetsize =
+		(kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+	static const char *const POLLWRNORM_str =
+		(POLLWRNORM == POLLOUT) ? "" : "|POLLWRNORM";
+	static const char *const USR2_CHLD_str =
+		(SIGUSR2 < SIGCHLD) ? "USR2 CHLD" : "CHLD USR2";
+	void *const efault = tail_alloc(1024) + 1024;
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+	const unsigned int sigset_size = get_sigset_size();
+	void *const sigmask = tail_alloc(sigset_size);
+	struct pollfd *fds;
+	sigset_t mask;
+	int pipe_fd[4];
+	long rc;
 
-	(void) close(0);
-	(void) close(1);
-	(void) close(3);
-	(void) close(4);
-	if (pipe(fds) || pipe(fds))
+	sys_ppoll(0, bogus_nfds, 0, 0, bogus_sigsetsize);
+	if (ENOSYS == errno)
+		perror_msg_and_skip("ppoll");
+	printf("ppoll(NULL, %u, NULL, NULL, %llu) = %s\n",
+	       (unsigned) bogus_nfds, (unsigned long long) bogus_sigsetsize,
+	       errstr);
+
+	sys_ppoll((unsigned long) efault, 42, (unsigned long) efault + 8,
+		  (unsigned long) efault + 16, sigset_size);
+	printf("ppoll(%p, %u, %p, %p, %u) = %s\n",
+	       efault, 42, efault + 8, efault + 16, sigset_size, errstr);
+
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+	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);
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedL;
+	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+	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);
+
+	if (pipe(pipe_fd) || pipe(pipe_fd + 2))
 		perror_msg_and_fail("pipe");
 
-	test1();
-	test2();
+	ts->tv_sec = 42;
+	ts->tv_nsec = 999999999;
 
-	assert(ppoll(NULL, 42, NULL, NULL) < 0);
+	const struct pollfd fds1[] = {
+		{ .fd = pipe_fd[0], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = pipe_fd[1], .events = POLLOUT | POLLWRNORM | POLLWRBAND },
+		{ .fd = pipe_fd[2], .events = POLLIN | POLLPRI },
+		{ .fd = pipe_fd[3], .events = POLLOUT }
+	};
+	fds = efault - sizeof(fds1);
+	memcpy(fds, fds1, sizeof(fds1));
+
+	sigemptyset(&mask);
+	sigaddset(&mask, SIGUSR2);
+	sigaddset(&mask, SIGCHLD);
+	memcpy(sigmask, &mask, sigset_size);
+
+	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 1");
+	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=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
+	       pipe_fd[2], pipe_fd[3],
+#endif
+	       (unsigned) ARRAY_SIZE(fds1), USR2_CHLD_str,
+	       (unsigned) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
+	       pipe_fd[3], (unsigned ) ts->tv_sec, (unsigned) ts->tv_nsec);
+
+	ts->tv_sec = 0;
+	ts->tv_nsec = 999;
+	const struct pollfd fds2[] = {
+		{ .fd = pipe_fd[1], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = pipe_fd[0], .events = POLLOUT | POLLWRNORM | POLLWRBAND }
+	};
+	fds = efault - sizeof(fds2);
+	memcpy(fds, fds2, sizeof(fds2));
+
+	memset(&mask, -1, sizeof(mask));
+	sigdelset(&mask, SIGHUP);
+	sigdelset(&mask, SIGKILL);
+	sigdelset(&mask, SIGSTOP);
+	memcpy(sigmask, &mask, sigset_size);
+
+	rc = sys_ppoll((unsigned long) fds,
+		       F8ILL_KULONG_MASK | ARRAY_SIZE(fds2), (unsigned long) ts,
+		       (unsigned long) sigmask, sigset_size);
+	if (rc != 0)
+		perror_msg_and_fail("ppoll 2");
+	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);
+
+	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);
+		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);
+	}
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ppoll")
+
+#endif
diff --git a/tests-m32/ppoll.expected b/tests-m32/ppoll.expected
deleted file mode 100644
index c38a206..0000000
--- a/tests-m32/ppoll.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \.\.\.\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
-ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests-m32/ppoll.gen.test b/tests-m32/ppoll.gen.test
new file mode 100755
index 0000000..4c07598
--- /dev/null
+++ b/tests-m32/ppoll.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2
diff --git a/tests-m32/ppoll.test b/tests-m32/ppoll.test
deleted file mode 100755
index 98389ee..0000000
--- a/tests-m32/ppoll.test
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# Check ppoll syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -a30 -s2 -e ppoll $args
-match_grep
-run_strace -a30 -v -s2 -e ppoll $args
-match_grep "$LOG" "$srcdir/$NAME-v.expected"
-
-exit 0
diff --git a/tests-m32/prctl-arg2-intptr.c b/tests-m32/prctl-arg2-intptr.c
index ee000eb..9cc3308 100644
--- a/tests-m32/prctl-arg2-intptr.c
+++ b/tests-m32/prctl-arg2-intptr.c
@@ -4,6 +4,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * 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
@@ -70,7 +71,7 @@
 		{ 11, "PR_GET_FPEXC" },
 	};
 
-	unsigned int *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
 	long rc;
 	unsigned int i;
 
diff --git a/tests-m32/prctl-arg2-intptr.test b/tests-m32/prctl-arg2-intptr.test
index bcef806..4f9e3a1 100755
--- a/tests-m32/prctl-arg2-intptr.test
+++ b/tests-m32/prctl-arg2-intptr.test
@@ -10,5 +10,3 @@
 LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^CEF]|.[^HNP]|..[^DEI])' \
 	< "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-dumpable.test b/tests-m32/prctl-dumpable.test
index 08acb8b..05f1310 100755
--- a/tests-m32/prctl-dumpable.test
+++ b/tests-m32/prctl-dumpable.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^D][^U]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-name.test b/tests-m32/prctl-name.test
index 071179c..95d34b6 100755
--- a/tests-m32/prctl-name.test
+++ b/tests-m32/prctl-name.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_GET_[^N][^A]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-no-args.c b/tests-m32/prctl-no-args.c
index 57e1b73..496cd1a 100644
--- a/tests-m32/prctl-no-args.c
+++ b/tests-m32/prctl-no-args.c
@@ -4,6 +4,7 @@
  * PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,7 +58,7 @@
 		{ 32, "PR_TASK_PERF_EVENTS_ENABLE" },
 	};
 
-	unsigned int *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(options); i++) {
diff --git a/tests-m32/prctl-no-args.test b/tests-m32/prctl-no-args.test
index ce8ca67..8ff300b 100755
--- a/tests-m32/prctl-no-args.test
+++ b/tests-m32/prctl-no-args.test
@@ -10,5 +10,3 @@
 run_strace -a21 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^KST][^EI][^CEM]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-pdeathsig.c b/tests-m32/prctl-pdeathsig.c
index c176030..ef56374 100644
--- a/tests-m32/prctl-pdeathsig.c
+++ b/tests-m32/prctl-pdeathsig.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 	static const kernel_ulong_t bogus_signal =
 		(kernel_ulong_t) 0xbadc0deddeadfeedULL;
 
-	int *pdeathsig = tail_alloc(sizeof(*pdeathsig));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, pdeathsig);
 	long rc;
 
 	rc = syscall(__NR_prctl, PR_SET_PDEATHSIG, bogus_signal);
diff --git a/tests-m32/prctl-pdeathsig.test b/tests-m32/prctl-pdeathsig.test
index 2777503..b6e0140 100755
--- a/tests-m32/prctl-pdeathsig.test
+++ b/tests-m32/prctl-pdeathsig.test
@@ -9,5 +9,3 @@
 run_strace -a30 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^P][^D]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-seccomp-filter-v.test b/tests-m32/prctl-seccomp-filter-v.test
index 44e4a78..3663ad8 100755
--- a/tests-m32/prctl-seccomp-filter-v.test
+++ b/tests-m32/prctl-seccomp-filter-v.test
@@ -9,5 +9,3 @@
 run_strace -v -eprctl $args > "$EXP"
 grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-seccomp-strict.test b/tests-m32/prctl-seccomp-strict.test
index 1f987df..bee85b8 100755
--- a/tests-m32/prctl-seccomp-strict.test
+++ b/tests-m32/prctl-seccomp-strict.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 check_prog grep
-set -- "./$NAME"
+set -- "../$NAME"
 "$@" > /dev/null || {
 	case $? in
 		77) skip_ "$* exited with code 77" ;;
@@ -16,4 +16,3 @@
 run_strace -eprctl "$@" > "$EXP"
 grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-securebits.test b/tests-m32/prctl-securebits.test
index c91e62a..32b0f2a 100755
--- a/tests-m32/prctl-securebits.test
+++ b/tests-m32/prctl-securebits.test
@@ -8,5 +8,3 @@
 run_strace -a25 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^S][^E][^C][^U]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-tid_address.c b/tests-m32/prctl-tid_address.c
index 24e4503..609e549 100644
--- a/tests-m32/prctl-tid_address.c
+++ b/tests-m32/prctl-tid_address.c
@@ -2,6 +2,7 @@
  * Check decoding of prctl PR_GET_TID_ADDRESS operation.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -59,7 +60,7 @@
 		(kernel_ulong_t) 0xfffffffffffffffdULL;
 
 	/* Note that kernel puts kernel-sized pointer even on x32 */
-	kernel_ulong_t *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(kernel_ulong_t, ptr);
 	long rc;
 	long set_ok;
 
diff --git a/tests-m32/prctl-tid_address.test b/tests-m32/prctl-tid_address.test
index dc7b7c3..62a39e5 100755
--- a/tests-m32/prctl-tid_address.test
+++ b/tests-m32/prctl-tid_address.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^T]|.[^I]|..[^D])' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/prctl-tsc.c b/tests-m32/prctl-tsc.c
index fd9362d..0ddb380 100644
--- a/tests-m32/prctl-tsc.c
+++ b/tests-m32/prctl-tsc.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,7 +44,7 @@
 	static const kernel_ulong_t bogus_tsc =
 		(kernel_ulong_t) 0xdeadc0defacebeefULL;
 
-	int *tsc = tail_alloc(sizeof(*tsc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, tsc);
 	long rc;
 
 	rc = syscall(__NR_prctl, PR_SET_TSC, 0);
diff --git a/tests-m32/prctl-tsc.test b/tests-m32/prctl-tsc.test
index a906ba8..439d9d5 100755
--- a/tests-m32/prctl-tsc.test
+++ b/tests-m32/prctl-tsc.test
@@ -9,5 +9,3 @@
 run_strace -a24 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^T][^S]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-m32/pread64-pwrite64.c b/tests-m32/pread64-pwrite64.c
index 4a0932a..e9d7a64 100644
--- a/tests-m32/pread64-pwrite64.c
+++ b/tests-m32/pread64-pwrite64.c
@@ -2,6 +2,7 @@
  * Check decoding of pread64 and pwrite64 syscalls.
  *
  * 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
@@ -123,7 +124,9 @@
 {
 	tprintf("%s", "");
 
-	static char tmp[] = "pread64-pwrite64-tmpfile";
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const char tmp[] = "pread64-pwrite64-tmpfile";
 	if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
 		perror_msg_and_fail("creat: %s", tmp);
 	if (open(tmp, O_WRONLY) != 1)
diff --git a/tests-m32/pread64-pwrite64.gen.test b/tests-m32/pread64-pwrite64.gen.test
new file mode 100755
index 0000000..b53e069
--- /dev/null
+++ b/tests-m32/pread64-pwrite64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pread64-pwrite64 -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests-m32/pread64-pwrite64.test b/tests-m32/pread64-pwrite64.test
deleted file mode 100755
index e585406..0000000
--- a/tests-m32/pread64-pwrite64.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of pread64 and pwrite64 syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=pread64-pwrite64-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
-	-a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 \
-	-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests-m32/preadv-pwritev.gen.test b/tests-m32/preadv-pwritev.gen.test
new file mode 100755
index 0000000..5ed8297
--- /dev/null
+++ b/tests-m32/preadv-pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv-pwritev -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests-m32/preadv-pwritev.test b/tests-m32/preadv-pwritev.test
deleted file mode 100755
index cb2a077..0000000
--- a/tests-m32/preadv-pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv and pwritev syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests-m32/preadv.c b/tests-m32/preadv.c
index fb5d3ad..a55909b 100644
--- a/tests-m32/preadv.c
+++ b/tests-m32/preadv.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
@@ -66,7 +67,7 @@
 {
 	const off_t offset = 0xdefaceddeadbeefLL;
 	char *buf = tail_alloc(LEN);
-	struct iovec *iov = tail_alloc(sizeof(*iov));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = buf;
 	iov->iov_len = LEN;
 
diff --git a/tests-m32/preadv.gen.test b/tests-m32/preadv.gen.test
new file mode 100755
index 0000000..8fb7b54
--- /dev/null
+++ b/tests-m32/preadv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-m32/preadv.test b/tests-m32/preadv.test
deleted file mode 100755
index d1abdb7..0000000
--- a/tests-m32/preadv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check preadv syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-m32/preadv2-pwritev2.c b/tests-m32/preadv2-pwritev2.c
index f7c46c0..e31e046 100644
--- a/tests-m32/preadv2-pwritev2.c
+++ b/tests-m32/preadv2-pwritev2.c
@@ -2,6 +2,7 @@
  * Check decoding of preadv2 and pwritev2 syscalls.
  *
  * 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
@@ -181,26 +182,45 @@
 main(void)
 {
 	const kernel_ulong_t vlen = (kernel_ulong_t) 0xfac1fed2dad3bef4ULL;
-	const unsigned long long pos = 0xfac5fed6dad7bef8;
+	const unsigned long long pos = 0x7ac5fed6dad7bef8;
 	const kernel_ulong_t pos_l = (kernel_ulong_t) pos;
-	const kernel_ulong_t pos_h =
-		(sizeof(kernel_ulong_t) == sizeof(long long)) ?
-		(kernel_ulong_t) 0xbadc0deddeadbeefULL : 0xfac5fed6UL;
-	int test_dumpio = 1;
+	long rc;
+	int test_dumpio;
 
 	tprintf("%s", "");
 
-	syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
-	if (ENOSYS == errno)
-		test_dumpio = 0;
-	tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
-		(unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+	/*
+	 * x32 is the only architecture where preadv2 takes 5 arguments,
+	 * see preadv64v2 in kernel sources.
+	 */
+	rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, 1);
+#else
+	const kernel_ulong_t pos_h =
+		(sizeof(pos_l) == sizeof(pos)) ?
+		(kernel_ulong_t) 0xbadc0deddeadbeefULL :
+		(kernel_ulong_t) (pos >> 32);
+	rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+	if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+		perror_msg_and_fail("preadv2");
+	test_dumpio = EBADF == errno;
+	tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+		(unsigned long) vlen, pos, sprintrc(rc));
 
-	syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
-	if (ENOSYS == errno)
-		test_dumpio = 0;
-	tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
-		(unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+	/*
+	 * x32 is the only architecture where pwritev2 takes 5 arguments,
+	 * see pwritev64v2 in kernel sources.
+	 */
+	rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, 1);
+#else
+	rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+	if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+		perror_msg_and_fail("pwritev2");
+	tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+		(unsigned long) vlen, pos, sprintrc(rc));
 
 	if (test_dumpio)
 		dumpio();
diff --git a/tests-m32/preadv2-pwritev2.gen.test b/tests-m32/preadv2-pwritev2.gen.test
new file mode 100755
index 0000000..2f89b41
--- /dev/null
+++ b/tests-m32/preadv2-pwritev2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv2-pwritev2 -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests-m32/preadv2-pwritev2.test b/tests-m32/preadv2-pwritev2.test
deleted file mode 100755
index 5641ef4..0000000
--- a/tests-m32/preadv2-pwritev2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv2 and pwritev2 syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests-m32/print_time.c b/tests-m32/print_time.c
new file mode 100644
index 0000000..4292329
--- /dev/null
+++ b/tests-m32/print_time.c
@@ -0,0 +1,75 @@
+/*
+ * Print time_t and nanoseconds in symbolic format.
+ *
+ * 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 <stdio.h>
+#include <time.h>
+
+static void
+print_time_t_ex(const time_t t, const unsigned long long part_sec,
+		const unsigned int max_part_sec, const int width,
+		const int comment)
+{
+
+	if ((!t && !part_sec) || part_sec > max_part_sec)
+		return;
+
+	const struct tm *const p = localtime(&t);
+	char buf[256];
+	if (!p || !strftime(buf, sizeof(buf), "%FT%T", p))
+		return;
+
+	if (comment)
+		fputs(" /* ", stdout);
+
+	fputs(buf, stdout);
+
+	if (part_sec)
+		printf(".%0*llu", width, part_sec);
+
+	if (strftime(buf, sizeof(buf), "%z", p))
+		fputs(buf, stdout);
+
+	if (comment)
+		fputs(" */", stdout);
+
+	return;
+}
+
+void
+print_time_t_nsec(const time_t t, const unsigned long long nsec, int comment)
+{
+	print_time_t_ex(t, nsec, 999999999, 9, comment);
+}
+
+void
+print_time_t_usec(const time_t t, const unsigned long long usec, int comment)
+{
+	print_time_t_ex(t, usec, 999999, 6, comment);
+}
diff --git a/tests-m32/printstr.gen.test b/tests-m32/printstr.gen.test
new file mode 100755
index 0000000..c3bd93a
--- /dev/null
+++ b/tests-m32/printstr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (printstr -e trace=writev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=writev
diff --git a/tests-m32/printstr.test b/tests-m32/printstr.test
deleted file mode 100755
index 5f164eb..0000000
--- a/tests-m32/printstr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of non-NUL-terminated strings when len == -1.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -e trace=writev
diff --git a/tests-m32/prlimit64.gen.test b/tests-m32/prlimit64.gen.test
new file mode 100755
index 0000000..11964a5
--- /dev/null
+++ b/tests-m32/prlimit64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/prlimit64.test b/tests-m32/prlimit64.test
deleted file mode 100755
index 2d2240d..0000000
--- a/tests-m32/prlimit64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of prlimit64 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/process_vm_readv.gen.test b/tests-m32/process_vm_readv.gen.test
new file mode 100755
index 0000000..3142588
--- /dev/null
+++ b/tests-m32/process_vm_readv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_readv -s5 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a37
diff --git a/tests-m32/process_vm_readv.test b/tests-m32/process_vm_readv.test
deleted file mode 100755
index c092f5a..0000000
--- a/tests-m32/process_vm_readv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of process_vm_readv syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s5 -a37
diff --git a/tests-m32/process_vm_writev.gen.test b/tests-m32/process_vm_writev.gen.test
new file mode 100755
index 0000000..0b912c0
--- /dev/null
+++ b/tests-m32/process_vm_writev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_writev -s5 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a38
diff --git a/tests-m32/process_vm_writev.test b/tests-m32/process_vm_writev.test
deleted file mode 100755
index f690e6a..0000000
--- a/tests-m32/process_vm_writev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of process_vm_writev syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s5 -a38
diff --git a/tests-m32/pselect6.c b/tests-m32/pselect6.c
index f264485..f5939f3 100644
--- a/tests-m32/pselect6.c
+++ b/tests-m32/pselect6.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -95,13 +96,13 @@
 	FD_SET(fds[0], set[1]);
 	FD_SET(fds[1], set[1]);
 	assert(syscall(__NR_pselect6, fds[1] + 1, NULL, set[1], NULL, &tm.ts, NULL) == 3);
-	printf("pselect6(%d, NULL, [1 2 %d %d], NULL, "
-	       "{tv_sec=%lld, tv_nsec=%lld}, NULL) = 3 (out [1 2 %d], left "
-	       "{tv_sec=%lld, tv_nsec=%lld})\n",
-	       fds[1] + 1, fds[0], fds[1],
-	       (long long) tm_in.ts.tv_sec, (long long) tm_in.ts.tv_nsec,
-	       fds[1],
-	       (long long) tm.ts.tv_sec, (long long) tm.ts.tv_nsec);
+	printf("pselect6(%d, NULL, [1 2 %d %d], NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 3 (out [1 2 %d]"
+	       ", left {tv_sec=%lld, tv_nsec=%llu})\n",
+	       fds[1] + 1, fds[0], fds[1], (long long) tm_in.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm_in.ts.tv_nsec),
+	       fds[1], (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec));
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
@@ -122,21 +123,40 @@
 	tm.ts.tv_sec = 0;
 	tm.ts.tv_nsec = 123;
 	assert(pselect(FD_SETSIZE + 1, set[0], set[1], NULL, &tm.ts, &mask) == 0);
-	printf("pselect6(%d, [%d], [], NULL, {tv_sec=0, tv_nsec=123}, "
-	       "{[HUP CHLD], %u}) = 0 (Timeout)\n",
+	printf("pselect6(%d, [%d], [], NULL, {tv_sec=0, tv_nsec=123}"
+	       ", {[HUP CHLD], %u}) = 0 (Timeout)\n",
 	       FD_SETSIZE + 1, fds[0], NSIG_BYTES);
 
 	/*
 	 * See how timeouts are decoded.
 	 */
+	tm.ts.tv_sec = 0xdeadbeefU;
+	tm.ts.tv_nsec = 0xfacefeedU;
+	assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+	printf("pselect6(0, NULL, NULL, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+	       (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec),
+	       NSIG_BYTES, sprintrc(-1));
+
+	tm.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tm.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+	printf("pselect6(0, NULL, NULL, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+	       (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec),
+	       NSIG_BYTES, sprintrc(-1));
+
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(setitimer(ITIMER_REAL, &itv, NULL) == 0);
 
+	tm.ts.tv_sec = 0;
 	tm.ts.tv_nsec = 222222222;
 	assert(pselect(0, NULL, NULL, NULL, &tm.ts, &mask) == -1);
-	printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}, "
-	       "{[HUP CHLD], %u}) = "
-	       "? ERESTARTNOHAND (To be restarted if no handler)\n",
+	printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}"
+	       ", {[HUP CHLD], %u})"
+	       " = ? ERESTARTNOHAND (To be restarted if no handler)\n",
 	       NSIG_BYTES);
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
diff --git a/tests-m32/pselect6.gen.test b/tests-m32/pselect6.gen.test
new file mode 100755
index 0000000..c89e705
--- /dev/null
+++ b/tests-m32/pselect6.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/pselect6.test b/tests-m32/pselect6.test
deleted file mode 100755
index 203f8e2..0000000
--- a/tests-m32/pselect6.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pselect6 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/ptrace.c b/tests-m32/ptrace.c
index 80ce8cb..9e0ffdc 100644
--- a/tests-m32/ptrace.c
+++ b/tests-m32/ptrace.c
@@ -2,6 +2,7 @@
  * Check decoding of ptrace syscall.
  *
  * 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
@@ -30,16 +31,14 @@
 #include "tests.h"
 #include <asm/unistd.h>
 
-#ifdef __NR_rt_sigprocmask
-
-# include <errno.h>
-# include <signal.h>
-# include <stdio.h>
-# include <string.h>
-# include <sys/wait.h>
-# include <unistd.h>
-# include "ptrace.h"
-# include <linux/audit.h>
+#include <errno.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;
 
@@ -178,46 +177,38 @@
 	const unsigned long pid =
 		(unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
 
-	unsigned int sigset_size;
-
-	for (sigset_size = 1024 / 8; sigset_size; sigset_size >>= 1) {
-		if (!syscall(__NR_rt_sigprocmask,
-			     SIG_SETMASK, NULL, NULL, sigset_size))
-			break;
-	}
-	if (!sigset_size)
-		perror_msg_and_fail("rt_sigprocmask");
+	const unsigned int sigset_size = get_sigset_size();
 
 	void *const k_set = tail_alloc(sigset_size);
-	siginfo_t *const sip = tail_alloc(sizeof(*sip));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sip);
 
 	do_ptrace(bad_request, pid, 0, 0);
 	printf("ptrace(%#lx /* PTRACE_??? */, %u, NULL, NULL) = %s\n",
 	       bad_request, (unsigned) pid, errstr);
 
 	do_ptrace(PTRACE_PEEKDATA, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
 	do_ptrace(PTRACE_PEEKTEXT, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
 	do_ptrace(PTRACE_PEEKUSER, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
@@ -446,10 +437,3 @@
 	puts("+++ exited with 0 +++");
 	return 0;
 }
-
-
-#else
-
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask")
-
-#endif
diff --git a/tests-m32/ptrace.gen.test b/tests-m32/ptrace.gen.test
new file mode 100755
index 0000000..4b93250
--- /dev/null
+++ b/tests-m32/ptrace.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ptrace -a23 -e signal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e signal=none
diff --git a/tests-m32/ptrace.test b/tests-m32/ptrace.test
deleted file mode 100755
index 5add9be..0000000
--- a/tests-m32/ptrace.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ptrace syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e signal=none
diff --git a/tests-m32/pure_executables.list b/tests-m32/pure_executables.list
new file mode 100755
index 0000000..cc65614
--- /dev/null
+++ b/tests-m32/pure_executables.list
@@ -0,0 +1,330 @@
+# executables without side effects
+_newselect
+accept
+accept4
+access
+acct
+add_key
+adjtimex
+aio
+alarm
+bpf
+brk
+btrfs
+caps
+chmod
+chown
+chown32
+chroot
+clock_adjtime
+clock_nanosleep
+clock_xettime
+copy_file_range
+creat
+delete_module
+dup
+dup2
+dup3
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erestartsys
+eventfd
+execve
+execveat
+faccessat
+fadvise64
+fadvise64_64
+fallocate
+fanotify_init
+fanotify_mark
+fchdir
+fchmod
+fchmodat
+fchown
+fchown32
+fchownat
+fcntl
+fcntl64
+fdatasync
+file_handle
+file_ioctl
+finit_module
+flock
+fstat
+fstat64
+fstatat64
+fstatfs
+fstatfs64
+fsync
+ftruncate
+ftruncate64
+futex
+futimesat
+get_mempolicy
+getcpu
+getcwd
+getdents
+getdents64
+getegid
+getegid32
+geteuid
+geteuid32
+getgid
+getgid32
+getgroups
+getgroups32
+getpeername
+getpgrp
+getpid
+getppid
+getrandom
+getresgid
+getresgid32
+getresuid
+getresuid32
+getrlimit
+getrusage
+getsid
+getsockname
+getuid
+getuid32
+getxxid
+inet-cmsg
+init_module
+inotify
+inotify_init1
+ioctl
+ioctl_block
+ioctl_dm
+ioctl_evdev
+ioctl_loop
+ioctl_mtd
+ioctl_rtc
+ioctl_scsi
+ioctl_sg_io_v3
+ioctl_sg_io_v4
+ioctl_sock_gifconf
+ioctl_uffdio
+ioctl_v4l2
+ioperm
+iopl
+ioprio
+ip_mreq
+ipc
+ipc_msg
+ipc_msgbuf
+ipc_sem
+ipc_shm
+kcmp
+kexec_file_load
+kexec_load
+keyctl
+kill
+lchown
+lchown32
+link
+linkat
+llseek
+lookup_dcookie
+lseek
+lstat
+lstat64
+madvise
+mbind
+membarrier
+memfd_create
+migrate_pages
+mincore
+mkdir
+mkdirat
+mknod
+mknodat
+mlock
+mlock2
+mlockall
+mmap
+mmap64
+mmsg
+mmsg_name
+mount
+move_pages
+mq
+mq_sendrecv
+mq_sendrecv-read
+mq_sendrecv-write
+msg_control
+msg_name
+munlockall
+nanosleep
+net-icmp_filter
+net-sockaddr
+net-y-unix
+net-yy-inet
+net-yy-netlink
+net-yy-unix
+netlink_protocol
+newfstatat
+old_mmap
+oldfstat
+oldlstat
+oldselect
+oldstat
+open
+openat
+osf_utimes
+pause
+perf_event_open
+personality
+pipe
+pipe2
+pkey_alloc
+pkey_free
+pkey_mprotect
+poll
+ppoll
+prctl-arg2-intptr
+prctl-dumpable
+prctl-name
+prctl-no-args
+prctl-pdeathsig
+prctl-securebits
+prctl-tid_address
+prctl-tsc
+pread64-pwrite64
+preadv
+preadv-pwritev
+preadv2-pwritev2
+printstr
+prlimit64
+process_vm_readv
+process_vm_writev
+pselect6
+ptrace
+pwritev
+quotactl
+quotactl-xfs
+read-write
+readahead
+readdir
+readlink
+readlinkat
+readv
+reboot
+recvfrom
+recvmmsg-timeout
+recvmsg
+remap_file_pages
+rename
+renameat
+renameat2
+request_key
+rmdir
+rt_sigpending
+rt_sigprocmask
+rt_sigqueueinfo
+rt_sigreturn
+rt_sigsuspend
+rt_sigtimedwait
+rt_tgsigqueueinfo
+sched_get_priority_mxx
+sched_rr_get_interval
+sched_xetaffinity
+sched_xetattr
+sched_xetparam
+sched_xetscheduler
+sched_yield
+seccomp-filter
+select
+semop
+sendfile
+sendfile64
+set_mempolicy
+setdomainname
+setfsgid
+setfsgid32
+setfsuid
+setfsuid32
+setgid
+setgid32
+setgroups
+setgroups32
+sethostname
+setns
+setregid
+setregid32
+setresgid
+setresgid32
+setresuid
+setresuid32
+setreuid
+setreuid32
+setrlimit
+setuid
+setuid32
+shmxt
+shutdown
+sigaction
+sigaltstack
+siginfo
+signalfd4
+sigreturn
+sigsuspend
+socketcall
+splice
+stat
+stat64
+statfs
+statfs64
+statx
+swap
+sxetmask
+symlink
+symlinkat
+sync
+sync_file_range
+sync_file_range2
+sysinfo
+syslog
+tee
+time
+timer_create
+timer_xettime
+timerfd_xettime
+times
+times-fail
+truncate
+truncate64
+ugetrlimit
+uio
+umask
+umount
+umount2
+umoven-illptr
+umovestr
+umovestr-illptr
+umovestr2
+umovestr3
+uname
+unlink
+unlinkat
+unshare
+userfaultfd
+ustat
+utime
+utimensat
+utimes
+vhangup
+vmsplice
+wait4
+waitid
+waitpid
+xattr
+xattr-strings
+xet_robust_list
+xetitimer
+xetpgid
+xetpriority
+xettimeofday
diff --git a/tests-m32/pwritev.gen.test b/tests-m32/pwritev.gen.test
new file mode 100755
index 0000000..e54fd15
--- /dev/null
+++ b/tests-m32/pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pwritev -a22 -s7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s7
diff --git a/tests-m32/pwritev.test b/tests-m32/pwritev.test
deleted file mode 100755
index 0aed683..0000000
--- a/tests-m32/pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pwritev syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -s7
diff --git a/tests-m32/qual_fault-exit_group.test b/tests-m32/qual_fault-exit_group.test
index c98ffc6..34a2da5 100755
--- a/tests-m32/qual_fault-exit_group.test
+++ b/tests-m32/qual_fault-exit_group.test
@@ -3,6 +3,7 @@
 # Check decoding of fault injected exit_group syscall.
 #
 # 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
@@ -41,13 +42,13 @@
 	match_diff
 }
 
-test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ./answer
+test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ../answer
 
 test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
-	  -efault=\!process:error=1 ./answer
+	  -efault=\!process:error=1 ../answer
 
 test_with -eexit,exit_group -efault=all:error=ENOSYS \
-	  -efault=exit:error=1:when=2+ ./answer
+	  -efault=exit:error=1:when=2+ ../answer
 
 test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
-	  -efault=\!desc,file,memory,process,signal,network,ipc:error=1 ./answer
+	  -efault=\!%desc,%file,%memory,%process,%signal,%network,%ipc:error=1 ../answer
diff --git a/tests-m32/qual_fault-syntax.test b/tests-m32/qual_fault-syntax.test
index 85093fc..0cce539 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-2017 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/qual_fault.c b/tests-m32/qual_fault.c
index d26dc7c..ab692cb 100644
--- a/tests-m32/qual_fault.c
+++ b/tests-m32/qual_fault.c
@@ -2,6 +2,7 @@
  * Check that fault injection works properly.
  *
  * 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
diff --git a/tests-m32/qual_fault.test b/tests-m32/qual_fault.test
index e194a78..f8e57d2 100755
--- a/tests-m32/qual_fault.test
+++ b/tests-m32/qual_fault.test
@@ -3,6 +3,7 @@
 # Check that fault injection works properly.
 #
 # 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
@@ -76,12 +77,11 @@
 
 	run_strace -a11 -e trace=$trace \
 		"$@" -e fault=$fault$when$error $extra \
-		./$NAME $raw "$err" "$first" "$step" $N \
+		../$NAME $raw "$err" "$first" "$step" $N \
 		> "$EXP" 4> "$outexp" 5> "$outgot"
 
 	match_diff "$EXP" "$LOG"
 	match_diff "$outexp" "$outgot"
-	rm -f "$EXP" "$outexp" "$outgot"
 }
 
 for err in '' ENOSYS 22 einval; do
diff --git a/tests-m32/qual_inject-error-signal.test b/tests-m32/qual_inject-error-signal.test
index fcbcc39..1fe4612 100755
--- a/tests-m32/qual_inject-error-signal.test
+++ b/tests-m32/qual_inject-error-signal.test
@@ -4,5 +4,5 @@
 . "${srcdir=.}/scno_tampering.sh"
 
 run_strace -a12 -echdir,exit_group -einject=chdir:error=ENOENT:signal=USR1 \
-	"./$NAME"
+	"../$NAME"
 match_diff
diff --git a/tests-m32/qual_inject-retval.test b/tests-m32/qual_inject-retval.test
index 419030a..5a4efd1 100755
--- a/tests-m32/qual_inject-retval.test
+++ b/tests-m32/qual_inject-retval.test
@@ -12,9 +12,8 @@
 	rval="$1"; shift
 
 	run_strace -a12 -e$syscall -einject="$syscall:retval=$rval" "$@" \
-		./qual_inject-retval "$rval" > "$EXP"
+		../qual_inject-retval "$rval" > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 check_injection 0
diff --git a/tests-m32/qual_inject-signal.test b/tests-m32/qual_inject-signal.test
index 88002ce..f17e5a0 100755
--- a/tests-m32/qual_inject-signal.test
+++ b/tests-m32/qual_inject-signal.test
@@ -4,5 +4,5 @@
 . "${srcdir=.}/init.sh"
 
 run_strace -a12 -echdir,exit_group -einject=chdir:signal=USR1 \
-	./$NAME
+	../$NAME
 match_diff
diff --git a/tests-m32/qual_signal.test b/tests-m32/qual_signal.test
index 54a37a3..52812b7 100755
--- a/tests-m32/qual_signal.test
+++ b/tests-m32/qual_signal.test
@@ -3,6 +3,7 @@
 # Check how strace -e signal=set works.
 #
 # 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
@@ -34,10 +35,9 @@
 	local sigs
 	sigs="$1"; shift
 
-	run_prog "./$NAME" "$@" > /dev/null
-	run_strace -e trace=none -e signal="$sigs" "./$NAME" "$@" > "$EXP"
+	run_prog "../$NAME" "$@" > /dev/null
+	run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 test_sigs()
diff --git a/tests-m32/qual_syscall.test b/tests-m32/qual_syscall.test
index f7eb06d..1524405 100755
--- a/tests-m32/qual_syscall.test
+++ b/tests-m32/qual_syscall.test
@@ -5,17 +5,17 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./umovestr
-pattern_abbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[/\* [[:digit:]]* vars \*/\]) = 0'
-pattern_nonabbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
-pattern_nonverbose='execve("\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
+run_prog ../umovestr
+pattern_abbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/) = 0'
+pattern_nonabbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
+pattern_nonverbose='execve("\.\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
 pattern_raw='execve(0x[[:xdigit:]]*, 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
 
 check_output_mismatch()
 {
 	local pattern
 	pattern="$1"; shift
-	run_strace "$@" ./umovestr
+	run_strace "$@" ../umovestr
 	LC_ALL=C grep -x "$pattern" "$LOG" > /dev/null || {
 		printf '%s\n%s\n' \
 			'Failed patterns of expected output:' "$pattern"
@@ -28,15 +28,19 @@
 LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-check_output_mismatch "$pattern_abbrev_verbose" -e trace=process
+check_output_mismatch "$pattern_abbrev_verbose" -e trace=%process
 LC_ALL=C grep '^chdir' "$LOG" > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-run_strace -e 42 ./umovestr
+run_strace -e 42 ../umovestr
 LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-for a in execve \!chdir all \!none \
+run_strace -e/ -e42 ../umovestr
+LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
+	dump_log_and_fail_with "$STRACE $args unexpected output"
+
+for a in execve \!chdir /. all \!none \
 	 file process \!desc \!ipc \!memory \!network \!signal; do
 	check_output_mismatch \
 		"$pattern_abbrev_verbose" -e abbrev="$a" -e execve
diff --git a/tests-m32/quotactl-v.gen.test b/tests-m32/quotactl-v.gen.test
new file mode 100755
index 0000000..8659ed2
--- /dev/null
+++ b/tests-m32/quotactl-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-m32/quotactl-v.test b/tests-m32/quotactl-v.test
deleted file mode 100755
index 6adaf82..0000000
--- a/tests-m32/quotactl-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-m32/quotactl-xfs-v.gen.test b/tests-m32/quotactl-xfs-v.gen.test
new file mode 100755
index 0000000..f1f7e0a
--- /dev/null
+++ b/tests-m32/quotactl-xfs-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-m32/quotactl-xfs-v.test b/tests-m32/quotactl-xfs-v.test
deleted file mode 100755
index d5ffc7d..0000000
--- a/tests-m32/quotactl-xfs-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-m32/quotactl-xfs.c b/tests-m32/quotactl-xfs.c
index e420d1c..b2a884b 100644
--- a/tests-m32/quotactl-xfs.c
+++ b/tests-m32/quotactl-xfs.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-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -207,10 +208,10 @@
 	char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
 
 	long rc;
-	struct fs_disk_quota *xdq = tail_alloc(sizeof(*xdq));
-	struct fs_quota_stat *xqstat = tail_alloc(sizeof(*xqstat));
-	struct fs_quota_statv *xqstatv = tail_alloc(sizeof(*xqstatv));
-	uint32_t *flags = tail_alloc(sizeof(*flags));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_disk_quota, xdq);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_stat, xqstat);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_statv, xqstatv);
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, flags);
 	char *unterminated = tail_memdup(unterminated_data,
 		sizeof(unterminated_data));
 
diff --git a/tests-m32/quotactl-xfs.gen.test b/tests-m32/quotactl-xfs.gen.test
new file mode 100755
index 0000000..cd7d11c
--- /dev/null
+++ b/tests-m32/quotactl-xfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=quotactl
diff --git a/tests-m32/quotactl-xfs.test b/tests-m32/quotactl-xfs.test
deleted file mode 100755
index 404a737..0000000
--- a/tests-m32/quotactl-xfs.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=quotactl
diff --git a/tests-m32/quotactl.c b/tests-m32/quotactl.c
index 3a7c113..88c3fda 100644
--- a/tests-m32/quotactl.c
+++ b/tests-m32/quotactl.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-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -173,10 +174,10 @@
 	long rc;
 	char *unterminated = tail_memdup(unterminated_data,
 					 sizeof(unterminated_data));
-	struct if_dqblk *dqblk = tail_alloc(sizeof(*dqblk));
-	struct if_dqinfo *dqinfo = tail_alloc(sizeof(*dqinfo));
-	uint32_t *fmt = tail_alloc(sizeof(*fmt));
-	struct if_nextdqblk *nextdqblk = tail_alloc(sizeof(*nextdqblk));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqblk, dqblk);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqinfo, dqinfo);
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, fmt);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_nextdqblk, nextdqblk);
 
 
 	snprintf(bogus_special_str, sizeof(bogus_special_str), "%p",
diff --git a/tests-m32/quotactl.gen.test b/tests-m32/quotactl.gen.test
new file mode 100755
index 0000000..c6ad6e1
--- /dev/null
+++ b/tests-m32/quotactl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/quotactl.test b/tests-m32/quotactl.test
deleted file mode 100755
index d0101f4..0000000
--- a/tests-m32/quotactl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/read-write.c b/tests-m32/read-write.c
index 262e07b..ed4c64d 100644
--- a/tests-m32/read-write.c
+++ b/tests-m32/read-write.c
@@ -2,6 +2,7 @@
  * Check decoding and dumping of read and write syscalls.
  *
  * 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
@@ -137,7 +138,9 @@
 {
 	tprintf("%s", "");
 
-	static char tmp[] = "read-write-tmpfile";
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const char tmp[] = "read-write-tmpfile";
 	if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
 		perror_msg_and_fail("creat: %s", tmp);
 	if (open(tmp, O_WRONLY) != 1)
diff --git a/tests-m32/read-write.gen.test b/tests-m32/read-write.gen.test
new file mode 100755
index 0000000..df1b3fb
--- /dev/null
+++ b/tests-m32/read-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (read-write -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests-m32/read-write.test b/tests-m32/read-write.test
deleted file mode 100755
index 3700541..0000000
--- a/tests-m32/read-write.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of read and write syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=read-write-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
-	-a15 -eread=0 -ewrite=1 -e trace=read,write \
-	-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests-m32/readahead.c b/tests-m32/readahead.c
index c11b577..c243ae4 100644
--- a/tests-m32/readahead.c
+++ b/tests-m32/readahead.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/readahead.gen.test b/tests-m32/readahead.gen.test
new file mode 100755
index 0000000..4e88efa
--- /dev/null
+++ b/tests-m32/readahead.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1
diff --git a/tests-m32/readahead.test b/tests-m32/readahead.test
deleted file mode 100755
index 397c690..0000000
--- a/tests-m32/readahead.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readahead syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
diff --git a/tests-m32/readdir.c b/tests-m32/readdir.c
index 8c48362..a47856f 100644
--- a/tests-m32/readdir.c
+++ b/tests-m32/readdir.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -58,9 +59,9 @@
 	"A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "readdir.test.tmp.dir";
 	struct {
 		unsigned long   d_ino;
 		unsigned long   d_off;
@@ -69,8 +70,6 @@
 	} e;
 	int rc;
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests-m32/readdir.gen.test b/tests-m32/readdir.gen.test
new file mode 100755
index 0000000..10da83b
--- /dev/null
+++ b/tests-m32/readdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests-m32/readdir.test b/tests-m32/readdir.test
deleted file mode 100755
index e313273..0000000
--- a/tests-m32/readdir.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check readdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a16
diff --git a/tests-m32/readlink.gen.test b/tests-m32/readlink.gen.test
new file mode 100755
index 0000000..755fc8b
--- /dev/null
+++ b/tests-m32/readlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests-m32/readlink.test b/tests-m32/readlink.test
deleted file mode 100755
index c026ecb..0000000
--- a/tests-m32/readlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
diff --git a/tests-m32/readlinkat.gen.test b/tests-m32/readlinkat.gen.test
new file mode 100755
index 0000000..2a50299
--- /dev/null
+++ b/tests-m32/readlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests-m32/readlinkat.test b/tests-m32/readlinkat.test
deleted file mode 100755
index 229c8e1..0000000
--- a/tests-m32/readlinkat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check readlinkat syscall decoding.
-
-. "${srcdir=.}/readlink.test"
diff --git a/tests-m32/readv.test b/tests-m32/readv.test
index dc18799..d75e370 100755
--- a/tests-m32/readv.test
+++ b/tests-m32/readv.test
@@ -3,6 +3,7 @@
 # Check decoding and dumping of readv and writev syscalls.
 #
 # 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
@@ -38,7 +39,7 @@
 run_strace_match_diff -a16 -e trace=readv,writev \
 	-eread='!all' -ewrite=none -eread='!0,1,2' -ewrite='!0,1,2'
 
-wfd="$(./print_maxfd)"
+wfd="$(../print_maxfd)"
 rfd="$(($wfd - 1))"
 run_strace_match_diff -a16 -e trace=readv,writev \
 	-eread="$rfd" -ewrite="$wfd"
diff --git a/tests-m32/reboot.gen.test b/tests-m32/reboot.gen.test
new file mode 100755
index 0000000..0a48dea
--- /dev/null
+++ b/tests-m32/reboot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/reboot.test b/tests-m32/reboot.test
deleted file mode 100755
index a97dd21..0000000
--- a/tests-m32/reboot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check reboot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/recvfrom.gen.test b/tests-m32/recvfrom.gen.test
new file mode 100755
index 0000000..c23780c
--- /dev/null
+++ b/tests-m32/recvfrom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-m32/recvfrom.test b/tests-m32/recvfrom.test
deleted file mode 100755
index 9dfbc89..0000000
--- a/tests-m32/recvfrom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr related arguments of recvfrom syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-m32/recvmmsg-timeout.c b/tests-m32/recvmmsg-timeout.c
index 7cf064d..64ce16a 100644
--- a/tests-m32/recvmmsg-timeout.c
+++ b/tests-m32/recvmmsg-timeout.c
@@ -2,6 +2,7 @@
  * Check decoding of timeout argument of recvmmsg syscall.
  *
  * 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
@@ -50,13 +51,15 @@
 			.msg_iovlen = 1
 		}
 	};
-	struct timespec t = { .tv_sec = 0, .tv_nsec = 12345678 };
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+	ts->tv_sec = 0;
+	ts->tv_nsec = 12345678;
 
-	int rc = recv_mmsg(-1, &mh, 1, 0, &t);
+	int rc = recv_mmsg(-1, &mh, 1, 0, ts);
 	printf("recvmmsg(-1, %p, 1, 0, {tv_sec=0, tv_nsec=12345678})"
-	       " = %d %s (%m)\n", &mh, rc, errno2name());
+	       " = %s\n", &mh, sprintrc(rc));
 
-	rc = recv_mmsg(fds[0], &mh, 1, 0, &t);
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
 	if (rc < 0)
 		perror_msg_and_skip("recvmmsg");
 	printf("recvmmsg(%d, [{msg_hdr={msg_name=NULL, msg_namelen=0"
@@ -64,7 +67,23 @@
 	       ", msg_controllen=0, msg_flags=0}, msg_len=1}], 1, 0"
 	       ", {tv_sec=0, tv_nsec=12345678}) = "
 	       "%d (left {tv_sec=0, tv_nsec=%d})\n",
-	       fds[0], rc, (int) t.tv_nsec);
+	       fds[0], rc, (int) ts->tv_nsec);
+
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+	printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       fds[0], &mh, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+	printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       fds[0], &mh, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/recvmmsg-timeout.gen.test b/tests-m32/recvmmsg-timeout.gen.test
new file mode 100755
index 0000000..6306de7
--- /dev/null
+++ b/tests-m32/recvmmsg-timeout.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmmsg-timeout -a25 -e trace=recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests-m32/recvmmsg-timeout.test b/tests-m32/recvmmsg-timeout.test
deleted file mode 100755
index 36a1222..0000000
--- a/tests-m32/recvmmsg-timeout.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of timeout argument of recvmmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests-m32/recvmsg.gen.test b/tests-m32/recvmsg.gen.test
new file mode 100755
index 0000000..fc8ef06
--- /dev/null
+++ b/tests-m32/recvmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmsg -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests-m32/recvmsg.test b/tests-m32/recvmsg.test
deleted file mode 100755
index e373a20..0000000
--- a/tests-m32/recvmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of recvmsg and sendmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests-m32/redirect-fds.test b/tests-m32/redirect-fds.test
index ddef8fa..3da6942 100755
--- a/tests-m32/redirect-fds.test
+++ b/tests-m32/redirect-fds.test
@@ -3,6 +3,7 @@
 # Check that strace does not leak placeholder descriptors.
 #
 # 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
@@ -47,18 +48,17 @@
 	a2="$2"
 	a3="$3"
 
+	rm -f "$LOG" "$fd0" "$fd1" "$fd2"
 	touch "$LOG" "$fd0" ||
 		framework_skip_ 'failed to create files'
 
-	set -- "\"./$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
+	set -- "\"../$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
 	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
 			fail_ "$* failed with code $rc"
 
 	set -- "$STRACE" -o"$LOG" -echdir "$@"
 	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
 		dump_log_and_fail_with "$* failed with code $?"
-
-	rm -f "$LOG" "$fd0" "$fd1" "$fd2"
 }
 
 check_fd "$fd0" "$fd1" "$fd2"
diff --git a/tests-m32/redirect.test b/tests-m32/redirect.test
index fa0c536..d70754e 100755
--- a/tests-m32/redirect.test
+++ b/tests-m32/redirect.test
@@ -3,6 +3,7 @@
 # Ensure that strace does not retain stdin and stdout descriptors.
 #
 # 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
@@ -74,5 +75,3 @@
 if [ -s "$OUT" ]; then
 	fail_ "$STRACE failed to redirect standard output"
 fi
-
-rm -f -- "$OUT"
diff --git a/tests-m32/regex.gen.test b/tests-m32/regex.gen.test
new file mode 100755
index 0000000..71a02d6
--- /dev/null
+++ b/tests-m32/regex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (regex test_trace_expr '' -etrace='/^(.*_)?statv?fs'); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -etrace='/^(.*_)?statv?fs'
diff --git a/tests-m32/regex.in b/tests-m32/regex.in
new file mode 100755
index 0000000..7c4adfe
--- /dev/null
+++ b/tests-m32/regex.in
@@ -0,0 +1,2 @@
+statfs	-a17
+statfs64	-a23
diff --git a/tests-m32/remap_file_pages.gen.test b/tests-m32/remap_file_pages.gen.test
new file mode 100755
index 0000000..e489473
--- /dev/null
+++ b/tests-m32/remap_file_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/remap_file_pages.test b/tests-m32/remap_file_pages.test
deleted file mode 100755
index 9d51a9a..0000000
--- a/tests-m32/remap_file_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check remap_file_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/rename.gen.test b/tests-m32/rename.gen.test
new file mode 100755
index 0000000..07f0180
--- /dev/null
+++ b/tests-m32/rename.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-m32/rename.test b/tests-m32/rename.test
deleted file mode 100755
index 9067e4c..0000000
--- a/tests-m32/rename.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rename syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-m32/renameat.gen.test b/tests-m32/renameat.gen.test
new file mode 100755
index 0000000..f2879cd
--- /dev/null
+++ b/tests-m32/renameat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/renameat.test b/tests-m32/renameat.test
deleted file mode 100755
index 9b0a61d..0000000
--- a/tests-m32/renameat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/renameat2.gen.test b/tests-m32/renameat2.gen.test
new file mode 100755
index 0000000..cd7c34c
--- /dev/null
+++ b/tests-m32/renameat2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/renameat2.test b/tests-m32/renameat2.test
deleted file mode 100755
index 4c176bb..0000000
--- a/tests-m32/renameat2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/request_key.gen.test b/tests-m32/request_key.gen.test
new file mode 100755
index 0000000..aeac708
--- /dev/null
+++ b/tests-m32/request_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (request_key -a33 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -s12
diff --git a/tests-m32/request_key.test b/tests-m32/request_key.test
deleted file mode 100755
index 9812a18..0000000
--- a/tests-m32/request_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of request_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -s12
diff --git a/tests-m32/restart_syscall.c b/tests-m32/restart_syscall.c
index e492e62..d06f9c2 100644
--- a/tests-m32/restart_syscall.c
+++ b/tests-m32/restart_syscall.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -55,11 +56,11 @@
 	if (nanosleep(&req, &rem))
 		perror_msg_and_fail("nanosleep");
 
-	printf("nanosleep\\(\\{tv_sec=%jd, tv_nsec=%jd\\}, "
-	       "\\{tv_sec=%jd, tv_nsec=%jd\\}\\)"
+	printf("nanosleep\\(\\{tv_sec=%lld, tv_nsec=%llu\\}"
+	       ", \\{tv_sec=%lld, tv_nsec=%llu\\}\\)"
 	       " = \\? ERESTART_RESTARTBLOCK \\(Interrupted by signal\\)\n",
-	       (intmax_t) req.tv_sec, (intmax_t) req.tv_nsec,
-	       (intmax_t) rem.tv_sec, (intmax_t) rem.tv_nsec);
+	       (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+	       (long long) rem.tv_sec, zero_extend_signed_to_ull(rem.tv_nsec));
 	puts("--- SIGALRM \\{si_signo=SIGALRM, si_code=SI_KERNEL\\} ---");
 #ifdef __arm__
 /* old kernels used to overwrite ARM_r0 with -EINTR */
@@ -67,11 +68,12 @@
 #else
 # define ALTERNATIVE_NANOSLEEP_REQ ""
 #endif
-	printf("(nanosleep\\((%s\\{tv_sec=%jd, tv_nsec=%jd\\}), "
-	       "%p|restart_syscall\\(<\\.\\.\\."
+	printf("(nanosleep\\((%s\\{tv_sec=%lld, tv_nsec=%llu\\})"
+	       ", %p|restart_syscall\\(<\\.\\.\\."
 	       " resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
 	       ALTERNATIVE_NANOSLEEP_REQ,
-	       (intmax_t) req.tv_sec, (intmax_t) req.tv_nsec, &rem);
+	       (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+	       &rem);
 
 	puts("\\+\\+\\+ exited with 0 \\+\\+\\+");
 	return 0;
diff --git a/tests-m32/restart_syscall.test b/tests-m32/restart_syscall.test
index 6dfda16..f7dfa04 100755
--- a/tests-m32/restart_syscall.test
+++ b/tests-m32/restart_syscall.test
@@ -6,8 +6,5 @@
 
 run_prog > /dev/null
 syscalls=nanosleep,restart_syscall
-run_strace -a20 -e trace=$syscalls $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -e trace=$syscalls $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests-m32/rmdir.gen.test b/tests-m32/rmdir.gen.test
new file mode 100755
index 0000000..b511039
--- /dev/null
+++ b/tests-m32/rmdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-m32/rmdir.test b/tests-m32/rmdir.test
deleted file mode 100755
index 81ee66b..0000000
--- a/tests-m32/rmdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rmdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-m32/rt_sigpending.c b/tests-m32/rt_sigpending.c
index accf691..b57921f 100644
--- a/tests-m32/rt_sigpending.c
+++ b/tests-m32/rt_sigpending.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigpending strace test.
  *
  * 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
@@ -78,7 +79,7 @@
 
 	const unsigned int big_size = 1024 / 8;
 	void *k_set = tail_alloc(big_size);
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 
 	sigemptyset(libc_set);
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests-m32/rt_sigpending.gen.test b/tests-m32/rt_sigpending.gen.test
new file mode 100755
index 0000000..0458876
--- /dev/null
+++ b/tests-m32/rt_sigpending.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/rt_sigpending.test b/tests-m32/rt_sigpending.test
deleted file mode 100755
index 40c83a8..0000000
--- a/tests-m32/rt_sigpending.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigpending syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-m32/rt_sigprocmask.c b/tests-m32/rt_sigprocmask.c
index 27e357f..c38ac94 100644
--- a/tests-m32/rt_sigprocmask.c
+++ b/tests-m32/rt_sigprocmask.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigprocmask strace test.
  *
  * 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
@@ -91,7 +92,7 @@
 
 	void *const k_set = tail_alloc(set_size);
 	void *const old_set = tail_alloc(set_size);
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 
 	memset(k_set, 0, set_size);
 	if (k_sigprocmask(SIG_SETMASK, k_set, NULL, set_size))
diff --git a/tests-m32/rt_sigprocmask.gen.test b/tests-m32/rt_sigprocmask.gen.test
new file mode 100755
index 0000000..a21c6db
--- /dev/null
+++ b/tests-m32/rt_sigprocmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/rt_sigprocmask.test b/tests-m32/rt_sigprocmask.test
deleted file mode 100755
index 1e60ebd..0000000
--- a/tests-m32/rt_sigprocmask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigprocmask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/rt_sigqueueinfo.c b/tests-m32/rt_sigqueueinfo.c
index aba6776..f803d91 100644
--- a/tests-m32/rt_sigqueueinfo.c
+++ b/tests-m32/rt_sigqueueinfo.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/rt_sigqueueinfo.gen.test b/tests-m32/rt_sigqueueinfo.gen.test
new file mode 100755
index 0000000..7baf0e4
--- /dev/null
+++ b/tests-m32/rt_sigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/rt_sigqueueinfo.test b/tests-m32/rt_sigqueueinfo.test
deleted file mode 100755
index c03c76f..0000000
--- a/tests-m32/rt_sigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_sigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-m32/rt_sigreturn.c b/tests-m32/rt_sigreturn.c
new file mode 100644
index 0000000..40d1589
--- /dev/null
+++ b/tests-m32/rt_sigreturn.c
@@ -0,0 +1,79 @@
+/*
+ * 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 <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef ASM_SIGRTMIN
+# define RT_0 ASM_SIGRTMIN
+#else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+# define RT_0 32
+#endif
+
+static void
+handler(int no, siginfo_t *si, void *uc)
+{
+}
+
+int
+main(void)
+{
+	static sigset_t set;
+	sigemptyset(&set);
+	sigaddset(&set, SIGINT);
+	sigaddset(&set, SIGUSR2);
+	sigaddset(&set, SIGCHLD);
+	sigaddset(&set, RT_0 +  3);
+	sigaddset(&set, RT_0 +  4);
+	sigaddset(&set, RT_0 +  5);
+	sigaddset(&set, RT_0 + 26);
+	sigaddset(&set, RT_0 + 27);
+	if (sigprocmask(SIG_SETMASK, &set, NULL))
+		perror_msg_and_fail("sigprocmask");
+	sigemptyset(&set);
+
+	static const struct sigaction sa = {
+		.sa_sigaction = handler,
+		.sa_flags = SA_SIGINFO
+	};
+	if (sigaction(SIGUSR1, &sa, NULL))
+		perror_msg_and_fail("sigaction");
+
+	if (raise(SIGUSR1))
+		perror_msg_and_fail("raise");
+
+	static const char *const sigs =
+		(SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+	static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+	printf("rt_sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-m32/rt_sigreturn.gen.test b/tests-m32/rt_sigreturn.gen.test
new file mode 100755
index 0000000..0672f11
--- /dev/null
+++ b/tests-m32/rt_sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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'
diff --git a/tests-m32/rt_sigsuspend.c b/tests-m32/rt_sigsuspend.c
index 73e1336..422ec19 100644
--- a/tests-m32/rt_sigsuspend.c
+++ b/tests-m32/rt_sigsuspend.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigsuspend strace test.
  *
  * 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
@@ -88,7 +89,7 @@
 	void *k_set = tail_alloc(big_size);
 	memset(k_set, 0, big_size);
 
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 	sigemptyset(libc_set);
 	sigaddset(libc_set, SIGUSR1);
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests-m32/rt_sigsuspend.gen.test b/tests-m32/rt_sigsuspend.gen.test
new file mode 100755
index 0000000..d5d1d5f
--- /dev/null
+++ b/tests-m32/rt_sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigsuspend -a20 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -esignal=none
diff --git a/tests-m32/rt_sigsuspend.test b/tests-m32/rt_sigsuspend.test
deleted file mode 100755
index 2e30fd4..0000000
--- a/tests-m32/rt_sigsuspend.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigsuspend syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -esignal=none
diff --git a/tests-m32/rt_sigtimedwait.c b/tests-m32/rt_sigtimedwait.c
index 10311e6..40544c7 100644
--- a/tests-m32/rt_sigtimedwait.c
+++ b/tests-m32/rt_sigtimedwait.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigtimedwait strace test.
  *
  * 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
@@ -54,25 +55,27 @@
 	for (;;) {
 		assert(k_sigtimedwait(set, NULL, timeout, size) == -1);
 		if (EINTR == errno) {
-			tprintf("rt_sigtimedwait(%s, NULL, "
-				"{tv_sec=%jd, tv_nsec=%jd}, %u)"
+			tprintf("rt_sigtimedwait(%s, NULL"
+				", {tv_sec=%lld, tv_nsec=%llu}, %u)"
 				" = -1 EAGAIN (%m)\n", text,
-				(intmax_t) timeout->tv_sec,
-				(intmax_t) timeout->tv_nsec,
+				(long long) timeout->tv_sec,
+				zero_extend_signed_to_ull(timeout->tv_nsec),
 				size);
 		} else {
 			if (size < sizeof(long))
-				tprintf("rt_sigtimedwait(%p, NULL, "
-					"{tv_sec=%jd, tv_nsec=%jd}"
+				tprintf("rt_sigtimedwait(%p, NULL"
+					", {tv_sec=%lld, tv_nsec=%llu}"
 					", %u) = -1 EINVAL (%m)\n",
-					set, (intmax_t) timeout->tv_sec,
-					(intmax_t) timeout->tv_nsec, size);
+					set, (long long) timeout->tv_sec,
+					zero_extend_signed_to_ull(timeout->tv_nsec),
+					size);
 			else
-				tprintf("rt_sigtimedwait(%s, NULL, "
-					"{tv_sec=%jd, tv_nsec=%jd}"
+				tprintf("rt_sigtimedwait(%s, NULL"
+					", {tv_sec=%lld, tv_nsec=%llu}"
 					", %u) = -1 EINVAL (%m)\n",
-					text, (intmax_t) timeout->tv_sec,
-					(intmax_t) timeout->tv_nsec, size);
+					text, (long long) timeout->tv_sec,
+					zero_extend_signed_to_ull(timeout->tv_nsec),
+					size);
 		}
 		if (!size)
 			break;
@@ -86,8 +89,8 @@
 {
 	tprintf("%s", "");
 
-	siginfo_t *const info = tail_alloc(sizeof(*info));
-	struct timespec *const timeout = tail_alloc(sizeof(*timeout));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, timeout);
 	timeout->tv_sec = 0;
 	timeout->tv_nsec = 42;
 
@@ -100,37 +103,58 @@
 		assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
 		if (EAGAIN == errno)
 			break;
-		tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%jd, tv_nsec=%jd}, %u)"
-			" = -1 EINVAL (%m)\n",
-			k_set, (intmax_t) timeout->tv_sec,
-			(intmax_t) timeout->tv_nsec, set_size);
+		tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%lld, tv_nsec=%llu}"
+			", %u) = -1 EINVAL (%m)\n",
+			k_set, (long long) timeout->tv_sec,
+			zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 	}
 	if (!set_size)
 		perror_msg_and_fail("rt_sigtimedwait");
-	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
-		set_size);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	timeout->tv_sec = 0xdeadbeefU;
+	timeout->tv_nsec = 0xfacefeedU;
+	assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+		", %u) = -1 EINVAL (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+	timeout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	timeout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+		", %u) = -1 EINVAL (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+	timeout->tv_sec = 0;
+	timeout->tv_nsec = 42;
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 	sigemptyset(libc_set);
 	sigaddset(libc_set, SIGHUP);
 	memcpy(k_set, libc_set, set_size);
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+	tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	sigaddset(libc_set, SIGINT);
 	memcpy(k_set, libc_set, set_size);
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%jd, tv_nsec=%jd}, %u)"
+	tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
 		" = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	sigaddset(libc_set, SIGQUIT);
 	sigaddset(libc_set, SIGALRM);
@@ -139,17 +163,19 @@
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
+	tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
 		"[HUP INT QUIT ALRM TERM]",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	memset(k_set - set_size, -1, set_size);
 	assert(k_sigtimedwait(k_set - set_size, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+	tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
 		perror_msg_and_fail("sigprocmask");
@@ -164,9 +190,11 @@
 	raise(SIGALRM);
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == SIGALRM);
 	tprintf("rt_sigtimedwait(%s, {si_signo=%s, si_code=SI_TKILL"
-		", si_pid=%d, si_uid=%d}, {tv_sec=%jd, tv_nsec=%jd}, %u) = %d (%s)\n",
+		", si_pid=%d, si_uid=%d}, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = %d (%s)\n",
 		"[HUP INT QUIT ALRM TERM]", "SIGALRM", getpid(), getuid(),
-		(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec),
 		set_size, SIGALRM, "SIGALRM");
 
 	raise(SIGALRM);
diff --git a/tests-m32/rt_sigtimedwait.gen.test b/tests-m32/rt_sigtimedwait.gen.test
new file mode 100755
index 0000000..2b18e7a
--- /dev/null
+++ b/tests-m32/rt_sigtimedwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/rt_sigtimedwait.test b/tests-m32/rt_sigtimedwait.test
deleted file mode 100755
index e15fb77..0000000
--- a/tests-m32/rt_sigtimedwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigtimedwait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests-m32/rt_tgsigqueueinfo.c b/tests-m32/rt_tgsigqueueinfo.c
index ec09348..3b2da2a 100644
--- a/tests-m32/rt_tgsigqueueinfo.c
+++ b/tests-m32/rt_tgsigqueueinfo.c
@@ -2,6 +2,7 @@
  * This file is part of rt_tgsigqueueinfo strace test.
  *
  * 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
@@ -42,9 +43,9 @@
 k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
 {
 	return syscall(__NR_rt_tgsigqueueinfo,
-		       (unsigned long) 0xffffffff00000000ULL | pid,
-		       (unsigned long) 0xffffffff00000000ULL | pid,
-		       (unsigned long) 0xffffffff00000000ULL | sig,
+		       F8ILL_KULONG_MASK | pid,
+		       F8ILL_KULONG_MASK | pid,
+		       F8ILL_KULONG_MASK | sig,
 		       info);
 }
 
@@ -57,7 +58,7 @@
 	if (sigaction(SIGUSR1, &sa, NULL))
 		perror_msg_and_fail("sigaction");
 
-	siginfo_t *const info = tail_alloc(sizeof(*info));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
 	memset(info, 0, sizeof(*info));
 	info->si_signo = SIGUSR1;
 	info->si_errno = ENOENT;
diff --git a/tests-m32/rt_tgsigqueueinfo.gen.test b/tests-m32/rt_tgsigqueueinfo.gen.test
new file mode 100755
index 0000000..407bbff
--- /dev/null
+++ b/tests-m32/rt_tgsigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/rt_tgsigqueueinfo.test b/tests-m32/rt_tgsigqueueinfo.test
deleted file mode 100755
index ab24e2d..0000000
--- a/tests-m32/rt_tgsigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_tgsigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-m32/sched.gen.test b/tests-m32/sched.gen.test
new file mode 100755
index 0000000..6747117
--- /dev/null
+++ b/tests-m32/sched.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched test_trace_expr times -e/sched); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr times -e/sched
diff --git a/tests-m32/sched.in b/tests-m32/sched.in
new file mode 100755
index 0000000..46031d6
--- /dev/null
+++ b/tests-m32/sched.in
@@ -0,0 +1,7 @@
+sched_xetaffinity	-a28
+sched_xetparam	-a23
+sched_rr_get_interval	-a31
+sched_get_priority_mxx	-a33
+sched_xetattr	-a29
+sched_xetscheduler	-a22
+sched_yield	-a14
diff --git a/tests-m32/sched_get_priority_mxx.gen.test b/tests-m32/sched_get_priority_mxx.gen.test
new file mode 100755
index 0000000..a235997
--- /dev/null
+++ b/tests-m32/sched_get_priority_mxx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests-m32/sched_get_priority_mxx.test b/tests-m32/sched_get_priority_mxx.test
deleted file mode 100755
index 0d1a1a7..0000000
--- a/tests-m32/sched_get_priority_mxx.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_get_priority_min and sched_get_priority_max syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests-m32/sched_rr_get_interval.c b/tests-m32/sched_rr_get_interval.c
index 0aacd2b..000a0be 100644
--- a/tests-m32/sched_rr_get_interval.c
+++ b/tests-m32/sched_rr_get_interval.c
@@ -11,7 +11,7 @@
 int
 main(void)
 {
-	struct timespec *const tp = tail_alloc(sizeof(struct timespec));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tp);
 	long rc;
 
 	rc = syscall(__NR_sched_rr_get_interval, 0, NULL);
@@ -25,8 +25,10 @@
 
 	rc = syscall(__NR_sched_rr_get_interval, 0, tp);
 	if (rc == 0)
-		printf("sched_rr_get_interval(0, {tv_sec=%jd, tv_nsec=%jd}) = "
-		       "0\n", (intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
+		printf("sched_rr_get_interval(0, {tv_sec=%lld, tv_nsec=%llu})"
+		       " = 0\n",
+		       (long long) tp->tv_sec,
+		       zero_extend_signed_to_ull(tp->tv_nsec));
 	else
 		printf("sched_rr_get_interval(-1, %p) = %s\n", tp,
 			sprintrc(rc));
diff --git a/tests-m32/sched_rr_get_interval.gen.test b/tests-m32/sched_rr_get_interval.gen.test
new file mode 100755
index 0000000..493de64
--- /dev/null
+++ b/tests-m32/sched_rr_get_interval.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/sched_rr_get_interval.test b/tests-m32/sched_rr_get_interval.test
deleted file mode 100755
index 828ba5d..0000000
--- a/tests-m32/sched_rr_get_interval.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_rr_get_interval syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests-m32/sched_xetaffinity.gen.test b/tests-m32/sched_xetaffinity.gen.test
new file mode 100755
index 0000000..7a1c75b
--- /dev/null
+++ b/tests-m32/sched_xetaffinity.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests-m32/sched_xetaffinity.test b/tests-m32/sched_xetaffinity.test
deleted file mode 100755
index 246ea21..0000000
--- a/tests-m32/sched_xetaffinity.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getaffinity and sched_setaffinity syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests-m32/sched_xetattr.c b/tests-m32/sched_xetattr.c
index 1b48491..a9bd2ba 100644
--- a/tests-m32/sched_xetattr.c
+++ b/tests-m32/sched_xetattr.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,95 +32,214 @@
 
 # include <inttypes.h>
 # include <stdio.h>
+# include <sched.h>
 # include <unistd.h>
+# include "sched_attr.h"
+# include "xlat.h"
+# include "xlat/schedulers.h"
+
+static const char *errstr;
+
+static long
+sys_sched_getattr(kernel_ulong_t pid, kernel_ulong_t attr,
+		  kernel_ulong_t size, kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_sched_getattr, pid, attr, size, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+static long
+sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_sched_setattr, pid, attr, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	struct {
-		uint32_t size;
-		uint32_t sched_policy;
-		uint64_t sched_flags;
-		int32_t  sched_nice;
-		uint32_t sched_priority;
-		uint64_t sched_runtime;
-		uint64_t sched_deadline;
-		uint64_t sched_period;
-	} *sched_attr = tail_alloc(sizeof(*sched_attr));
+	static const kernel_ulong_t bogus_pid =
+		(kernel_ulong_t) 0xdefacedfacefeedULL;
+	static const kernel_ulong_t bogus_size =
+		(kernel_ulong_t) 0xdefacedcafef00dULL;
+	static const kernel_ulong_t bogus_flags =
+		(kernel_ulong_t) 0xdefaceddeadc0deULL;
 
-	long rc = syscall(__NR_sched_getattr, 0xdeadface, NULL, 0, 0);
-	printf("sched_getattr\\(%d, NULL, 0, 0\\) += %s\n",
-		0xdeadface, sprintrc_grep(rc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
+	void *const efault = attr + 1;
 
-	rc = syscall(__NR_sched_getattr, -1,
-		     sched_attr, 0xbadfaced, 0xc0defeed);
-	printf("sched_getattr\\(-1, %p, %u, %u\\) += %s\n",
-		sched_attr, 0xbadfaced, 0xc0defeed, sprintrc_grep(rc));
+	sys_sched_getattr(0, 0, 0, 0);
+	printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
 
-	rc = syscall(__NR_sched_getattr, 0,
-		     sched_attr + 1, sizeof(*sched_attr), 0);
-	printf("sched_getattr\\(0, %p, %u, 0\\) += %s\n",
-		sched_attr + 1, (unsigned)sizeof(*sched_attr),
-		sprintrc_grep(rc));
+	sys_sched_getattr(0, (unsigned long) attr, 0, 0);
+	printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
 
-	if (syscall(__NR_sched_getattr, 0, sched_attr, sizeof(*sched_attr), 0))
+	sys_sched_getattr(bogus_pid, 0, 0, 0);
+	printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
+
+	sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
+	printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
+	       attr,
+# if defined __arm64__ || defined __aarch64__
+	       "0xdefaced<<32|",
+# else
+	       "",
+# endif
+	       (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
+
+	sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
+	printf("sched_getattr(0, %p, %u, 0) = %s\n",
+	       efault, (unsigned) sizeof(*attr), errstr);
+
+	if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
 		perror_msg_and_skip("sched_getattr");
-
-	printf("sched_getattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
-	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
 	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-	       ", sched_period=%" PRIu64 "\\}, %u, 0\\) += 0\n",
-	       sched_attr->size,
-	       sched_attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
-	       sched_attr->sched_nice,
-	       sched_attr->sched_priority,
-	       sched_attr->sched_runtime,
-	       sched_attr->sched_deadline,
-	       sched_attr->sched_period,
-	       (unsigned) sizeof(*sched_attr));
+	       ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+	       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period,
+	       (unsigned) sizeof(*attr));
 
-	sched_attr->sched_flags |= 1;
-	if (syscall(__NR_sched_setattr, 0, sched_attr, 0))
+# if defined __arm64__ || defined __aarch64__
+	long rc =
+# endif
+	sys_sched_getattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+			  F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
+# if defined __arm64__ || defined __aarch64__
+	if (rc) {
+		printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
+		       attr, (unsigned) sizeof(*attr), errstr);
+	} else
+# endif
+	{
+		printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+		printxval(schedulers, attr->sched_policy, NULL);
+		printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+		       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+		       ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+		       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+		       attr->sched_nice,
+		       attr->sched_priority,
+		       attr->sched_runtime,
+		       attr->sched_deadline,
+		       attr->sched_period,
+		       (unsigned) sizeof(*attr));
+	}
+
+	sys_sched_setattr(bogus_pid, 0, 0);
+	printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
+
+	attr->sched_flags |= 1;
+
+	if (sys_sched_setattr(0, (unsigned long) attr, 0))
 		perror_msg_and_skip("sched_setattr");
-
-	printf("sched_setattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
-	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
 	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-	       ", sched_period=%" PRIu64 "\\}, 0\\) += 0\n",
-	       sched_attr->size,
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
 	       "SCHED_FLAG_RESET_ON_FORK",
-	       sched_attr->sched_nice,
-	       sched_attr->sched_priority,
-	       sched_attr->sched_runtime,
-	       sched_attr->sched_deadline,
-	       sched_attr->sched_period);
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
 
-	sched_attr->size = 0x90807060;
-	sched_attr->sched_policy = 0xca7faced;
-	sched_attr->sched_flags = 0xbadc0ded1057da7aULL;
-	sched_attr->sched_nice = 0xafbfcfdf;
-	sched_attr->sched_priority = 0xb8c8d8e8;
-	sched_attr->sched_runtime = 0xbadcaffedeadf157ULL;
-	sched_attr->sched_deadline = 0xc0de70a57badac75ULL;
-	sched_attr->sched_period = 0xded1ca7edda7aca7ULL;
+	sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+			  F8ILL_KULONG_MASK);
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
+	       "SCHED_FLAG_RESET_ON_FORK",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
 
-	rc = syscall(__NR_sched_setattr, 0xfacec0de, sched_attr, 0xbeeff00d);
+	*psize = attr->size;
 
-	printf("sched_setattr\\(%d, \\{size=%u, "
-		"sched_policy=%#x /\\* SCHED_\\?\\?\\? \\*/, "
-		"sched_flags=%#" PRIx64 " /\\* SCHED_FLAG_\\?\\?\\? \\*/, "
-		"sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-		"sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "\\}, "
-		"%u\\) += %s\n",
-		0xfacec0de, sched_attr->size,
-		sched_attr->sched_policy,
-		sched_attr->sched_flags,
-		sched_attr->sched_nice,
-		sched_attr->sched_priority,
-		sched_attr->sched_runtime,
-		sched_attr->sched_deadline,
-		sched_attr->sched_period, 0xbeeff00d, sprintrc_grep(rc));
+	sys_sched_setattr(0, (unsigned long) psize, 0);
+	printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
 
+	attr->size = 0;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
+	       "SCHED_FLAG_RESET_ON_FORK",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
+
+	attr->size = 1;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+	       1, attr->size, errstr);
+
+	attr->size = SCHED_ATTR_MIN_SIZE - 1;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+	       SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
+
+	attr->size = 0x90807060;
+	attr->sched_policy = 0xca7faced;
+	attr->sched_flags = 0xbadc0ded1057da7aULL;
+	attr->sched_nice = 0xafbfcfdf;
+	attr->sched_priority = 0xb8c8d8e8;
+	attr->sched_runtime = 0xbadcaffedeadf157ULL;
+	attr->sched_deadline = 0xc0de70a57badac75ULL;
+	attr->sched_period = 0xded1ca7edda7aca7ULL;
+
+	sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+	printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
+	       "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
+	       "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+	       "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
+	       " = %s\n",
+	       (int) bogus_pid,
+	       attr->size,
+	       attr->sched_policy,
+	       attr->sched_flags,
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period,
+	       (unsigned) bogus_flags, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+		sys_sched_getattr(0, ill, sizeof(*attr), 0);
+		printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+		       (unsigned long long) ill, (unsigned) sizeof(*attr),
+		       errstr);
+
+		sys_sched_setattr(0, ill, 0);
+		printf("sched_setattr(0, %#llx, 0) = %s\n",
+		       (unsigned long long) ill, errstr);
+	}
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests-m32/sched_xetattr.gen.test b/tests-m32/sched_xetattr.gen.test
new file mode 100755
index 0000000..e4f31c5
--- /dev/null
+++ b/tests-m32/sched_xetattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetattr -a29 -e trace=sched_getattr,sched_setattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=sched_getattr,sched_setattr
diff --git a/tests-m32/sched_xetattr.test b/tests-m32/sched_xetattr.test
deleted file mode 100755
index c2c7914..0000000
--- a/tests-m32/sched_xetattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check sched_getattr and sched_setattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e sched_getattr,sched_setattr $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-m32/sched_xetparam.gen.test b/tests-m32/sched_xetparam.gen.test
new file mode 100755
index 0000000..220ffb2
--- /dev/null
+++ b/tests-m32/sched_xetparam.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetparam -a23 -e trace=sched_getparam,sched_setparam); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests-m32/sched_xetparam.test b/tests-m32/sched_xetparam.test
deleted file mode 100755
index c9fede1..0000000
--- a/tests-m32/sched_xetparam.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getparam and sched_setparam syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests-m32/sched_xetscheduler.c b/tests-m32/sched_xetscheduler.c
index 7faee8c..8248a0c 100644
--- a/tests-m32/sched_xetscheduler.c
+++ b/tests-m32/sched_xetscheduler.c
@@ -10,7 +10,7 @@
 int
 main(void)
 {
-	struct sched_param *const param = tail_alloc(sizeof(struct sched_param));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
 	long rc = syscall(__NR_sched_getscheduler, 0);
 	const char *scheduler;
 	switch (rc) {
diff --git a/tests-m32/sched_xetscheduler.gen.test b/tests-m32/sched_xetscheduler.gen.test
new file mode 100755
index 0000000..0a80072
--- /dev/null
+++ b/tests-m32/sched_xetscheduler.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests-m32/sched_xetscheduler.test b/tests-m32/sched_xetscheduler.test
deleted file mode 100755
index 07c93f3..0000000
--- a/tests-m32/sched_xetscheduler.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getscheduler and sched_setscheduler syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests-m32/sched_yield.gen.test b/tests-m32/sched_yield.gen.test
new file mode 100755
index 0000000..3f4542f
--- /dev/null
+++ b/tests-m32/sched_yield.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/sched_yield.test b/tests-m32/sched_yield.test
deleted file mode 100755
index f0c2c30..0000000
--- a/tests-m32/sched_yield.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_yield syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-m32/scm_rights-fd.test b/tests-m32/scm_rights-fd.test
index 8447375..279666e 100755
--- a/tests-m32/scm_rights-fd.test
+++ b/tests-m32/scm_rights-fd.test
@@ -3,6 +3,7 @@
 # Check how SCM_RIGHTS and SCM_CREDENTIALS control messages are decoded in -y mode.
 #
 # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -34,22 +35,19 @@
 	framework_skip_ '/proc/self/fd/ is not available'
 
 check_prog mkdir
-check_prog rm
 check_prog seq
 check_prog touch
 
-dir="$LOG.dir"
-rm -rf -- "$dir"
-mkdir -- "$dir" ||
+mkdir dir ||
 	framework_skip_ 'failed to create a directory'
 
-file="$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
+file="dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
 
 touch -- "$file" ||
 	framework_skip_ 'failed to create a file'
 
-run_prog ./scm_rights /dev/zero
-run_strace -y -x -enetwork $args "$file"
+run_prog ../scm_rights /dev/zero
+run_strace -y -x -e%network $args "$file"
 
 hex='[[:xdigit:]]'
 n='[1-9][0-9]*'
@@ -66,15 +64,9 @@
 rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, cmsg_data='"$rights_data"'\}'
 creds='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data='"$ids"'\}'
 
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
 sendmsg\\(3$socket, $msg_head\\[$rights\\]$msg_tail\\}, 0\\) = 15
 recvmsg\\(0$socket, $msg_head\\[$creds, $rights\\]$msg_tail\\}, 0\\) = 15
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-rm -rf -- "$dir"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests-m32/scm_rights.c b/tests-m32/scm_rights.c
index 42caed7..632cf91 100644
--- a/tests-m32/scm_rights.c
+++ b/tests-m32/scm_rights.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,11 +45,11 @@
 	void *data = tail_alloc(data_size);
 	memcpy(data, sample, data_size);
 
-	struct iovec *iov = tail_alloc(sizeof(struct iovec));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = data;
 	iov->iov_len = data_size;
 
-	struct msghdr *mh = tail_alloc(sizeof(struct msghdr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
 	memset(mh, 0, sizeof(*mh));
 	mh->msg_iov = iov;
 	mh->msg_iovlen = 1;
diff --git a/tests-m32/scno_tampering.sh b/tests-m32/scno_tampering.sh
index 6aa7843..094175e 100755
--- a/tests-m32/scno_tampering.sh
+++ b/tests-m32/scno_tampering.sh
@@ -3,6 +3,7 @@
 # Skip the test if arch+kernel combination is not supported.
 #
 # 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
diff --git a/tests-m32/seccomp-filter-v.c b/tests-m32/seccomp-filter-v.c
index dbf686d..fe88ac7 100644
--- a/tests-m32/seccomp-filter-v.c
+++ b/tests-m32/seccomp-filter-v.c
@@ -2,6 +2,7 @@
  * Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2015-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
@@ -105,7 +106,7 @@
 		tail_memdup(filter_c, sizeof(filter_c));
 	struct sock_filter *const big_filter =
 		tail_alloc(sizeof(*big_filter) * (BPF_MAXINSNS + 1));
-	struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
 
 	int fds[2];
 	if (pipe(fds))
diff --git a/tests-m32/seccomp-filter-v.gen.test b/tests-m32/seccomp-filter-v.gen.test
new file mode 100755
index 0000000..efce637
--- /dev/null
+++ b/tests-m32/seccomp-filter-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter-v -v -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=seccomp
diff --git a/tests-m32/seccomp-filter-v.test b/tests-m32/seccomp-filter-v.test
deleted file mode 100755
index f873eb6..0000000
--- a/tests-m32/seccomp-filter-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=seccomp
diff --git a/tests-m32/seccomp-filter.c b/tests-m32/seccomp-filter.c
index d4d76dd..e2bea06 100644
--- a/tests-m32/seccomp-filter.c
+++ b/tests-m32/seccomp-filter.c
@@ -2,6 +2,7 @@
  * Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * 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
@@ -49,7 +50,7 @@
 {
 	struct sock_filter *const filter = tail_alloc(sizeof(*filter) * N);
 	const void *const efault = tail_alloc(1);
-	struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
 	long rc;
 
 	prog->filter = filter;
diff --git a/tests-m32/seccomp-filter.gen.test b/tests-m32/seccomp-filter.gen.test
new file mode 100755
index 0000000..52af0d5
--- /dev/null
+++ b/tests-m32/seccomp-filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=seccomp
diff --git a/tests-m32/seccomp-filter.test b/tests-m32/seccomp-filter.test
deleted file mode 100755
index 65c6d49..0000000
--- a/tests-m32/seccomp-filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=seccomp
diff --git a/tests-m32/seccomp-strict.test b/tests-m32/seccomp-strict.test
index b354c6a..b039871 100755
--- a/tests-m32/seccomp-strict.test
+++ b/tests-m32/seccomp-strict.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-set -- "./$NAME"
+set -- "../$NAME"
 "$@" > /dev/null || {
 	case $? in
 		77) skip_ "$* exited with code 77" ;;
@@ -14,4 +14,3 @@
 }
 run_strace -eseccomp "$@" > "$EXP"
 match_diff "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-m32/select.gen.test b/tests-m32/select.gen.test
new file mode 100755
index 0000000..cb3b8f1
--- /dev/null
+++ b/tests-m32/select.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-m32/select.test b/tests-m32/select.test
deleted file mode 100755
index 60b88ca..0000000
--- a/tests-m32/select.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check select syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-m32/semop.c b/tests-m32/semop.c
index a2ff263..3d1f384 100644
--- a/tests-m32/semop.c
+++ b/tests-m32/semop.c
@@ -33,9 +33,7 @@
 	static void * const bogus_sops = (void *) -1L;
 	static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
 
-	static const struct timespec ts_data = { 1, 123456789 };
-
-	struct timespec *ts = tail_memdup(&ts_data, sizeof(*ts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
 	int rc;
 
 	id = semget(IPC_PRIVATE, 1, 0600);
@@ -47,8 +45,8 @@
 	if (semctl(id, 0, SETVAL, sem_union) == -1)
 		perror_msg_and_skip("semctl");
 
-	struct sembuf *const sem_b = tail_alloc(sizeof(*sem_b));
-	struct sembuf *const sem_b2 = tail_alloc(sizeof(*sem_b2));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
 
 	rc = semop(bogus_semid, NULL, bogus_nsops);
 	printf("semop(%d, NULL, %u) = %s\n",
@@ -91,15 +89,17 @@
 	printf("semtimedop(%d, %p, 1, %p) = %s\n",
 		id, sem_b + 1, ts + 1, sprintrc(rc));
 
+	ts->tv_sec = 1;
+	ts->tv_nsec = 123456789;
 	rc = semtimedop(bogus_semid, sem_b2, 2, ts);
-	printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u"
+		", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 		bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
 		sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
 		sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
 		sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT),
 		sem_b2 + 1, 2,
-		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec,
+		(long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 		sprintrc(rc));
 
 	sem_b->sem_op = 1;
@@ -110,9 +110,27 @@
 	sem_b->sem_op = -1;
 	if (semtimedop(id, sem_b, 1, ts))
 		perror_msg_and_skip("semtimedop, -1");
-	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = 0\n", id,
-		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec);
+	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
+	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
+
+	sem_b->sem_op = 1;
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	rc = semtimedop(id, sem_b, 1, ts);
+	printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       id, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	sem_b->sem_op = -1;
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	rc = semtimedop(id, sem_b, 1, ts);
+	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       id, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/semop.gen.test b/tests-m32/semop.gen.test
new file mode 100755
index 0000000..21b67ea
--- /dev/null
+++ b/tests-m32/semop.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 -e trace=semop,semtimedop); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests-m32/semop.test b/tests-m32/semop.test
deleted file mode 100755
index 3e77d2f..0000000
--- a/tests-m32/semop.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check semop syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests-m32/sendfile.c b/tests-m32/sendfile.c
index 23f096b..9253c10 100644
--- a/tests-m32/sendfile.c
+++ b/tests-m32/sendfile.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -69,7 +70,7 @@
 	printf("sendfile(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
 	       (unsigned long) page_len);
 
-	uint32_t *p_off = tail_alloc(sizeof(uint32_t));
+	TAIL_ALLOC_OBJECT_VAR_PTR(uint32_t, p_off);
 	void *p = p_off + 1;
 	*p_off = 0;
 
diff --git a/tests-m32/sendfile.gen.test b/tests-m32/sendfile.gen.test
new file mode 100755
index 0000000..433878f
--- /dev/null
+++ b/tests-m32/sendfile.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/sendfile.test b/tests-m32/sendfile.test
deleted file mode 100755
index 48dba58..0000000
--- a/tests-m32/sendfile.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/sendfile64.c b/tests-m32/sendfile64.c
index 7208c30..de02400 100644
--- a/tests-m32/sendfile64.c
+++ b/tests-m32/sendfile64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -69,7 +70,7 @@
 	printf("sendfile64(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
 	       (unsigned long) page_len);
 
-	uint64_t *p_off = tail_alloc(sizeof(uint64_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, p_off);
 	void *p = p_off + 1;
 	*p_off = 0;
 
diff --git a/tests-m32/sendfile64.gen.test b/tests-m32/sendfile64.gen.test
new file mode 100755
index 0000000..1655dd3
--- /dev/null
+++ b/tests-m32/sendfile64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29
diff --git a/tests-m32/sendfile64.test b/tests-m32/sendfile64.test
deleted file mode 100755
index faa0525..0000000
--- a/tests-m32/sendfile64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29
diff --git a/tests-m32/set_mempolicy.gen.test b/tests-m32/set_mempolicy.gen.test
new file mode 100755
index 0000000..f8c81c7
--- /dev/null
+++ b/tests-m32/set_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -s3 -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a35
diff --git a/tests-m32/set_mempolicy.test b/tests-m32/set_mempolicy.test
deleted file mode 100755
index 0ed6666..0000000
--- a/tests-m32/set_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check set_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a35
diff --git a/tests-m32/set_ptracer_any.c b/tests-m32/set_ptracer_any.c
index bc2f90c..3b4ea2c 100644
--- a/tests-m32/set_ptracer_any.c
+++ b/tests-m32/set_ptracer_any.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-m32/setdomainname.gen.test b/tests-m32/setdomainname.gen.test
new file mode 100755
index 0000000..2b12e08
--- /dev/null
+++ b/tests-m32/setdomainname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-m32/setdomainname.test b/tests-m32/setdomainname.test
deleted file mode 100755
index 2159e7c..0000000
--- a/tests-m32/setdomainname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setdomainname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-m32/setfsgid.gen.test b/tests-m32/setfsgid.gen.test
new file mode 100755
index 0000000..caff401
--- /dev/null
+++ b/tests-m32/setfsgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-m32/setfsgid.test b/tests-m32/setfsgid.test
deleted file mode 100755
index 0ae2b0a..0000000
--- a/tests-m32/setfsgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-m32/setfsgid32.gen.test b/tests-m32/setfsgid32.gen.test
new file mode 100755
index 0000000..fae29e0
--- /dev/null
+++ b/tests-m32/setfsgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-m32/setfsgid32.test b/tests-m32/setfsgid32.test
deleted file mode 100755
index 9b7a2bf..0000000
--- a/tests-m32/setfsgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-m32/setfsugid.c b/tests-m32/setfsugid.c
index 79ba34d..7484db5 100644
--- a/tests-m32/setfsugid.c
+++ b/tests-m32/setfsugid.c
@@ -2,6 +2,7 @@
  * Check decoding of setfsuid/setfsgid/setfsuid32/setfsgid32 syscalls.
  *
  * 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
@@ -47,7 +48,7 @@
 	const kernel_ulong_t tests[] = {
 		ugid,
 		0xffff0000U | ugid,
-		(kernel_ulong_t) 0xffffffff00000000ULL | ugid,
+		F8ILL_KULONG_MASK | ugid,
 		0xffffU,
 		-1U,
 		-1L,
diff --git a/tests-m32/setfsuid.gen.test b/tests-m32/setfsuid.gen.test
new file mode 100755
index 0000000..e4c4d20
--- /dev/null
+++ b/tests-m32/setfsuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-m32/setfsuid.test b/tests-m32/setfsuid.test
deleted file mode 100755
index 18a1021..0000000
--- a/tests-m32/setfsuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-m32/setfsuid32.gen.test b/tests-m32/setfsuid32.gen.test
new file mode 100755
index 0000000..b6cd67d
--- /dev/null
+++ b/tests-m32/setfsuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-m32/setfsuid32.test b/tests-m32/setfsuid32.test
deleted file mode 100755
index 2dce3cc..0000000
--- a/tests-m32/setfsuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-m32/setgid.gen.test b/tests-m32/setgid.gen.test
new file mode 100755
index 0000000..f10add6
--- /dev/null
+++ b/tests-m32/setgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/setgid.test b/tests-m32/setgid.test
deleted file mode 100755
index a3a9004..0000000
--- a/tests-m32/setgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-m32/setgid32.gen.test b/tests-m32/setgid32.gen.test
new file mode 100755
index 0000000..26f194e
--- /dev/null
+++ b/tests-m32/setgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-m32/setgid32.test b/tests-m32/setgid32.test
deleted file mode 100755
index 11a87e1..0000000
--- a/tests-m32/setgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-m32/setgroups.c b/tests-m32/setgroups.c
index 1ec8333..5645c22 100644
--- a/tests-m32/setgroups.c
+++ b/tests-m32/setgroups.c
@@ -2,6 +2,7 @@
  * Check decoding of setgroups/setgroups32 syscalls.
  *
  * 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
@@ -75,7 +76,7 @@
 	long rc = syscall(SYSCALL_NR, 0, 0);
 	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
 	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
 	rc = syscall(SYSCALL_NR, 1, 0);
@@ -91,7 +92,7 @@
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, -1, sprintrc(rc));
 
 	/* check how the second argument is decoded */
-	const GID_TYPE *const g1 = tail_alloc(sizeof(*g1));
+	TAIL_ALLOC_OBJECT_CONST_PTR(const GID_TYPE, g1);
 	GID_TYPE *const g2 = tail_alloc(sizeof(*g2) * 2);
 	GID_TYPE *const g3 = tail_alloc(sizeof(*g3) * 3);
 
@@ -164,9 +165,7 @@
 		printuid(g3[1]);
 		printf(", ...]) = %s\n", errstr);
 
-		const unsigned long size =
-			(unsigned long) 0xffffffff00000000ULL | ngroups_max;
-		rc = syscall(SYSCALL_NR, size, g3);
+		rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, g3);
 		errstr = sprintrc(rc);
 		printf("%s(%d, [", SYSCALL_NAME, ngroups_max);
 		printuid(g3[0]);
diff --git a/tests-m32/setgroups.gen.test b/tests-m32/setgroups.gen.test
new file mode 100755
index 0000000..01ec2e7
--- /dev/null
+++ b/tests-m32/setgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups -s2 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a17
diff --git a/tests-m32/setgroups.test b/tests-m32/setgroups.test
deleted file mode 100755
index 0dcc8f7..0000000
--- a/tests-m32/setgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a17
diff --git a/tests-m32/setgroups32.gen.test b/tests-m32/setgroups32.gen.test
new file mode 100755
index 0000000..e9e70ad
--- /dev/null
+++ b/tests-m32/setgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups32 -s2 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a19
diff --git a/tests-m32/setgroups32.test b/tests-m32/setgroups32.test
deleted file mode 100755
index ee4750d..0000000
--- a/tests-m32/setgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a19
diff --git a/tests-m32/sethostname.gen.test b/tests-m32/sethostname.gen.test
new file mode 100755
index 0000000..2827b1d
--- /dev/null
+++ b/tests-m32/sethostname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-m32/sethostname.test b/tests-m32/sethostname.test
deleted file mode 100755
index 78f8c58..0000000
--- a/tests-m32/sethostname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sethostname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-m32/setns.gen.test b/tests-m32/setns.gen.test
new file mode 100755
index 0000000..45fcc60
--- /dev/null
+++ b/tests-m32/setns.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-m32/setns.test b/tests-m32/setns.test
deleted file mode 100755
index e9a905a..0000000
--- a/tests-m32/setns.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-m32/setregid.gen.test b/tests-m32/setregid.gen.test
new file mode 100755
index 0000000..0125d7a
--- /dev/null
+++ b/tests-m32/setregid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-m32/setregid.test b/tests-m32/setregid.test
deleted file mode 100755
index 101c7bd..0000000
--- a/tests-m32/setregid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests-m32/setregid32.gen.test b/tests-m32/setregid32.gen.test
new file mode 100755
index 0000000..24f1505
--- /dev/null
+++ b/tests-m32/setregid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-m32/setregid32.test b/tests-m32/setregid32.test
deleted file mode 100755
index e57e66c..0000000
--- a/tests-m32/setregid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-m32/setresgid.gen.test b/tests-m32/setresgid.gen.test
new file mode 100755
index 0000000..ca5bc6b
--- /dev/null
+++ b/tests-m32/setresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-m32/setresgid.test b/tests-m32/setresgid.test
deleted file mode 100755
index 5a69574..0000000
--- a/tests-m32/setresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-m32/setresgid32.gen.test b/tests-m32/setresgid32.gen.test
new file mode 100755
index 0000000..a5edb90
--- /dev/null
+++ b/tests-m32/setresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-m32/setresgid32.test b/tests-m32/setresgid32.test
deleted file mode 100755
index 528b2c9..0000000
--- a/tests-m32/setresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-m32/setresuid.gen.test b/tests-m32/setresuid.gen.test
new file mode 100755
index 0000000..a6e0664
--- /dev/null
+++ b/tests-m32/setresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-m32/setresuid.test b/tests-m32/setresuid.test
deleted file mode 100755
index f1219e0..0000000
--- a/tests-m32/setresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-m32/setresuid32.gen.test b/tests-m32/setresuid32.gen.test
new file mode 100755
index 0000000..3fbf36b
--- /dev/null
+++ b/tests-m32/setresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-m32/setresuid32.test b/tests-m32/setresuid32.test
deleted file mode 100755
index 942a3a6..0000000
--- a/tests-m32/setresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-m32/setreuid.gen.test b/tests-m32/setreuid.gen.test
new file mode 100755
index 0000000..4c3dc93
--- /dev/null
+++ b/tests-m32/setreuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-m32/setreuid.test b/tests-m32/setreuid.test
deleted file mode 100755
index b6db3c1..0000000
--- a/tests-m32/setreuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests-m32/setreuid32.gen.test b/tests-m32/setreuid32.gen.test
new file mode 100755
index 0000000..d179053
--- /dev/null
+++ b/tests-m32/setreuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-m32/setreuid32.test b/tests-m32/setreuid32.test
deleted file mode 100755
index 23323d4..0000000
--- a/tests-m32/setreuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-m32/setrlimit.gen.test b/tests-m32/setrlimit.gen.test
new file mode 100755
index 0000000..dfe2da3
--- /dev/null
+++ b/tests-m32/setrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-m32/setrlimit.test b/tests-m32/setrlimit.test
deleted file mode 100755
index 7920608..0000000
--- a/tests-m32/setrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit/ugetrlimit/setrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-m32/setuid.gen.test b/tests-m32/setuid.gen.test
new file mode 100755
index 0000000..98d470f
--- /dev/null
+++ b/tests-m32/setuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/setuid.test b/tests-m32/setuid.test
deleted file mode 100755
index 9279233..0000000
--- a/tests-m32/setuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-m32/setuid32.gen.test b/tests-m32/setuid32.gen.test
new file mode 100755
index 0000000..7d15495
--- /dev/null
+++ b/tests-m32/setuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-m32/setuid32.test b/tests-m32/setuid32.test
deleted file mode 100755
index 7998392..0000000
--- a/tests-m32/setuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-m32/shmxt.gen.test b/tests-m32/shmxt.gen.test
new file mode 100755
index 0000000..dd9d35f
--- /dev/null
+++ b/tests-m32/shmxt.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shmxt -a11 -e trace='/(osf_)?shmat,shmdt'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace='/(osf_)?shmat,shmdt'
diff --git a/tests-m32/shmxt.test b/tests-m32/shmxt.test
deleted file mode 100755
index 3757cfa..0000000
--- a/tests-m32/shmxt.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check shmat and shmdt syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-case "$STRACE_ARCH" in
-	alpha) shmat=osf_shmat ;;
-	*) shmat=shmat ;;
-esac
-
-run_strace_match_diff -e trace=$shmat,shmdt -a11
diff --git a/tests-m32/shutdown.gen.test b/tests-m32/shutdown.gen.test
new file mode 100755
index 0000000..3412513
--- /dev/null
+++ b/tests-m32/shutdown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-m32/shutdown.test b/tests-m32/shutdown.test
deleted file mode 100755
index 22f0d5a..0000000
--- a/tests-m32/shutdown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of shutdown syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-m32/siginfo.gen.test b/tests-m32/siginfo.gen.test
new file mode 100755
index 0000000..33792b9
--- /dev/null
+++ b/tests-m32/siginfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (siginfo -e trace=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=none
diff --git a/tests-m32/siginfo.test b/tests-m32/siginfo.test
deleted file mode 100755
index 725f714..0000000
--- a/tests-m32/siginfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check SIGCHLD siginfo_t decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=none
diff --git a/tests-m32/signal_receive.gen.test b/tests-m32/signal_receive.gen.test
new file mode 100755
index 0000000..79e8fb8
--- /dev/null
+++ b/tests-m32/signal_receive.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signal_receive -a16 -e trace=kill); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -e trace=kill
diff --git a/tests-m32/signal_receive.test b/tests-m32/signal_receive.test
deleted file mode 100755
index 9685b66..0000000
--- a/tests-m32/signal_receive.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check whether strace traces signals properly.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16 -e trace=kill
diff --git a/tests-m32/signalfd4.c b/tests-m32/signalfd4.c
index 47e49b5..4391b92 100644
--- a/tests-m32/signalfd4.c
+++ b/tests-m32/signalfd4.c
@@ -2,6 +2,7 @@
  * Check decoding of signalfd4 syscall.
  *
  * Copyright (c) 2015-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
@@ -31,8 +32,7 @@
 #include <fcntl.h>
 #include <asm/unistd.h>
 
-#if defined __NR_rt_sigprocmask \
- && defined HAVE_SYS_SIGNALFD_H \
+#if defined HAVE_SYS_SIGNALFD_H \
  && defined HAVE_SIGNALFD \
  && defined O_CLOEXEC
 
@@ -41,24 +41,6 @@
 # include <unistd.h>
 # include <sys/signalfd.h>
 
-static unsigned int
-get_sigset_size(void)
-{
-	const unsigned int big_size = 1024 / 8;
-	unsigned int set_size;
-
-	for (set_size = big_size; set_size; set_size >>= 1) {
-		if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
-			     NULL, NULL, set_size))
-			break;
-	}
-
-	if (!set_size)
-		perror_msg_and_fail("rt_sigprocmask");
-
-	return set_size;
-}
-
 int
 main(void)
 {
@@ -80,7 +62,6 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask && HAVE_SYS_SIGNALFD_H"
-		    " && HAVE_SIGNALFD && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
 
 #endif
diff --git a/tests-m32/signalfd4.gen.test b/tests-m32/signalfd4.gen.test
new file mode 100755
index 0000000..e91a9fe
--- /dev/null
+++ b/tests-m32/signalfd4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/signalfd4.test b/tests-m32/signalfd4.test
deleted file mode 100755
index a615a5b..0000000
--- a/tests-m32/signalfd4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of signalfd4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/sigreturn.c b/tests-m32/sigreturn.c
index dace040..ff9a59f 100644
--- a/tests-m32/sigreturn.c
+++ b/tests-m32/sigreturn.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,23 +26,38 @@
  */
 
 #include "tests.h"
-#include <stdlib.h>
-#include <signal.h>
+#include <asm/unistd.h>
 
-#ifdef ASM_SIGRTMIN
-# define RT_0 ASM_SIGRTMIN
-#else
-/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
-# define RT_0 32
+#if defined __powerpc64__ \
+ || (defined __sparc__ && defined __arch64__)
+/* Old sigreturn is defined but not implemented in the kernel. */
+# undef __NR_sigreturn
 #endif
 
-static void handler(int sig)
+#ifdef __NR_sigreturn
+
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+
+# ifdef ASM_SIGRTMIN
+#  define RT_0 ASM_SIGRTMIN
+# else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+#  define RT_0 32
+# endif
+
+static void
+handler(int sig)
 {
 }
 
-int main(void) {
-	sigset_t set;
+int
+main(void)
+{
+	static sigset_t set;
 	sigemptyset(&set);
+	sigaddset(&set, SIGINT);
 	sigaddset(&set, SIGUSR2);
 	sigaddset(&set, SIGCHLD);
 	sigaddset(&set, RT_0 +  3);
@@ -50,8 +65,28 @@
 	sigaddset(&set, RT_0 +  5);
 	sigaddset(&set, RT_0 + 26);
 	sigaddset(&set, RT_0 + 27);
-	sigprocmask(SIG_SETMASK, &set, NULL);
-	signal(SIGUSR1, handler);
-	raise(SIGUSR1);
+	if (sigprocmask(SIG_SETMASK, &set, NULL))
+		perror_msg_and_fail("sigprocmask");
+	sigemptyset(&set);
+
+	/* This should result to old sigreturn. */
+	if (signal(SIGUSR1, handler) == SIG_ERR)
+		perror_msg_and_fail("sigaction");
+
+	if (raise(SIGUSR1))
+		perror_msg_and_fail("raise");
+
+	static const char *const sigs =
+		(SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+	static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+	printf("sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigreturn")
+
+#endif
diff --git a/tests-m32/sigreturn.gen.test b/tests-m32/sigreturn.gen.test
new file mode 100755
index 0000000..f317e89
--- /dev/null
+++ b/tests-m32/sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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'
diff --git a/tests-m32/sigreturn.test b/tests-m32/sigreturn.test
deleted file mode 100755
index f9a612b..0000000
--- a/tests-m32/sigreturn.test
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-#
-# Check rt_sigprocmask and sigreturn/rt_sigreturn decoding.
-#
-# Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -esignal $args
-
-mask='\[(USR2 CHLD|CHLD USR2) RT_3 RT_4 RT_5 RT_26 RT_27\]'
-rt_sigprocmask='rt_sigprocmask\(SIG_SETMASK, '"$mask"', NULL, [[:digit:]]+\) += 0'
-osf_sigprocmask='osf_sigprocmask\(SIG_SETMASK, '"$mask"'\) += 0 +\(old mask \[[^]]*\]\)'
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
-$rt_sigprocmask|$osf_sigprocmask
-(rt_)?sigreturn\\((\\{mask=$mask\\})?\\) += 0
-__EOF__
-
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
diff --git a/tests-m32/sigsuspend.c b/tests-m32/sigsuspend.c
new file mode 100644
index 0000000..dac6890
--- /dev/null
+++ b/tests-m32/sigsuspend.c
@@ -0,0 +1,117 @@
+/*
+ * Check decoding of sigsuspend syscall.
+ *
+ * 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 <asm/unistd.h>
+
+#ifdef __NR_sigsuspend
+
+# include <assert.h>
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+# ifdef MIPS
+#  define SIGNAL_MASK_BY_REF 1
+# else
+#  define SIGNAL_MASK_BY_REF 0
+# endif
+
+static long
+k_sigsuspend(const kernel_ulong_t arg1,
+	     const kernel_ulong_t arg2,
+	     const kernel_ulong_t arg3)
+{
+	return syscall(__NR_sigsuspend, arg1, arg2, arg3);
+}
+
+static int signo;
+static const char *sigtxt[] = {
+	[SIGUSR1] = "USR1",
+	[SIGUSR2] = "USR2"
+};
+
+static void
+handler(int i)
+{
+	signo = i;
+}
+
+int
+main(void)
+{
+	union {
+		sigset_t libc_mask;
+		unsigned long old_mask;
+	} u;
+
+	sigemptyset(&u.libc_mask);
+	sigaddset(&u.libc_mask, SIGUSR1);
+	sigaddset(&u.libc_mask, SIGUSR2);
+	if (sigprocmask(SIG_SETMASK, &u.libc_mask, NULL))
+		perror_msg_and_fail("sigprocmask");
+
+	const struct sigaction sa = { .sa_handler = handler };
+	if (sigaction(SIGUSR1, &sa, NULL) || sigaction(SIGUSR2, &sa, NULL))
+		perror_msg_and_fail("sigaction");
+
+	raise(SIGUSR1);
+	raise(SIGUSR2);
+
+	u.old_mask = -1UL;
+	sigdelset(&u.libc_mask, SIGUSR1);
+	const unsigned long mask1 = u.old_mask;
+
+	u.old_mask = -1UL;
+	sigdelset(&u.libc_mask, SIGUSR2);
+	const unsigned long mask2 = u.old_mask;
+
+#if SIGNAL_MASK_BY_REF
+	k_sigsuspend((uintptr_t) &mask1, 0xdeadbeef, (uintptr_t) &mask2);
+#else
+	k_sigsuspend(mask1, 0xdeadbeef, mask2);
+#endif
+	if (EINTR != errno)
+		perror_msg_and_skip("sigsuspend");
+
+	printf("sigsuspend(~[%s]) = ? ERESTARTNOHAND"
+	       " (To be restarted if no handler)\n", sigtxt[signo]);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigsuspend")
+
+#endif
diff --git a/tests-m32/sigsuspend.gen.test b/tests-m32/sigsuspend.gen.test
new file mode 100755
index 0000000..afd0207
--- /dev/null
+++ b/tests-m32/sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigsuspend -a19 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -esignal=none
diff --git a/tests-m32/skip_unavailable.c b/tests-m32/skip_unavailable.c
new file mode 100644
index 0000000..074fc3a
--- /dev/null
+++ b/tests-m32/skip_unavailable.c
@@ -0,0 +1,13 @@
+#include "tests.h"
+
+#include <sys/stat.h>
+#include <unistd.h>
+
+void
+skip_if_unavailable(const char *const path)
+{
+	struct stat st;
+
+	if (stat(path, &st))
+		perror_msg_and_skip("stat: %s", path);
+}
diff --git a/tests-m32/socketcall.gen.test b/tests-m32/socketcall.gen.test
new file mode 100755
index 0000000..95c45fd
--- /dev/null
+++ b/tests-m32/socketcall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-m32/socketcall.test b/tests-m32/socketcall.test
deleted file mode 100755
index 959bc83..0000000
--- a/tests-m32/socketcall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of socketcall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-m32/sockname.c b/tests-m32/sockname.c
index c5072ca..9bab8ed 100644
--- a/tests-m32/sockname.c
+++ b/tests-m32/sockname.c
@@ -2,6 +2,7 @@
  * Check decoding of sockname family syscalls.
  *
  * 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
@@ -74,7 +75,7 @@
 static void
 test_sockname_syscall(const int fd)
 {
-	socklen_t *const plen = tail_alloc(sizeof(*plen));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
 	*plen = sizeof(struct sockaddr_un);
 	struct sockaddr_un *addr = tail_alloc(*plen);
 
diff --git a/tests-m32/splice.c b/tests-m32/splice.c
index b6f2525..cf07c80 100644
--- a/tests-m32/splice.c
+++ b/tests-m32/splice.c
@@ -2,6 +2,7 @@
  * This file is part of splice strace test.
  *
  * 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
@@ -40,8 +41,8 @@
 {
 	const long int fd_in = (long int) 0xdeadbeefffffffffULL;
 	const long int fd_out = (long int) 0xdeadbeeffffffffeULL;
-	long long int *const off_in = tail_alloc(sizeof(*off_in));
-	long long int *const off_out = tail_alloc(sizeof(*off_out));
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
 	*off_in = 0xdeadbef1facefed1ULL;
 	*off_out = 0xdeadbef2facefed2ULL;
 	const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests-m32/splice.gen.test b/tests-m32/splice.gen.test
new file mode 100755
index 0000000..83c8406
--- /dev/null
+++ b/tests-m32/splice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/splice.test b/tests-m32/splice.test
deleted file mode 100755
index cc5c327..0000000
--- a/tests-m32/splice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check splice syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/stat.c b/tests-m32/stat.c
index d4ca7b0..79e9175 100644
--- a/tests-m32/stat.c
+++ b/tests-m32/stat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/stat.gen.test b/tests-m32/stat.gen.test
new file mode 100755
index 0000000..13ccd0b
--- /dev/null
+++ b/tests-m32/stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/stat.test b/tests-m32/stat.test
deleted file mode 100755
index ba8938c..0000000
--- a/tests-m32/stat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/stat64.c b/tests-m32/stat64.c
index 782de33..74927de 100644
--- a/tests-m32/stat64.c
+++ b/tests-m32/stat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-m32/stat64.gen.test b/tests-m32/stat64.gen.test
new file mode 100755
index 0000000..f49df37
--- /dev/null
+++ b/tests-m32/stat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/stat64.test b/tests-m32/stat64.test
deleted file mode 100755
index abcfb9e..0000000
--- a/tests-m32/stat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-m32/statfs.expected b/tests-m32/statfs.expected
deleted file mode 100644
index 11e9f0b..0000000
--- a/tests-m32/statfs.expected
+++ /dev/null
@@ -1 +0,0 @@
-statfs(64)?\("/proc/self/status"(, [1-9][0-9]*)?, \{f_type=PROC_SUPER_MAGIC, f_bsize=[1-9][0-9]*, f_blocks=[0-9]+, f_bfree=[0-9]+, f_bavail=[0-9]+, f_files=[0-9]+, f_ffree=[0-9]+, f_fsid=\{val=\[[0-9]+, [0-9]+\]\}, f_namelen=[1-9][0-9]*(, f_frsize=[0-9]+)?(, f_flags=ST_VALID(\|ST_[A-Z]+)*)?\}\) += 0
diff --git a/tests-m32/statfs.gen.test b/tests-m32/statfs.gen.test
new file mode 100755
index 0000000..19b26dd
--- /dev/null
+++ b/tests-m32/statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-m32/statfs.test b/tests-m32/statfs.test
deleted file mode 100755
index 6075576..0000000
--- a/tests-m32/statfs.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check statfs syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# this test probes /proc/self/status
-[ -f /proc/self/status ] ||
-	framework_skip_ '/proc/self/status is not available'
-
-run_strace_match_diff -a17
diff --git a/tests-m32/statfs64.gen.test b/tests-m32/statfs64.gen.test
new file mode 100755
index 0000000..66409f9
--- /dev/null
+++ b/tests-m32/statfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23
diff --git a/tests-m32/statfs64.test b/tests-m32/statfs64.test
deleted file mode 100755
index 9c0aa27..0000000
--- a/tests-m32/statfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check statfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests-m32/statx.c b/tests-m32/statx.c
new file mode 100644
index 0000000..f36fb0e
--- /dev/null
+++ b/tests-m32/statx.c
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_statx
+
+# include <linux/stat.h>
+# include "xlat.h"
+# include "xlat/statx_masks.h"
+# include "xlat/statx_attrs.h"
+# include "xlat/at_statx_sync_types.h"
+
+# define IS_STATX 1
+# define TEST_SYSCALL_STR "statx"
+# define STRUCT_STAT struct statx
+# define STRUCT_STAT_STR "struct statx"
+# define STRUCT_STAT_IS_STAT64 0
+
+static unsigned    TEST_SYSCALL_STATX_FLAGS     = AT_STATX_SYNC_AS_STAT;
+static const char *TEST_SYSCALL_STATX_FLAGS_STR = "AT_STATX_SYNC_AS_STAT";
+static unsigned    TEST_SYSCALL_STATX_MASK      = STATX_ALL;
+static const char *TEST_SYSCALL_STATX_MASK_STR  = "STATX_ALL";
+
+# define TEST_SYSCALL_INVOKE(sample, pst) \
+	syscall(__NR_statx, AT_FDCWD, sample, TEST_SYSCALL_STATX_FLAGS, \
+	        TEST_SYSCALL_STATX_MASK, pst)
+# define PRINT_SYSCALL_HEADER(sample) \
+	do { \
+		int saved_errno = errno; \
+		printf("%s(AT_FDCWD, \"%s\", %s, %s, ", \
+		       TEST_SYSCALL_STR, sample, TEST_SYSCALL_STATX_FLAGS_STR, \
+		       TEST_SYSCALL_STATX_MASK_STR)
+# define PRINT_SYSCALL_FOOTER(rc) \
+		errno = saved_errno; \
+		printf(") = %s\n", sprintrc(rc)); \
+	} while (0)
+
+# include "xstatx.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_statx")
+
+#endif
diff --git a/tests-m32/statx.gen.test b/tests-m32/statx.gen.test
new file mode 100755
index 0000000..bff3e3f
--- /dev/null
+++ b/tests-m32/statx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-m32/statx.sh b/tests-m32/statx.sh
deleted file mode 100755
index a630193..0000000
--- a/tests-m32/statx.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of stat family syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -P $NAME.sample -P /dev/full -a32
diff --git a/tests-m32/strace-C.test b/tests-m32/strace-C.test
index ccca9a0..359ddbd 100755
--- a/tests-m32/strace-C.test
+++ b/tests-m32/strace-C.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -a24 -C -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -C -enanosleep ../sleep 1
 match_grep
diff --git a/tests-m32/strace-E.expected b/tests-m32/strace-E.expected
index d7823b7..3ae2c28 100644
--- a/tests-m32/strace-E.expected
+++ b/tests-m32/strace-E.expected
@@ -1 +1 @@
-execve\("\./sleep", \["\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
diff --git a/tests-m32/strace-E.test b/tests-m32/strace-E.test
index d76ec3f..843f27a 100755
--- a/tests-m32/strace-E.test
+++ b/tests-m32/strace-E.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0 > /dev/null
+run_prog ../sleep 0 > /dev/null
 run_strace -E option_E_var=OPTION_E_VAL -v $args
 match_grep
diff --git a/tests-m32/strace-S.test b/tests-m32/strace-S.test
index 3ea315c..64e4a41 100755
--- a/tests-m32/strace-S.test
+++ b/tests-m32/strace-S.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./readv > /dev/null
+run_prog ../readv > /dev/null
 
 test_c()
 {
@@ -13,7 +13,7 @@
 	sortopts="$1"; shift
 	sedexpr="$1"; shift
 
-	run_strace -c -w -S "$sortby" ./readv > /dev/null
+	run_strace -c -w -S "$sortby" ../readv > /dev/null
 	sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
 
 	[ -s "$OUT" ] ||
@@ -28,5 +28,3 @@
 c='[[:space:]]+([^[:space:]]+)'
 test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
 test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
-
-rm -f "$OUT"
diff --git a/tests-m32/strace-T.test b/tests-m32/strace-T.test
index 7ab84a7..a6dac4e 100755
--- a/tests-m32/strace-T.test
+++ b/tests-m32/strace-T.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -a24 -T -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -T -enanosleep ../sleep 1
 match_grep
diff --git a/tests-m32/strace-V.test b/tests-m32/strace-V.test
index 9a051e0..d5c3ac0 100755
--- a/tests-m32/strace-V.test
+++ b/tests-m32/strace-V.test
@@ -10,15 +10,22 @@
 
 getval()
 {
-	sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' ../config.h
+	sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
+		../../config.h
+}
+
+config_year=$(getval COPYRIGHT_YEAR)
+
+[ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || {
+	echo >&2 "The year derived from config.h (${config_year}) does not pass sanity checks."
+	exit 1
 }
 
 cat > "$EXP" << __EOF__
 $(getval PACKAGE_NAME) -- version $(getval PACKAGE_VERSION)
-Copyright (C) 1991-$year The strace developers <$(getval PACKAGE_URL)>.
+Copyright (C) 1991-${config_year} The strace developers <$(getval PACKAGE_URL)>.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 __EOF__
 
-match_diff "$EXP" "$LOG"
-rm -f "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-m32/strace-ff.test b/tests-m32/strace-ff.test
index 2ce06f1..7107527 100755
--- a/tests-m32/strace-ff.test
+++ b/tests-m32/strace-ff.test
@@ -7,7 +7,7 @@
 run_prog_skip_if_failed \
 	kill -0 $$
 
-./set_ptracer_any ./sleep 1 > "$OUT" &
+../set_ptracer_any ../sleep 1 > "$OUT" &
 tracee_pid=$!
 
 while ! [ -s "$OUT" ]; do
@@ -15,7 +15,6 @@
 		fail_ 'set_ptracer_any sleep failed'
 done
 
-rm -f "$LOG".*
 run_strace -a14 -eexit_group -ff -p $tracee_pid
 
 # check that output matches
@@ -25,5 +24,3 @@
 set -- "$LOG".*
 [ "$LOG.$tracee_pid" = "$*" ] ||
 	fail_ "too many output files: $*"
-
-rm -f "$OUT" "$LOG.$tracee_pid"
diff --git a/tests-m32/strace-k.test b/tests-m32/strace-k.test
index d5e8ed2..e68951e 100755
--- a/tests-m32/strace-k.test
+++ b/tests-m32/strace-k.test
@@ -4,6 +4,7 @@
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,7 +38,7 @@
 check_prog sed
 check_prog tr
 
-run_prog ./stack-fcall
+run_prog ../stack-fcall
 run_strace -e getpid -k $args
 
 expected='getpid f3 f2 f1 f0 main '
diff --git a/tests-m32/strace-r.expected b/tests-m32/strace-r.expected
index 8009c35..2a5b977 100644
--- a/tests-m32/strace-r.expected
+++ b/tests-m32/strace-r.expected
@@ -1,2 +1,2 @@
-[ ]{5}0\.0{6} execve\("\./sleep", \["\./sleep", "1"\], \[/\* [[:digit:]]+ vars \*/\]\) = 0
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
 [ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-m32/strace-r.test b/tests-m32/strace-r.test
index 4ba01f1..00649b5 100755
--- a/tests-m32/strace-r.test
+++ b/tests-m32/strace-r.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -r -eexecve ./sleep 1
+run_prog ../sleep 0
+run_strace -r -eexecve ../sleep 1
 match_grep
diff --git a/tests-m32/strace-t.test b/tests-m32/strace-t.test
index 1d213e6..38070f3 100755
--- a/tests-m32/strace-t.test
+++ b/tests-m32/strace-t.test
@@ -5,16 +5,14 @@
 . "${srcdir=.}/init.sh"
 
 run_prog_skip_if_failed date +%T > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 t0="$(date +%T)"
 run_strace -t -eexecve $args
 t1="$(date +%T)"
 
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
-($t0|$t1) execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+cat > "$EXP" << __EOF__
+($t0|$t1) execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+match_grep "$LOG" "$EXP"
diff --git a/tests-m32/strace-tt.test b/tests-m32/strace-tt.test
index 3f80001..3285655 100755
--- a/tests-m32/strace-tt.test
+++ b/tests-m32/strace-tt.test
@@ -6,7 +6,7 @@
 
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 s0="$(date +%s)"
 run_strace -tt -eexecve $args
@@ -21,8 +21,7 @@
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-m32/strace-ttt.test b/tests-m32/strace-ttt.test
index 4439715..7d4435b 100755
--- a/tests-m32/strace-ttt.test
+++ b/tests-m32/strace-ttt.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog_skip_if_failed date +%s > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 s0="$(date +%s)"
 run_strace -ttt -eexecve $args
@@ -19,8 +19,7 @@
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-m32/struct_flock.c b/tests-m32/struct_flock.c
index 34cf58e..428c038 100644
--- a/tests-m32/struct_flock.c
+++ b/tests-m32/struct_flock.c
@@ -1,5 +1,6 @@
 /*
  * 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,7 +33,6 @@
 #include "flock.h"
 
 #define FILE_LEN 4096
-#define EINVAL_STR "-1 EINVAL (Invalid argument)"
 
 #define TEST_FLOCK_EINVAL(cmd) test_flock_einval(cmd, #cmd)
 
@@ -45,9 +45,10 @@
 static long
 invoke_test_syscall(const unsigned int cmd, void *const p)
 {
-	const unsigned long op = (unsigned long) 0xffffffff00000000ULL | cmd;
+	const kernel_ulong_t fd = F8ILL_KULONG_MASK;
+	const kernel_ulong_t op = F8ILL_KULONG_MASK | cmd;
 
-	return syscall(TEST_SYSCALL_NR, 0, op, (unsigned long) p);
+	return syscall(TEST_SYSCALL_NR, fd, op, (unsigned long) p);
 }
 
 static void
@@ -58,10 +59,10 @@
 		.l_start = (TYPEOF_FLOCK_OFF_T) 0xdefaced1facefeedULL,
 		.l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
-	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
 }
 
 static void
@@ -77,7 +78,7 @@
 	long rc = invoke_test_syscall(F_SETLK, &fl);
 	printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=0, l_len=%d}) = %s\n",
-	       TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+	       TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
 	if (rc)
 		return;
 
diff --git a/tests-m32/sun_path.test b/tests-m32/sun_path.test
index 728328a..f0b7a02 100755
--- a/tests-m32/sun_path.test
+++ b/tests-m32/sun_path.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
+run_prog ../net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
 run_strace_merge -ebind,connect,getsockname $args
 match_grep
 
diff --git a/tests-m32/swap.gen.test b/tests-m32/swap.gen.test
new file mode 100755
index 0000000..4ca7891
--- /dev/null
+++ b/tests-m32/swap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (swap -a23 -e trace=swapon,swapoff); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests-m32/swap.test b/tests-m32/swap.test
deleted file mode 100755
index a30e1fd..0000000
--- a/tests-m32/swap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check swapon and swapoff syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests-m32/sxetmask.c b/tests-m32/sxetmask.c
new file mode 100644
index 0000000..0ede9ad
--- /dev/null
+++ b/tests-m32/sxetmask.c
@@ -0,0 +1,124 @@
+/*
+ * Check decoding of sgetmask and ssetmask syscalls.
+ *
+ * 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 <asm/unistd.h>
+
+#if defined __NR_sgetmask && defined __NR_ssetmask
+
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+static long
+k_sgetmask(void)
+{
+	return syscall(__NR_sgetmask);
+}
+
+static long
+k_ssetmask(const kernel_ulong_t arg)
+{
+	return syscall(__NR_ssetmask, arg);
+}
+
+int
+main(void)
+{
+	union {
+		sigset_t libc_mask;
+		unsigned long old_mask;
+	} uset, uget;
+	long rc;
+
+	/*
+	 * Block, reset, and raise SIGUSR1.
+	 * If a subsequent ssetmask call fails to set the proper mask,
+	 * the process will be terminated by SIGUSR1.
+	 */
+	sigemptyset(&uset.libc_mask);
+	sigaddset(&uset.libc_mask, SIGUSR1);
+	if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+		perror_msg_and_fail("sigprocmask");
+	if (signal(SIGUSR1, SIG_DFL) == SIG_ERR)
+		perror_msg_and_fail("signal");
+	raise(SIGUSR1);
+
+	sigaddset(&uset.libc_mask, SIGUSR2);
+	rc = k_ssetmask((kernel_ulong_t) 0xfacefeed00000000ULL | uset.old_mask);
+	if (rc == -1L) {
+		printf("ssetmask([USR1 USR2]) = %s\n", sprintrc(rc));
+	} else {
+		printf("ssetmask([USR1 USR2]) = %#lx (old mask [USR1])\n", rc);
+		/*
+		 * Use a regular sigprocmask call to check the value
+		 * returned by the ssetmask call being tested.
+		 */
+		if (sigprocmask(SIG_SETMASK, NULL, &uget.libc_mask))
+			perror_msg_and_fail("sigprocmask");
+		if (uset.old_mask != uget.old_mask)
+			error_msg_and_fail("sigprocmask returned %#lx"
+					   " instead of %#lx",
+					   uget.old_mask, uset.old_mask);
+	}
+
+	rc = k_sgetmask();
+	if (rc == -1L) {
+		printf("sgetmask() = %s\n", sprintrc(rc));
+	} else {
+		printf("sgetmask() = %#lx (mask [USR1 USR2])\n", rc);
+		if (uget.old_mask != (unsigned long) rc)
+			error_msg_and_fail("sigprocmask returned %#lx",
+					   uget.old_mask);
+
+		if (sizeof(long) > 4) {
+			sigaddset(&uset.libc_mask, 32 + 27);
+			if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+				perror_msg_and_fail("sigprocmask");
+			rc = k_sgetmask();
+			printf("sgetmask() = %#lx"
+			       " (mask [USR1 USR2 RT_27])\n", rc);
+			if (uset.old_mask != (unsigned long) rc)
+				error_msg_and_fail("sigprocmask set %#lx",
+						   uset.old_mask);
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sgetmask && __NR_ssetmask")
+
+#endif
diff --git a/tests-m32/sxetmask.gen.test b/tests-m32/sxetmask.gen.test
new file mode 100755
index 0000000..fea9e4a
--- /dev/null
+++ b/tests-m32/sxetmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sxetmask -a11 -e trace=sgetmask,ssetmask); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=sgetmask,ssetmask
diff --git a/tests-m32/symlink.c b/tests-m32/symlink.c
index 72cb490..3e01cf2 100644
--- a/tests-m32/symlink.c
+++ b/tests-m32/symlink.c
@@ -7,14 +7,12 @@
 # include <unistd.h>
 
 int
-main(void)
+main(int ac, char **av)
 {
-	static const char sample_1[] = "symlink_new";
-	static const char sample_2[] = "symlink";
+	static const char sample[] = "symlink.sample";
 
-	long rc = syscall(__NR_symlink, sample_1, sample_2);
-	printf("symlink(\"%s\", \"%s\") = %ld %s (%m)\n",
-	       sample_1, sample_2, rc, errno2name());
+	long rc = syscall(__NR_symlink, sample, av[0]);
+	printf("symlink(\"%s\", \"%s\") = %s\n", sample, av[0], sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/symlink.gen.test b/tests-m32/symlink.gen.test
new file mode 100755
index 0000000..f41668c
--- /dev/null
+++ b/tests-m32/symlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34
diff --git a/tests-m32/symlink.test b/tests-m32/symlink.test
deleted file mode 100755
index 79b93ba..0000000
--- a/tests-m32/symlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
diff --git a/tests-m32/symlinkat.gen.test b/tests-m32/symlinkat.gen.test
new file mode 100755
index 0000000..39e624a
--- /dev/null
+++ b/tests-m32/symlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/symlinkat.test b/tests-m32/symlinkat.test
deleted file mode 100755
index d8501ff..0000000
--- a/tests-m32/symlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/sync.gen.test b/tests-m32/sync.gen.test
new file mode 100755
index 0000000..4aaf8c7
--- /dev/null
+++ b/tests-m32/sync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a7
diff --git a/tests-m32/sync.test b/tests-m32/sync.test
deleted file mode 100755
index f6bf6c8..0000000
--- a/tests-m32/sync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a7
diff --git a/tests-m32/sync_file_range.gen.test b/tests-m32/sync_file_range.gen.test
new file mode 100755
index 0000000..0693c12
--- /dev/null
+++ b/tests-m32/sync_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/sync_file_range.test b/tests-m32/sync_file_range.test
deleted file mode 100755
index 6aa86d6..0000000
--- a/tests-m32/sync_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/sync_file_range2.gen.test b/tests-m32/sync_file_range2.gen.test
new file mode 100755
index 0000000..23046b6
--- /dev/null
+++ b/tests-m32/sync_file_range2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/sync_file_range2.test b/tests-m32/sync_file_range2.test
deleted file mode 100755
index 0d9945e..0000000
--- a/tests-m32/sync_file_range2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/sysinfo.c b/tests-m32/sysinfo.c
index 377bdc9..b4b348c 100644
--- a/tests-m32/sysinfo.c
+++ b/tests-m32/sysinfo.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
@@ -38,7 +39,7 @@
 	sysinfo(NULL);
 	printf("sysinfo(NULL) = -1 EFAULT (%m)\n");
 
-	struct sysinfo * const si = tail_alloc(sizeof(*si));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sysinfo, si);
 
 	if (sysinfo(si))
 		perror_msg_and_skip("sysinfo");
diff --git a/tests-m32/sysinfo.gen.test b/tests-m32/sysinfo.gen.test
new file mode 100755
index 0000000..e6469d5
--- /dev/null
+++ b/tests-m32/sysinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-m32/sysinfo.test b/tests-m32/sysinfo.test
deleted file mode 100755
index 806d8b6..0000000
--- a/tests-m32/sysinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sysinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-m32/syslog.gen.test b/tests-m32/syslog.gen.test
new file mode 100755
index 0000000..5423d5b
--- /dev/null
+++ b/tests-m32/syslog.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-m32/syslog.test b/tests-m32/syslog.test
deleted file mode 100755
index 1c2158e..0000000
--- a/tests-m32/syslog.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check syslog syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-m32/tee.gen.test b/tests-m32/tee.gen.test
new file mode 100755
index 0000000..2a87fae
--- /dev/null
+++ b/tests-m32/tee.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/tee.test b/tests-m32/tee.test
deleted file mode 100755
index 76b6000..0000000
--- a/tests-m32/tee.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check tee syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/tests.h b/tests-m32/tests.h
index d4294de..dcc1057 100644
--- a/tests-m32/tests.h
+++ b/tests-m32/tests.h
@@ -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
@@ -44,6 +45,9 @@
 /* Cached sysconf(_SC_PAGESIZE). */
 size_t get_page_size(void);
 
+/* The size of kernel's sigset_t. */
+unsigned int get_sigset_size(void);
+
 /* Print message and strerror(errno) to stderr, then exit(1). */
 void perror_msg_and_fail(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
@@ -57,6 +61,9 @@
 void perror_msg_and_skip(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
 
+/* Stat the specified file and skip the test if the stat call failed. */
+void skip_if_unavailable(const char *);
+
 /*
  * Allocate memory that ends on the page boundary.
  * Pages allocated by this call are preceeded by an unmapped page
@@ -69,6 +76,22 @@
 	ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((2));
 
 /*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified constant pointer.
+ */
+#define TAIL_ALLOC_OBJECT_CONST_PTR(type_name, type_ptr)	\
+	type_name *const type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified variable pointer.
+ */
+#define TAIL_ALLOC_OBJECT_VAR_PTR(type_name, type_ptr)		\
+	type_name *type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
  * Fill memory (pointed by ptr, having size bytes) with different bytes (with
  * values starting with start and resetting every period) in order to catch
  * sign, byte order and/or alignment errors.
@@ -100,6 +123,12 @@
 /* Print memory in a quoted form. */
 void print_quoted_memory(const char *, size_t);
 
+/* Print time_t and nanoseconds in symbolic format. */
+void print_time_t_nsec(time_t, unsigned long long, int);
+
+/* Print time_t and microseconds in symbolic format. */
+void print_time_t_usec(time_t, unsigned long long, int);
+
 /* Read an int from the file. */
 int read_int_from_file(const char *, int *);
 
diff --git a/tests-m32/threads-execve.c b/tests-m32/threads-execve.c
index 853645f..4eb334f 100644
--- a/tests-m32/threads-execve.c
+++ b/tests-m32/threads-execve.c
@@ -2,6 +2,7 @@
  * Check decoding of threads when a non-leader thread invokes execve.
  *
  * 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
@@ -136,25 +137,25 @@
 	switch (action % NUMBER_OF_ACTIONS) {
 		case ACTION_exit:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <pid changed to %u ...>\n",
+			       ", %p /* %u vars */ <pid changed to %u ...>\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ), leader);
+			       environ, arglen(environ), leader);
 			break;
 		case ACTION_rt_sigsuspend:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <unfinished ...>\n"
+			       ", %p /* %u vars */ <unfinished ...>\n"
 			       "%-5d <... rt_sigsuspend resumed>) = ?\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ),
+			       environ, arglen(environ),
 			       leader);
 			break;
 		case ACTION_nanosleep:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <unfinished ...>\n"
+			       ", %p /* %u vars */ <unfinished ...>\n"
 			       "%-5d <... nanosleep resumed> <unfinished ...>)"
 			       " = ?\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ),
+			       environ, arglen(environ),
 			       leader);
 			break;
 	}
@@ -180,18 +181,15 @@
 		if (clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL))
 			perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
 
-		printf("%-5d execve(\"%s\", [\"%s\"], [/* %u vars */]) = 0\n",
-		       leader, av[0], av[0], arglen(environ));
-
 		get_sigsetsize();
 		static char buf[sizeof(sigsetsize) * 3];
 		sprintf(buf, "%u", sigsetsize);
 
 		char *argv[] = { av[0], buf, (char *) "0", NULL };
 		printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-		       ", [/* %u vars */]) = 0\n",
+		       ", %p /* %u vars */) = 0\n",
 		       leader, argv[0], argv[0], argv[1], argv[2],
-		       arglen(environ));
+		       environ, arglen(environ));
 		execve(argv[0], argv, environ);
 		perror_msg_and_fail("execve");
 	}
diff --git a/tests-m32/threads-execve.test b/tests-m32/threads-execve.test
index 4a77146..02c8924 100755
--- a/tests-m32/threads-execve.test
+++ b/tests-m32/threads-execve.test
@@ -3,6 +3,7 @@
 # Check decoding of threads when a non-leader thread invokes execve.
 #
 # 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
@@ -40,10 +41,11 @@
 
 # Due to probabilistic nature of the test, try it several times.
 i=0
-while [ $i -le 9 ]; do
+while [ $i -le 19 ]; do
+	i="$(($i+1))"
 	run_strace "$@" > "$EXP"
-	diff -- "$EXP" "$LOG" || continue
-	rm -f "$EXP"
+	sed 1d < "$LOG" > "$OUT"
+	diff -- "$EXP" "$OUT" || continue
 	exit 0
 done
 
diff --git a/tests-m32/time.c b/tests-m32/time.c
index 4a5cde9..c329a79 100644
--- a/tests-m32/time.c
+++ b/tests-m32/time.c
@@ -2,6 +2,7 @@
  * This file is part of time strace test.
  *
  * 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
@@ -40,15 +41,24 @@
 int
 main(void)
 {
-	time_t *p = tail_alloc(sizeof(time_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(time_t, p);
 
 	time_t t = syscall(__NR_time, NULL);
 	if ((time_t) -1 == t)
 		perror_msg_and_skip("time");
-	printf("time(NULL) = %jd\n", (intmax_t) t);
+	printf("time(NULL) = %lld (", (long long) t);
+	print_time_t_nsec(t, 0, 0);
+	puts(")");
+
+	t = syscall(__NR_time, p + 1);
+	printf("time(%p) = %s\n", p + 1, sprintrc(t));
 
 	t = syscall(__NR_time, p);
-	printf("time([%jd]) = %jd\n", (intmax_t) *p, (intmax_t) t);
+	printf("time([%lld", (long long) *p);
+	print_time_t_nsec((time_t) *p, 0, 1),
+	printf("]) = %lld (", (long long) t);
+	print_time_t_nsec(t, 0, 0);
+	puts(")");
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/time.gen.test b/tests-m32/time.gen.test
new file mode 100755
index 0000000..ed7ec69
--- /dev/null
+++ b/tests-m32/time.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/time.test b/tests-m32/time.test
deleted file mode 100755
index 6ab193a..0000000
--- a/tests-m32/time.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check time syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-m32/timer_create.gen.test b/tests-m32/timer_create.gen.test
new file mode 100755
index 0000000..6b4c543
--- /dev/null
+++ b/tests-m32/timer_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/timer_create.test b/tests-m32/timer_create.test
deleted file mode 100755
index 870a179..0000000
--- a/tests-m32/timer_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/timer_xettime.c b/tests-m32/timer_xettime.c
index 9eabbf0..aacd770 100644
--- a/tests-m32/timer_xettime.c
+++ b/tests-m32/timer_xettime.c
@@ -2,6 +2,7 @@
  * This file is part of timer_xettime strace test.
  *
  * 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
@@ -47,6 +48,7 @@
 	printf("timer_settime(%d, TIMER_ABSTIME, NULL, NULL)"
 	       " = -1 EINVAL (%m)\n", 0xdefaced);
 
+	long rc;
 	int tid;
 	struct sigevent sev = { .sigev_notify = SIGEV_NONE };
 
@@ -55,51 +57,61 @@
 	printf("timer_create(CLOCK_MONOTONIC, {sigev_signo=0"
 	       ", sigev_notify=SIGEV_NONE}, [%d]) = 0\n", tid);
 
-	struct {
-		struct itimerspec its;
-		uint32_t pad[4];
-	} old = {
-		.its = {
-			.it_interval = { 0xdeface5, 0xdeface6 },
-			.it_value = { 0xdeface7, 0xdeface8 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.its = {
-			.it_interval = { 0xdeface1, 0xdeface2 },
-			.it_value = { 0xdeface3, 0xdeface4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
 
-	if (syscall(__NR_timer_settime, tid, 0, &new.its, &old.its))
+	its_new->it_interval.tv_sec = 0xdeadbeefU;
+	its_new->it_interval.tv_nsec = 0xfacefeedU;
+	its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = syscall(__NR_timer_settime, tid, 0, its_new, its_old);
+	printf("timer_settime(%d, 0"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+	       tid, (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       its_old, sprintrc(rc));
+
+	its_new->it_interval.tv_sec = 0xdeface1;
+	its_new->it_interval.tv_nsec = 0xdeface2;
+	its_new->it_value.tv_sec = 0xdeface3;
+	its_new->it_value.tv_nsec = 0xdeface4;
+	its_old->it_interval.tv_sec = 0xdeface5;
+	its_old->it_interval.tv_nsec = 0xdeface6;
+	its_old->it_value.tv_sec = 0xdeface7;
+	its_old->it_value.tv_nsec = 0xdeface8;
+
+	if (syscall(__NR_timer_settime, tid, 0, its_new, its_old))
 		perror_msg_and_skip("timer_settime");
 	printf("timer_settime(%d, 0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
 	       ") = 0\n",
 	       tid,
-	       (intmax_t) new.its.it_interval.tv_sec,
-	       (intmax_t) new.its.it_interval.tv_nsec,
-	       (intmax_t) new.its.it_value.tv_sec,
-	       (intmax_t) new.its.it_value.tv_nsec,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
-	if (syscall(__NR_timer_gettime, tid, &old.its))
+	if (syscall(__NR_timer_gettime, tid, its_old))
 		perror_msg_and_skip("timer_gettime");
 	printf("timer_gettime(%d"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
 	       tid,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/timer_xettime.gen.test b/tests-m32/timer_xettime.gen.test
new file mode 100755
index 0000000..6e2dffa
--- /dev/null
+++ b/tests-m32/timer_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_xettime -e trace=timer_create,timer_settime,timer_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests-m32/timer_xettime.test b/tests-m32/timer_xettime.test
deleted file mode 100755
index 08bcdd6..0000000
--- a/tests-m32/timer_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create, timer_settime, and timer_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests-m32/timerfd_xettime.c b/tests-m32/timerfd_xettime.c
index ca7124e..1e8a23a 100644
--- a/tests-m32/timerfd_xettime.c
+++ b/tests-m32/timerfd_xettime.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -47,49 +48,59 @@
 		perror_msg_and_skip("timerfd_create");
 	puts("timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC|TFD_NONBLOCK) = 0");
 
-	struct {
-		struct itimerspec its;
-		uint32_t pad[4];
-	} old = {
-		.its = {
-			.it_interval = { 0xdeface5, 0xdeface6 },
-			.it_value = { 0xdeface7, 0xdeface8 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.its = {
-			.it_interval = { 0xdeface1, 0xdeface2 },
-			.it_value = { 0xdeface3, 0xdeface4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
 
-	if (syscall(__NR_timerfd_settime, 0, 0, &new.its, &old.its))
+	its_new->it_interval.tv_sec = 0xdeadbeefU;
+	its_new->it_interval.tv_nsec = 0xfacefeedU;
+	its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	long rc = syscall(__NR_timerfd_settime, 0, 0, its_new, its_old);
+	printf("timerfd_settime(0, 0"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       its_old, sprintrc(rc));
+
+	its_new->it_interval.tv_sec = 0xdeface1;
+	its_new->it_interval.tv_nsec = 0xdeface2;
+	its_new->it_value.tv_sec = 0xdeface3;
+	its_new->it_value.tv_nsec = 0xdeface4;
+	its_old->it_interval.tv_sec = 0xdeface5;
+	its_old->it_interval.tv_nsec = 0xdeface6;
+	its_old->it_value.tv_sec = 0xdeface7;
+	its_old->it_value.tv_nsec = 0xdeface8;
+
+	if (syscall(__NR_timerfd_settime, 0, 0, its_new, its_old))
 		perror_msg_and_skip("timerfd_settime");
 	printf("timerfd_settime(0, 0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
 	       ") = 0\n",
-	       (intmax_t) new.its.it_interval.tv_sec,
-	       (intmax_t) new.its.it_interval.tv_nsec,
-	       (intmax_t) new.its.it_value.tv_sec,
-	       (intmax_t) new.its.it_value.tv_nsec,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
-	if (syscall(__NR_timerfd_gettime, 0, &old.its))
+	if (syscall(__NR_timerfd_gettime, 0, its_old))
 		perror_msg_and_skip("timerfd_gettime");
 	printf("timerfd_gettime(0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/timerfd_xettime.gen.test b/tests-m32/timerfd_xettime.gen.test
new file mode 100755
index 0000000..97e560b
--- /dev/null
+++ b/tests-m32/timerfd_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests-m32/timerfd_xettime.test b/tests-m32/timerfd_xettime.test
deleted file mode 100755
index 75aa21c..0000000
--- a/tests-m32/timerfd_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timerfd_create, timerfd_settime, and timerfd_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests-m32/times-fail.gen.test b/tests-m32/times-fail.gen.test
new file mode 100755
index 0000000..9934d19
--- /dev/null
+++ b/tests-m32/times-fail.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times-fail -a12 -e trace=times); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -e trace=times
diff --git a/tests-m32/times-fail.test b/tests-m32/times-fail.test
deleted file mode 100755
index ee28a06..0000000
--- a/tests-m32/times-fail.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of failing times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -e trace=times
diff --git a/tests-m32/times.gen.test b/tests-m32/times.gen.test
new file mode 100755
index 0000000..ca4ebbe
--- /dev/null
+++ b/tests-m32/times.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/times.test b/tests-m32/times.test
deleted file mode 100755
index b97e0d3..0000000
--- a/tests-m32/times.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-m32/trace_fstat.gen.test b/tests-m32/trace_fstat.gen.test
new file mode 100755
index 0000000..c3aede1
--- /dev/null
+++ b/tests-m32/trace_fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
diff --git a/tests-m32/trace_fstat.in b/tests-m32/trace_fstat.in
new file mode 100644
index 0000000..34cfa7e
--- /dev/null
+++ b/tests-m32/trace_fstat.in
@@ -0,0 +1,5 @@
+fstat	-a15
+fstat64	-a17
+fstatat64	-a32
+newfstatat	-a32
+oldfstat	-a21
diff --git a/tests-m32/trace_fstatfs.gen.test b/tests-m32/trace_fstatfs.gen.test
new file mode 100755
index 0000000..063f624
--- /dev/null
+++ b/tests-m32/trace_fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstatfs test_trace_expr '' -e%fstatfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstatfs
diff --git a/tests-m32/trace_fstatfs.in b/tests-m32/trace_fstatfs.in
new file mode 100644
index 0000000..6441a07
--- /dev/null
+++ b/tests-m32/trace_fstatfs.in
@@ -0,0 +1,2 @@
+fstatfs	-a18
+fstatfs64	-a24
diff --git a/tests-m32/trace_lstat.gen.test b/tests-m32/trace_lstat.gen.test
new file mode 100755
index 0000000..a05b7a1
--- /dev/null
+++ b/tests-m32/trace_lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_lstat test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
diff --git a/tests-m32/trace_lstat.in b/tests-m32/trace_lstat.in
new file mode 100644
index 0000000..abbabc4
--- /dev/null
+++ b/tests-m32/trace_lstat.in
@@ -0,0 +1,3 @@
+lstat	-a32
+lstat64	-a32
+oldlstat	-a32
diff --git a/tests-m32/trace_question.gen.test b/tests-m32/trace_question.gen.test
new file mode 100755
index 0000000..76b3578
--- /dev/null
+++ b/tests-m32/trace_question.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_question test_trace_expr '' -e?osf_utimes,?/^pkey_.*); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e?osf_utimes,?/^pkey_.*
diff --git a/tests-m32/trace_question.in b/tests-m32/trace_question.in
new file mode 100644
index 0000000..74d662c
--- /dev/null
+++ b/tests-m32/trace_question.in
@@ -0,0 +1,4 @@
+osf_utimes	-a21
+pkey_alloc	-a17
+pkey_free	-a13
+pkey_mprotect	-a37
diff --git a/tests-m32/trace_stat.gen.test b/tests-m32/trace_stat.gen.test
new file mode 100755
index 0000000..ae95ab8
--- /dev/null
+++ b/tests-m32/trace_stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
diff --git a/tests-m32/trace_stat.in b/tests-m32/trace_stat.in
new file mode 100644
index 0000000..f105d78
--- /dev/null
+++ b/tests-m32/trace_stat.in
@@ -0,0 +1,3 @@
+oldstat	-a32
+stat	-a32
+stat64	-a32
diff --git a/tests-m32/trace_stat_like.gen.test b/tests-m32/trace_stat_like.gen.test
new file mode 100755
index 0000000..5681a8a
--- /dev/null
+++ b/tests-m32/trace_stat_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
diff --git a/tests-m32/trace_stat_like.in b/tests-m32/trace_stat_like.in
new file mode 100644
index 0000000..22bd7f2
--- /dev/null
+++ b/tests-m32/trace_stat_like.in
@@ -0,0 +1,12 @@
+fstat	-a15
+fstat64	-a17
+fstatat64	-a32
+lstat	-a32
+lstat64	-a32
+newfstatat	-a32
+oldfstat	-a21
+oldlstat	-a32
+oldstat	-a32
+stat	-a32
+stat64	-a32
+statx	-a32
diff --git a/tests-m32/trace_statfs.gen.test b/tests-m32/trace_statfs.gen.test
new file mode 100755
index 0000000..957412b
--- /dev/null
+++ b/tests-m32/trace_statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs test_trace_expr '' -e%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%statfs
diff --git a/tests-m32/trace_statfs.in b/tests-m32/trace_statfs.in
new file mode 100644
index 0000000..7c4adfe
--- /dev/null
+++ b/tests-m32/trace_statfs.in
@@ -0,0 +1,2 @@
+statfs	-a17
+statfs64	-a23
diff --git a/tests-m32/trace_statfs_like.gen.test b/tests-m32/trace_statfs_like.gen.test
new file mode 100755
index 0000000..be1a9c0
--- /dev/null
+++ b/tests-m32/trace_statfs_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs_like test_trace_expr '' -e%%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%statfs
diff --git a/tests-m32/trace_statfs_like.in b/tests-m32/trace_statfs_like.in
new file mode 100644
index 0000000..285aec6
--- /dev/null
+++ b/tests-m32/trace_statfs_like.in
@@ -0,0 +1,5 @@
+statfs	-a17
+statfs64	-a23
+fstatfs	-a18
+fstatfs64	-a24
+ustat	-a33
diff --git a/tests-m32/truncate.gen.test b/tests-m32/truncate.gen.test
new file mode 100755
index 0000000..0410e73
--- /dev/null
+++ b/tests-m32/truncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/truncate.test b/tests-m32/truncate.test
deleted file mode 100755
index 6bf1e70..0000000
--- a/tests-m32/truncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/truncate64.gen.test b/tests-m32/truncate64.gen.test
new file mode 100755
index 0000000..dae0fe6
--- /dev/null
+++ b/tests-m32/truncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-m32/truncate64.test b/tests-m32/truncate64.test
deleted file mode 100755
index c466806..0000000
--- a/tests-m32/truncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-m32/ugetrlimit.gen.test b/tests-m32/ugetrlimit.gen.test
new file mode 100755
index 0000000..ff27134
--- /dev/null
+++ b/tests-m32/ugetrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-m32/ugetrlimit.test b/tests-m32/ugetrlimit.test
deleted file mode 100755
index f4648ff..0000000
--- a/tests-m32/ugetrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ugetrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-m32/uio.test b/tests-m32/uio.test
index 020b97e..0184685 100755
--- a/tests-m32/uio.test
+++ b/tests-m32/uio.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog
-run_strace -edesc $args
+run_strace -e%desc $args
 match_grep
 
 exit 0
diff --git a/tests-m32/umask.gen.test b/tests-m32/umask.gen.test
new file mode 100755
index 0000000..60af5e9
--- /dev/null
+++ b/tests-m32/umask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests-m32/umask.test b/tests-m32/umask.test
deleted file mode 100755
index 1351721..0000000
--- a/tests-m32/umask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check umask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests-m32/umode_t.c b/tests-m32/umode_t.c
index 5041638..dcd1514 100644
--- a/tests-m32/umode_t.c
+++ b/tests-m32/umode_t.c
@@ -2,6 +2,7 @@
  * Check decoding of umode_t type syscall arguments.
  *
  * 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
@@ -38,7 +39,7 @@
 # define TEST_SYSCALL_PREFIX_STR ""
 #endif
 
-static const char sample[] = TEST_SYSCALL_STR;
+static const char *sample;
 
 static void
 test_syscall(unsigned short mode)
@@ -49,17 +50,18 @@
 
 	if (mode <= 07)
 		printf("%s(%s\"%s\", 00%d) = %ld %s (%m)\n",
-		       sample, TEST_SYSCALL_PREFIX_STR,
+		       TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
 		       sample, (int) mode, rc, errno2name());
 	else
 		printf("%s(%s\"%s\", %#03ho) = %ld %s (%m)\n",
-		       sample, TEST_SYSCALL_PREFIX_STR,
+		       TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
 		       sample, mode, rc, errno2name());
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
+	sample = av[0];
 	test_syscall(0);
 	test_syscall(0xffff);
 	test_syscall(06);
diff --git a/tests-m32/umoven-illptr.gen.test b/tests-m32/umoven-illptr.gen.test
new file mode 100755
index 0000000..eea7b1c
--- /dev/null
+++ b/tests-m32/umoven-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umoven-illptr -a36 -e trace=nanosleep); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests-m32/umoven-illptr.test b/tests-m32/umoven-illptr.test
deleted file mode 100755
index 7b8cb31..0000000
--- a/tests-m32/umoven-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of invalid pointer by umoven.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests-m32/umovestr-illptr.gen.test b/tests-m32/umovestr-illptr.gen.test
new file mode 100755
index 0000000..7685d44
--- /dev/null
+++ b/tests-m32/umovestr-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr-illptr -a11 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests-m32/umovestr-illptr.test b/tests-m32/umovestr-illptr.test
deleted file mode 100755
index 6f1cc86..0000000
--- a/tests-m32/umovestr-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of invalid pointer by umovestr.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests-m32/umovestr2.test b/tests-m32/umovestr2.test
index 5c5d561..3decbe2 100755
--- a/tests-m32/umovestr2.test
+++ b/tests-m32/umovestr2.test
@@ -9,7 +9,3 @@
 check_prog sed
 sed 1d < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-m32/umovestr3.gen.test b/tests-m32/umovestr3.gen.test
new file mode 100755
index 0000000..b16e1ed
--- /dev/null
+++ b/tests-m32/umovestr3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr3 -a14 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests-m32/umovestr3.test b/tests-m32/umovestr3.test
deleted file mode 100755
index d5be283..0000000
--- a/tests-m32/umovestr3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# yet another umovestr short read test
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests-m32/uname.c b/tests-m32/uname.c
index cd6f51c..96db753 100644
--- a/tests-m32/uname.c
+++ b/tests-m32/uname.c
@@ -10,7 +10,7 @@
 int main(int ac, char **av)
 {
 	int abbrev = ac > 1;
-	struct utsname *const uname = tail_alloc(sizeof(struct utsname));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct utsname, uname);
 	int rc = syscall(__NR_uname, uname);
 	printf("uname({sysname=\"");
 	print_quoted_string(uname->sysname);
diff --git a/tests-m32/uname.test b/tests-m32/uname.test
index 03fe30c..7ca1b5b 100755
--- a/tests-m32/uname.test
+++ b/tests-m32/uname.test
@@ -10,9 +10,8 @@
 run_strace -v -euname $args > "$EXP"
 uniq < "$LOG" > "$OUT"
 
-run_prog "./$NAME" abbrev > /dev/null
+run_prog "../$NAME" abbrev > /dev/null
 run_strace -euname $args >> "$EXP"
 uniq < "$LOG" >> "$OUT"
 
 match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests-m32/unix-pair-send-recv.test b/tests-m32/unix-pair-send-recv.test
index 4defdeb..10ab7cc 100755
--- a/tests-m32/unix-pair-send-recv.test
+++ b/tests-m32/unix-pair-send-recv.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
 run_strace -a32 -esignal=none -esend,recv -eread=0 -ewrite=0 $args
 match_diff
 
diff --git a/tests-m32/unix-pair-sendto-recvfrom.test b/tests-m32/unix-pair-sendto-recvfrom.test
index 21afe23..0bd9a04 100755
--- a/tests-m32/unix-pair-sendto-recvfrom.test
+++ b/tests-m32/unix-pair-sendto-recvfrom.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
 run_strace -esignal=none -esendto,recvfrom -eread=0 -ewrite=0 $args
 match_diff
 
diff --git a/tests-m32/unlink.gen.test b/tests-m32/unlink.gen.test
new file mode 100755
index 0000000..7b8522b
--- /dev/null
+++ b/tests-m32/unlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-m32/unlink.test b/tests-m32/unlink.test
deleted file mode 100755
index 09bf79a..0000000
--- a/tests-m32/unlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-m32/unlinkat.gen.test b/tests-m32/unlinkat.gen.test
new file mode 100755
index 0000000..5a77c6a
--- /dev/null
+++ b/tests-m32/unlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-m32/unlinkat.test b/tests-m32/unlinkat.test
deleted file mode 100755
index 864261f..0000000
--- a/tests-m32/unlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-m32/unshare.gen.test b/tests-m32/unshare.gen.test
new file mode 100755
index 0000000..077a458
--- /dev/null
+++ b/tests-m32/unshare.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests-m32/unshare.test b/tests-m32/unshare.test
deleted file mode 100755
index ccb9575..0000000
--- a/tests-m32/unshare.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests-m32/userfaultfd.gen.test b/tests-m32/userfaultfd.gen.test
new file mode 100755
index 0000000..4735146
--- /dev/null
+++ b/tests-m32/userfaultfd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a38
diff --git a/tests-m32/userfaultfd.test b/tests-m32/userfaultfd.test
deleted file mode 100755
index af8b6fb..0000000
--- a/tests-m32/userfaultfd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests-m32/ustat.c b/tests-m32/ustat.c
index 57bb29c..3341c70 100644
--- a/tests-m32/ustat.c
+++ b/tests-m32/ustat.c
@@ -47,7 +47,7 @@
 	long rc;
 
 # ifdef HAVE_USTAT_H
-	struct ustat *const ust = tail_alloc(sizeof(*ust));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ustat, ust);
 	struct stat st;
 	if (stat(".", &st))
 		perror_msg_and_fail("stat");
diff --git a/tests-m32/ustat.gen.test b/tests-m32/ustat.gen.test
new file mode 100755
index 0000000..f64b28d
--- /dev/null
+++ b/tests-m32/ustat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests-m32/ustat.test b/tests-m32/ustat.test
deleted file mode 100755
index 60a88e0..0000000
--- a/tests-m32/ustat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ustat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
diff --git a/tests-m32/utime.c b/tests-m32/utime.c
index 8fd594f..03e3958 100644
--- a/tests-m32/utime.c
+++ b/tests-m32/utime.c
@@ -2,6 +2,7 @@
  * Check decoding of utime syscall.
  *
  * 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
@@ -38,17 +39,6 @@
 # include <stdio.h>
 # include <unistd.h>
 
-
-static void
-print_tm(const struct tm * const p)
-{
-	char buf[256];
-
-	strftime(buf, sizeof(buf), "%FT%T%z", p);
-
-	printf("%s", buf);
-}
-
 static long
 k_utime(const void *const filename, const void *const times)
 {
@@ -60,8 +50,7 @@
 {
 	static const char *const dummy_str = "dummy filename";
 
-	const time_t t = time(NULL);
-	const struct tm * const p = localtime(&t);
+	const time_t t = 1492350678;
 	const struct utimbuf u = { .actime = t, .modtime = t };
 	const struct utimbuf *const tail_u = tail_memdup(&u, sizeof(u));
 	const char *const dummy_filename =
@@ -80,10 +69,10 @@
 
 	rc = k_utime("utime\nfilename", tail_u);
 	const char *errstr = sprintrc(rc);
-	printf("utime(\"utime\\nfilename\", {actime=");
-	print_tm(p);
-	printf(", modtime=");
-	print_tm(p);
+	printf("utime(\"utime\\nfilename\", {actime=%lld", (long long) t);
+	print_time_t_nsec(t, 0, 1);
+	printf(", modtime=%lld", (long long) t);
+	print_time_t_nsec(t, 0, 1);
 	printf("}) = %s\n", errstr);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-m32/utime.gen.test b/tests-m32/utime.gen.test
new file mode 100755
index 0000000..7270556
--- /dev/null
+++ b/tests-m32/utime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests-m32/utime.test b/tests-m32/utime.test
deleted file mode 100755
index bd64c53..0000000
--- a/tests-m32/utime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utime syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a 16 -e trace=utime
diff --git a/tests-m32/utimensat.c b/tests-m32/utimensat.c
index 6d9faac..ddfd360 100644
--- a/tests-m32/utimensat.c
+++ b/tests-m32/utimensat.c
@@ -1,7 +1,7 @@
 /*
- * This file is part of utimensat strace test.
+ * Check decoding of utimensat syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,66 +28,173 @@
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
 
-#if defined HAVE_UTIMENSAT \
- && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW \
- && defined UTIME_NOW && defined UTIME_OMIT
+#if defined __NR_utimensat && defined UTIME_NOW && defined UTIME_OMIT
 
 static void
 print_ts(const struct timespec *ts)
 {
-	printf("{tv_sec=%ju, tv_nsec=%ju}", (uintmax_t) ts->tv_sec,
-		(uintmax_t) ts->tv_nsec);
+	printf("{tv_sec=%lld, tv_nsec=%llu}", (long long) ts->tv_sec,
+		zero_extend_signed_to_ull(ts->tv_nsec));
+	print_time_t_nsec(ts->tv_sec,
+			  zero_extend_signed_to_ull(ts->tv_nsec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimensat(const kernel_ulong_t dirfd,
+	    const kernel_ulong_t pathname,
+	    const kernel_ulong_t times,
+	    const kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_utimensat, dirfd, pathname, times, flags);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 int
 main(void)
 {
-	static const char fname[] = "utimensat\nfilename";
+	static const kernel_ulong_t bogus_fd =
+		(kernel_ulong_t) 0xbadc0deddeadbeef;
+	static const kernel_ulong_t kfdcwd =
+		(kernel_ulong_t) 0xdefaced00000000 | -100U;
+	static const char proto_fname[] = "utimensat\nfilename";
+	static const char qname[] = "\"utimensat\\nfilename\"";
 
-	assert(utimensat(AT_FDCWD, fname, NULL, 0) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	struct timespec *const ts = tail_alloc(sizeof(*ts) * 2);
 
-	#define PREFIX "utimensat(AT_FDCWD, \"utimensat\\nfilename\", "
-	printf(PREFIX "NULL, 0) = -1 ENOENT (%m)\n");
+	(void) close(0);
 
-	struct timeval tv;
-	struct timespec ts[2];
+	/* dirfd */
+	k_utimensat(0, kfname, 0, 0);
+	printf("utimensat(0, %s, NULL, 0) = %s\n", qname, errstr);
 
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_skip("gettimeofday");
+	k_utimensat(bogus_fd, kfname, 0, 0);
+	printf("utimensat(%d, %s, NULL, 0) = %s\n",
+	       (int) bogus_fd, qname, errstr);
 
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_nsec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_nsec = tv.tv_usec + 1;
+	k_utimensat(-100U, kfname, 0, 0);
+	printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
 
-	printf(PREFIX "[");
+	k_utimensat(kfdcwd, kfname, 0, 0);
+	printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
+
+	/* pathname */
+	k_utimensat(kfdcwd, 0, 0, 0);
+	printf("utimensat(AT_FDCWD, NULL, NULL, 0) = %s\n", errstr);
+
+	k_utimensat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0, 0);
+	printf("utimensat(AT_FDCWD, \"\", NULL, 0) = %s\n", errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_utimensat(kfdcwd, kfname, 0, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("utimensat(AT_FDCWD, %p, NULL, 0) = %s\n", fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimensat(kfdcwd, f8ill_ptr_to_kulong(fname), 0, 0);
+		printf("utimensat(AT_FDCWD, %#jx, NULL, 0) = %s\n",
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 1), 0);
+	printf("utimensat(AT_FDCWD, %s, %p, 0) = %s\n",
+	       qname, ts + 1, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 2), 0);
+	printf("utimensat(AT_FDCWD, %s, %p, 0)"
+	       " = %s\n", qname, ts + 2, errstr);
+
+	ts[0].tv_sec = 1492358706;
+	ts[0].tv_nsec = 123456789;
+	ts[1].tv_sec = 1492357068;
+	ts[1].tv_nsec = 234567890;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
 	print_ts(&ts[0]);
 	printf(", ");
 	print_ts(&ts[1]);
-	printf("], AT_SYMLINK_NOFOLLOW) = -1 ENOENT ");
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
 
-	assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
-	printf("(%m)\n");
+	ts[0].tv_sec = -1;
+	ts[0].tv_nsec = 2000000000;
+	ts[1].tv_sec = (time_t) -0x100000001LL;
+	ts[1].tv_nsec = 2345678900U;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+	ts[0].tv_sec = 0;
+	ts[0].tv_nsec = 0;
+	ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts[1].tv_nsec = 0;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+	ts[0].tv_sec = 0xdeadbeefU;
+	ts[0].tv_nsec = 0xfacefeedU;
+	ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts[1].tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
 
 	ts[0].tv_nsec = UTIME_NOW;
 	ts[1].tv_nsec = UTIME_OMIT;
-	assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
-	printf(PREFIX "[UTIME_NOW, UTIME_OMIT], AT_SYMLINK_NOFOLLOW)"
-	       " = -1 ENOENT (%m)\n");
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_SYMLINK_NOFOLLOW) = %s\n", qname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimensat(kfdcwd, kfname, f8ill_ptr_to_kulong(ts), 0);
+		printf("utimensat(AT_FDCWD, %s, %#jx, 0) = %s\n",
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(ts), errstr);
+	}
+
+	/* flags */
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+		    (kernel_ulong_t) 0xdefaced00000200);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_REMOVEDIR) = %s\n",
+	       qname, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+		    (kernel_ulong_t) 0xdefaced00000600);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_REMOVEDIR|AT_SYMLINK_FOLLOW) = %s\n",
+	       qname, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, (kernel_ulong_t) -1ULL);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
+	       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff) = %s\n",
+	       qname, errstr);
 
 	puts("+++ exited with 0 +++");
 	return 0;
@@ -95,7 +202,6 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_UTIMENSAT && AT_FDCWD && AT_SYMLINK_NOFOLLOW"
-		    " && UTIME_NOW && UTIME_OMIT")
+SKIP_MAIN_UNDEFINED("__NR_utimensat && UTIME_NOW && UTIME_OMIT")
 
 #endif
diff --git a/tests-m32/utimensat.gen.test b/tests-m32/utimensat.gen.test
new file mode 100755
index 0000000..a4d6656
--- /dev/null
+++ b/tests-m32/utimensat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests-m32/utimensat.test b/tests-m32/utimensat.test
deleted file mode 100755
index 52e3f31..0000000
--- a/tests-m32/utimensat.test
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utimensat syscall.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e utimensat $args > "$OUT"
-
-check_prog grep
-LC_ALL=C grep -x "utimensat(.*" "$LOG" > /dev/null || {
-        rm -f "$OUT"
-        skip_ 'test executable does not use utimensat syscall'
-}
-
-match_diff "$LOG" "$OUT"
-
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-m32/utimes.c b/tests-m32/utimes.c
index bbfa031..4bef1a6 100644
--- a/tests-m32/utimes.c
+++ b/tests-m32/utimes.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of utimes syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,50 +32,10 @@
 
 #ifdef __NR_utimes
 
-# include <stdint.h>
-# include <stdio.h>
-# include <sys/time.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-	struct timeval tv;
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_fail("gettimeofday");
-
-	static const char sample[] = "utimes_sample";
-
-	long rc = syscall(__NR_utimes, sample, 0);
-	printf("utimes(\"%s\", NULL) = %ld %s (%m)\n",
-	       sample, rc, errno2name());
-
-	struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
-
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_usec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_usec = tv.tv_usec + 1;
-
-	rc = syscall(__NR_utimes, 0, ts + 2);
-	printf("utimes(NULL, %p) = %ld %s (%m)\n", ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_utimes, 0, ts + 1);
-	printf("utimes(NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
-	       "%ld %s (%m)\n",
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_utimes, "", ts);
-	printf("utimes(\"\", [{tv_sec=%jd, tv_usec=%jd}, "
-	       "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
-	       (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       rc, errno2name());
-
-	puts("+++ exited with 0 +++");
-	return 0;
-}
+# define TEST_SYSCALL_NR	__NR_utimes
+# define TEST_SYSCALL_STR	"utimes"
+# define TEST_STRUCT		struct timeval
+# include "xutimes.c"
 
 #else
 
diff --git a/tests-m32/utimes.gen.test b/tests-m32/utimes.gen.test
new file mode 100755
index 0000000..37ed29c
--- /dev/null
+++ b/tests-m32/utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-m32/utimes.test b/tests-m32/utimes.test
deleted file mode 100755
index 99143a0..0000000
--- a/tests-m32/utimes.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check utimes syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-m32/vfork-f.gen.test b/tests-m32/vfork-f.gen.test
new file mode 100755
index 0000000..b3c1c6b
--- /dev/null
+++ b/tests-m32/vfork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vfork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests-m32/vfork-f.test b/tests-m32/vfork-f.test
deleted file mode 100755
index ff4422b..0000000
--- a/tests-m32/vfork-f.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows vfork syscall.
-
-. "${srcdir=.}/fork-f.test"
diff --git a/tests-m32/vhangup.gen.test b/tests-m32/vhangup.gen.test
new file mode 100755
index 0000000..7ac84e5
--- /dev/null
+++ b/tests-m32/vhangup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-m32/vhangup.test b/tests-m32/vhangup.test
deleted file mode 100755
index 8fe1cac..0000000
--- a/tests-m32/vhangup.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check vhangup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a10
diff --git a/tests-m32/vmsplice.gen.test b/tests-m32/vmsplice.gen.test
new file mode 100755
index 0000000..fe6a07d
--- /dev/null
+++ b/tests-m32/vmsplice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/vmsplice.test b/tests-m32/vmsplice.test
deleted file mode 100755
index 8a80650..0000000
--- a/tests-m32/vmsplice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of vmsplice syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -ewrite=1
diff --git a/tests-m32/wait4-v.gen.test b/tests-m32/wait4-v.gen.test
new file mode 100755
index 0000000..5b23f42
--- /dev/null
+++ b/tests-m32/wait4-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4-v -v -e signal=none -e trace=wait4); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests-m32/wait4-v.test b/tests-m32/wait4-v.test
deleted file mode 100755
index 58e55f2..0000000
--- a/tests-m32/wait4-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests-m32/wait4.c b/tests-m32/wait4.c
index ccb3ebb..ab0c7a4 100644
--- a/tests-m32/wait4.c
+++ b/tests-m32/wait4.c
@@ -2,6 +2,7 @@
  * Check decoding of wait4 syscall.
  *
  * Copyright (c) 2015-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
@@ -40,8 +41,8 @@
 {
 	static char buf[1024];
 	snprintf(buf, sizeof(buf),
-		 "{ru_utime={tv_sec=%lu, tv_usec=%lu}"
-		 ", ru_stime={tv_sec=%lu, tv_usec=%lu}"
+		 "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+		 ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
 #if VERBOSE
 		 ", ru_maxrss=%lu"
 		 ", ru_ixrss=%lu"
@@ -60,10 +61,10 @@
 #else
 		 ", ...}"
 #endif
-		 , (long) ru->ru_utime.tv_sec
-		 , (long) ru->ru_utime.tv_usec
-		 , (long) ru->ru_stime.tv_sec
-		 , (long) ru->ru_stime.tv_usec
+		 , (long long) ru->ru_utime.tv_sec
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
+		 , (long long) ru->ru_stime.tv_sec
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
 #if VERBOSE
 		 , (long) ru->ru_maxrss
 		 , (long) ru->ru_ixrss
@@ -119,12 +120,12 @@
 
 	(void) close(0);
 
-	int *const s = tail_alloc(sizeof(*s));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, s);
 	if (wait4(pid, s, WNOHANG|__WALL, NULL))
 		perror_msg_and_fail("wait4 #1");
 	tprintf("wait4(%d, %p, WNOHANG|__WALL, NULL) = 0\n", pid, s);
 
-	struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
 	if (wait4(pid, s, WNOHANG|__WALL, rusage))
 		perror_msg_and_fail("wait4 #2");
 	tprintf("wait4(%d, %p, WNOHANG|__WALL, %p) = 0\n", pid, s, rusage);
diff --git a/tests-m32/wait4.gen.test b/tests-m32/wait4.gen.test
new file mode 100755
index 0000000..ae04915
--- /dev/null
+++ b/tests-m32/wait4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/wait4.test b/tests-m32/wait4.test
deleted file mode 100755
index 6338d1f..0000000
--- a/tests-m32/wait4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-m32/waitid-v.gen.test b/tests-m32/waitid-v.gen.test
new file mode 100755
index 0000000..45744cd
--- /dev/null
+++ b/tests-m32/waitid-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid-v -v -e signal=none -e trace=waitid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests-m32/waitid-v.test b/tests-m32/waitid-v.test
deleted file mode 100755
index eb498cb..0000000
--- a/tests-m32/waitid-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests-m32/waitid.c b/tests-m32/waitid.c
index 6a10299..b56feea 100644
--- a/tests-m32/waitid.c
+++ b/tests-m32/waitid.c
@@ -2,6 +2,7 @@
  * Check decoding of waitid syscall.
  *
  * Copyright (c) 2015-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
@@ -42,8 +43,8 @@
 {
 	static char buf[1024];
 	snprintf(buf, sizeof(buf),
-		 "{ru_utime={tv_sec=%lld, tv_usec=%lld}"
-		 ", ru_stime={tv_sec=%lld, tv_usec=%lld}"
+		 "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+		 ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
 #if VERBOSE
 		 ", ru_maxrss=%llu"
 		 ", ru_ixrss=%llu"
@@ -63,9 +64,9 @@
 		 ", ...}"
 #endif
 		 , (long long) ru->ru_utime.tv_sec
-		 , (long long) ru->ru_utime.tv_usec
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
 		 , (long long) ru->ru_stime.tv_sec
-		 , (long long) ru->ru_stime.tv_usec
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
 #if VERBOSE
 		 , zero_extend_signed_to_ull(ru->ru_maxrss)
 		 , zero_extend_signed_to_ull(ru->ru_ixrss)
@@ -185,9 +186,9 @@
 		perror_msg_and_fail("waitid #1");
 	tprintf("waitid(P_PID, %d, NULL, WNOHANG|WEXITED, NULL) = 0\n", pid);
 
-	siginfo_t *const sinfo = tail_alloc(sizeof(*sinfo));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
 	memset(sinfo, 0, sizeof(*sinfo));
-	struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
 	if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
 		perror_msg_and_fail("waitid #2");
 	tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",
diff --git a/tests-m32/waitid.gen.test b/tests-m32/waitid.gen.test
new file mode 100755
index 0000000..59f4022
--- /dev/null
+++ b/tests-m32/waitid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-m32/waitid.test b/tests-m32/waitid.test
deleted file mode 100755
index 3bcba3a..0000000
--- a/tests-m32/waitid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-m32/waitpid.gen.test b/tests-m32/waitpid.gen.test
new file mode 100755
index 0000000..d91e298
--- /dev/null
+++ b/tests-m32/waitpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-m32/waitpid.test b/tests-m32/waitpid.test
deleted file mode 100755
index 93807d1..0000000
--- a/tests-m32/waitpid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitpid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-m32/xattr-strings.gen.test b/tests-m32/xattr-strings.gen.test
new file mode 100755
index 0000000..3317892
--- /dev/null
+++ b/tests-m32/xattr-strings.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr-strings -a22 -s 4 -e trace=fsetxattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests-m32/xattr-strings.test b/tests-m32/xattr-strings.test
deleted file mode 100755
index 25ef360..0000000
--- a/tests-m32/xattr-strings.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check *xattr syscalls decoding when limiting string size.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests-m32/xattr.gen.test b/tests-m32/xattr.gen.test
new file mode 100755
index 0000000..030f2ce
--- /dev/null
+++ b/tests-m32/xattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
diff --git a/tests-m32/xattr.test b/tests-m32/xattr.test
deleted file mode 100755
index 8c7a87b..0000000
--- a/tests-m32/xattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check *xattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=
-for n in getxattr setxattr listxattr removexattr; do
-	syscalls="$syscalls,${n},f${n},l${n}"
-done
-
-run_strace_match_diff -a22 -e trace=$syscalls
diff --git a/tests-m32/xet_robust_list.c b/tests-m32/xet_robust_list.c
index 211dec4..a612b92 100644
--- a/tests-m32/xet_robust_list.c
+++ b/tests-m32/xet_robust_list.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -51,8 +52,8 @@
 {
 	const pid_t pid = getpid();
 	const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid);
-	void **p_head = tail_alloc(sizeof(void *));
-	size_t *p_len = tail_alloc(sizeof(size_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head);
+	TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len);
 
 	if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
 		perror_msg_and_skip("get_robust_list");
diff --git a/tests-m32/xet_robust_list.gen.test b/tests-m32/xet_robust_list.gen.test
new file mode 100755
index 0000000..798cdff
--- /dev/null
+++ b/tests-m32/xet_robust_list.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xet_robust_list -a24 -e trace=get_robust_list,set_robust_list); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests-m32/xet_robust_list.test b/tests-m32/xet_robust_list.test
deleted file mode 100755
index 8a3a382..0000000
--- a/tests-m32/xet_robust_list.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_robust_list and set_robust_list syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests-m32/xetitimer.c b/tests-m32/xetitimer.c
index 4b17edd..3a81880 100644
--- a/tests-m32/xetitimer.c
+++ b/tests-m32/xetitimer.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of setitimer and getitimer syscalls.
+ *
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,48 +31,153 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
 
 int
 main(void)
 {
-	struct {
-		struct itimerval itv;
-		uint32_t pad[4];
-	} old = {
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.itv = {
-			.it_interval = { 0xc0de1, 0xc0de2 },
-			.it_value = { 0xc0de3, 0xc0de4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
+	static const struct itimerval new = {
+		.it_interval = { 0xc0de1, 0xc0de2 },
+		.it_value = { 0xc0de3, 0xc0de4 }
 	};
+	static const kernel_ulong_t long_timer =
+		F8ILL_KULONG_MASK | ITIMER_REAL;
+	static const kernel_ulong_t bogus_timer =
+		(kernel_ulong_t) 0xfacefeeddeadbeefULL;
 
-	if (setitimer(ITIMER_REAL, &new.itv, &old.itv))
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerval, p_old);
+	struct itimerval *const p_new = tail_memdup(&new, sizeof(new));
+	void *const efault = tail_alloc(sizeof(new) - 8);
+	long rc;
+
+	if (setitimer(ITIMER_REAL, p_new, NULL))
 		perror_msg_and_skip("setitimer");
 	printf("setitimer(ITIMER_REAL"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
-	       (intmax_t) new.itv.it_interval.tv_sec,
-	       (intmax_t) new.itv.it_interval.tv_usec,
-	       (intmax_t) new.itv.it_value.tv_sec,
-	       (intmax_t) new.itv.it_value.tv_usec,
-	       (intmax_t) old.itv.it_interval.tv_sec,
-	       (intmax_t) old.itv.it_interval.tv_usec,
-	       (intmax_t) old.itv.it_value.tv_sec,
-	       (intmax_t) old.itv.it_value.tv_usec);
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", NULL) = 0\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec));
 
-	if (getitimer(ITIMER_REAL, &old.itv))
+	fill_memory(p_old, sizeof(*p_old));
+	if (getitimer(ITIMER_REAL, p_old))
 		perror_msg_and_skip("getitimer");
 	printf("getitimer(ITIMER_REAL"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
-	       (intmax_t) old.itv.it_interval.tv_sec,
-	       (intmax_t) old.itv.it_interval.tv_usec,
-	       (intmax_t) old.itv.it_value.tv_sec,
-	       (intmax_t) old.itv.it_value.tv_usec);
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+	fill_memory(p_old, sizeof(*p_old));
+	setitimer(ITIMER_REAL, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+	rc = getitimer(ITIMER_REAL, efault);
+	printf("getitimer(ITIMER_REAL, %p) = %s\n", efault, sprintrc(rc));
+
+	rc = setitimer(ITIMER_REAL, p_new, efault);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       efault, sprintrc(rc));
+
+	rc = setitimer(ITIMER_REAL, efault, p_old);
+	printf("setitimer(ITIMER_REAL, %p, %p) = %s\n",
+	       efault, p_old, sprintrc(rc));
+
+	fill_memory(p_old, sizeof(*p_old));
+	rc = syscall(__NR_setitimer, long_timer, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+	       sprintrc(rc));
+
+	fill_memory(p_old, sizeof(*p_old));
+	rc = syscall(__NR_getitimer, long_timer, p_old);
+	printf("getitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+	       sprintrc(rc));
+
+	rc = syscall(__NR_setitimer, bogus_timer, p_new, p_old);
+	printf("setitimer(%#x /* ITIMER_??? */"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (int) bogus_timer,
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       p_old, sprintrc(rc));
+
+	rc = syscall(__NR_getitimer, bogus_timer, p_old);
+	printf("getitimer(%#x /* ITIMER_??? */, %p) = %s\n",
+	       (int) bogus_timer, p_old, sprintrc(rc));
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		const kernel_ulong_t ill_new = f8ill_ptr_to_kulong(p_new);
+		const kernel_ulong_t ill_old = f8ill_ptr_to_kulong(p_old);
+
+		rc = syscall(__NR_setitimer, long_timer, ill_new, ill_old);
+		printf("setitimer(ITIMER_REAL, %#llx, %#llx) = %s\n",
+		       (unsigned long long) ill_new,
+		       (unsigned long long) ill_old,
+		       sprintrc(rc));
+
+		rc = syscall(__NR_getitimer, long_timer, ill_old);
+		printf("getitimer(ITIMER_REAL, %#llx) = %s\n",
+		       (unsigned long long) ill_old, sprintrc(rc));
+	}
+
+	p_new->it_interval.tv_sec = 0xdeadbeefU;
+	p_new->it_interval.tv_usec = 0xfacefeedU;
+	p_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	p_new->it_value.tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = setitimer(ITIMER_REAL, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (long long) p_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_new->it_interval.tv_usec),
+	       (long long) p_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_new->it_value.tv_usec),
+	       p_old, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/xetitimer.gen.test b/tests-m32/xetitimer.gen.test
new file mode 100755
index 0000000..0cdb926
--- /dev/null
+++ b/tests-m32/xetitimer.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetitimer -a29 -e trace=setitimer,getitimer); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=setitimer,getitimer
diff --git a/tests-m32/xetitimer.test b/tests-m32/xetitimer.test
deleted file mode 100755
index 4aa00cc..0000000
--- a/tests-m32/xetitimer.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setitimer and getitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setitimer,getitimer
diff --git a/tests-m32/xetpgid.c b/tests-m32/xetpgid.c
index 24e0d7f..0efffcb 100644
--- a/tests-m32/xetpgid.c
+++ b/tests-m32/xetpgid.c
@@ -2,6 +2,7 @@
  * This file is part of xetpgid strace test.
  *
  * 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
@@ -39,13 +40,10 @@
 main(void)
 {
 	const int pid = getpid();
-	long rc = syscall(__NR_getpgid,
-			  (unsigned long) 0xffffffff00000000ULL | pid);
+	long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
 	printf("getpgid(%d) = %ld\n", pid, rc);
 
-	rc = syscall(__NR_setpgid,
-		     (unsigned long) 0xffffffff00000000ULL,
-		     (unsigned long) 0xffffffff00000000ULL | pid);
+	rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid);
 	printf("setpgid(0, %d) = %ld\n", pid, rc);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-m32/xetpgid.gen.test b/tests-m32/xetpgid.gen.test
new file mode 100755
index 0000000..fc57fc4
--- /dev/null
+++ b/tests-m32/xetpgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpgid -a11 -e trace=getpgid,setpgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests-m32/xetpgid.test b/tests-m32/xetpgid.test
deleted file mode 100755
index 07f4f9e..0000000
--- a/tests-m32/xetpgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgid and setpgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests-m32/xetpriority.c b/tests-m32/xetpriority.c
index ed55259..30c59c8 100644
--- a/tests-m32/xetpriority.c
+++ b/tests-m32/xetpriority.c
@@ -12,12 +12,11 @@
 {
 	const int pid = getpid();
 	long rc = syscall(__NR_getpriority, PRIO_PROCESS,
-			  (unsigned long) 0xffffffff00000000ULL | pid);
+			  F8ILL_KULONG_MASK | pid);
 	printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
 
 	rc = syscall(__NR_setpriority, PRIO_PROCESS,
-		     (unsigned long) 0xffffffff00000000ULL | pid,
-		     (unsigned long) 0xffffffff00000000ULL);
+		     F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK);
 	printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-m32/xetpriority.gen.test b/tests-m32/xetpriority.gen.test
new file mode 100755
index 0000000..4b95524
--- /dev/null
+++ b/tests-m32/xetpriority.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a29 -e trace=getpriority,setpriority); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests-m32/xetpriority.test b/tests-m32/xetpriority.test
deleted file mode 100755
index 2c84ba4..0000000
--- a/tests-m32/xetpriority.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpriority and setpriority syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests-m32/xettimeofday.c b/tests-m32/xettimeofday.c
index d36c57b..ec422cf 100644
--- a/tests-m32/xettimeofday.c
+++ b/tests-m32/xettimeofday.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -36,36 +37,49 @@
 int
 main(void)
 {
-	struct {
-		struct timeval tv;
-		uint32_t pad0[2];
-		struct timezone tz;
-		uint32_t pad1[2];
-	} t = {
-		.pad0 = { 0xdeadbeef, 0xbadc0ded },
-		.pad1 = { 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timezone, tz);
 
-	if (syscall(__NR_gettimeofday, &t.tv, NULL))
+	if (syscall(__NR_gettimeofday, tv, NULL))
 		perror_msg_and_skip("gettimeofday");
-	printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}, NULL) = 0\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec);
+	printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}, NULL) = 0\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
 
-	if (syscall(__NR_gettimeofday, &t.tv, &t.tz))
+	if (syscall(__NR_gettimeofday, tv, tz))
 		perror_msg_and_skip("gettimeofday");
-	printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}"
+	printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}"
 	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = 0\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
-	       t.tz.tz_minuteswest, t.tz.tz_dsttime);
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
 
-	t.tv.tv_sec = -1;
-	t.tv.tv_usec = 1000000000;
-	assert(syscall(__NR_settimeofday, &t.tv, &t.tz) == -1);
-	printf("settimeofday({tv_sec=%jd, tv_usec=%jd}"
-	       ", {tz_minuteswest=%d, tz_dsttime=%d})"
-	       " = -1 EINVAL (%m)\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
-	       t.tz.tz_minuteswest, t.tz.tz_dsttime);
+	tv->tv_sec = -1;
+	tv->tv_usec = 1000000;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
+
+	tv->tv_sec = 0xdeadbeefU;
+	tv->tv_usec = 0xfacefeedU;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
+
+	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-m32/xettimeofday.gen.test b/tests-m32/xettimeofday.gen.test
new file mode 100755
index 0000000..1a021e4
--- /dev/null
+++ b/tests-m32/xettimeofday.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xettimeofday -a20 -e trace=gettimeofday,settimeofday); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests-m32/xettimeofday.test b/tests-m32/xettimeofday.test
deleted file mode 100755
index 68764e4..0000000
--- a/tests-m32/xettimeofday.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check gettimeofday and settimeofday syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests-m32/xselect.c b/tests-m32/xselect.c
index 39e87ac..e1638c8 100644
--- a/tests-m32/xselect.c
+++ b/tests-m32/xselect.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -31,6 +32,7 @@
 
 #include <assert.h>
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/select.h>
 
@@ -38,14 +40,10 @@
 
 int main(void)
 {
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+	struct timeval tv_in;
 	int fds[2];
-	struct {
-		struct timeval tv;
-		int pad[2];
-	} tm_in = {
-		.tv = { .tv_sec = 0xc0de1, .tv_usec = 0xc0de2 },
-		.pad = { 0xdeadbeef, 0xbadc0ded }
-	}, tm = tm_in;
+	long rc;
 
 	if (pipe(fds))
 		perror_msg_and_fail("pipe");
@@ -56,7 +54,7 @@
 	FD_ZERO(set);
 	FD_SET(fds[0], set);
 	FD_SET(fds[1], set);
-	int rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
+	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);
@@ -65,19 +63,73 @@
 	       fds[0], fds[1], fds[0], fds[1]);
 
 	/*
+	 * 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);
+	if (rc < 0) {
+		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));
+	} else {
+		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,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       rc, (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+	}
+
+	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
+	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+	memcpy(&tv_in, tv, sizeof(tv_in));
+	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	if (rc < 0) {
+		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));
+	} else {
+		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,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       rc, (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+	}
+
+	/*
 	 * Another simple one, with a timeout.
 	 */
 	FD_SET(1, set);
 	FD_SET(2, set);
 	FD_SET(fds[0], set);
 	FD_SET(fds[1], set);
-	assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, &tm.tv) == 3);
-	printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%lld})"
-	       " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%lld})\n",
+	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) tm_in.tv.tv_sec, (long long) tm_in.tv.tv_usec,
+	       (long long) tv_in.tv_sec,
+	       zero_extend_signed_to_ull(tv_in.tv_usec),
 	       fds[1],
-	       (long long) tm.tv.tv_sec, (long long) tm.tv.tv_usec);
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
@@ -94,9 +146,9 @@
 	 */
 	FD_ZERO(set);
 	FD_SET(fds[0],set);
-	tm.tv.tv_sec = 0;
-	tm.tv.tv_usec = 123;
-	assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, &tm.tv) == 0);
+	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]);
 
diff --git a/tests-m32/xstatfsx.c b/tests-m32/xstatfsx.c
index d8288f1..cb524ff 100644
--- a/tests-m32/xstatfsx.c
+++ b/tests-m32/xstatfsx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
@@ -62,9 +63,9 @@
 {
 	int fd = open(sample, O_RDONLY);
 	if (fd < 0)
-		perror_msg_and_fail("open: %s", sample);
+		perror_msg_and_skip("open: %s", sample);
 
-	STRUCT_STATFS *const b = tail_alloc(sizeof(*b));
+	TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STATFS, b);
 	long rc = SYSCALL_INVOKE(sample, fd, b, sizeof(*b));
 	if (rc)
 		perror_msg_and_skip(SYSCALL_NAME);
diff --git a/tests-m32/xstatx.c b/tests-m32/xstatx.c
index 0d5fca8..8758ef8 100644
--- a/tests-m32/xstatx.c
+++ b/tests-m32/xstatx.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -47,26 +48,7 @@
 # include <unistd.h>
 # include <sys/sysmacros.h>
 
-static void
-print_time(const time_t t)
-{
-	if (!t) {
-		printf("0");
-		return;
-	}
-
-	struct tm *p = localtime(&t);
-
-	if (p) {
-		char buf[256];
-
-		strftime(buf, sizeof(buf), "%FT%T%z", p);
-
-		printf("%s", buf);
-	} else {
-		printf("%llu", zero_extend_signed_to_ull(t));
-	}
-}
+# include "statx.h"
 
 # ifndef STRUCT_STAT
 #  define STRUCT_STAT struct stat
@@ -130,6 +112,10 @@
 #  define OLD_STAT 0
 # endif
 
+# ifndef IS_STATX
+#  define IS_STATX 0
+# endif
+
 static void
 print_ftype(const unsigned int mode)
 {
@@ -151,6 +137,8 @@
 	printf("%#o", mode & ~S_IFMT);
 }
 
+# if !IS_STATX
+
 static void
 print_stat(const STRUCT_STAT *st)
 {
@@ -165,12 +153,12 @@
 	printf(", st_nlink=%llu", zero_extend_signed_to_ull(st->st_nlink));
 	printf(", st_uid=%llu", zero_extend_signed_to_ull(st->st_uid));
 	printf(", st_gid=%llu", zero_extend_signed_to_ull(st->st_gid));
-# if OLD_STAT
+#  if OLD_STAT
 	printf(", st_blksize=0, st_blocks=0");
-# else /* !OLD_STAT */
+#  else /* !OLD_STAT */
 	printf(", st_blksize=%llu", zero_extend_signed_to_ull(st->st_blksize));
 	printf(", st_blocks=%llu", zero_extend_signed_to_ull(st->st_blocks));
-# endif /* OLD_STAT */
+#  endif /* OLD_STAT */
 
 	switch (st->st_mode & S_IFMT) {
 	case S_IFCHR: case S_IFBLK:
@@ -182,27 +170,87 @@
 		printf(", st_size=%llu", zero_extend_signed_to_ull(st->st_size));
 	}
 
-	printf(", st_atime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_atime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_atime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_atime_nsec));
-# endif
-	printf(", st_mtime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_mtime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_mtime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_mtime_nsec));
-# endif
-	printf(", st_ctime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_ctime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_ctime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_ctime_nsec));
-# endif
+#  if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
+#   define TIME_NSEC(val)	zero_extend_signed_to_ull(val)
+#   define HAVE_NSEC		1
+#  else
+#   define TIME_NSEC(val)	0ULL
+#   define HAVE_NSEC		0
+#  endif
+
+#define PRINT_ST_TIME(field)						\
+	printf(", st_" #field "=%lld",					\
+	       sign_extend_unsigned_to_ll(st->st_ ## field));		\
+	print_time_t_nsec(sign_extend_unsigned_to_ll(st->st_ ## field),	\
+			  TIME_NSEC(st->st_ ## field ## _nsec), 1);	\
+	if (HAVE_NSEC)							\
+		printf(", st_" #field "_nsec=%llu",			\
+		       TIME_NSEC(st->st_ ## field ## _nsec))
+
+	PRINT_ST_TIME(atime);
+	PRINT_ST_TIME(mtime);
+	PRINT_ST_TIME(ctime);
 	printf("}");
 }
 
+# else /* !IS_STATX */
+
+static void
+print_stat(const STRUCT_STAT *st)
+{
+#  define PRINT_FIELD_U(field) \
+	printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+#  define PRINT_FIELD_U32_UID(field) \
+	if (st->field == (uint32_t) -1) \
+		printf(", %s=-1", #field); \
+	else \
+		printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+#  define PRINT_FIELD_TIME(field)					\
+	printf(", %s={tv_sec=%lld, tv_nsec=%u}",			\
+	       #field, (long long) st->field.tv_sec,			\
+	       (unsigned) st->field.tv_nsec);				\
+	print_time_t_nsec(st->field.tv_sec,				\
+			  zero_extend_signed_to_ull(st->field.tv_nsec), 1);
+
+	printf("{stx_mask=");
+	printflags(statx_masks, st->stx_mask, "STATX_???");
+
+	PRINT_FIELD_U(stx_blksize);
+
+	printf(", stx_attributes=");
+	printflags(statx_attrs, st->stx_attributes, "STATX_ATTR_???");
+
+	PRINT_FIELD_U(stx_nlink);
+	PRINT_FIELD_U32_UID(stx_uid);
+	PRINT_FIELD_U32_UID(stx_gid);
+
+	printf(", stx_mode=");
+	print_ftype(st->stx_mode);
+	printf("|");
+	print_perms(st->stx_mode);
+
+	PRINT_FIELD_U(stx_ino);
+	PRINT_FIELD_U(stx_size);
+	PRINT_FIELD_U(stx_blocks);
+
+	printf(", stx_attributes_mask=");
+	printflags(statx_attrs, st->stx_attributes_mask, "STATX_ATTR_???");
+
+	PRINT_FIELD_TIME(stx_atime);
+	PRINT_FIELD_TIME(stx_btime);
+	PRINT_FIELD_TIME(stx_ctime);
+	PRINT_FIELD_TIME(stx_mtime);
+	PRINT_FIELD_U(stx_rdev_major);
+	PRINT_FIELD_U(stx_rdev_minor);
+	PRINT_FIELD_U(stx_dev_major);
+	PRINT_FIELD_U(stx_dev_minor);
+	printf("}");
+}
+
+# endif /* !IS_STATX */
+
 static int
 create_sample(const char *fname, const libc_off_t size)
 {
@@ -229,19 +277,19 @@
 int
 main(void)
 {
-# if !IS_FSTAT
+# if IS_FSTAT
+	skip_if_unavailable("/proc/self/fd/");
+# else
 	static const char full[] = "/dev/full";
 # endif
-	static const char sample[] = TEST_SYSCALL_STR ".sample";
-	STRUCT_STAT st[2];
+	static const char sample[] = "stat.sample";
+	TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STAT, st);
 
 	int rc;
 
 	rc = create_sample(sample, SAMPLE_SIZE);
-	if (rc) {
-		(void) unlink(sample);
+	if (rc)
 		return rc;
-	}
 
 # if TEST_BOGUS_STRUCT_STAT
 	STRUCT_STAT *st_cut = tail_alloc(sizeof(long) * 4);
@@ -262,46 +310,71 @@
 # endif
 
 	if ((rc = TEST_SYSCALL_INVOKE(sample, st))) {
-# if OLD_STAT
-		if (errno != EOVERFLOW)
-# endif
-		{
+		if (errno != EOVERFLOW) {
+			rc = (errno == ENOSYS) ? 77 : 1;
 			perror(TEST_SYSCALL_STR);
-			(void) unlink(sample);
-			return 77;
+			return rc;
 		}
 	}
-	(void) unlink(sample);
+
+# if IS_STATX
+#  define ST_SIZE_FIELD stx_size
+# else
+#  define ST_SIZE_FIELD st_size
+# endif
 	if (!rc && zero_extend_signed_to_ull(SAMPLE_SIZE) !=
-	    zero_extend_signed_to_ull(st[0].st_size)) {
+	    zero_extend_signed_to_ull(st->ST_SIZE_FIELD)) {
 		fprintf(stderr, "Size mismatch: "
 				"requested size(%llu) != st_size(%llu)\n",
 			zero_extend_signed_to_ull(SAMPLE_SIZE),
-			zero_extend_signed_to_ull(st[0].st_size));
+			zero_extend_signed_to_ull(st->ST_SIZE_FIELD));
 		fprintf(stderr, "The most likely reason for this is incorrect"
 				" definition of %s.\n"
 				"Here is some diagnostics that might help:\n",
 			STRUCT_STAT_STR);
 
-#define LOG_STAT_OFFSETOF_SIZEOF(object, member)			\
+# define LOG_STAT_OFFSETOF_SIZEOF(object, member)			\
 		fprintf(stderr, "offsetof(%s, %s) = %zu"		\
 				", sizeof(%s) = %zu\n",			\
 				STRUCT_STAT_STR, #member,		\
 				offsetof(STRUCT_STAT, member),		\
 				#member, sizeof((object).member))
 
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_dev);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_ino);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_mode);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_nlink);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_uid);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_gid);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_rdev);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_size);
-# if !OLD_STAT
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blksize);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blocks);
-# endif /* !OLD_STAT */
+# if IS_STATX
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mask);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blksize);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_nlink);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_uid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_gid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mode);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ino);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_size);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blocks);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes_mask);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_atime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_btime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ctime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mtime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_major);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_minor);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_major);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_minor);
+# else
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_dev);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_ino);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_mode);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_nlink);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_uid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_gid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_rdev);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_size);
+#  if !OLD_STAT
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_blksize);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_blocks);
+#  endif /* !OLD_STAT */
+
+# endif /* IS_STATX */
 
 		return 1;
 	}
@@ -313,6 +386,63 @@
 		print_stat(st);
 	PRINT_SYSCALL_FOOTER(rc);
 
+# if IS_STATX
+
+#  define INVOKE() \
+	rc = TEST_SYSCALL_INVOKE(sample, st); \
+	PRINT_SYSCALL_HEADER(sample); \
+	if (rc) \
+		printf("%p", st); \
+	else \
+		print_stat(st); \
+	PRINT_SYSCALL_FOOTER(rc)
+
+#  define SET_FLAGS_INVOKE(flags, flags_str) \
+	TEST_SYSCALL_STATX_FLAGS = flags; \
+	TEST_SYSCALL_STATX_FLAGS_STR = flags_str; \
+	INVOKE()
+
+#  define SET_MASK_INVOKE(mask, mask_str) \
+	TEST_SYSCALL_STATX_MASK = mask; \
+	TEST_SYSCALL_STATX_MASK_STR = mask_str; \
+	INVOKE()
+
+	unsigned old_flags = TEST_SYSCALL_STATX_FLAGS;
+	const char *old_flags_str = TEST_SYSCALL_STATX_FLAGS_STR;
+	unsigned old_mask = TEST_SYSCALL_STATX_MASK;
+	const char *old_mask_str = TEST_SYSCALL_STATX_MASK_STR;
+
+	SET_FLAGS_INVOKE(AT_SYMLINK_FOLLOW | 0xffff0000U,
+		"AT_STATX_SYNC_AS_STAT|AT_SYMLINK_FOLLOW|0xffff0000");
+
+	SET_FLAGS_INVOKE(AT_STATX_SYNC_TYPE,
+		"AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC");
+
+	SET_FLAGS_INVOKE(0xffffff,
+		"AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC|AT_SYMLINK_NOFOLLOW|"
+		"AT_REMOVEDIR|AT_SYMLINK_FOLLOW|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|"
+		"0xff80ff");
+
+	/* We're done playing with flags. */
+	TEST_SYSCALL_STATX_FLAGS = old_flags;
+	TEST_SYSCALL_STATX_FLAGS_STR = old_flags_str;
+
+	SET_MASK_INVOKE(0, "0");
+	SET_MASK_INVOKE(0xfffff000U, "0xfffff000 /* STATX_??? */");
+
+	SET_MASK_INVOKE(0xfffffffbU,
+		"STATX_TYPE|STATX_MODE|STATX_UID|STATX_GID|STATX_ATIME|"
+		"STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|"
+		"STATX_BTIME|0xfffff000");
+
+	SET_MASK_INVOKE(STATX_UID, "STATX_UID");
+
+	/* ...and with mask. */
+	TEST_SYSCALL_STATX_MASK = old_mask;
+	TEST_SYSCALL_STATX_MASK_STR = old_mask_str;
+
+# endif /* IS_STATX */
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests-m32/xutimes.c b/tests-m32/xutimes.c
new file mode 100644
index 0000000..5fd7161
--- /dev/null
+++ b/tests-m32/xutimes.c
@@ -0,0 +1,149 @@
+/*
+ * Check decoding of utimes/osf_utimes 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.
+ */
+
+#ifndef TEST_SYSCALL_NR
+# error TEST_SYSCALL_NR must be defined
+#endif
+
+#ifndef TEST_SYSCALL_STR
+# error TEST_SYSCALL_STR must be defined
+#endif
+
+#ifndef TEST_STRUCT
+# error TEST_STRUCT must be defined
+#endif
+
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+static void
+print_tv(const TEST_STRUCT *const tv)
+{
+	printf("{tv_sec=%lld, tv_usec=%llu}",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
+	print_time_t_usec(tv->tv_sec,
+			  zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimes(const kernel_ulong_t pathname, const kernel_ulong_t times)
+{
+	long rc = syscall(TEST_SYSCALL_NR, pathname, times);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	static const char proto_fname[] = TEST_SYSCALL_STR "_sample";
+	static const char qname[] = "\"" TEST_SYSCALL_STR "_sample\"";
+
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	TEST_STRUCT *const tv = tail_alloc(sizeof(*tv) * 2);
+
+	/* pathname */
+	k_utimes(0, 0);
+	printf("%s(NULL, NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+	k_utimes(kfname + sizeof(proto_fname) - 1, 0);
+	printf("%s(\"\", NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+	k_utimes(kfname, 0);
+	printf("%s(%s, NULL) = %s\n", TEST_SYSCALL_STR, qname, errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_utimes(kfname, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("%s(%p, NULL) = %s\n", TEST_SYSCALL_STR, fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimes(f8ill_ptr_to_kulong(fname), 0);
+		printf("%s(%#jx, NULL) = %s\n", TEST_SYSCALL_STR,
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_utimes(kfname, (uintptr_t) (tv + 1));
+	printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+	       qname, tv + 1, errstr);
+
+	k_utimes(kfname, (uintptr_t) (tv + 2));
+	printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+	       qname, tv + 2, errstr);
+
+	tv[0].tv_sec = 0xdeadbeefU;
+	tv[0].tv_usec = 0xfacefeedU;
+	tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_sec = 1492358607;
+	tv[0].tv_usec = 1000000;
+	tv[1].tv_sec = 1492356078;
+	tv[1].tv_usec = 1000001;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_usec = 345678;
+	tv[1].tv_usec = 456789;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimes(kfname, f8ill_ptr_to_kulong(tv));
+		printf("%s(%s, %#jx) = %s\n", TEST_SYSCALL_STR,
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-mx32/Makefile b/tests-mx32/Makefile
index d43833f..783858d 100644
--- a/tests-mx32/Makefile
+++ b/tests-mx32/Makefile
@@ -17,6 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
 POST_UNINSTALL = :
 build_triplet = x86_64-pc-linux-gnu
 host_triplet = x86_64-pc-linux-gnu
-check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
-	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
-	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
-	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
-	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
-	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
-	chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
-	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
-	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
-	count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-	dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
-	epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
-	epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
-	execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
-	execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
-	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
-	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
-	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
-	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
-	file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
-	finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
-	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
-	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
-	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
-	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
-	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
-	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
-	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
-	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
-	getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
-	getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
-	getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
-	getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
-	getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
-	inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
-	ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
-	ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
-	ioctl_rtc-v$(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) ipc_msg$(EXEEXT) \
-	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
-	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
-	keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
-	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
-	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
-	lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
-	membarrier$(EXEEXT) memfd_create$(EXEEXT) \
-	migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
-	mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
-	mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
-	mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
-	mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
-	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
-	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
-	msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
-	munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-accept-connect$(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_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
-	netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
-	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
-	pc$(EXEEXT) perf_event_open$(EXEEXT) \
-	perf_event_open_nonverbose$(EXEEXT) \
-	perf_event_open_unabbrev$(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-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
-	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
-	print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
-	process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
-	pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
-	qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
-	qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
-	qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
-	quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
-	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
-	readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
-	reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
-	recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
-	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) \
-	restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
-	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
-	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
-	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
-	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
-	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
-	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
-	scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
-	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
-	sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
-	setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
-	setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
-	setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
-	setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
-	setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
-	setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
-	setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
-	shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
-	sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
-	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
-	stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-	statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
-	symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
-	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-	tee$(EXEEXT) threads-execve$(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) unix-pair-send-recv$(EXEEXT) \
-	unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
-	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-	utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
-	vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
-	waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
-	xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
-DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+	$(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) caps-abbrev$(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) ksysent$(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) \
+	perf_event_open_nonverbose$(EXEEXT) \
+	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+	print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+	qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+	qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+	quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+	scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+	seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+	wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+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 \
@@ -300,6 +191,7 @@
 	libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
+	libtests_a-get_sigset_size.$(OBJEXT) \
 	libtests_a-hexdump_strdup.$(OBJEXT) \
 	libtests_a-hexquote_strndup.$(OBJEXT) \
 	libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
 	libtests_a-overflowuid.$(OBJEXT) \
 	libtests_a-pipe_maxfd.$(OBJEXT) \
 	libtests_a-print_quoted_string.$(OBJEXT) \
+	libtests_a-print_time.$(OBJEXT) \
 	libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
-	libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
-	libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+	libtests_a-signal2name.$(OBJEXT) \
+	libtests_a-skip_unavailable.$(OBJEXT) \
+	libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+	libtests_a-tprintf.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+	chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) creat$(EXEEXT) \
+	delete_module$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) \
+	dup3$(EXEEXT) epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
+	epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
+	erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
+	execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+	file_ioctl$(EXEEXT) finit_module$(EXEEXT) flock$(EXEEXT) \
+	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+	getpgrp$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
+	getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+	getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+	getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+	getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(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_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) ipc_msg$(EXEEXT) \
+	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+	keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+	lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(EXEEXT) \
+	mbind$(EXEEXT) membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+	migrate_pages$(EXEEXT) mincore$(EXEEXT) 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) \
+	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+	netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+	old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+	oldselect$(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) \
+	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+	printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+	process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+	pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+	readlink$(EXEEXT) 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) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+	rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(EXEEXT) \
+	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+	seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+	sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+	setdomainname$(EXEEXT) setfsgid$(EXEEXT) setfsgid32$(EXEEXT) \
+	setfsuid$(EXEEXT) setfsuid32$(EXEEXT) setgid$(EXEEXT) \
+	setgid32$(EXEEXT) setgroups$(EXEEXT) setgroups32$(EXEEXT) \
+	sethostname$(EXEEXT) setns$(EXEEXT) setregid$(EXEEXT) \
+	setregid32$(EXEEXT) setresgid$(EXEEXT) setresgid32$(EXEEXT) \
+	setresuid$(EXEEXT) setresuid32$(EXEEXT) setreuid$(EXEEXT) \
+	setreuid32$(EXEEXT) setrlimit$(EXEEXT) setuid$(EXEEXT) \
+	setuid32$(EXEEXT) shmxt$(EXEEXT) shutdown$(EXEEXT) \
+	sigaction$(EXEEXT) sigaltstack$(EXEEXT) siginfo$(EXEEXT) \
+	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(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) \
+	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+	xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
 getrandom_SOURCES = getrandom.c
 getrandom_OBJECTS = getrandom.$(OBJEXT)
 getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
 getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
 ioctl_SOURCES = ioctl.c
 ioctl_OBJECTS = ioctl.$(OBJEXT)
 ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
 ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
 ioctl_mtd_LDADD = $(LDADD)
 ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
 ioctl_rtc_SOURCES = ioctl_rtc.c
 ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
 ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
 lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
 lstat64_LDADD = $(LDADD)
 lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
 pause_SOURCES = pause.c
 pause_OBJECTS = pause.$(OBJEXT)
 pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
 prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
 prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
 prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
 rt_sigsuspend_SOURCES = rt_sigsuspend.c
 rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
 rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
 sigreturn_OBJECTS = sigreturn.$(OBJEXT)
 sigreturn_LDADD = $(LDADD)
 sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
 sleep_SOURCES = sleep.c
 sleep_OBJECTS = sleep.$(OBJEXT)
 sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
 swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
 symlink_SOURCES = symlink.c
 symlink_OBJECTS = symlink.$(OBJEXT)
 symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-#am__EXEEXT_1 = strace-k.test
+#am__EXEEXT_2 = strace-k.test
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS =  .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2234,12 +2298,12 @@
       b='$*';; \
   esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing aclocal-1.14
+ACLOCAL = ${SHELL} /tmp/strace-4.17/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
-AUTOCONF = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoconf
-AUTOHEADER = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoheader
-AUTOMAKE = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing automake-1.14
+AUTOCONF = ${SHELL} /tmp/strace-4.17/missing autoconf
+AUTOHEADER = ${SHELL} /tmp/strace-4.17/missing autoheader
+AUTOMAKE = ${SHELL} /tmp/strace-4.17/missing automake-1.14
 AWK = gawk
 BUILD_EXEEXT = 
 BUILD_OBJEXT = 
@@ -2253,12 +2317,13 @@
 CODE_COVERAGE_CXXFLAGS = 
 CODE_COVERAGE_ENABLED = no
 CODE_COVERAGE_LDFLAGS = 
+COPYRIGHT_YEAR = 2017
 CPP = gcc -E
 CPPFLAGS = 
 CPPFLAGS_FOR_BUILD = 
 CPP_FOR_BUILD = gcc -E
 CYGPATH_W = echo
-DEB_CHANGELOGTIME = Wed, 15 Feb 2017 11:38:25 -0800
+DEB_CHANGELOGTIME = Thu, 25 May 2017 15:09:49 -0700
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
 ECHO_C = 
@@ -2285,34 +2350,34 @@
 LIBS = 
 LTLIBOBJS = 
 MAINT = #
-MAKEINFO = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing makeinfo
+MAKEINFO = ${SHELL} /tmp/strace-4.17/missing makeinfo
 MIPS_ABI = 
 MKDIR_P = /bin/mkdir -p
 OBJEXT = o
 PACKAGE = strace
 PACKAGE_BUGREPORT = strace-devel@lists.sourceforge.net
 PACKAGE_NAME = strace
-PACKAGE_STRING = strace 4.16
+PACKAGE_STRING = strace 4.17
 PACKAGE_TARNAME = strace
 PACKAGE_URL = https://strace.io
-PACKAGE_VERSION = 4.16
+PACKAGE_VERSION = 4.17
 PATH_SEPARATOR = :
 PERL = /usr/bin/perl
 RANLIB = ranlib
-RPM_CHANGELOGTIME = Wed Feb 15 2017
+RPM_CHANGELOGTIME = Thu May 25 2017
 SED = /bin/sed
 SET_MAKE = 
 SHELL = /bin/sh
 STRIP = 
 VALGRIND = valgrind
 VALGRIND_ENABLED = yes
-VERSION = 4.16
+VERSION = 4.17
 WARN_CFLAGS =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
 WARN_CFLAGS_FOR_BUILD =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
-abs_builddir = /usr/local/google/home/enh/Downloads/strace-4.16/tests-mx32
-abs_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16/tests-mx32
-abs_top_builddir = /usr/local/google/home/enh/Downloads/strace-4.16
-abs_top_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16
+abs_builddir = /tmp/strace-4.17/tests-mx32
+abs_srcdir = /tmp/strace-4.17/tests-mx32
+abs_top_builddir = /tmp/strace-4.17
+abs_top_srcdir = /tmp/strace-4.17
 ac_ct_CC = gcc
 ac_ct_CC_FOR_BUILD = gcc
 am__include = include
@@ -2344,7 +2409,7 @@
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/install-sh
+install_sh = ${SHELL} /tmp/strace-4.17/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 libunwind_CPPFLAGS = 
@@ -2389,6 +2454,7 @@
 	error_msg.c \
 	fill_memory.c \
 	get_page_size.c \
+	get_sigset_size.c \
 	hexdump_strdup.c \
 	hexquote_strndup.c \
 	inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
 	overflowuid.c \
 	pipe_maxfd.c \
 	print_quoted_string.c \
+	print_time.c \
 	printflags.c \
 	printxval.c \
 	signal2name.c \
+	skip_unavailable.c \
 	sprintrc.c \
 	tail_alloc.c \
 	tests.h \
@@ -2409,6 +2477,340 @@
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
 LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+  _newselect \
+  accept \
+  accept4 \
+  access \
+  acct \
+  add_key \
+  adjtimex \
+  aio \
+  alarm \
+  bpf \
+  brk \
+  btrfs \
+  caps \
+  chmod \
+  chown \
+  chown32 \
+  chroot \
+  clock_adjtime \
+  clock_nanosleep \
+  clock_xettime \
+  copy_file_range \
+  creat \
+  delete_module \
+  dup \
+  dup2 \
+  dup3 \
+  epoll_create \
+  epoll_create1 \
+  epoll_ctl \
+  epoll_pwait \
+  epoll_wait \
+  erestartsys \
+  eventfd \
+  execve \
+  execveat \
+  faccessat \
+  fadvise64 \
+  fadvise64_64 \
+  fallocate \
+  fanotify_init \
+  fanotify_mark \
+  fchdir \
+  fchmod \
+  fchmodat \
+  fchown \
+  fchown32 \
+  fchownat \
+  fcntl \
+  fcntl64 \
+  fdatasync \
+  file_handle \
+  file_ioctl \
+  finit_module \
+  flock \
+  fstat \
+  fstat64 \
+  fstatat64 \
+  fstatfs \
+  fstatfs64 \
+  fsync \
+  ftruncate \
+  ftruncate64 \
+  futex \
+  futimesat \
+  get_mempolicy \
+  getcpu \
+  getcwd \
+  getdents \
+  getdents64 \
+  getegid \
+  getegid32 \
+  geteuid \
+  geteuid32 \
+  getgid \
+  getgid32 \
+  getgroups \
+  getgroups32 \
+  getpeername \
+  getpgrp \
+  getpid \
+  getppid \
+  getrandom \
+  getresgid \
+  getresgid32 \
+  getresuid \
+  getresuid32 \
+  getrlimit \
+  getrusage \
+  getsid \
+  getsockname \
+  getuid \
+  getuid32 \
+  getxxid \
+  inet-cmsg \
+  init_module \
+  inotify \
+  inotify_init1 \
+  ioctl \
+  ioctl_block \
+  ioctl_dm \
+  ioctl_evdev \
+  ioctl_loop \
+  ioctl_mtd \
+  ioctl_rtc \
+  ioctl_scsi \
+  ioctl_sg_io_v3 \
+  ioctl_sg_io_v4 \
+  ioctl_sock_gifconf \
+  ioctl_uffdio \
+  ioctl_v4l2 \
+  ioperm \
+  iopl \
+  ioprio \
+  ip_mreq \
+  ipc \
+  ipc_msg \
+  ipc_msgbuf \
+  ipc_sem \
+  ipc_shm \
+  kcmp \
+  kexec_file_load \
+  kexec_load \
+  keyctl \
+  kill \
+  lchown \
+  lchown32 \
+  link \
+  linkat \
+  llseek \
+  lookup_dcookie \
+  lseek \
+  lstat \
+  lstat64 \
+  madvise \
+  mbind \
+  membarrier \
+  memfd_create \
+  migrate_pages \
+  mincore \
+  mkdir \
+  mkdirat \
+  mknod \
+  mknodat \
+  mlock \
+  mlock2 \
+  mlockall \
+  mmap \
+  mmap64 \
+  mmsg \
+  mmsg_name \
+  mount \
+  move_pages \
+  mq \
+  mq_sendrecv \
+  mq_sendrecv-read \
+  mq_sendrecv-write \
+  msg_control \
+  msg_name \
+  munlockall \
+  nanosleep \
+  net-icmp_filter \
+  net-sockaddr \
+  net-y-unix \
+  net-yy-inet \
+  net-yy-netlink \
+  net-yy-unix \
+  netlink_protocol \
+  newfstatat \
+  old_mmap \
+  oldfstat \
+  oldlstat \
+  oldselect \
+  oldstat \
+  open \
+  openat \
+  osf_utimes \
+  pause \
+  perf_event_open \
+  personality \
+  pipe \
+  pipe2 \
+  pkey_alloc \
+  pkey_free \
+  pkey_mprotect \
+  poll \
+  ppoll \
+  prctl-arg2-intptr \
+  prctl-dumpable \
+  prctl-name \
+  prctl-no-args \
+  prctl-pdeathsig \
+  prctl-securebits \
+  prctl-tid_address \
+  prctl-tsc \
+  pread64-pwrite64 \
+  preadv \
+  preadv-pwritev \
+  preadv2-pwritev2 \
+  printstr \
+  prlimit64 \
+  process_vm_readv \
+  process_vm_writev \
+  pselect6 \
+  ptrace \
+  pwritev \
+  quotactl \
+  quotactl-xfs \
+  read-write \
+  readahead \
+  readdir \
+  readlink \
+  readlinkat \
+  readv \
+  reboot \
+  recvfrom \
+  recvmmsg-timeout \
+  recvmsg \
+  remap_file_pages \
+  rename \
+  renameat \
+  renameat2 \
+  request_key \
+  rmdir \
+  rt_sigpending \
+  rt_sigprocmask \
+  rt_sigqueueinfo \
+  rt_sigreturn \
+  rt_sigsuspend \
+  rt_sigtimedwait \
+  rt_tgsigqueueinfo \
+  sched_get_priority_mxx \
+  sched_rr_get_interval \
+  sched_xetaffinity \
+  sched_xetattr \
+  sched_xetparam \
+  sched_xetscheduler \
+  sched_yield \
+  seccomp-filter \
+  select \
+  semop \
+  sendfile \
+  sendfile64 \
+  set_mempolicy \
+  setdomainname \
+  setfsgid \
+  setfsgid32 \
+  setfsuid \
+  setfsuid32 \
+  setgid \
+  setgid32 \
+  setgroups \
+  setgroups32 \
+  sethostname \
+  setns \
+  setregid \
+  setregid32 \
+  setresgid \
+  setresgid32 \
+  setresuid \
+  setresuid32 \
+  setreuid \
+  setreuid32 \
+  setrlimit \
+  setuid \
+  setuid32 \
+  shmxt \
+  shutdown \
+  sigaction \
+  sigaltstack \
+  siginfo \
+  signalfd4 \
+  sigreturn \
+  sigsuspend \
+  socketcall \
+  splice \
+  stat \
+  stat64 \
+  statfs \
+  statfs64 \
+  statx \
+  swap \
+  sxetmask \
+  symlink \
+  symlinkat \
+  sync \
+  sync_file_range \
+  sync_file_range2 \
+  sysinfo \
+  syslog \
+  tee \
+  time \
+  timer_create \
+  timer_xettime \
+  timerfd_xettime \
+  times \
+  times-fail \
+  truncate \
+  truncate64 \
+  ugetrlimit \
+  uio \
+  umask \
+  umount \
+  umount2 \
+  umoven-illptr \
+  umovestr \
+  umovestr-illptr \
+  umovestr2 \
+  umovestr3 \
+  uname \
+  unlink \
+  unlinkat \
+  unshare \
+  userfaultfd \
+  ustat \
+  utime \
+  utimensat \
+  utimes \
+  vhangup \
+  vmsplice \
+  wait4 \
+  waitid \
+  waitpid \
+  xattr \
+  xattr-strings \
+  xet_robust_list \
+  xetitimer \
+  xetpgid \
+  xetpriority \
+  xettimeofday \
+  #
+
 attach_f_p_LDADD = -lrt -lpthread $(LDADD)
 clock_xettime_LDADD = -lrt $(LDADD)
 count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-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 \
+	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 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 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_protocol.gen.test \
+	newfstatat.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 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 \
+	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 \
+	siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+	sigreturn.gen.test sigsuspend.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
 LIBUNWIND_TESTS = 
 #LIBUNWIND_TESTS = strace-k.test
 DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
 	brk.test \
 	btrfs-v.test \
 	btrfs-vw.test \
 	btrfs-w.test \
-	btrfs.test \
 	caps-abbrev.test \
 	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
 	eventfd.test \
 	execve-v.test \
 	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
 	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
 	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
 	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
 	ioctl.test \
-	ioctl_block.test \
 	ioctl_dm-v.test \
 	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
 	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
+	ioctl_nsfs.test \
 	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
 	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
 	llseek.test \
-	lookup_dcookie.test \
 	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
 	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
 	net-y-unix.test \
 	net-yy-inet.test \
 	net-yy-netlink.test \
 	net-yy-unix.test \
 	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
 	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
 	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
 	personality.test \
 	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
 	poll.test \
-	ppoll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
 	prctl-name.test \
@@ -2650,148 +3002,21 @@
 	prctl-securebits.test \
 	prctl-tid_address.test \
 	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
 	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
 	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
 	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
 	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
 	sigaction.test \
 	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
 	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
 	uio.test \
-	umask.test \
 	umount.test \
 	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
 	umovestr.test \
 	umovestr2.test \
-	umovestr3.test \
 	uname.test \
 	unix-pair-send-recv.test \
 	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
 	# end of DECODER_TESTS
 
 MISC_TESTS = \
@@ -2804,7 +3029,7 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
-	fork-f.test \
+	get_regs.test \
 	ksysent.test \
 	opipe.test \
 	options-syntax.test \
@@ -2820,7 +3045,6 @@
 	redirect-fds.test \
 	redirect.test \
 	restart_syscall.test \
-	signal_receive.test \
 	strace-C.test \
 	strace-E.test \
 	strace-S.test \
@@ -2832,77 +3056,94 @@
 	strace-tt.test \
 	strace-ttt.test \
 	threads-execve.test \
-	vfork-f.test \
 	# end of MISC_TESTS
 
 XFAIL_TESTS_ = 
 XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
 XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+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
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
+EXTRA_DIST = \
+	caps-abbrev.awk \
+	caps.awk \
+	clock.in \
+	count-f.expected \
+	eventfd.expected \
+	fadvise.h \
+	filter-unavailable.expected \
+	fstatat.c \
+	fstatx.c \
+	gen_pure_executables.sh \
+	gen_tests.in \
+	gen_tests.sh \
+	getresugid.c \
+	init.sh \
+	init_delete_module.h \
+	ioctl-v.sh \
+	ipc.sh \
+	ipc_msgbuf.expected \
+	ksysent.sed \
+	lstatx.c \
+	match.awk \
+	net.expected \
+	oldselect.expected \
+	pipe.expected \
+	process_vm_readv_writev.c \
+	pure_executables.list \
+	qual_fault-exit_group.expected \
+	qual_inject-error-signal.expected \
+	qual_inject-signal.expected \
+	quotactl.h \
+	regex.in \
+	run.sh \
+	sched.in \
+	scno_tampering.sh \
+	setfsugid.c \
+	setresugid.c \
+	setreugid.c \
+	setugid.c \
+	sigaction.awk \
+	sigaltstack.expected \
+	sockname.c \
+	strace-C.expected \
+	strace-E.expected \
+	strace-T.expected \
+	strace-ff.expected \
+	strace-k.test \
+	strace-r.expected \
+	strace.supp \
+	struct_flock.c \
+	sun_path.expected \
+	trace_fstat.in \
+	trace_fstatfs.in \
+	trace_lstat.in \
+	trace_question.in \
+	trace_stat.in \
+	trace_stat_like.in \
+	trace_statfs.in \
+	trace_statfs_like.in \
+	uio.expected \
+	umode_t.c \
+	umovestr.expected \
+	unix-pair-send-recv.expected \
+	unix-pair-sendto-recvfrom.expected \
+	xchownx.c \
+	xgetrlimit.c \
+	xselect.c \
+	xstatfs.c \
+	xstatfs64.c \
+	xstatfsx.c \
+	xstatx.c \
+	xutimes.c \
+	$(TESTS)
 
 objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
 
@@ -2913,7 +3154,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -2934,7 +3175,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../scno.am:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
 	@rm -f getpgrp$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
+	@rm -f getpid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
+	@rm -f getppid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
 getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES) 
 	@rm -f getrandom$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
 	@rm -f getsockname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
 
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES) 
+	@rm -f gettid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
 	@rm -f getuid$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
 	@rm -f inotify_init1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
+	@rm -f int_0x80$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
 ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES) 
 	@rm -f ioctl$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
 	@rm -f ioctl_mtd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
 
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES) 
+	@rm -f ioctl_nsfs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_LDADD) $(LIBS)
+
 ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES) 
 	@rm -f ioctl_rtc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
@@ -3548,6 +3809,10 @@
 	@rm -f lstat64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
 
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES) 
+	@rm -f madvise$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
 	@rm -f mbind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
 	@rm -f openat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES) 
+	@rm -f osf_utimes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
 pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES) 
 	@rm -f pause$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_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)
+
 prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES) 
 	@rm -f prctl-arg2-intptr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
@@ -4004,6 +4277,10 @@
 	@rm -f rt_sigqueueinfo$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
+	@rm -f rt_sigreturn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
 rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES) 
 	@rm -f rt_sigsuspend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
@@ -4204,6 +4481,10 @@
 	@rm -f sigreturn$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
 
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES) 
+	@rm -f sigsuspend$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
 sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES) 
 	@rm -f sleep$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
 	@rm -f statfs64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
+	@rm -f statx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
 	@rm -f swap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
 
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES) 
+	@rm -f sxetmask$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
 symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES) 
 	@rm -f symlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
 include ./$(DEPDIR)/getgroups32.Po
 include ./$(DEPDIR)/getpeername.Po
 include ./$(DEPDIR)/getpgrp.Po
+include ./$(DEPDIR)/getpid.Po
+include ./$(DEPDIR)/getppid.Po
 include ./$(DEPDIR)/getrandom.Po
 include ./$(DEPDIR)/getresgid.Po
 include ./$(DEPDIR)/getresgid32.Po
@@ -4557,6 +4848,7 @@
 include ./$(DEPDIR)/getrusage.Po
 include ./$(DEPDIR)/getsid.Po
 include ./$(DEPDIR)/getsockname.Po
+include ./$(DEPDIR)/gettid.Po
 include ./$(DEPDIR)/getuid.Po
 include ./$(DEPDIR)/getuid32.Po
 include ./$(DEPDIR)/getxxid.Po
@@ -4564,6 +4856,7 @@
 include ./$(DEPDIR)/init_module.Po
 include ./$(DEPDIR)/inotify.Po
 include ./$(DEPDIR)/inotify_init1.Po
+include ./$(DEPDIR)/int_0x80.Po
 include ./$(DEPDIR)/ioctl.Po
 include ./$(DEPDIR)/ioctl_block.Po
 include ./$(DEPDIR)/ioctl_dm-v.Po
@@ -4574,6 +4867,7 @@
 include ./$(DEPDIR)/ioctl_loop-v.Po
 include ./$(DEPDIR)/ioctl_loop.Po
 include ./$(DEPDIR)/ioctl_mtd.Po
+include ./$(DEPDIR)/ioctl_nsfs.Po
 include ./$(DEPDIR)/ioctl_rtc-v.Po
 include ./$(DEPDIR)/ioctl_rtc.Po
 include ./$(DEPDIR)/ioctl_scsi.Po
@@ -4603,6 +4897,7 @@
 include ./$(DEPDIR)/libtests_a-error_msg.Po
 include ./$(DEPDIR)/libtests_a-fill_memory.Po
 include ./$(DEPDIR)/libtests_a-get_page_size.Po
+include ./$(DEPDIR)/libtests_a-get_sigset_size.Po
 include ./$(DEPDIR)/libtests_a-hexdump_strdup.Po
 include ./$(DEPDIR)/libtests_a-hexquote_strndup.Po
 include ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
@@ -4611,9 +4906,11 @@
 include ./$(DEPDIR)/libtests_a-overflowuid.Po
 include ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
 include ./$(DEPDIR)/libtests_a-print_quoted_string.Po
+include ./$(DEPDIR)/libtests_a-print_time.Po
 include ./$(DEPDIR)/libtests_a-printflags.Po
 include ./$(DEPDIR)/libtests_a-printxval.Po
 include ./$(DEPDIR)/libtests_a-signal2name.Po
+include ./$(DEPDIR)/libtests_a-skip_unavailable.Po
 include ./$(DEPDIR)/libtests_a-sprintrc.Po
 include ./$(DEPDIR)/libtests_a-tail_alloc.Po
 include ./$(DEPDIR)/libtests_a-tprintf.Po
@@ -4624,6 +4921,7 @@
 include ./$(DEPDIR)/lseek.Po
 include ./$(DEPDIR)/lstat.Po
 include ./$(DEPDIR)/lstat64-lstat64.Po
+include ./$(DEPDIR)/madvise.Po
 include ./$(DEPDIR)/mbind.Po
 include ./$(DEPDIR)/membarrier.Po
 include ./$(DEPDIR)/memfd_create.Po
@@ -4673,6 +4971,7 @@
 include ./$(DEPDIR)/oldstat.Po
 include ./$(DEPDIR)/open.Po
 include ./$(DEPDIR)/openat.Po
+include ./$(DEPDIR)/osf_utimes.Po
 include ./$(DEPDIR)/pause.Po
 include ./$(DEPDIR)/pc.Po
 include ./$(DEPDIR)/perf_event_open.Po
@@ -4685,6 +4984,7 @@
 include ./$(DEPDIR)/pkey_free.Po
 include ./$(DEPDIR)/pkey_mprotect.Po
 include ./$(DEPDIR)/poll.Po
+include ./$(DEPDIR)/ppoll-v.Po
 include ./$(DEPDIR)/ppoll.Po
 include ./$(DEPDIR)/prctl-arg2-intptr.Po
 include ./$(DEPDIR)/prctl-dumpable.Po
@@ -4738,6 +5038,7 @@
 include ./$(DEPDIR)/rt_sigpending.Po
 include ./$(DEPDIR)/rt_sigprocmask.Po
 include ./$(DEPDIR)/rt_sigqueueinfo.Po
+include ./$(DEPDIR)/rt_sigreturn.Po
 include ./$(DEPDIR)/rt_sigsuspend.Po
 include ./$(DEPDIR)/rt_sigtimedwait.Po
 include ./$(DEPDIR)/rt_tgsigqueueinfo.Po
@@ -4788,6 +5089,7 @@
 include ./$(DEPDIR)/signal_receive.Po
 include ./$(DEPDIR)/signalfd4.Po
 include ./$(DEPDIR)/sigreturn.Po
+include ./$(DEPDIR)/sigsuspend.Po
 include ./$(DEPDIR)/sleep.Po
 include ./$(DEPDIR)/socketcall.Po
 include ./$(DEPDIR)/splice.Po
@@ -4800,7 +5102,9 @@
 include ./$(DEPDIR)/stat64-stat64.Po
 include ./$(DEPDIR)/statfs-statfs.Po
 include ./$(DEPDIR)/statfs64.Po
+include ./$(DEPDIR)/statx.Po
 include ./$(DEPDIR)/swap.Po
+include ./$(DEPDIR)/sxetmask.Po
 include ./$(DEPDIR)/symlink.Po
 include ./$(DEPDIR)/symlinkat.Po
 include ./$(DEPDIR)/sync.Po
@@ -4925,6 +5229,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
 
+libtests_a-get_sigset_size.o: get_sigset_size.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+#	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+#	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+
 libtests_a-hexdump_strdup.o: hexdump_strdup.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
@@ -5037,6 +5355,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
 
+libtests_a-print_time.o: print_time.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+#	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+#	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+
 libtests_a-printflags.o: printflags.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
@@ -5079,6 +5411,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
 
+libtests_a-skip_unavailable.o: skip_unavailable.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+#	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+#	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+
 libtests_a-sprintrc.o: sprintrc.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
@@ -5603,7 +5949,7 @@
 clean: clean-am
 
 clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	mostlyclean-am
+	clean-local mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
 .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
 	check-valgrind-am check-valgrind-local clean \
 	clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
 	uninstall uninstall-am
 
 
+$(srcdir)/_newselect.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) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.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_loop.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_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.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) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.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) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.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)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.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) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.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) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.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) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/select.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) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.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) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 
 # Valgrind check
 #
@@ -5786,6 +7095,11 @@
 ksysent.$(OBJEXT): ksysent.h
 $(objects): scno.h
 
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+	-rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
 syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
 	$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
 
diff --git a/tests-mx32/Makefile.am b/tests-mx32/Makefile.am
deleted file mode 100644
index 58efd3e..0000000
--- a/tests-mx32/Makefile.am
+++ /dev/null
@@ -1,962 +0,0 @@
-# Automake input for strace tests.
-#
-# Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-OS = linux
-ARCH = @arch_mx32@
-MPERS_NAME = mx32
-ARCH_MFLAGS = -DMPERS_IS_$(MPERS_NAME) -mx32
-AM_CFLAGS = $(WARN_CFLAGS)
-AM_CPPFLAGS = $(ARCH_MFLAGS) \
-	      -I$(builddir) \
-	      -I$(top_builddir)/$(OS)/$(ARCH) \
-	      -I$(top_srcdir)/$(OS)/$(ARCH) \
-	      -I$(top_builddir)/$(OS) \
-	      -I$(top_srcdir)/$(OS) \
-	      -I$(top_builddir) \
-	      -I$(top_srcdir)
-AM_LDFLAGS = $(ARCH_MFLAGS)
-
-libtests_a_SOURCES = \
-	errno2name.c \
-	error_msg.c \
-	fill_memory.c \
-	get_page_size.c \
-	hexdump_strdup.c \
-	hexquote_strndup.c \
-	inode_of_sockfd.c \
-	libmmsg.c \
-	libsocketcall.c \
-	overflowuid.c \
-	pipe_maxfd.c \
-	print_quoted_string.c \
-	printflags.c \
-	printxval.c \
-	signal2name.c \
-	sprintrc.c \
-	tail_alloc.c \
-	tests.h \
-	tprintf.c \
-	# end of libtests_a_SOURCES
-libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-check_LIBRARIES = libtests.a
-LDADD = libtests.a
-
-check_PROGRAMS = \
-	_newselect \
-	accept \
-	accept4 \
-	access \
-	acct \
-	add_key \
-	adjtimex \
-	aio \
-	alarm \
-	answer \
-	attach-f-p \
-	attach-f-p-cmd \
-	attach-p-cmd-cmd \
-	attach-p-cmd-p \
-	bpf \
-	brk \
-	btrfs \
-	caps \
-	caps-abbrev \
-	chmod \
-	chown \
-	chown32 \
-	chroot \
-	clock_adjtime \
-	clock_nanosleep \
-	clock_xettime \
-	copy_file_range \
-	count-f \
-	creat \
-	delete_module \
-	dup \
-	dup2 \
-	dup3 \
-	epoll_create \
-	epoll_create1 \
-	epoll_ctl \
-	epoll_pwait \
-	epoll_wait \
-	erestartsys \
-	eventfd \
-	execve \
-	execve-v \
-	execveat \
-	execveat-v \
-	faccessat \
-	fadvise64 \
-	fadvise64_64 \
-	fallocate \
-	fanotify_init \
-	fanotify_mark \
-	fchdir \
-	fchmod \
-	fchmodat \
-	fchown \
-	fchown32 \
-	fchownat \
-	fcntl \
-	fcntl64 \
-	fdatasync \
-	file_handle \
-	file_ioctl \
-	filter-unavailable \
-	finit_module \
-	flock \
-	fork-f \
-	fstat \
-	fstat64 \
-	fstatat64 \
-	fstatfs \
-	fstatfs64 \
-	fsync \
-	ftruncate \
-	ftruncate64 \
-	futex \
-	futimesat \
-	get_mempolicy \
-	getcpu \
-	getcwd \
-	getdents \
-	getdents64 \
-	getegid \
-	getegid32 \
-	geteuid \
-	geteuid32 \
-	getgid \
-	getgid32 \
-	getgroups \
-	getgroups32 \
-	getpeername \
-	getpgrp \
-	getrandom \
-	getresgid \
-	getresgid32 \
-	getresuid \
-	getresuid32 \
-	getrlimit \
-	getrusage \
-	getsid \
-	getsockname \
-	getuid \
-	getuid32 \
-	getxxid \
-	inet-cmsg \
-	init_module \
-	inotify \
-	inotify_init1 \
-	ioctl \
-	ioctl_block \
-	ioctl_dm \
-	ioctl_dm-v \
-	ioctl_evdev \
-	ioctl_evdev-v \
-	ioctl_loop \
-	ioctl_loop-nv \
-	ioctl_loop-v \
-	ioctl_mtd \
-	ioctl_rtc \
-	ioctl_rtc-v \
-	ioctl_scsi \
-	ioctl_sg_io_v3 \
-	ioctl_sg_io_v4 \
-	ioctl_sock_gifconf \
-	ioctl_uffdio \
-	ioctl_v4l2 \
-	ioperm \
-	iopl \
-	ioprio \
-	ip_mreq \
-	ipc \
-	ipc_msg \
-	ipc_msgbuf \
-	ipc_sem \
-	ipc_shm \
-	kcmp \
-	kexec_file_load \
-	kexec_load \
-	keyctl \
-	kill \
-	ksysent \
-	lchown \
-	lchown32 \
-	link \
-	linkat \
-	llseek \
-	lookup_dcookie \
-	lseek \
-	lstat \
-	lstat64 \
-	mbind \
-	membarrier \
-	memfd_create \
-	migrate_pages \
-	mincore \
-	mkdir \
-	mkdirat \
-	mknod \
-	mknodat \
-	mlock \
-	mlock2 \
-	mlockall \
-	mmap \
-	mmap64 \
-	mmsg \
-	mmsg-silent \
-	mmsg_name \
-	mmsg_name-v \
-	mount \
-	move_pages \
-	mq \
-	mq_sendrecv \
-	mq_sendrecv-read \
-	mq_sendrecv-write \
-	msg_control \
-	msg_control-v \
-	msg_name \
-	munlockall \
-	nanosleep \
-	net-accept-connect \
-	net-icmp_filter \
-	net-sockaddr \
-	net-y-unix \
-	net-yy-inet \
-	net-yy-netlink \
-	net-yy-unix \
-	netlink_inet_diag \
-	netlink_netlink_diag \
-	netlink_protocol \
-	netlink_unix_diag \
-	newfstatat \
-	nsyscalls \
-	old_mmap \
-	oldfstat \
-	oldlstat \
-	oldselect \
-	oldstat \
-	open \
-	openat \
-	pause \
-	pc \
-	perf_event_open \
-	perf_event_open_nonverbose \
-	perf_event_open_unabbrev \
-	personality \
-	pipe \
-	pipe2 \
-	pkey_alloc \
-	pkey_free \
-	pkey_mprotect \
-	poll \
-	ppoll \
-	prctl-arg2-intptr \
-	prctl-dumpable \
-	prctl-name \
-	prctl-no-args \
-	prctl-pdeathsig \
-	prctl-seccomp-filter-v \
-	prctl-seccomp-strict \
-	prctl-securebits \
-	prctl-tid_address \
-	prctl-tsc \
-	pread64-pwrite64 \
-	preadv \
-	preadv-pwritev \
-	preadv2-pwritev2 \
-	print_maxfd \
-	printstr \
-	prlimit64 \
-	process_vm_readv \
-	process_vm_writev \
-	pselect6 \
-	ptrace \
-	pwritev \
-	qual_fault \
-	qual_inject-error-signal \
-	qual_inject-retval \
-	qual_inject-signal \
-	qual_signal \
-	quotactl \
-	quotactl-v \
-	quotactl-xfs \
-	quotactl-xfs-v \
-	read-write \
-	readahead \
-	readdir \
-	readlink \
-	readlinkat \
-	readv \
-	reboot \
-	recvfrom \
-	recvmmsg-timeout \
-	recvmsg \
-	redirect-fds \
-	remap_file_pages \
-	rename \
-	renameat \
-	renameat2 \
-	request_key \
-	restart_syscall \
-	rmdir \
-	rt_sigpending \
-	rt_sigprocmask \
-	rt_sigqueueinfo \
-	rt_sigsuspend \
-	rt_sigtimedwait \
-	rt_tgsigqueueinfo \
-	sched_get_priority_mxx \
-	sched_rr_get_interval \
-	sched_xetaffinity \
-	sched_xetattr \
-	sched_xetparam \
-	sched_xetscheduler \
-	sched_yield \
-	scm_rights \
-	seccomp-filter \
-	seccomp-filter-v \
-	seccomp-strict \
-	select \
-	semop \
-	sendfile \
-	sendfile64 \
-	set_mempolicy \
-	set_ptracer_any \
-	setdomainname \
-	setfsgid \
-	setfsgid32 \
-	setfsuid \
-	setfsuid32 \
-	setgid \
-	setgid32 \
-	setgroups \
-	setgroups32 \
-	sethostname \
-	setns \
-	setregid \
-	setregid32 \
-	setresgid \
-	setresgid32 \
-	setresuid \
-	setresuid32 \
-	setreuid \
-	setreuid32 \
-	setrlimit \
-	setuid \
-	setuid32 \
-	shmxt \
-	shutdown \
-	sigaction \
-	sigaltstack \
-	siginfo \
-	signal_receive \
-	signalfd4 \
-	sigreturn \
-	sleep \
-	socketcall \
-	splice \
-	stack-fcall \
-	stat \
-	stat64 \
-	statfs \
-	statfs64 \
-	swap \
-	symlink \
-	symlinkat \
-	sync \
-	sync_file_range \
-	sync_file_range2 \
-	sysinfo \
-	syslog \
-	tee \
-	threads-execve \
-	time \
-	timer_create \
-	timer_xettime \
-	timerfd_xettime \
-	times \
-	times-fail \
-	truncate \
-	truncate64 \
-	ugetrlimit \
-	uio \
-	umask \
-	umount \
-	umount2 \
-	umoven-illptr \
-	umovestr \
-	umovestr-illptr \
-	umovestr2 \
-	umovestr3 \
-	uname \
-	unix-pair-send-recv \
-	unix-pair-sendto-recvfrom \
-	unlink \
-	unlinkat \
-	unshare \
-	userfaultfd \
-	ustat \
-	utime \
-	utimensat \
-	utimes \
-	vfork-f \
-	vhangup \
-	vmsplice \
-	wait4 \
-	wait4-v \
-	waitid \
-	waitid-v \
-	waitpid \
-	xattr \
-	xattr-strings \
-	xet_robust_list \
-	xetitimer \
-	xetpgid \
-	xetpriority \
-	xettimeofday \
-	# end of check_PROGRAMS
-
-attach_f_p_LDADD = -lrt -lpthread $(LDADD)
-clock_xettime_LDADD = -lrt $(LDADD)
-count_f_LDADD = -lpthread $(LDADD)
-filter_unavailable_LDADD = -lpthread $(LDADD)
-fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-mq_LDADD = -lrt $(LDADD)
-mq_sendrecv_LDADD = -lrt $(LDADD)
-mq_sendrecv_read_LDADD = -lrt $(LDADD)
-mq_sendrecv_write_LDADD = -lrt $(LDADD)
-newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-pc_LDADD = $(dl_LIBS) $(LDADD)
-pread64_pwrite64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-preadv_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-threads_execve_LDADD = -lrt -lpthread $(LDADD)
-times_LDADD = -lrt $(LDADD)
-truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-
-stack_fcall_SOURCES = stack-fcall.c \
-	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-
-if USE_LIBUNWIND
-LIBUNWIND_TESTS = strace-k.test
-else
-LIBUNWIND_TESTS =
-endif
-
-DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
-	brk.test \
-	btrfs-v.test \
-	btrfs-vw.test \
-	btrfs-w.test \
-	btrfs.test \
-	caps-abbrev.test \
-	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
-	eventfd.test \
-	execve-v.test \
-	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
-	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
-	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
-	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
-	ioctl.test \
-	ioctl_block.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
-	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
-	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
-	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
-	llseek.test \
-	lookup_dcookie.test \
-	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
-	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
-	net-y-unix.test \
-	net-yy-inet.test \
-	net-yy-netlink.test \
-	net-yy-unix.test \
-	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
-	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
-	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
-	personality.test \
-	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
-	poll.test \
-	ppoll.test \
-	prctl-arg2-intptr.test \
-	prctl-dumpable.test \
-	prctl-name.test \
-	prctl-no-args.test \
-	prctl-pdeathsig.test \
-	prctl-seccomp-filter-v.test \
-	prctl-seccomp-strict.test \
-	prctl-securebits.test \
-	prctl-tid_address.test \
-	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
-	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
-	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
-	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
-	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
-	sigaction.test \
-	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
-	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
-	uio.test \
-	umask.test \
-	umount.test \
-	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
-	umovestr.test \
-	umovestr2.test \
-	umovestr3.test \
-	uname.test \
-	unix-pair-send-recv.test \
-	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
-	# end of DECODER_TESTS
-
-MISC_TESTS = \
-	attach-f-p.test \
-	attach-p-cmd.test \
-	bexecve.test \
-	count-f.test \
-	count.test \
-	detach-running.test \
-	detach-sleeping.test \
-	detach-stopped.test \
-	filter-unavailable.test \
-	fork-f.test \
-	ksysent.test \
-	opipe.test \
-	options-syntax.test \
-	pc.test \
-	qual_fault-syntax.test \
-	qual_fault.test \
-	qual_inject-error-signal.test \
-	qual_inject-retval.test \
-	qual_inject-signal.test \
-	qual_inject-syntax.test \
-	qual_signal.test \
-	qual_syscall.test \
-	redirect-fds.test \
-	redirect.test \
-	restart_syscall.test \
-	signal_receive.test \
-	strace-C.test \
-	strace-E.test \
-	strace-S.test \
-	strace-T.test \
-	strace-V.test \
-	strace-ff.test \
-	strace-r.test \
-	strace-t.test \
-	strace-tt.test \
-	strace-ttt.test \
-	threads-execve.test \
-	vfork-f.test \
-	# end of MISC_TESTS
-
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(LIBUNWIND_TESTS)
-
-XFAIL_TESTS_ =
-XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
-
-TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
-
-@VALGRIND_CHECK_RULES@
-VALGRIND_FLAGS = --quiet
-VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
-
-ksysent.h: $(srcdir)/ksysent.sed
-	echo '#include <asm/unistd.h>' | \
-		$(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM - > $@.t1
-	LC_COLLATE=C sed -r -n -f $(srcdir)/ksysent.sed < $@.t1 > $@.t2
-	mv -f $@.t2 $@
-	rm -f $@.t1
-
-ksysent.$(OBJEXT): ksysent.h
-
-objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-$(objects): scno.h
-
-CLEANFILES = ksysent.h $(TESTS:=.tmp)
-
-include ../scno.am
diff --git a/tests-mx32/Makefile.in b/tests-mx32/Makefile.in
index 47838a3..40fbfd8 100644
--- a/tests-mx32/Makefile.in
+++ b/tests-mx32/Makefile.in
@@ -17,6 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
-	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
-	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
-	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
-	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
-	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
-	chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
-	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
-	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
-	count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-	dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
-	epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
-	epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
-	execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
-	execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
-	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
-	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
-	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
-	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
-	file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
-	finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
-	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
-	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
-	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
-	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
-	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
-	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
-	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
-	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
-	getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
-	getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
-	getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
-	getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
-	getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
-	inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
-	ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
-	ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
-	ioctl_rtc-v$(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) ipc_msg$(EXEEXT) \
-	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
-	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
-	keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
-	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
-	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
-	lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
-	membarrier$(EXEEXT) memfd_create$(EXEEXT) \
-	migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
-	mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
-	mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
-	mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
-	mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
-	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
-	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
-	msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
-	munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-accept-connect$(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_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
-	netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
-	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
-	pc$(EXEEXT) perf_event_open$(EXEEXT) \
-	perf_event_open_nonverbose$(EXEEXT) \
-	perf_event_open_unabbrev$(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-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
-	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
-	print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
-	process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
-	pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
-	qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
-	qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
-	qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
-	quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
-	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
-	readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
-	reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
-	recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
-	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) \
-	restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
-	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
-	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
-	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
-	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
-	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
-	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
-	scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
-	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
-	sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
-	setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
-	setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
-	setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
-	setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
-	setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
-	setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
-	setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
-	shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
-	sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
-	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
-	stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-	statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
-	symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
-	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-	tee$(EXEEXT) threads-execve$(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) unix-pair-send-recv$(EXEEXT) \
-	unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
-	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-	utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
-	vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
-	waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
-	xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
-DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+	$(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) caps-abbrev$(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) ksysent$(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) \
+	perf_event_open_nonverbose$(EXEEXT) \
+	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+	print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+	qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+	qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+	quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+	scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+	seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+	wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+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 \
@@ -300,6 +191,7 @@
 	libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
+	libtests_a-get_sigset_size.$(OBJEXT) \
 	libtests_a-hexdump_strdup.$(OBJEXT) \
 	libtests_a-hexquote_strndup.$(OBJEXT) \
 	libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
 	libtests_a-overflowuid.$(OBJEXT) \
 	libtests_a-pipe_maxfd.$(OBJEXT) \
 	libtests_a-print_quoted_string.$(OBJEXT) \
+	libtests_a-print_time.$(OBJEXT) \
 	libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
-	libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
-	libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+	libtests_a-signal2name.$(OBJEXT) \
+	libtests_a-skip_unavailable.$(OBJEXT) \
+	libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+	libtests_a-tprintf.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+	chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) creat$(EXEEXT) \
+	delete_module$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) \
+	dup3$(EXEEXT) epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
+	epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
+	erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
+	execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+	file_ioctl$(EXEEXT) finit_module$(EXEEXT) flock$(EXEEXT) \
+	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+	getpgrp$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
+	getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+	getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+	getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+	getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(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_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) ipc_msg$(EXEEXT) \
+	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+	keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+	lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(EXEEXT) \
+	mbind$(EXEEXT) membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+	migrate_pages$(EXEEXT) mincore$(EXEEXT) 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) \
+	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+	netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+	old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+	oldselect$(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) \
+	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+	printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+	process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+	pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+	readlink$(EXEEXT) 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) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+	rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(EXEEXT) \
+	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+	seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+	sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+	setdomainname$(EXEEXT) setfsgid$(EXEEXT) setfsgid32$(EXEEXT) \
+	setfsuid$(EXEEXT) setfsuid32$(EXEEXT) setgid$(EXEEXT) \
+	setgid32$(EXEEXT) setgroups$(EXEEXT) setgroups32$(EXEEXT) \
+	sethostname$(EXEEXT) setns$(EXEEXT) setregid$(EXEEXT) \
+	setregid32$(EXEEXT) setresgid$(EXEEXT) setresgid32$(EXEEXT) \
+	setresuid$(EXEEXT) setresuid32$(EXEEXT) setreuid$(EXEEXT) \
+	setreuid32$(EXEEXT) setrlimit$(EXEEXT) setuid$(EXEEXT) \
+	setuid32$(EXEEXT) shmxt$(EXEEXT) shutdown$(EXEEXT) \
+	sigaction$(EXEEXT) sigaltstack$(EXEEXT) siginfo$(EXEEXT) \
+	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(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) \
+	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+	xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
 getrandom_SOURCES = getrandom.c
 getrandom_OBJECTS = getrandom.$(OBJEXT)
 getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
 getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
 ioctl_SOURCES = ioctl.c
 ioctl_OBJECTS = ioctl.$(OBJEXT)
 ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
 ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
 ioctl_mtd_LDADD = $(LDADD)
 ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
 ioctl_rtc_SOURCES = ioctl_rtc.c
 ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
 ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
 lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
 lstat64_LDADD = $(LDADD)
 lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
 pause_SOURCES = pause.c
 pause_OBJECTS = pause.$(OBJEXT)
 pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
 prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
 prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
 prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
 rt_sigsuspend_SOURCES = rt_sigsuspend.c
 rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
 rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
 sigreturn_OBJECTS = sigreturn.$(OBJEXT)
 sigreturn_LDADD = $(LDADD)
 sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
 sleep_SOURCES = sleep.c
 sleep_OBJECTS = sleep.$(OBJEXT)
 sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
 swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
 symlink_SOURCES = symlink.c
 symlink_OBJECTS = symlink.$(OBJEXT)
 symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@USE_LIBUNWIND_TRUE@am__EXEEXT_1 = strace-k.test
+@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2253,6 +2317,7 @@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
 CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
 CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
@@ -2389,6 +2454,7 @@
 	error_msg.c \
 	fill_memory.c \
 	get_page_size.c \
+	get_sigset_size.c \
 	hexdump_strdup.c \
 	hexquote_strndup.c \
 	inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
 	overflowuid.c \
 	pipe_maxfd.c \
 	print_quoted_string.c \
+	print_time.c \
 	printflags.c \
 	printxval.c \
 	signal2name.c \
+	skip_unavailable.c \
 	sprintrc.c \
 	tail_alloc.c \
 	tests.h \
@@ -2409,6 +2477,340 @@
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
 LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+  _newselect \
+  accept \
+  accept4 \
+  access \
+  acct \
+  add_key \
+  adjtimex \
+  aio \
+  alarm \
+  bpf \
+  brk \
+  btrfs \
+  caps \
+  chmod \
+  chown \
+  chown32 \
+  chroot \
+  clock_adjtime \
+  clock_nanosleep \
+  clock_xettime \
+  copy_file_range \
+  creat \
+  delete_module \
+  dup \
+  dup2 \
+  dup3 \
+  epoll_create \
+  epoll_create1 \
+  epoll_ctl \
+  epoll_pwait \
+  epoll_wait \
+  erestartsys \
+  eventfd \
+  execve \
+  execveat \
+  faccessat \
+  fadvise64 \
+  fadvise64_64 \
+  fallocate \
+  fanotify_init \
+  fanotify_mark \
+  fchdir \
+  fchmod \
+  fchmodat \
+  fchown \
+  fchown32 \
+  fchownat \
+  fcntl \
+  fcntl64 \
+  fdatasync \
+  file_handle \
+  file_ioctl \
+  finit_module \
+  flock \
+  fstat \
+  fstat64 \
+  fstatat64 \
+  fstatfs \
+  fstatfs64 \
+  fsync \
+  ftruncate \
+  ftruncate64 \
+  futex \
+  futimesat \
+  get_mempolicy \
+  getcpu \
+  getcwd \
+  getdents \
+  getdents64 \
+  getegid \
+  getegid32 \
+  geteuid \
+  geteuid32 \
+  getgid \
+  getgid32 \
+  getgroups \
+  getgroups32 \
+  getpeername \
+  getpgrp \
+  getpid \
+  getppid \
+  getrandom \
+  getresgid \
+  getresgid32 \
+  getresuid \
+  getresuid32 \
+  getrlimit \
+  getrusage \
+  getsid \
+  getsockname \
+  getuid \
+  getuid32 \
+  getxxid \
+  inet-cmsg \
+  init_module \
+  inotify \
+  inotify_init1 \
+  ioctl \
+  ioctl_block \
+  ioctl_dm \
+  ioctl_evdev \
+  ioctl_loop \
+  ioctl_mtd \
+  ioctl_rtc \
+  ioctl_scsi \
+  ioctl_sg_io_v3 \
+  ioctl_sg_io_v4 \
+  ioctl_sock_gifconf \
+  ioctl_uffdio \
+  ioctl_v4l2 \
+  ioperm \
+  iopl \
+  ioprio \
+  ip_mreq \
+  ipc \
+  ipc_msg \
+  ipc_msgbuf \
+  ipc_sem \
+  ipc_shm \
+  kcmp \
+  kexec_file_load \
+  kexec_load \
+  keyctl \
+  kill \
+  lchown \
+  lchown32 \
+  link \
+  linkat \
+  llseek \
+  lookup_dcookie \
+  lseek \
+  lstat \
+  lstat64 \
+  madvise \
+  mbind \
+  membarrier \
+  memfd_create \
+  migrate_pages \
+  mincore \
+  mkdir \
+  mkdirat \
+  mknod \
+  mknodat \
+  mlock \
+  mlock2 \
+  mlockall \
+  mmap \
+  mmap64 \
+  mmsg \
+  mmsg_name \
+  mount \
+  move_pages \
+  mq \
+  mq_sendrecv \
+  mq_sendrecv-read \
+  mq_sendrecv-write \
+  msg_control \
+  msg_name \
+  munlockall \
+  nanosleep \
+  net-icmp_filter \
+  net-sockaddr \
+  net-y-unix \
+  net-yy-inet \
+  net-yy-netlink \
+  net-yy-unix \
+  netlink_protocol \
+  newfstatat \
+  old_mmap \
+  oldfstat \
+  oldlstat \
+  oldselect \
+  oldstat \
+  open \
+  openat \
+  osf_utimes \
+  pause \
+  perf_event_open \
+  personality \
+  pipe \
+  pipe2 \
+  pkey_alloc \
+  pkey_free \
+  pkey_mprotect \
+  poll \
+  ppoll \
+  prctl-arg2-intptr \
+  prctl-dumpable \
+  prctl-name \
+  prctl-no-args \
+  prctl-pdeathsig \
+  prctl-securebits \
+  prctl-tid_address \
+  prctl-tsc \
+  pread64-pwrite64 \
+  preadv \
+  preadv-pwritev \
+  preadv2-pwritev2 \
+  printstr \
+  prlimit64 \
+  process_vm_readv \
+  process_vm_writev \
+  pselect6 \
+  ptrace \
+  pwritev \
+  quotactl \
+  quotactl-xfs \
+  read-write \
+  readahead \
+  readdir \
+  readlink \
+  readlinkat \
+  readv \
+  reboot \
+  recvfrom \
+  recvmmsg-timeout \
+  recvmsg \
+  remap_file_pages \
+  rename \
+  renameat \
+  renameat2 \
+  request_key \
+  rmdir \
+  rt_sigpending \
+  rt_sigprocmask \
+  rt_sigqueueinfo \
+  rt_sigreturn \
+  rt_sigsuspend \
+  rt_sigtimedwait \
+  rt_tgsigqueueinfo \
+  sched_get_priority_mxx \
+  sched_rr_get_interval \
+  sched_xetaffinity \
+  sched_xetattr \
+  sched_xetparam \
+  sched_xetscheduler \
+  sched_yield \
+  seccomp-filter \
+  select \
+  semop \
+  sendfile \
+  sendfile64 \
+  set_mempolicy \
+  setdomainname \
+  setfsgid \
+  setfsgid32 \
+  setfsuid \
+  setfsuid32 \
+  setgid \
+  setgid32 \
+  setgroups \
+  setgroups32 \
+  sethostname \
+  setns \
+  setregid \
+  setregid32 \
+  setresgid \
+  setresgid32 \
+  setresuid \
+  setresuid32 \
+  setreuid \
+  setreuid32 \
+  setrlimit \
+  setuid \
+  setuid32 \
+  shmxt \
+  shutdown \
+  sigaction \
+  sigaltstack \
+  siginfo \
+  signalfd4 \
+  sigreturn \
+  sigsuspend \
+  socketcall \
+  splice \
+  stat \
+  stat64 \
+  statfs \
+  statfs64 \
+  statx \
+  swap \
+  sxetmask \
+  symlink \
+  symlinkat \
+  sync \
+  sync_file_range \
+  sync_file_range2 \
+  sysinfo \
+  syslog \
+  tee \
+  time \
+  timer_create \
+  timer_xettime \
+  timerfd_xettime \
+  times \
+  times-fail \
+  truncate \
+  truncate64 \
+  ugetrlimit \
+  uio \
+  umask \
+  umount \
+  umount2 \
+  umoven-illptr \
+  umovestr \
+  umovestr-illptr \
+  umovestr2 \
+  umovestr3 \
+  uname \
+  unlink \
+  unlinkat \
+  unshare \
+  userfaultfd \
+  ustat \
+  utime \
+  utimensat \
+  utimes \
+  vhangup \
+  vmsplice \
+  wait4 \
+  waitid \
+  waitpid \
+  xattr \
+  xattr-strings \
+  xet_robust_list \
+  xetitimer \
+  xetpgid \
+  xetpriority \
+  xettimeofday \
+  #
+
 attach_f_p_LDADD = -lrt -lpthread $(LDADD)
 clock_xettime_LDADD = -lrt $(LDADD)
 count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-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 \
+	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 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 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_protocol.gen.test \
+	newfstatat.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 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 \
+	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 \
+	siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+	sigreturn.gen.test sigsuspend.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
 @USE_LIBUNWIND_FALSE@LIBUNWIND_TESTS = 
 @USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test
 DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
 	brk.test \
 	btrfs-v.test \
 	btrfs-vw.test \
 	btrfs-w.test \
-	btrfs.test \
 	caps-abbrev.test \
 	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
 	eventfd.test \
 	execve-v.test \
 	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
 	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
 	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
 	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
 	ioctl.test \
-	ioctl_block.test \
 	ioctl_dm-v.test \
 	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
 	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
+	ioctl_nsfs.test \
 	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
 	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
 	llseek.test \
-	lookup_dcookie.test \
 	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
 	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
 	net-y-unix.test \
 	net-yy-inet.test \
 	net-yy-netlink.test \
 	net-yy-unix.test \
 	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
 	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
 	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
 	personality.test \
 	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
 	poll.test \
-	ppoll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
 	prctl-name.test \
@@ -2650,148 +3002,21 @@
 	prctl-securebits.test \
 	prctl-tid_address.test \
 	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
 	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
 	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
 	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
 	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
 	sigaction.test \
 	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
 	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
 	uio.test \
-	umask.test \
 	umount.test \
 	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
 	umovestr.test \
 	umovestr2.test \
-	umovestr3.test \
 	uname.test \
 	unix-pair-send-recv.test \
 	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
 	# end of DECODER_TESTS
 
 MISC_TESTS = \
@@ -2804,7 +3029,7 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
-	fork-f.test \
+	get_regs.test \
 	ksysent.test \
 	opipe.test \
 	options-syntax.test \
@@ -2820,7 +3045,6 @@
 	redirect-fds.test \
 	redirect.test \
 	restart_syscall.test \
-	signal_receive.test \
 	strace-C.test \
 	strace-E.test \
 	strace-S.test \
@@ -2832,77 +3056,94 @@
 	strace-tt.test \
 	strace-ttt.test \
 	threads-execve.test \
-	vfork-f.test \
 	# end of MISC_TESTS
 
 XFAIL_TESTS_ = 
 XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
 XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+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
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
+EXTRA_DIST = \
+	caps-abbrev.awk \
+	caps.awk \
+	clock.in \
+	count-f.expected \
+	eventfd.expected \
+	fadvise.h \
+	filter-unavailable.expected \
+	fstatat.c \
+	fstatx.c \
+	gen_pure_executables.sh \
+	gen_tests.in \
+	gen_tests.sh \
+	getresugid.c \
+	init.sh \
+	init_delete_module.h \
+	ioctl-v.sh \
+	ipc.sh \
+	ipc_msgbuf.expected \
+	ksysent.sed \
+	lstatx.c \
+	match.awk \
+	net.expected \
+	oldselect.expected \
+	pipe.expected \
+	process_vm_readv_writev.c \
+	pure_executables.list \
+	qual_fault-exit_group.expected \
+	qual_inject-error-signal.expected \
+	qual_inject-signal.expected \
+	quotactl.h \
+	regex.in \
+	run.sh \
+	sched.in \
+	scno_tampering.sh \
+	setfsugid.c \
+	setresugid.c \
+	setreugid.c \
+	setugid.c \
+	sigaction.awk \
+	sigaltstack.expected \
+	sockname.c \
+	strace-C.expected \
+	strace-E.expected \
+	strace-T.expected \
+	strace-ff.expected \
+	strace-k.test \
+	strace-r.expected \
+	strace.supp \
+	struct_flock.c \
+	sun_path.expected \
+	trace_fstat.in \
+	trace_fstatfs.in \
+	trace_lstat.in \
+	trace_question.in \
+	trace_stat.in \
+	trace_stat_like.in \
+	trace_statfs.in \
+	trace_statfs_like.in \
+	uio.expected \
+	umode_t.c \
+	umovestr.expected \
+	unix-pair-send-recv.expected \
+	unix-pair-sendto-recvfrom.expected \
+	xchownx.c \
+	xgetrlimit.c \
+	xselect.c \
+	xstatfs.c \
+	xstatfs64.c \
+	xstatfsx.c \
+	xstatx.c \
+	xutimes.c \
+	$(TESTS)
 
 objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
 
@@ -2913,7 +3154,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -2934,7 +3175,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../scno.am:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
 	@rm -f getpgrp$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
+	@rm -f getpid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
+	@rm -f getppid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
 getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES) 
 	@rm -f getrandom$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
 	@rm -f getsockname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
 
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES) 
+	@rm -f gettid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
 	@rm -f getuid$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
 	@rm -f inotify_init1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
+	@rm -f int_0x80$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
 ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES) 
 	@rm -f ioctl$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
 	@rm -f ioctl_mtd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
 
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES) 
+	@rm -f ioctl_nsfs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_LDADD) $(LIBS)
+
 ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES) 
 	@rm -f ioctl_rtc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
@@ -3548,6 +3809,10 @@
 	@rm -f lstat64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
 
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES) 
+	@rm -f madvise$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
 	@rm -f mbind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
 	@rm -f openat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES) 
+	@rm -f osf_utimes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
 pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES) 
 	@rm -f pause$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_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)
+
 prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES) 
 	@rm -f prctl-arg2-intptr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
@@ -4004,6 +4277,10 @@
 	@rm -f rt_sigqueueinfo$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
+	@rm -f rt_sigreturn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
 rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES) 
 	@rm -f rt_sigsuspend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
@@ -4204,6 +4481,10 @@
 	@rm -f sigreturn$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
 
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES) 
+	@rm -f sigsuspend$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
 sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES) 
 	@rm -f sleep$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
 	@rm -f statfs64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
+	@rm -f statx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
 	@rm -f swap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
 
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES) 
+	@rm -f sxetmask$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
 symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES) 
 	@rm -f symlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid32.Po@am__quote@
@@ -4557,6 +4848,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxxid.Po@am__quote@
@@ -4564,6 +4856,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init_module.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_0x80.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@
@@ -4574,6 +4867,7 @@
 @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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_mtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_nsfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_scsi.Po@am__quote@
@@ -4603,6 +4897,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-get_page_size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-get_sigset_size.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexdump_strdup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@
@@ -4611,9 +4906,11 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printflags.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@
@@ -4624,6 +4921,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat64-lstat64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/madvise.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membarrier.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@
@@ -4673,6 +4971,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf_utimes.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pause.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perf_event_open.Po@am__quote@
@@ -4685,6 +4984,7 @@
 @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.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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-dumpable.Po@am__quote@
@@ -4738,6 +5038,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@
@@ -4788,6 +5089,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigreturn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigsuspend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socketcall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splice.Po@am__quote@
@@ -4800,7 +5102,9 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs-statfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sxetmask.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlinkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@
@@ -4925,6 +5229,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
 
+libtests_a-get_sigset_size.o: get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+
 libtests_a-hexdump_strdup.o: hexdump_strdup.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
@@ -5037,6 +5355,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
 
+libtests_a-print_time.o: print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+
 libtests_a-printflags.o: printflags.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
@@ -5079,6 +5411,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
 
+libtests_a-skip_unavailable.o: skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+
 libtests_a-sprintrc.o: sprintrc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
@@ -5603,7 +5949,7 @@
 clean: clean-am
 
 clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	mostlyclean-am
+	clean-local mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
 .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
 	check-valgrind-am check-valgrind-local clean \
 	clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
 	uninstall uninstall-am
 
 
+$(srcdir)/_newselect.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) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.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_loop.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_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.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) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.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) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.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)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.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) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.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) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.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) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/select.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) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.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) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 @VALGRIND_CHECK_RULES@
 
 ksysent.h: $(srcdir)/ksysent.sed
@@ -5700,6 +7009,11 @@
 ksysent.$(OBJEXT): ksysent.h
 $(objects): scno.h
 
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+	-rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
 syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
 	$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
 
diff --git a/tests-mx32/_newselect.gen.test b/tests-mx32/_newselect.gen.test
new file mode 100755
index 0000000..490abe4
--- /dev/null
+++ b/tests-mx32/_newselect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/_newselect.test b/tests-mx32/_newselect.test
deleted file mode 100755
index 3371d4d..0000000
--- a/tests-mx32/_newselect.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check _newselect syscall decoding.
-
-. "${srcdir=.}/select.test"
diff --git a/tests-mx32/accept.gen.test b/tests-mx32/accept.gen.test
new file mode 100755
index 0000000..3ebba3b
--- /dev/null
+++ b/tests-mx32/accept.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-mx32/accept.test b/tests-mx32/accept.test
deleted file mode 100755
index b5e0790..0000000
--- a/tests-mx32/accept.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-mx32/accept4.gen.test b/tests-mx32/accept4.gen.test
new file mode 100755
index 0000000..5bd7fe6
--- /dev/null
+++ b/tests-mx32/accept4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a37
diff --git a/tests-mx32/accept4.test b/tests-mx32/accept4.test
deleted file mode 100755
index 722f25a..0000000
--- a/tests-mx32/accept4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests-mx32/access.c b/tests-mx32/access.c
index e6f169b..4420ba3 100644
--- a/tests-mx32/access.c
+++ b/tests-mx32/access.c
@@ -19,6 +19,7 @@
 	printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
 	       sample, rc, errno2name());
 
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests-mx32/access.gen.test b/tests-mx32/access.gen.test
new file mode 100755
index 0000000..7d80e6f
--- /dev/null
+++ b/tests-mx32/access.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 -P access_sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P access_sample
diff --git a/tests-mx32/access.test b/tests-mx32/access.test
deleted file mode 100755
index 3ab2eb4..0000000
--- a/tests-mx32/access.test
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-# Check access syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -eaccess -a30 $args > "$EXP"
-
-# Filter out access() calls made by libc.
-grep -F access_sample < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/acct.gen.test b/tests-mx32/acct.gen.test
new file mode 100755
index 0000000..fa14e85
--- /dev/null
+++ b/tests-mx32/acct.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-mx32/acct.test b/tests-mx32/acct.test
deleted file mode 100755
index b9bca75..0000000
--- a/tests-mx32/acct.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check acct syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-mx32/add_key.gen.test b/tests-mx32/add_key.gen.test
new file mode 100755
index 0000000..d6ffbc8
--- /dev/null
+++ b/tests-mx32/add_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (add_key -a30 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s12
diff --git a/tests-mx32/add_key.test b/tests-mx32/add_key.test
deleted file mode 100755
index eadd8c2..0000000
--- a/tests-mx32/add_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of add_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -s12
diff --git a/tests-mx32/adjtimex.c b/tests-mx32/adjtimex.c
index 1638b53..4d68ea1 100644
--- a/tests-mx32/adjtimex.c
+++ b/tests-mx32/adjtimex.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of adjtimex strace test.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,38 +33,46 @@
 #include <string.h>
 #include <sys/timex.h>
 
+#include "xlat.h"
+#include "xlat/adjtimex_state.h"
+#include "xlat/adjtimex_status.h"
+
 int
 main(void)
 {
-	adjtimex(NULL);
-	printf("adjtimex\\(NULL\\) = -1 EFAULT \\(%m\\)\n");
+	int state = adjtimex(NULL);
+	printf("adjtimex(NULL) = %s\n", sprintrc(state));
 
-	struct timex * const tx = tail_alloc(sizeof(*tx));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timex, tx);
 	memset(tx, 0, sizeof(*tx));
 
-	int state = adjtimex(tx);
+	state = adjtimex(tx);
 	if (state < 0)
 		perror_msg_and_skip("adjtimex");
 
-	printf("adjtimex\\(\\{modes=0, offset=%jd, freq=%jd, maxerror=%jd"
-	       ", esterror=%jd, status=%s, constant=%jd, precision=%jd"
-	       ", tolerance=%jd, time=\\{tv_sec=%jd, tv_usec=%jd\\}, tick=%jd, "
-	       "ppsfreq=%jd, jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd, "
-	       "calcnt=%jd, errcnt=%jd, stbcnt=%jd"
-#ifdef HAVE_STRUCT_TIMEX_TAI
-	       ", tai=%d"
-#endif
-	       "\\}\\) = %d \\(TIME_[A-Z]+\\)\n",
+	printf("adjtimex({modes=0, offset=%jd, freq=%jd, maxerror=%jd"
+	       ", esterror=%jd, status=",
 	       (intmax_t) tx->offset,
 	       (intmax_t) tx->freq,
 	       (intmax_t) tx->maxerror,
-	       (intmax_t) tx->esterror,
-	       tx->status ? "STA_[A-Z]+(\\|STA_[A-Z]+)*" : "0",
+	       (intmax_t) tx->esterror);
+	if (tx->status)
+		printflags(adjtimex_status, (unsigned int) tx->status, NULL);
+	else
+		putchar('0');
+	printf(", constant=%jd, precision=%jd"
+	       ", tolerance=%jd, time={tv_sec=%lld, tv_usec=%llu}, tick=%jd"
+	       ", ppsfreq=%jd, jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd"
+	       ", calcnt=%jd, errcnt=%jd, stbcnt=%jd"
+#ifdef HAVE_STRUCT_TIMEX_TAI
+	       ", tai=%d"
+#endif
+	       "}) = %d (",
 	       (intmax_t) tx->constant,
 	       (intmax_t) tx->precision,
 	       (intmax_t) tx->tolerance,
-	       (intmax_t) tx->time.tv_sec,
-	       (intmax_t) tx->time.tv_usec,
+	       (long long) tx->time.tv_sec,
+	       zero_extend_signed_to_ull(tx->time.tv_usec),
 	       (intmax_t) tx->tick,
 	       (intmax_t) tx->ppsfreq,
 	       (intmax_t) tx->jitter,
@@ -78,6 +86,9 @@
 	       tx->tai,
 #endif
 	       state);
+	printxval(adjtimex_state, (unsigned int) state, NULL);
+	puts(")");
 
+	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests-mx32/adjtimex.gen.test b/tests-mx32/adjtimex.gen.test
new file mode 100755
index 0000000..8db59f2
--- /dev/null
+++ b/tests-mx32/adjtimex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-mx32/adjtimex.test b/tests-mx32/adjtimex.test
deleted file mode 100755
index 0140550..0000000
--- a/tests-mx32/adjtimex.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check adjtimex syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a 15 -e adjtimex $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-mx32/aio.c b/tests-mx32/aio.c
index 0766d23..677a02b 100644
--- a/tests-mx32/aio.c
+++ b/tests-mx32/aio.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -198,15 +199,14 @@
 	};
 	const long *cbvs2 = tail_memdup(proto_cbvs2, sizeof(proto_cbvs2));
 
-	unsigned long *ctx = tail_alloc(sizeof(unsigned long));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned long, ctx);
 	*ctx = 0;
 
 	const unsigned int nr = ARRAY_SIZE(proto_cb);
 	const unsigned long lnr = (unsigned long) (0xdeadbeef00000000ULL | nr);
 
 	const struct io_event *ev = tail_alloc(nr * sizeof(struct io_event));
-	const struct timespec proto_ts = { .tv_nsec = 123456789 };
-	const struct timespec *ts = tail_memdup(&proto_ts, sizeof(proto_ts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
 
 	(void) close(0);
 	if (open("/dev/zero", O_RDONLY))
@@ -263,6 +263,24 @@
 	       bogus_ctx, (long) 0xca7faceddeadf00dLL,
 	       (long) 0xba5e1e505ca571e0LL, ts + 1, sprintrc(rc));
 
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+	printf("io_getevents(%#lx, 0, 0, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       bogus_ctx, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+	printf("io_getevents(%#lx, 0, 0, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       bogus_ctx, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = 0;
+	ts->tv_nsec = 123456789;
 	rc = syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts);
 	printf("io_getevents(%#lx, %ld, %ld, ["
 	       "{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}, "
diff --git a/tests-mx32/aio.gen.test b/tests-mx32/aio.gen.test
new file mode 100755
index 0000000..8c8cbd5
--- /dev/null
+++ b/tests-mx32/aio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (aio -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
diff --git a/tests-mx32/aio.test b/tests-mx32/aio.test
deleted file mode 100755
index 2ba90da..0000000
--- a/tests-mx32/aio.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check io_* syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=io_setup,io_submit,io_getevents,io_cancel,io_destroy
-run_strace_match_diff -a14 -e trace=$syscalls
diff --git a/tests-mx32/alarm.gen.test b/tests-mx32/alarm.gen.test
new file mode 100755
index 0000000..ba1dea8
--- /dev/null
+++ b/tests-mx32/alarm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/alarm.test b/tests-mx32/alarm.test
deleted file mode 100755
index 267b223..0000000
--- a/tests-mx32/alarm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check alarm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-mx32/attach-f-p-cmd.c b/tests-mx32/attach-f-p-cmd.c
index 77594be..1e9ed99 100644
--- a/tests-mx32/attach-f-p-cmd.c
+++ b/tests-mx32/attach-f-p-cmd.c
@@ -2,6 +2,7 @@
  * This file is part of attach-f-p strace test.
  *
  * 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
@@ -34,6 +35,8 @@
 int
 main(void)
 {
+	skip_if_unavailable("/proc/self/task/");
+
 	static const char dir[] = "attach-f-p.test cmd";
 	pid_t pid = getpid();
 	int rc = chdir(dir);
diff --git a/tests-mx32/attach-f-p.test b/tests-mx32/attach-f-p.test
index f417074..368c775 100755
--- a/tests-mx32/attach-f-p.test
+++ b/tests-mx32/attach-f-p.test
@@ -3,6 +3,7 @@
 # Check that -f -p attaches to threads properly.
 #
 # 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,22 +30,17 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -f -p is implemented using /proc/$pid/task/
-[ -d /proc/self/task/ ] ||
-	framework_skip_ '/proc/self/task/ is not available'
 run_prog_skip_if_failed \
 	kill -0 $$
-run_prog ./attach-f-p-cmd > /dev/null
+run_prog ../attach-f-p-cmd > /dev/null
 
-rm -f "$OUT"
-./set_ptracer_any sh -c "exec ./attach-f-p >> $OUT" > /dev/null &
+../set_ptracer_any sh -c "exec ../attach-f-p >> $EXP" > /dev/null &
 tracee_pid=$!
 
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
 	kill -0 $tracee_pid 2> /dev/null ||
 		fail_ 'set_ptracer_any sh failed'
 done
 
-run_strace -a32 -f -echdir -p $tracee_pid ./attach-f-p-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a32 -f -echdir -p $tracee_pid ../attach-f-p-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-mx32/attach-p-cmd.test b/tests-mx32/attach-p-cmd.test
index 2068cf1..e7c1bfa 100755
--- a/tests-mx32/attach-p-cmd.test
+++ b/tests-mx32/attach-p-cmd.test
@@ -3,6 +3,7 @@
 # Check that simultaneous use of -p option and tracing of a command works.
 #
 # 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
@@ -32,16 +33,13 @@
 run_prog_skip_if_failed \
 	kill -0 $$
 
-rm -rf attach-p-cmd.test-lock
-rm -f "$OUT"
-./set_ptracer_any ./attach-p-cmd-p >> "$OUT" &
+../set_ptracer_any ../attach-p-cmd-p >> "$EXP" &
 tracee_pid=$!
 
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
 	kill -0 $tracee_pid 2> /dev/null ||
-		fail_ 'set_ptracer_any ./attach-p-cmd-p failed'
+		fail_ 'set_ptracer_any ../attach-p-cmd-p failed'
 done
 
-run_strace -a30 -echdir -p $tracee_pid ./attach-p-cmd-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a30 -echdir -p $tracee_pid ../attach-p-cmd-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-mx32/bexecve.test b/tests-mx32/bexecve.test
index f1ab04f..325330e 100755
--- a/tests-mx32/bexecve.test
+++ b/tests-mx32/bexecve.test
@@ -3,6 +3,7 @@
 # Check -bexecve behavior.
 #
 # Copyright (c) 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
@@ -35,14 +36,14 @@
 	$STRACE "$@" 2> "$LOG"
 }
 
-run_strace_redir -enone ./set_ptracer_any true ||
+run_strace_redir -enone ../set_ptracer_any true ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -enone ./set_ptracer_any false
+run_strace_redir -enone ../set_ptracer_any false
 [ $? -eq 1 ] ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -bexecve -enone ./set_ptracer_any false ||
+run_strace_redir -bexecve -enone ../set_ptracer_any false ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
 pattern_detached='[^:]*strace: Process [1-9][0-9]* detached'
diff --git a/tests-mx32/bpf.c b/tests-mx32/bpf.c
index 7ef16c9..40f96a7 100644
--- a/tests-mx32/bpf.c
+++ b/tests-mx32/bpf.c
@@ -109,14 +109,15 @@
 # endif
 
 /* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 static int
 prog_cgroup(int cmd)
 {
 	union bpf_attr attr = {
 		.target_fd = -1,
 		.attach_bpf_fd = -1,
-		.attach_type = 0
+		.attach_type = 0,
+		.attach_flags = 1
 	};
 	void *const t_attr = tail_memdup(&attr, sizeof(attr));
 	return sys_bpf(cmd, (unsigned long) t_attr, sizeof(attr));
@@ -205,11 +206,12 @@
 	BOGUS_BPF(BPF_OBJ_GET);
 # endif
 
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 	prog_cgroup(BPF_PROG_ATTACH);
 	printf("bpf(BPF_PROG_ATTACH"
 	       ", {target_fd=-1, attach_bpf_fd=-1"
-	       ", attach_type=BPF_CGROUP_INET_INGRESS}, %u) = %s\n",
+	       ", attach_type=BPF_CGROUP_INET_INGRESS"
+	       ", attach_flags=BPF_F_ALLOW_OVERRIDE}, %u) = %s\n",
 	       (unsigned) sizeof(union bpf_attr), errstr);
 	BOGUS_BPF(BPF_PROG_ATTACH);
 
diff --git a/tests-mx32/bpf.gen.test b/tests-mx32/bpf.gen.test
new file mode 100755
index 0000000..7ee9e7f
--- /dev/null
+++ b/tests-mx32/bpf.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-mx32/bpf.test b/tests-mx32/bpf.test
deleted file mode 100755
index adf0d57..0000000
--- a/tests-mx32/bpf.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check bpf syscall decoding.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a20
diff --git a/tests-mx32/brk.test b/tests-mx32/brk.test
index 8c0e2e4..3781220 100755
--- a/tests-mx32/brk.test
+++ b/tests-mx32/brk.test
@@ -7,4 +7,3 @@
 run_prog > /dev/null
 run_strace -a10 -ebrk $args > "$EXP"
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-mx32/btrfs-v.test b/tests-mx32/btrfs-v.test
index 1ee17b4..8cc2724 100755
--- a/tests-mx32/btrfs-v.test
+++ b/tests-mx32/btrfs-v.test
@@ -4,12 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./btrfs -v > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -v > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-mx32/btrfs-vw.test b/tests-mx32/btrfs-vw.test
index c7e40ad..913fba1 100755
--- a/tests-mx32/btrfs-vw.test
+++ b/tests-mx32/btrfs-vw.test
@@ -18,12 +18,8 @@
     skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
 fi
 
-run_prog ./btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-mx32/btrfs-w.test b/tests-mx32/btrfs-w.test
index 6238dca..031f0b8 100755
--- a/tests-mx32/btrfs-w.test
+++ b/tests-mx32/btrfs-w.test
@@ -18,12 +18,8 @@
     skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
 fi
 
-run_prog ./btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -eioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -eioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-mx32/btrfs.c b/tests-mx32/btrfs.c
index b3e23f8..7e5ccff 100644
--- a/tests-mx32/btrfs.c
+++ b/tests-mx32/btrfs.c
@@ -1548,9 +1548,9 @@
 			const char *name = xlookup(btrfs_dev_stats_values, i);
 			if (i)
 				printf(", ");
-			if (name)
-				printf("/* %s */ ", name);
 			printf("%" PRI__u64, args.values[i]);
+			if (name)
+				printf(" /* %s */", name);
 		}
 		printf("]}) = 0\n");
 	}
@@ -1799,13 +1799,13 @@
 		      &supported_features);
 		printf("ioctl(%d, BTRFS_IOC_GET_SUPPORTED_FEATURES, ",
 		       btrfs_test_dir_fd);
-		printf("[ /* supported */ ");
+		printf("[");
 		btrfs_print_features(&supported_features[0]);
-		printf(", /* safe to set */ ");
+		printf(" /* supported */, ");
 		btrfs_print_features(&supported_features[1]);
-		printf(", /* safe to clear */ ");
+		printf(" /* safe to set */, ");
 		btrfs_print_features(&supported_features[2]);
-		printf("]) = 0\n");
+		printf(" /* safe to clear */]) = 0\n");
 	}
 }
 
diff --git a/tests-mx32/btrfs.gen.test b/tests-mx32/btrfs.gen.test
new file mode 100755
index 0000000..a7118ef
--- /dev/null
+++ b/tests-mx32/btrfs.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/btrfs.test b/tests-mx32/btrfs.test
deleted file mode 100755
index 2121b5b..0000000
--- a/tests-mx32/btrfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic btrfs ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/chmod.gen.test b/tests-mx32/chmod.gen.test
new file mode 100755
index 0000000..438665a
--- /dev/null
+++ b/tests-mx32/chmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-mx32/chmod.test b/tests-mx32/chmod.test
deleted file mode 100755
index 70e561a..0000000
--- a/tests-mx32/chmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-mx32/chown.gen.test b/tests-mx32/chown.gen.test
new file mode 100755
index 0000000..46889a1
--- /dev/null
+++ b/tests-mx32/chown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-mx32/chown.test b/tests-mx32/chown.test
deleted file mode 100755
index eb356ce..0000000
--- a/tests-mx32/chown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-mx32/chown32.gen.test b/tests-mx32/chown32.gen.test
new file mode 100755
index 0000000..f0f603e
--- /dev/null
+++ b/tests-mx32/chown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31
diff --git a/tests-mx32/chown32.test b/tests-mx32/chown32.test
deleted file mode 100755
index 0fa04c2..0000000
--- a/tests-mx32/chown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests-mx32/chroot.gen.test b/tests-mx32/chroot.gen.test
new file mode 100755
index 0000000..6ea81dd
--- /dev/null
+++ b/tests-mx32/chroot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-mx32/chroot.test b/tests-mx32/chroot.test
deleted file mode 100755
index 3b384f5..0000000
--- a/tests-mx32/chroot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chroot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-mx32/clock.gen.test b/tests-mx32/clock.gen.test
new file mode 100755
index 0000000..b76eaf5
--- /dev/null
+++ b/tests-mx32/clock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock test_trace_expr 'times|fcntl.*' -e/clock); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr 'times|fcntl.*' -e/clock
diff --git a/tests-mx32/clock.in b/tests-mx32/clock.in
new file mode 100755
index 0000000..864de29
--- /dev/null
+++ b/tests-mx32/clock.in
@@ -0,0 +1,3 @@
+clock_adjtime	-a37
+clock_nanosleep
+clock_xettime	-a36
diff --git a/tests-mx32/clock_adjtime.gen.test b/tests-mx32/clock_adjtime.gen.test
new file mode 100755
index 0000000..735e3af
--- /dev/null
+++ b/tests-mx32/clock_adjtime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/clock_adjtime.test b/tests-mx32/clock_adjtime.test
deleted file mode 100755
index df2c060..0000000
--- a/tests-mx32/clock_adjtime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_adjtime syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests-mx32/clock_nanosleep.c b/tests-mx32/clock_nanosleep.c
index 98407d7..72ac2e4 100644
--- a/tests-mx32/clock_nanosleep.c
+++ b/tests-mx32/clock_nanosleep.c
@@ -1,5 +1,8 @@
 /*
+ * Check decoding of clock_nanosleep and clock_gettime syscalls.
+ *
  * 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
@@ -62,9 +65,10 @@
 
 	if (syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0, &req.ts, NULL))
 		perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "NULL) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       NULL, &rem.ts) == -1);
@@ -73,52 +77,71 @@
 
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       &req.ts, &rem.ts) == 0);
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "%p) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	req.ts.tv_nsec = 999999999 + 1;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
 		       &req.ts, &rem.ts) == -1);
 	printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
-	       ", {tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = 0xdeadbeefU;
+	req.ts.tv_nsec = 0xfacefeedU;
+	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
+		       &req.ts, &rem.ts) == -1);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
+		       &req.ts, &rem.ts) == -1);
+	printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
 
 	if (setitimer(ITIMER_REAL, &itv, NULL))
 		perror_msg_and_skip("setitimer");
-	printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
-	       (intmax_t) itv.it_interval.tv_sec,
-	       (intmax_t) itv.it_interval.tv_usec,
-	       (intmax_t) itv.it_value.tv_sec,
-	       (intmax_t) itv.it_value.tv_usec);
 
-	--req.ts.tv_nsec;
+	req.ts.tv_sec = 0;
+	req.ts.tv_nsec = 999999999;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       &req.ts, &rem.ts) == -1);
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "{tv_sec=%jd, tv_nsec=%jd})"
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {tv_sec=%lld, tv_nsec=%llu})"
 	       " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
-	       (intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec),
+	       (long long) rem.ts.tv_sec,
+	       zero_extend_signed_to_ull(rem.ts.tv_nsec));
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	assert(syscall(__NR_clock_gettime, CLOCK_REALTIME, &req.ts) == 0);
-	printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	++req.ts.tv_sec;
 	rem.ts.tv_sec = 0xc0de4;
 	rem.ts.tv_nsec = 0xc0de5;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, TIMER_ABSTIME,
 		       &req.ts, &rem.ts) == -1);
-	printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, {tv_sec=%jd, "
-	       "tv_nsec=%jd}, %p)"
+	printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p)"
 	       " = ? ERESTARTNOHAND (To be restarted if no handler)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-mx32/clock_nanosleep.gen.test b/tests-mx32/clock_nanosleep.gen.test
new file mode 100755
index 0000000..7a6025b
--- /dev/null
+++ b/tests-mx32/clock_nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_nanosleep -e trace=clock_nanosleep,clock_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=clock_nanosleep,clock_gettime
diff --git a/tests-mx32/clock_nanosleep.test b/tests-mx32/clock_nanosleep.test
deleted file mode 100755
index ec434a6..0000000
--- a/tests-mx32/clock_nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_nanosleep, clock_gettime, and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=clock_nanosleep,clock_gettime,setitimer
diff --git a/tests-mx32/clock_xettime.c b/tests-mx32/clock_xettime.c
index 3ef5695..e3ec1b5 100644
--- a/tests-mx32/clock_xettime.c
+++ b/tests-mx32/clock_xettime.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -48,26 +49,41 @@
 
 	if (syscall(__NR_clock_getres, CLOCK_REALTIME, &t.ts))
 		perror_msg_and_skip("clock_getres CLOCK_REALTIME");
-	printf("clock_getres(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	printf("clock_getres(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = 0\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	if (syscall(__NR_clock_gettime, CLOCK_PROCESS_CPUTIME_ID, &t.ts))
 		perror_msg_and_skip("clock_gettime CLOCK_PROCESS_CPUTIME_ID");
-	printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, "
-	       "{tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	t.ts.tv_sec = 0xdeface1;
 	t.ts.tv_nsec = 0xdeface2;
-	if (!syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts))
-		error_msg_and_skip("clock_settime CLOCK_THREAD_CPUTIME_ID:"
-				   " EINVAL expected");
-	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID, {tv_sec=%jd, "
-	       "tv_nsec=%jd}) = -1 EINVAL (%m)\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+	t.ts.tv_sec = 0xdeadbeefU;
+	t.ts.tv_nsec = 0xfacefeedU;
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+	t.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	t.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/clock_xettime.gen.test b/tests-mx32/clock_xettime.gen.test
new file mode 100755
index 0000000..590f058
--- /dev/null
+++ b/tests-mx32/clock_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_xettime -a36 -e trace=clock_getres,clock_gettime,clock_settime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests-mx32/clock_xettime.test b/tests-mx32/clock_xettime.test
deleted file mode 100755
index f045a66..0000000
--- a/tests-mx32/clock_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_getres, clock_gettime, and clock_settime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests-mx32/copy_file_range.c b/tests-mx32/copy_file_range.c
index 085010a..6bb989d 100644
--- a/tests-mx32/copy_file_range.c
+++ b/tests-mx32/copy_file_range.c
@@ -2,6 +2,7 @@
  * This file is part of copy_file_range strace test.
  *
  * 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
@@ -41,8 +42,8 @@
 {
 	const long int fd_in = (long int) 0xdeadbeefffffffff;
 	const long int fd_out = (long int) 0xdeadbeeffffffffe;
-	long long int *const off_in = tail_alloc(sizeof(*off_in));
-	long long int *const off_out = tail_alloc(sizeof(*off_out));
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
 	*off_in = 0xdeadbef1facefed1;
 	*off_out = 0xdeadbef2facefed2;
 	const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests-mx32/copy_file_range.gen.test b/tests-mx32/copy_file_range.gen.test
new file mode 100755
index 0000000..4f3063b
--- /dev/null
+++ b/tests-mx32/copy_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/copy_file_range.test b/tests-mx32/copy_file_range.test
deleted file mode 100755
index c39f6ac..0000000
--- a/tests-mx32/copy_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check copy_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/count.test b/tests-mx32/count.test
index e75dc6b..a9752c0 100755
--- a/tests-mx32/count.test
+++ b/tests-mx32/count.test
@@ -3,6 +3,7 @@
 # Check whether -c and -w options work.
 #
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -29,14 +30,14 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
+run_prog ../sleep 0
 check_prog grep
 
 grep_log()
 {
 	local pattern="$1"; shift
 
-	run_strace "$@" ./sleep 1
+	run_strace "$@" ../sleep 1
 
 	grep nanosleep "$LOG" > /dev/null ||
 		framework_skip_ 'sleep does not use nanosleep'
diff --git a/tests-mx32/creat.gen.test b/tests-mx32/creat.gen.test
new file mode 100755
index 0000000..d2e47d3
--- /dev/null
+++ b/tests-mx32/creat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-mx32/creat.test b/tests-mx32/creat.test
deleted file mode 100755
index 069648f..0000000
--- a/tests-mx32/creat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check creat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-mx32/delete_module.c b/tests-mx32/delete_module.c
index 5a31760..0de35fe 100644
--- a/tests-mx32/delete_module.c
+++ b/tests-mx32/delete_module.c
@@ -2,6 +2,7 @@
  * Check decoding of delete_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -48,8 +49,7 @@
 		unsigned int val_prefix, val_suffix;
 	} flags[] = {
 		{ ARG_STR(0), 0, 0 },
-		{ (kernel_ulong_t) 0xffffffff00000000ULL | O_NONBLOCK,
-			"O_NONBLOCK", 0, 0 },
+		{ F8ILL_KULONG_MASK | O_NONBLOCK, "O_NONBLOCK", 0, 0 },
 		{ (kernel_ulong_t) 0xbadc0dedfacef157ULL & ~(O_NONBLOCK | O_TRUNC),
 			" /* O_??? */", 0xfacef157U & ~(O_NONBLOCK | O_TRUNC), 0},
 		{ (kernel_ulong_t) (0xfacef157deade71cULL & ~O_NONBLOCK) | O_TRUNC,
@@ -65,7 +65,7 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_delete_module, NULL, bogus_zero);
+	rc = syscall(__NR_delete_module, NULL, F8ILL_KULONG_MASK);
 	printf("delete_module(NULL, 0) = %s\n", sprintrc(rc));
 
 	rc = syscall(__NR_delete_module, bogus_param1, flags[0].val);
diff --git a/tests-mx32/delete_module.gen.test b/tests-mx32/delete_module.gen.test
new file mode 100755
index 0000000..4e4c671
--- /dev/null
+++ b/tests-mx32/delete_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/delete_module.test b/tests-mx32/delete_module.test
deleted file mode 100755
index fb86ec9..0000000
--- a/tests-mx32/delete_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of delete_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
diff --git a/tests-mx32/detach-running.test b/tests-mx32/detach-running.test
index 006efb8..ba5ffbf 100755
--- a/tests-mx32/detach-running.test
+++ b/tests-mx32/detach-running.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from running processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -36,7 +37,7 @@
 
 set -e
 
-./set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
+../set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -54,7 +55,6 @@
 	return 0
 }
 
-rm -f "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests-mx32/detach-sleeping.test b/tests-mx32/detach-sleeping.test
index 54304f3..a0975e3 100755
--- a/tests-mx32/detach-sleeping.test
+++ b/tests-mx32/detach-sleeping.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from sleeping processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -36,8 +37,7 @@
 
 set -e
 
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -55,7 +55,6 @@
 	return 0
 }
 
-rm -f "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests-mx32/detach-stopped.test b/tests-mx32/detach-stopped.test
index 8f480e7..a9f9c72 100755
--- a/tests-mx32/detach-stopped.test
+++ b/tests-mx32/detach-stopped.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from stopped processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -41,8 +42,8 @@
 
 set -e
 
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+> "$LOG"
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -62,7 +63,7 @@
 	return 0
 }
 
-rm -f "$LOG"
+> "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests-mx32/dup.gen.test b/tests-mx32/dup.gen.test
new file mode 100755
index 0000000..e5729c0
--- /dev/null
+++ b/tests-mx32/dup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-mx32/dup.test b/tests-mx32/dup.test
deleted file mode 100755
index 1dc1919..0000000
--- a/tests-mx32/dup.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests-mx32/dup2.gen.test b/tests-mx32/dup2.gen.test
new file mode 100755
index 0000000..fd1f5c9
--- /dev/null
+++ b/tests-mx32/dup2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests-mx32/dup2.test b/tests-mx32/dup2.test
deleted file mode 100755
index 509c5db..0000000
--- a/tests-mx32/dup2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests-mx32/dup3.gen.test b/tests-mx32/dup3.gen.test
new file mode 100755
index 0000000..d6ff7d7
--- /dev/null
+++ b/tests-mx32/dup3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-mx32/dup3.test b/tests-mx32/dup3.test
deleted file mode 100755
index 293f78f..0000000
--- a/tests-mx32/dup3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup3 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-mx32/epoll_create.gen.test b/tests-mx32/epoll_create.gen.test
new file mode 100755
index 0000000..841da6d
--- /dev/null
+++ b/tests-mx32/epoll_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/epoll_create.test b/tests-mx32/epoll_create.test
deleted file mode 100755
index 472a9bd..0000000
--- a/tests-mx32/epoll_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-mx32/epoll_create1.gen.test b/tests-mx32/epoll_create1.gen.test
new file mode 100755
index 0000000..c5e62a0
--- /dev/null
+++ b/tests-mx32/epoll_create1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/epoll_create1.test b/tests-mx32/epoll_create1.test
deleted file mode 100755
index 7a926a9..0000000
--- a/tests-mx32/epoll_create1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create1 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-mx32/epoll_ctl.c b/tests-mx32/epoll_ctl.c
index e666055..2251b35 100644
--- a/tests-mx32/epoll_ctl.c
+++ b/tests-mx32/epoll_ctl.c
@@ -11,14 +11,14 @@
 static long
 invoke_syscall(unsigned long epfd, unsigned long op, unsigned long fd, void *ev)
 {
-	op |= (unsigned long) 0xffffffff00000000ULL;
-	return syscall(__NR_epoll_ctl, epfd, op, fd, (unsigned long) ev);
+	return syscall(__NR_epoll_ctl, epfd, F8ILL_KULONG_MASK | op,
+		       fd, (unsigned long) ev);
 }
 
 int
 main(void)
 {
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 	ev->events = EPOLLIN;
 
 	long rc = invoke_syscall(-1U, EPOLL_CTL_ADD, -2U, ev);
diff --git a/tests-mx32/epoll_ctl.gen.test b/tests-mx32/epoll_ctl.gen.test
new file mode 100755
index 0000000..68c96eb
--- /dev/null
+++ b/tests-mx32/epoll_ctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/epoll_ctl.test b/tests-mx32/epoll_ctl.test
deleted file mode 100755
index 1aded54..0000000
--- a/tests-mx32/epoll_ctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_ctl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/epoll_pwait.c b/tests-mx32/epoll_pwait.c
index eaaa34d..841e722 100644
--- a/tests-mx32/epoll_pwait.c
+++ b/tests-mx32/epoll_pwait.c
@@ -12,7 +12,7 @@
 main(void)
 {
 	sigset_t set[2];
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 
 	long rc = syscall(__NR_epoll_pwait, -1, ev, 1, -2,
 			  set, (kernel_ulong_t) sizeof(set));
diff --git a/tests-mx32/epoll_pwait.gen.test b/tests-mx32/epoll_pwait.gen.test
new file mode 100755
index 0000000..c558efc
--- /dev/null
+++ b/tests-mx32/epoll_pwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/epoll_pwait.test b/tests-mx32/epoll_pwait.test
deleted file mode 100755
index c7aeeac..0000000
--- a/tests-mx32/epoll_pwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of epoll_pwait syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/epoll_wait.c b/tests-mx32/epoll_wait.c
index 038bf1f..caa3027 100644
--- a/tests-mx32/epoll_wait.c
+++ b/tests-mx32/epoll_wait.c
@@ -10,7 +10,7 @@
 int
 main(void)
 {
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 
 	long rc = syscall(__NR_epoll_wait, -1, ev, 1, -2);
 	printf("epoll_wait(-1, %p, 1, -2) = %ld %s (%m)\n",
diff --git a/tests-mx32/epoll_wait.gen.test b/tests-mx32/epoll_wait.gen.test
new file mode 100755
index 0000000..024cc0f
--- /dev/null
+++ b/tests-mx32/epoll_wait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/epoll_wait.test b/tests-mx32/epoll_wait.test
deleted file mode 100755
index 83ae161..0000000
--- a/tests-mx32/epoll_wait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_wait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26
diff --git a/tests-mx32/erestartsys.gen.test b/tests-mx32/erestartsys.gen.test
new file mode 100755
index 0000000..0fc3215
--- /dev/null
+++ b/tests-mx32/erestartsys.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (erestartsys -a34 -e signal=none -e trace=recvfrom); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests-mx32/erestartsys.test b/tests-mx32/erestartsys.test
deleted file mode 100755
index 91f711f..0000000
--- a/tests-mx32/erestartsys.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ERESTARTSYS error code.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests-mx32/execve-v.test b/tests-mx32/execve-v.test
index cce5860..52ff0d7 100755
--- a/tests-mx32/execve-v.test
+++ b/tests-mx32/execve-v.test
@@ -11,5 +11,3 @@
 # Filter out execve() call made by strace.
 grep -F test.execve < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/execve.c b/tests-mx32/execve.c
index 74749e7..c558dd3 100644
--- a/tests-mx32/execve.c
+++ b/tests-mx32/execve.c
@@ -2,6 +2,7 @@
  * This file is part of execve strace test.
  *
  * 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
@@ -62,13 +63,15 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
-	       ", [/* 5 vars, unterminated */]"
+	       ", %p /* 5 vars, unterminated */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5]
 #if VERBOSE
 	       , q_envp[0], q_envp[1], envp[2], envp[3], envp[4]
+#else
+	       , tail_envp
 #endif
 	       );
 
@@ -80,12 +83,14 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
-	       ", [/* 2 vars */]"
+	       ", %p /* 2 vars */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
 #if VERBOSE
 	       , q_envp[0], q_envp[1]
+#else
+	       , tail_envp
 #endif
 	       );
 
@@ -94,16 +99,18 @@
 #if VERBOSE
 	       ", [\"%s\"]"
 #else
-	       ", [/* 1 var */]"
+	       ", %p /* 1 var */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[2]
 #if VERBOSE
 	       , q_envp[1]
+#else
+	       , tail_envp + 1
 #endif
 	       );
 
-	char **const empty = tail_alloc(sizeof(*empty));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
 	char **const efault = empty + 1;
 	*empty = NULL;
 
@@ -112,9 +119,13 @@
 #if VERBOSE
 	       ", []"
 #else
-	       ", [/* 0 vars */]"
+	       ", %p /* 0 vars */"
 #endif
-	       ") = -1 ENOENT (%m)\n", Q_FILENAME);
+	       ") = -1 ENOENT (%m)\n", Q_FILENAME
+#if !VERBOSE
+	       , empty
+#endif
+	       );
 
 	char str_a[] = "012345678901234567890123456789012";
 	char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -141,10 +152,11 @@
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+	printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
 #endif
-	printf("]) = -1 ENOENT (%m)\n");
+	printf(") = -1 ENOENT (%m)\n");
 
 	execve(FILENAME, a + 1, b + 1);
 	printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
@@ -154,10 +166,11 @@
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %d vars */", DEFAULT_STRLEN);
+	printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
 #endif
-	printf("]) = -1 ENOENT (%m)\n");
+	printf(") = -1 ENOENT (%m)\n");
 
 	execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault);
 	printf("execve(\"%s\", NULL, %p) = -1 ENOENT (%m)\n",
diff --git a/tests-mx32/execve.test b/tests-mx32/execve.test
index 263b6fc..5635a94 100755
--- a/tests-mx32/execve.test
+++ b/tests-mx32/execve.test
@@ -11,5 +11,3 @@
 # Filter out execve() call made by strace.
 grep -F test.execve < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/execveat-v.gen.test b/tests-mx32/execveat-v.gen.test
new file mode 100755
index 0000000..f7d572f
--- /dev/null
+++ b/tests-mx32/execveat-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat-v -v -e trace=execveat); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=execveat
diff --git a/tests-mx32/execveat-v.test b/tests-mx32/execveat-v.test
deleted file mode 100755
index a905224..0000000
--- a/tests-mx32/execveat-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of execveat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=execveat
diff --git a/tests-mx32/execveat.c b/tests-mx32/execveat.c
index 9083830..8ffc4d5 100644
--- a/tests-mx32/execveat.c
+++ b/tests-mx32/execveat.c
@@ -2,6 +2,7 @@
  * This file is part of execveat strace test.
  *
  * 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
@@ -67,13 +68,15 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
-	       ", [/* 5 vars, unterminated */]"
+	       ", %p /* 5 vars, unterminated */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5],
 #if VERBOSE
 	       q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
+#else
+	       tail_envp,
 #endif
 	       errno2name());
 
@@ -85,12 +88,14 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
-	       ", [/* 2 vars */]"
+	       ", %p /* 2 vars */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 #if VERBOSE
 	       q_envp[0], q_envp[1],
+#else
+	       tail_envp,
 #endif
 	       errno2name());
 
@@ -99,16 +104,18 @@
 #if VERBOSE
 	       ", [\"%s\"]"
 #else
-	       ", [/* 1 var */]"
+	       ", %p /* 1 var */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[2],
 #if VERBOSE
 	       q_envp[1],
+#else
+	       tail_envp + 1,
 #endif
 	       errno2name());
 
-	char **const empty = tail_alloc(sizeof(*empty));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
 	char **const efault = empty + 1;
 	*empty = NULL;
 
@@ -117,10 +124,14 @@
 #if VERBOSE
 	       ", []"
 #else
-	       ", [/* 0 vars */]"
+	       ", %p /* 0 vars */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
-	       Q_FILENAME, errno2name());
+	       Q_FILENAME,
+#if !VERBOSE
+	       empty,
+#endif
+	       errno2name());
 
 	char str_a[] = "012345678901234567890123456789012";
 	char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -147,10 +158,11 @@
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+	printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
 #endif
-	printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+	printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       errno2name());
 
 	syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100);
@@ -161,10 +173,11 @@
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %d vars */", DEFAULT_STRLEN);
+	printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
 #endif
-	printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+	printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       errno2name());
 
 	syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100);
diff --git a/tests-mx32/execveat.gen.test b/tests-mx32/execveat.gen.test
new file mode 100755
index 0000000..c92e4d6
--- /dev/null
+++ b/tests-mx32/execveat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/execveat.test b/tests-mx32/execveat.test
deleted file mode 100755
index 879e03e..0000000
--- a/tests-mx32/execveat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check execveat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/faccessat.gen.test b/tests-mx32/faccessat.gen.test
new file mode 100755
index 0000000..4ccec2a
--- /dev/null
+++ b/tests-mx32/faccessat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests-mx32/faccessat.test b/tests-mx32/faccessat.test
deleted file mode 100755
index 61e7e2f..0000000
--- a/tests-mx32/faccessat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check faccessat syscall decoding.
-
-. "${srcdir=.}/openat.test"
diff --git a/tests-mx32/fadvise64.test b/tests-mx32/fadvise64.test
index 9f74672..161b28f 100755
--- a/tests-mx32/fadvise64.test
+++ b/tests-mx32/fadvise64.test
@@ -9,4 +9,3 @@
 check_prog grep
 grep -v "^$NAME([0123]," < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/fadvise64_64.gen.test b/tests-mx32/fadvise64_64.gen.test
new file mode 100755
index 0000000..5f95b3c
--- /dev/null
+++ b/tests-mx32/fadvise64_64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test); do not edit.
+. "${srcdir=.}/fadvise64.test"
diff --git a/tests-mx32/fadvise64_64.test b/tests-mx32/fadvise64_64.test
deleted file mode 100755
index a50fe2b..0000000
--- a/tests-mx32/fadvise64_64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fadvise64_64 syscall.
-
-. "${srcdir=.}/fadvise64.test"
diff --git a/tests-mx32/fallocate.gen.test b/tests-mx32/fallocate.gen.test
new file mode 100755
index 0000000..c6cfdb7
--- /dev/null
+++ b/tests-mx32/fallocate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-mx32/fallocate.test b/tests-mx32/fallocate.test
deleted file mode 100755
index 405187e..0000000
--- a/tests-mx32/fallocate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-mx32/fanotify_init.c b/tests-mx32/fanotify_init.c
index c14b413..15e09ee 100644
--- a/tests-mx32/fanotify_init.c
+++ b/tests-mx32/fanotify_init.c
@@ -2,6 +2,7 @@
  * Check decoding of fanotify_init syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -60,7 +61,7 @@
 main(void)
 {
 	static const struct strval flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "FAN_CLASS_NOTIF" },
+		{ F8ILL_KULONG_MASK, "FAN_CLASS_NOTIF" },
 		{ (kernel_ulong_t) 0xffffffff0000000cULL,
 			"0xc /* FAN_CLASS_??? */" },
 		{ (kernel_ulong_t) 0xdec0deddefaced04ULL,
@@ -70,7 +71,7 @@
 			"FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|0xffffffc0" },
 	};
 	static const struct strval event_f_flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+		{ F8ILL_KULONG_MASK, "O_RDONLY" },
 		{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
 			"O_WRONLY|0x80000000" }
 	};
diff --git a/tests-mx32/fanotify_init.gen.test b/tests-mx32/fanotify_init.gen.test
new file mode 100755
index 0000000..ee519e6
--- /dev/null
+++ b/tests-mx32/fanotify_init.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/fanotify_init.test b/tests-mx32/fanotify_init.test
deleted file mode 100755
index 8d26af4..0000000
--- a/tests-mx32/fanotify_init.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fanotify_init syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/fanotify_mark.c b/tests-mx32/fanotify_mark.c
index 43f285d..11cf7d0 100644
--- a/tests-mx32/fanotify_mark.c
+++ b/tests-mx32/fanotify_mark.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -90,11 +91,11 @@
 
 	static const kernel_ulong_t fds[] = {
 		(kernel_ulong_t) 0xdeadfeed12345678ULL,
-		(kernel_ulong_t) 0xffffffff00000000ULL,
+		F8ILL_KULONG_MASK,
 		(kernel_ulong_t) 0xdeb0d1edffffffffULL,
 	};
 	static const struct strval flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "0" },
+		{ F8ILL_KULONG_MASK, "0" },
 		{ (kernel_ulong_t) 0xdec0deddefaced00ULL,
 			"0xefaced00 /* FAN_MARK_??? */" },
 		{ (kernel_ulong_t) 0xda7a105700000040ULL,
diff --git a/tests-mx32/fanotify_mark.gen.test b/tests-mx32/fanotify_mark.gen.test
new file mode 100755
index 0000000..ce16a55
--- /dev/null
+++ b/tests-mx32/fanotify_mark.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/fanotify_mark.test b/tests-mx32/fanotify_mark.test
deleted file mode 100755
index fd67138..0000000
--- a/tests-mx32/fanotify_mark.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fanotify_mark syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests-mx32/fchdir.gen.test b/tests-mx32/fchdir.gen.test
new file mode 100755
index 0000000..c80e141
--- /dev/null
+++ b/tests-mx32/fchdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests-mx32/fchdir.test b/tests-mx32/fchdir.test
deleted file mode 100755
index 3a4296e..0000000
--- a/tests-mx32/fchdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests-mx32/fchmod.gen.test b/tests-mx32/fchmod.gen.test
new file mode 100755
index 0000000..f327fb7
--- /dev/null
+++ b/tests-mx32/fchmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-mx32/fchmod.test b/tests-mx32/fchmod.test
deleted file mode 100755
index 4cb1263..0000000
--- a/tests-mx32/fchmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests-mx32/fchmodat.gen.test b/tests-mx32/fchmodat.gen.test
new file mode 100755
index 0000000..9ee1f01
--- /dev/null
+++ b/tests-mx32/fchmodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/fchmodat.test b/tests-mx32/fchmodat.test
deleted file mode 100755
index 13cbe80..0000000
--- a/tests-mx32/fchmodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchmodat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/fchown.gen.test b/tests-mx32/fchown.gen.test
new file mode 100755
index 0000000..63ee545
--- /dev/null
+++ b/tests-mx32/fchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests-mx32/fchown.test b/tests-mx32/fchown.test
deleted file mode 100755
index 63a0f2e..0000000
--- a/tests-mx32/fchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
diff --git a/tests-mx32/fchown32.gen.test b/tests-mx32/fchown32.gen.test
new file mode 100755
index 0000000..d8167dd
--- /dev/null
+++ b/tests-mx32/fchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-mx32/fchown32.test b/tests-mx32/fchown32.test
deleted file mode 100755
index e837f54..0000000
--- a/tests-mx32/fchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-mx32/fchownat.gen.test b/tests-mx32/fchownat.gen.test
new file mode 100755
index 0000000..2ec9e32
--- /dev/null
+++ b/tests-mx32/fchownat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/fchownat.test b/tests-mx32/fchownat.test
deleted file mode 100755
index e5d0f28..0000000
--- a/tests-mx32/fchownat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchownat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/fcntl.c b/tests-mx32/fcntl.c
index f060cdf..4f62ca2 100644
--- a/tests-mx32/fcntl.c
+++ b/tests-mx32/fcntl.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,9 +45,9 @@
 		.l_start = 0xdefaced1facefeedULL,
 		.l_len = 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, %p) = %s\n",
-	       TEST_SYSCALL_STR, name, &fl, EINVAL_STR);
+	       TEST_SYSCALL_STR, name, &fl, sprintrc(rc));
 }
 
 static void
diff --git a/tests-mx32/fcntl.gen.test b/tests-mx32/fcntl.gen.test
new file mode 100755
index 0000000..83a1af4
--- /dev/null
+++ b/tests-mx32/fcntl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-mx32/fcntl.test b/tests-mx32/fcntl.test
deleted file mode 100755
index 9aea122..0000000
--- a/tests-mx32/fcntl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fcntl decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests-mx32/fcntl64.c b/tests-mx32/fcntl64.c
index 5ecd6eb..068956e 100644
--- a/tests-mx32/fcntl64.c
+++ b/tests-mx32/fcntl64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,10 +45,10 @@
 		.l_start = 0xdefaced1facefeedULL,
 		.l_len = 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
-	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
 }
 
 static void
@@ -67,7 +68,7 @@
 	long rc = invoke_test_syscall(F_SETLK64, &fl);
 	printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=0, l_len=%d}) = %s\n",
-	       TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+	       TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
 
 	if (rc)
 		return;
diff --git a/tests-mx32/fcntl64.gen.test b/tests-mx32/fcntl64.gen.test
new file mode 100755
index 0000000..9d3b98a
--- /dev/null
+++ b/tests-mx32/fcntl64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-mx32/fcntl64.test b/tests-mx32/fcntl64.test
deleted file mode 100755
index 00ba671..0000000
--- a/tests-mx32/fcntl64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fcntl64 syscall decoding.
-
-. "${srcdir=.}/fcntl.test"
diff --git a/tests-mx32/fdatasync.gen.test b/tests-mx32/fdatasync.gen.test
new file mode 100755
index 0000000..0dbea8a
--- /dev/null
+++ b/tests-mx32/fdatasync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-mx32/fdatasync.test b/tests-mx32/fdatasync.test
deleted file mode 100755
index ff59749..0000000
--- a/tests-mx32/fdatasync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fdatasync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-mx32/file_handle.c b/tests-mx32/file_handle.c
index a5ad6c7..bbdf48b 100644
--- a/tests-mx32/file_handle.c
+++ b/tests-mx32/file_handle.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -187,7 +188,7 @@
 		(kernel_ulong_t) 0x12345678ffffff9cULL,
 	};
 	static const struct strval open_flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+		{ F8ILL_KULONG_MASK, "O_RDONLY" },
 		{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
 			"O_WRONLY|0x80000000" }
 	};
@@ -208,7 +209,7 @@
 		tail_alloc(sizeof(struct file_handle) + 128);
 	struct file_handle *handle_256 =
 		tail_alloc(sizeof(struct file_handle) + 256);
-	int *bogus_mount_id = tail_alloc(sizeof(*bogus_mount_id));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
 
 	char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
 
diff --git a/tests-mx32/file_handle.gen.test b/tests-mx32/file_handle.gen.test
new file mode 100755
index 0000000..8280f9f
--- /dev/null
+++ b/tests-mx32/file_handle.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_handle -e trace=name_to_handle_at,open_by_handle_at); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests-mx32/file_handle.test b/tests-mx32/file_handle.test
deleted file mode 100755
index 1ccc9d4..0000000
--- a/tests-mx32/file_handle.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check name_to_handle_at and open_by_handle_at syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests-mx32/file_ioctl.c b/tests-mx32/file_ioctl.c
index 0fe17b1..ded67a9 100644
--- a/tests-mx32/file_ioctl.c
+++ b/tests-mx32/file_ioctl.c
@@ -13,7 +13,7 @@
 test_fiemap(void)
 {
 	(void) tail_alloc(1);
-	struct fiemap *const args = tail_alloc(sizeof(*args));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fiemap, args);
 
 	printf("ioctl(-1, FS_IOC_FIEMAP, {fm_start=%" PRI__u64
 	       ", fm_length=%" PRI__u64", fm_flags=",
diff --git a/tests-mx32/file_ioctl.gen.test b/tests-mx32/file_ioctl.gen.test
new file mode 100755
index 0000000..f7e58f5
--- /dev/null
+++ b/tests-mx32/file_ioctl.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/file_ioctl.test b/tests-mx32/file_ioctl.test
deleted file mode 100755
index 7b8b8ce..0000000
--- a/tests-mx32/file_ioctl.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check FS_IOC_FIEMAP ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/finit_module.c b/tests-mx32/finit_module.c
index 3f0178f..c97471a 100644
--- a/tests-mx32/finit_module.c
+++ b/tests-mx32/finit_module.c
@@ -2,6 +2,7 @@
  * Check decoding of finit_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -68,7 +69,8 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_finit_module, bogus_zero, NULL, bogus_zero);
+	rc = syscall(__NR_finit_module, F8ILL_KULONG_MASK, NULL,
+		     F8ILL_KULONG_MASK);
 	printf("finit_module(0, NULL, 0) = %s\n", sprintrc(rc));
 
 	rc = syscall(__NR_finit_module, bogus_fd, bogus_param1, flags[0].val);
diff --git a/tests-mx32/finit_module.gen.test b/tests-mx32/finit_module.gen.test
new file mode 100755
index 0000000..f2e56af
--- /dev/null
+++ b/tests-mx32/finit_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/finit_module.test b/tests-mx32/finit_module.test
deleted file mode 100755
index bd644f3..0000000
--- a/tests-mx32/finit_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of finit_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-mx32/flock.gen.test b/tests-mx32/flock.gen.test
new file mode 100755
index 0000000..dff2bac
--- /dev/null
+++ b/tests-mx32/flock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-mx32/flock.test b/tests-mx32/flock.test
deleted file mode 100755
index 24fcd74..0000000
--- a/tests-mx32/flock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check flock syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-mx32/fork-f.gen.test b/tests-mx32/fork-f.gen.test
new file mode 100755
index 0000000..b534e13
--- /dev/null
+++ b/tests-mx32/fork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests-mx32/fork-f.test b/tests-mx32/fork-f.test
deleted file mode 100755
index d8ca1e3..0000000
--- a/tests-mx32/fork-f.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows fork syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26 -qq -f -e trace=chdir -e signal=none
diff --git a/tests-mx32/fstat.c b/tests-mx32/fstat.c
index 12df3e1..1482bb1 100644
--- a/tests-mx32/fstat.c
+++ b/tests-mx32/fstat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/fstat.gen.test b/tests-mx32/fstat.gen.test
new file mode 100755
index 0000000..8686ec8
--- /dev/null
+++ b/tests-mx32/fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat -a15 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -v -P stat.sample
diff --git a/tests-mx32/fstat.test b/tests-mx32/fstat.test
deleted file mode 100755
index 2ba0fba..0000000
--- a/tests-mx32/fstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Check fstat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-syscall=$NAME
-run_prog > /dev/null
-sample=$syscall.sample
-> "$sample"
-run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-mx32/fstat64.c b/tests-mx32/fstat64.c
index a9c2e07..c63be60 100644
--- a/tests-mx32/fstat64.c
+++ b/tests-mx32/fstat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/fstat64.gen.test b/tests-mx32/fstat64.gen.test
new file mode 100755
index 0000000..a452b84
--- /dev/null
+++ b/tests-mx32/fstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat64 -a17 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -v -P stat.sample
diff --git a/tests-mx32/fstat64.test b/tests-mx32/fstat64.test
deleted file mode 100755
index 8b4f5ef..0000000
--- a/tests-mx32/fstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstat64 syscall decoding.
-
-. "${srcdir=.}/fstat.test"
diff --git a/tests-mx32/fstatat.c b/tests-mx32/fstatat.c
index 66138c2..ea331b4 100644
--- a/tests-mx32/fstatat.c
+++ b/tests-mx32/fstatat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/fstatat64.c b/tests-mx32/fstatat64.c
index 03082a8..8de7ba6 100644
--- a/tests-mx32/fstatat64.c
+++ b/tests-mx32/fstatat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/fstatat64.gen.test b/tests-mx32/fstatat64.gen.test
new file mode 100755
index 0000000..8da5c7f
--- /dev/null
+++ b/tests-mx32/fstatat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/fstatat64.test b/tests-mx32/fstatat64.test
deleted file mode 100755
index 484008a..0000000
--- a/tests-mx32/fstatat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/fstatfs.gen.test b/tests-mx32/fstatfs.gen.test
new file mode 100755
index 0000000..3dd04d8
--- /dev/null
+++ b/tests-mx32/fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-mx32/fstatfs.test b/tests-mx32/fstatfs.test
deleted file mode 100755
index 646e66f..0000000
--- a/tests-mx32/fstatfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests-mx32/fstatfs64.gen.test b/tests-mx32/fstatfs64.gen.test
new file mode 100755
index 0000000..b9527be
--- /dev/null
+++ b/tests-mx32/fstatfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-mx32/fstatfs64.test b/tests-mx32/fstatfs64.test
deleted file mode 100755
index 179ff1b..0000000
--- a/tests-mx32/fstatfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests-mx32/fstatx.c b/tests-mx32/fstatx.c
index f88d9a9..70804af 100644
--- a/tests-mx32/fstatx.c
+++ b/tests-mx32/fstatx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/tests-mx32/fsync.gen.test b/tests-mx32/fsync.gen.test
new file mode 100755
index 0000000..921e804
--- /dev/null
+++ b/tests-mx32/fsync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/fsync.test b/tests-mx32/fsync.test
deleted file mode 100755
index a58b67b..0000000
--- a/tests-mx32/fsync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fsync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-mx32/ftruncate.gen.test b/tests-mx32/ftruncate.gen.test
new file mode 100755
index 0000000..709a851
--- /dev/null
+++ b/tests-mx32/ftruncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-mx32/ftruncate.test b/tests-mx32/ftruncate.test
deleted file mode 100755
index ec8a1e0..0000000
--- a/tests-mx32/ftruncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-mx32/ftruncate64.gen.test b/tests-mx32/ftruncate64.gen.test
new file mode 100755
index 0000000..4cb1fe7
--- /dev/null
+++ b/tests-mx32/ftruncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-mx32/ftruncate64.test b/tests-mx32/ftruncate64.test
deleted file mode 100755
index 9068210..0000000
--- a/tests-mx32/ftruncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-mx32/futex.c b/tests-mx32/futex.c
index 586b95d..9a9ab66 100644
--- a/tests-mx32/futex.c
+++ b/tests-mx32/futex.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,8 +56,6 @@
 # include "xlat/futexwakeops.h"
 # include "xlat/futexwakecmps.h"
 
-static struct timespec *tmout;
-
 void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
 	int *uaddr2, unsigned long val3, int rc)
 {
@@ -163,8 +162,8 @@
 int
 main(int argc, char *argv[])
 {
-	int *uaddr = tail_alloc(sizeof(*uaddr));
-	int *uaddr2 = tail_alloc(sizeof(*uaddr2));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr2);
 	int rc;
 	unsigned i;
 	unsigned j;
@@ -172,7 +171,7 @@
 	uaddr[0] = 0x1deadead;
 	uaddr2[0] = 0xbadf00d;
 
-	tmout = tail_alloc(sizeof(*tmout));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tmout);
 	tmout->tv_sec = 123;
 	tmout->tv_nsec = 0xbadc0de;
 
@@ -189,37 +188,59 @@
 	/* uaddr is NULL */
 	CHECK_FUTEX(NULL, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
-	printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		VAL_PR, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* uaddr is faulty */
 	CHECK_FUTEX(uaddr + 1, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr + 1, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr + 1, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* timeout is faulty */
 	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout + 1, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
 	printf("futex(%p, FUTEX_WAIT, %u, %p) = %s\n",
-		uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+	       uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+
+	/* timeout is invalid */
+	tmout->tv_sec = 0xdeadbeefU;
+	tmout->tv_nsec = 0xfacefeedU;
+
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+	tmout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tmout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+	tmout->tv_sec = 123;
+	tmout->tv_nsec = 0xbadc0de;
 
 	/* uaddr is not as provided; uaddr2 is faulty but ignored */
 	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2 + 1, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* uaddr is not as provided; uaddr2 is faulty but ignored */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT, VAL, tmout,
 		uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
-		"%s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* Next 2 tests are with CLOCKRT bit set */
 
@@ -227,18 +248,18 @@
 	CHECK_FUTEX_ENOSYS(uaddr,
 		FUTEX_CLOCK_REALTIME | FUTEX_WAIT,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr,
 		FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG | FUTEX_WAIT ,
 		VAL, tmout, uaddr2, 0, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* FUTEX_WAIT_BITSET - FUTEX_WAIT which provides additional bitmask
 	 *                     which should be matched at least in one bit with
@@ -254,50 +275,54 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1,
 		VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
-		"%#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+	       ", %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* val3 of 0 is invalid  */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, 0,
 		(rc == -1) && (errno == EINVAL));
-	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
-		"%#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, 0, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+	       ", %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), 0, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* Next 3 tests are with CLOCKRT bit set */
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* val3 of 0 is invalid  */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, 0, (rc == -1) && (errno == EINVAL));
-	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, 0,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), 0, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
 		FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* FUTEX_WAKE - wake val processes waiting for uaddr
 	 * Possible flags: PRIVATE
@@ -522,9 +547,9 @@
 			CHECK_FUTEX_ENOSYS(uaddr,
 				j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
 				VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
-			printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s) = "
-				"%s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i,
-				uaddr2, wake_ops[i].str, sprintrc(rc));
+			printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)"
+			       " = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR,
+			       i, uaddr2, wake_ops[i].str, sprintrc(rc));
 		}
 	}
 
@@ -552,16 +577,16 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_LOCK_PI, VAL, tmout, uaddr2 + 1,
 		VAL3, (rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr + 1, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_PRIVATE_FLAG | FUTEX_LOCK_PI, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%jd, tv_nsec=%jd}) = "
-		"%s\n",
-		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
+	       uaddr + 1, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* NULL is passed by invalid_op() in cases valid timeout address is
 	 * needed */
@@ -633,32 +658,32 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2,
 		VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_REQUEUE_PI,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) "
-		"= %s\n", uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_REQUEUE_PI,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
 		FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME, "
-		"%u, {tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME"
+	       ", %u, {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	/* FUTEX_CMP_REQUEUE_PI - version of FUTEX_CMP_REQUEUE which re-queues
 	 *                        on PI-aware futex.
diff --git a/tests-mx32/futimesat.c b/tests-mx32/futimesat.c
index c356629..733fd09 100644
--- a/tests-mx32/futimesat.c
+++ b/tests-mx32/futimesat.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of futimesat syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,46 +37,123 @@
 # include <sys/time.h>
 # include <unistd.h>
 
+static void
+print_tv(const struct timeval *tv)
+{
+	printf("{tv_sec=%lld, tv_usec=%llu}",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
+	print_time_t_usec(tv->tv_sec,
+			  zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_futimesat(const kernel_ulong_t dirfd,
+	    const kernel_ulong_t pathname,
+	    const kernel_ulong_t times)
+{
+	long rc = syscall(__NR_futimesat, dirfd, pathname, times);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	struct timeval tv;
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_fail("gettimeofday");
+	static const kernel_ulong_t bogus_fd =
+		(kernel_ulong_t) 0xbadfaceddeadbeaf;
+	static const kernel_ulong_t kfdcwd =
+		(kernel_ulong_t) 0xdefaced00000000 | -100U;
+	static const char proto_fname[] = "futimesat_sample";
+	static const char qname[] = "\"futimesat_sample\"";
 
-	static const char sample[] = "futimesat_sample";
-	unsigned long dirfd = (unsigned long) 0xdeadbeef00000000ULL | -100U;
-
-	long rc = syscall(__NR_futimesat, dirfd, sample, 0);
-	printf("futimesat(AT_FDCWD, \"%s\", NULL) = %ld %s (%m)\n",
-	       sample, rc, errno2name());
-
-	struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
-	dirfd = (unsigned long) 0xdeadbeefffffffffULL;
-
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_usec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_usec = tv.tv_usec + 1;
-
-	rc = syscall(__NR_futimesat, dirfd, 0, ts + 2);
-	printf("futimesat(%d, NULL, %p) = %ld %s (%m)\n",
-	       (int) dirfd, ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_futimesat, dirfd, 0, ts + 1);
-	printf("futimesat(%d, NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
-	       "%ld %s (%m)\n", (int) dirfd,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       ts + 2, rc, errno2name());
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	struct timeval *const tv = tail_alloc(sizeof(*tv) * 2);
 
 	(void) close(0);
-	rc = syscall(__NR_futimesat, 0, "", ts);
-	printf("futimesat(0, \"\", [{tv_sec=%jd, tv_usec=%jd}, "
-	       "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
-	       (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       rc, errno2name());
+
+	/* dirfd */
+	k_futimesat(0, kfname, 0);
+	printf("futimesat(0, %s, NULL) = %s\n", qname, errstr);
+
+	k_futimesat(bogus_fd, kfname, 0);
+	printf("futimesat(%d, %s, NULL) = %s\n", (int) bogus_fd, qname, errstr);
+
+	k_futimesat(-100U, kfname, 0);
+	printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+	k_futimesat(kfdcwd, kfname, 0);
+	printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+	/* pathname */
+	k_futimesat(kfdcwd, 0, 0);
+	printf("futimesat(AT_FDCWD, NULL, NULL) = %s\n", errstr);
+
+	k_futimesat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0);
+	printf("futimesat(AT_FDCWD, \"\", NULL) = %s\n", errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_futimesat(kfdcwd, kfname, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("futimesat(AT_FDCWD, %p, NULL) = %s\n", fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_futimesat(kfdcwd, f8ill_ptr_to_kulong(fname), 0);
+		printf("futimesat(AT_FDCWD, %#jx, NULL) = %s\n",
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 1));
+	printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+	       qname, tv + 1, errstr);
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 2));
+	printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+	       qname, tv + 2, errstr);
+
+	tv[0].tv_sec = 0xdeadbeefU;
+	tv[0].tv_usec = 0xfacefeedU;
+	tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_sec = 1492356708;
+	tv[0].tv_usec = 567891234;
+	tv[1].tv_sec = 1492357086;
+	tv[1].tv_usec = 678902345;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_usec = 567891;
+	tv[1].tv_usec = 678902;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_futimesat(kfdcwd, kfname, f8ill_ptr_to_kulong(tv));
+		printf("futimesat(AT_FDCWD, %s, %#jx) = %s\n",
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/futimesat.gen.test b/tests-mx32/futimesat.gen.test
new file mode 100755
index 0000000..c3add8c
--- /dev/null
+++ b/tests-mx32/futimesat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-mx32/futimesat.test b/tests-mx32/futimesat.test
deleted file mode 100755
index 3a67c04..0000000
--- a/tests-mx32/futimesat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check futimesat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-mx32/gen_pure_executables.sh b/tests-mx32/gen_pure_executables.sh
new file mode 100755
index 0000000..c0e2152
--- /dev/null
+++ b/tests-mx32/gen_pure_executables.sh
@@ -0,0 +1,50 @@
+#!/bin/sh -efu
+#
+# 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.
+
+usage()
+{
+	cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
+
+Generate pure_executables.am from <input> list.
+Deduce output file from <input> unless an <output> is specified.
+EOF
+	exit 1
+}
+
+input="${0%/*}/pure_executables.list"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output="$(dirname "$input")/pure_executables.am"
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
+
+exec > "$output"
+
+echo "# Generated by $0 from $input; do not edit."
+echo 'PURE_EXECUTABLES = \'
+sed -n 's/^[^#].*/  & \\/p' < "$input"
+echo '  #'
diff --git a/tests-mx32/gen_tests.in b/tests-mx32/gen_tests.in
new file mode 100644
index 0000000..be0a3a2
--- /dev/null
+++ b/tests-mx32/gen_tests.in
@@ -0,0 +1,348 @@
+# Input for gen_tests.sh
+#
+# 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.
+
+_newselect
+accept	-a22
+accept4	-a37
+access	-a30 -P access_sample
+acct	-a20
+add_key	-a30 -s12
+adjtimex	-a15
+aio	-a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
+alarm	-a10
+bpf	-a20
+btrfs	+ioctl.test
+chmod	-a28
+chown	-a28
+chown32	-a31
+chroot	-a24
+clock	test_trace_expr 'times|fcntl.*' -e/clock
+clock_adjtime	-a37
+clock_nanosleep	-e trace=clock_nanosleep,clock_gettime
+clock_xettime	-a36 -e trace=clock_getres,clock_gettime,clock_settime
+copy_file_range
+creat	-a20
+delete_module	-a23
+dup	-a8
+dup2	-a13
+dup3	-a24
+epoll_create	-a17
+epoll_create1	-a28
+epoll_ctl
+epoll_pwait
+epoll_wait	-a26
+erestartsys	-a34 -e signal=none -e trace=recvfrom
+execveat
+execveat-v	-v -e trace=execveat
+faccessat	-P $NAME.sample
+fadvise64_64	+fadvise64.test
+fallocate	-a18
+fanotify_init
+fanotify_mark	-a32
+fchdir	-a11
+fchmod	-a15
+fchmodat
+fchown	-a16
+fchown32	-a18
+fchownat
+fcntl	-a8
+fcntl64	-a8
+fdatasync	-a14
+file_handle	-e trace=name_to_handle_at,open_by_handle_at
+file_ioctl	+ioctl.test
+finit_module	-a25
+flock	-a19
+fork-f	-a26 -qq -f -e signal=none -e trace=chdir
+fstat	-a15 -v -P stat.sample
+fstat64	-a17 -v -P stat.sample
+fstatat64	-a32 -v -P stat.sample -P /dev/full
+fstatfs	-a18
+fstatfs64	-a24
+fsync	-a10
+ftruncate	-a24
+ftruncate64	-a36
+futimesat	-a28
+get_mempolicy	-s3 -a38
+getcpu	-a25
+getcwd	-a18
+getdents	-a22 -v
+getdents64	-a24 -v
+getegid	+getuid.test
+getegid32	+getuid.test
+geteuid	+getuid.test
+geteuid32	+getuid.test
+getgid	+getuid.test
+getgid32	+getuid.test
+getgroups	-a17
+getgroups32	-a19
+getpeername	-a27
+getpgrp	-a10
+getpid	-a9
+getppid	-a10
+getrandom	-a32 -s3
+getresgid	-a25
+getresgid32	-a27
+getresuid	-a25
+getresuid32	-a27
+getrlimit	-a27
+getrusage	-v
+getsid	-a10
+getsockname	-a27
+gettid	-a9
+getuid32	+getuid.test
+getxxid	-a10 -e trace=getxpid,getxuid,getxgid
+inet-cmsg	-e trace=recvmsg
+init_module	-a27
+inotify	-a23 -e trace=inotify_add_watch,inotify_rm_watch
+inotify_init1	-a27
+int_0x80	-a11 -e trace=getgid32
+ioctl_block	+ioctl.test
+ioctl_evdev	+ioctl.test
+ioctl_evdev-v	+ioctl-v.sh
+ioctl_loop	+ioctl.test
+ioctl_loop-v	+ioctl-v.sh
+ioctl_mtd	+ioctl.test
+ioctl_rtc	+ioctl.test
+ioctl_rtc-v	+ioctl-v.sh
+ioctl_scsi	+ioctl.test
+ioctl_sg_io_v3	+ioctl.test
+ioctl_sg_io_v4	+ioctl.test
+ioctl_uffdio	+ioctl.test
+ioctl_v4l2	+ioctl.test
+ioperm	-a27
+iopl	-a8
+ioprio	-a18 -e trace=ioprio_get,ioprio_set
+ip_mreq	-e trace=setsockopt
+ipc	-a19
+ipc_msg	+ipc.sh
+ipc_sem	+ipc.sh
+ipc_shm	+ipc.sh
+kcmp	-a27
+kexec_file_load	-s9
+kexec_load	-s9
+keyctl	-a31 -s10
+kill	-a12 -esignal=none
+lchown	-a30
+lchown32	-a32
+link
+linkat
+lookup_dcookie	-a27
+lstat	-a32 -v -P stat.sample -P /dev/full
+lstat64	-a32 -v -P stat.sample -P /dev/full
+madvise	-a33
+mbind
+membarrier	-a36
+memfd_create
+migrate_pages	-a33
+mincore	-a22
+mkdir	-a20
+mkdirat	-a28
+mknod	-a18
+mknodat	-a35
+mlock	-a20 -e trace=mlock,munlock
+mlock2
+mlockall	-a12
+mmap64	+mmap.test
+mmsg	-e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
+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
+mount
+move_pages	-s3
+mq	-a32 -e trace=mq_getsetattr,mq_open,mq_unlink
+mq_sendrecv	-a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-read	-eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-write	-ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+msg_control	-a21 -e trace=sendmsg
+msg_control-v	-v -a21 -e trace=sendmsg
+msg_name	-a20 -e trace=recvmsg
+munlockall	-a13
+nanosleep	-a20
+net-icmp_filter	-e trace=getsockopt,setsockopt
+net-sockaddr	-a24 -e trace=connect
+netlink_protocol	-e trace=%network
+newfstatat	-a32 -v -P stat.sample -P /dev/full
+old_mmap	-a11 -e trace=mmap
+oldfstat	-a18 -v -P stat.sample
+oldlstat	-a32 -v -P stat.sample -P /dev/full
+oldstat	-a32 -v -P stat.sample -P /dev/full
+open	-a30 -P $NAME.sample
+openat	-P $NAME.sample
+osf_utimes	-a21
+pause	-a8 -esignal=none
+perf_event_open	-a1
+perf_event_open_nonverbose	-a34 -e verbose=none -e trace=perf_event_open
+perf_event_open_unabbrev	-a1 -v -e trace=perf_event_open
+pipe2	-a15
+pkey_alloc	-a17
+pkey_free	-a13
+pkey_mprotect	-a37
+ppoll	-s2
+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
+preadv-pwritev	-a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
+preadv2-pwritev2	-a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
+printstr	-e trace=writev
+prlimit64
+process_vm_readv	-s5 -a37
+process_vm_writev	-s5 -a38
+pselect6
+ptrace	-a23 -e signal=none
+pwritev	-a22 -s7
+quotactl
+quotactl-v	-v -e trace=quotactl
+quotactl-xfs	-e trace=quotactl
+quotactl-xfs-v	-v -e trace=quotactl
+read-write	-a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
+readahead	-a1
+readdir	-a16
+readlink	-xx
+readlinkat	-xx
+reboot
+recvfrom	-a35
+recvmmsg-timeout	-a25 -e trace=recvmmsg
+recvmsg	-eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
+regex	test_trace_expr '' -etrace='/^(.*_)?statv?fs'
+remap_file_pages
+rename	-a35
+renameat
+renameat2
+request_key	-a33 -s12
+rmdir	-a22
+rt_sigpending	-a20
+rt_sigprocmask
+rt_sigqueueinfo	-esignal=none
+rt_sigreturn	-esignal='!USR1'
+rt_sigsuspend	-a20 -esignal=none
+rt_sigtimedwait	-a38
+rt_tgsigqueueinfo	-esignal=none
+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
+sched_xetaffinity	-a28 -e trace=sched_getaffinity,sched_setaffinity
+sched_xetattr	-a29 -e trace=sched_getattr,sched_setattr
+sched_xetparam	-a23 -e trace=sched_getparam,sched_setparam
+sched_xetscheduler	-a22 -e trace=sched_getscheduler,sched_setscheduler
+sched_yield	-a14
+seccomp-filter	-e trace=seccomp
+seccomp-filter-v	-v -e trace=seccomp
+select	-a36
+semop	-a32 -e trace=semop,semtimedop
+sendfile	-a27
+sendfile64	-a29
+set_mempolicy	-s3 -a35
+setdomainname	-a24
+setfsgid	-a12
+setfsgid32	-a14
+setfsuid	-a12
+setfsuid32	-a14
+setgid	-a10
+setgid32	-a12
+setgroups	-s2 -a17
+setgroups32	-s2 -a19
+sethostname	-a22
+setns	-a21
+setregid	-a15
+setregid32	-a17
+setresgid	-a19
+setresgid32	-a21
+setresuid	-a19
+setresuid32	-a21
+setreuid	-a15
+setreuid32	-a17
+setrlimit	-a27
+setuid	-a10
+setuid32	-a12
+shmxt	-a11 -e trace='/(osf_)?shmat,shmdt'
+shutdown	-a24
+siginfo	-e trace=none
+signal_receive	-a16 -e trace=kill
+signalfd4
+sigreturn	-esignal='!USR1'
+sigsuspend	-a19 -esignal=none
+socketcall	-a20
+splice
+stat	-a32 -v -P stat.sample -P /dev/full
+stat64	-a32 -v -P stat.sample -P /dev/full
+statfs	-a17
+statfs64	-a23
+statx	-a32 -v -P stat.sample -P /dev/full
+swap	-a23 -e trace=swapon,swapoff
+sxetmask	-a11 -e trace=sgetmask,ssetmask
+symlink	-a34
+symlinkat
+sync	-a7
+sync_file_range
+sync_file_range2
+sysinfo	-a14
+syslog	-a36
+tee
+time	-a10
+timer_create
+timer_xettime	-e trace=timer_create,timer_settime,timer_gettime
+timerfd_xettime	-e trace=timerfd_create,timerfd_settime,timerfd_gettime
+times	-esignal=none
+times-fail	-a12 -e trace=times
+trace_fstat	test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
+trace_fstatfs	test_trace_expr '' -e%fstatfs
+trace_lstat	test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
+trace_question	test_trace_expr '' -e?osf_utimes,?/^pkey_.*
+trace_stat	test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
+trace_stat_like	test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
+trace_statfs	test_trace_expr '' -e%statfs
+trace_statfs_like	test_trace_expr '' -e%%statfs
+truncate
+truncate64
+ugetrlimit	-a28
+umask	-a11
+umoven-illptr	-a36 -e trace=nanosleep
+umovestr-illptr	-a11 -e trace=chdir
+umovestr3	-a14 -e trace=chdir
+unlink	-a24
+unlinkat	-a35
+unshare	-a11
+userfaultfd	-a38
+ustat	-a33
+utime	-a16
+utimensat	-a33
+utimes	-a17
+vfork-f	-a26 -qq -f -e signal=none -e trace=chdir
+vhangup	-a10
+vmsplice	-ewrite=1
+wait4	-esignal=none
+wait4-v	-v -e signal=none -e trace=wait4
+waitid	-esignal=none
+waitid-v	-v -e signal=none -e trace=waitid
+waitpid	-a28
+xattr	-a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
+xattr-strings	-a22 -s 4 -e trace=fsetxattr
+xet_robust_list	-a24 -e trace=get_robust_list,set_robust_list
+xetitimer	-a29 -e trace=setitimer,getitimer
+xetpgid	-a11 -e trace=getpgid,setpgid
+xetpriority	-a29 -e trace=getpriority,setpriority
+xettimeofday	-a20 -e trace=gettimeofday,settimeofday
diff --git a/tests-mx32/gen_tests.sh b/tests-mx32/gen_tests.sh
new file mode 100755
index 0000000..b062436
--- /dev/null
+++ b/tests-mx32/gen_tests.sh
@@ -0,0 +1,110 @@
+#!/bin/sh -efu
+#
+# 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.
+
+usage()
+{
+	cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
+
+Generate test script(s) from <input> table.
+If a <output> is specified, generate the script for this test only,
+otherwise generate scripts for all tests specified in <input> table.
+EOF
+	exit 1
+}
+
+input="${0%/*}/gen_tests.in"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output=
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
+
+if [ -n "$output" ]; then
+	match="${output##*/}"
+	match="${match%.gen.test}"
+	[ -n "$match" ] || usage
+else
+	match=
+	dir="$(dirname "$input")"
+fi
+
+names=
+
+while read -r name args; do {
+	[ -n "${name###*}" ] || continue
+	if [ -z "$match" ]; then
+		names="$names $name"
+		output="$dir/$name.gen.test"
+	else
+		[ "$match" = "$name" ] || continue
+	fi
+
+	hdr="\
+#!/bin/sh -efu
+# Generated by $0 from $input ($name $args); do not edit."
+
+	case "$args" in
+		+*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/${args#+}"
+		EOF
+		;;
+
+		''|-*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/init.sh"
+		run_strace_match_diff $args
+		EOF
+		;;
+
+		*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/init.sh"
+		$args
+		EOF
+		;;
+	esac > "$output"
+
+	chmod a+x "$output"
+} < /dev/null; done < "$input"
+
+if [ -n "$names" ]; then
+	{
+		printf '# Generated by %s from %s; do not edit.\n' "$0" "$input"
+		printf 'GEN_TESTS ='
+		printf ' %s.gen.test' $names
+		echo
+		target='$(srcdir)/%s.gen.test'
+		dep1='$(abs_srcdir)/gen_tests.sh'
+		dep2='$(srcdir)/gen_tests.in'
+		recipe='$(AM_V_GEN) $^ $@'
+		printf "\\n$target: $dep1 $dep2\\n\\t$recipe\\n" $names
+	} > "$dir/gen_tests.am"
+fi
diff --git a/tests-mx32/get_mempolicy.gen.test b/tests-mx32/get_mempolicy.gen.test
new file mode 100755
index 0000000..ec6efb3
--- /dev/null
+++ b/tests-mx32/get_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (get_mempolicy -s3 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a38
diff --git a/tests-mx32/get_mempolicy.test b/tests-mx32/get_mempolicy.test
deleted file mode 100755
index 9227097..0000000
--- a/tests-mx32/get_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a38
diff --git a/tests-mx32/get_regs.test b/tests-mx32/get_regs.test
new file mode 100755
index 0000000..c673fe9
--- /dev/null
+++ b/tests-mx32/get_regs.test
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# Check that get_regs is skipped for filtered syscalls.
+#
+# 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.
+
+. "${srcdir=.}/init.sh"
+
+check_prog env
+check_prog grep
+run_prog ../gettid > /dev/null
+
+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
+
+[ "$(cat less)" -gt 0 ] ||
+	fail_ "$STRACE $args failed to catch any ptrace syscalls"
+
+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
+
+[ "$(cat more)" -gt 0 ] ||
+	fail_ "$STRACE $args failed to catch any ptrace syscalls"
+
+[ "$(cat more)" -gt "$(cat less)" ] ||
+	fail_ "$STRACE failed to skip get_regs for filtered syscalls"
diff --git a/tests-mx32/get_sigset_size.c b/tests-mx32/get_sigset_size.c
new file mode 100644
index 0000000..357829d
--- /dev/null
+++ b/tests-mx32/get_sigset_size.c
@@ -0,0 +1,66 @@
+/*
+ * Find out the size of kernel's sigset_t.
+ *
+ * Copyright (c) 2016-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 <signal.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+/*
+ * If the sigset size specified to rt_sigprocmask is not equal to the size
+ * of kernel's sigset_t, the kernel does not look at anything else and fails
+ * with EINVAL.
+ *
+ * Otherwise, if both pointers specified to rt_sigprocmask are NULL,
+ * the kernel just returns 0.
+ *
+ * This vaguely documented kernel feature can be used to probe
+ * the kernel and find out the size of kernel's sigset_t.
+ */
+
+unsigned int
+get_sigset_size(void)
+{
+	static unsigned int set_size;
+
+	if (!set_size) {
+		static const unsigned int big_size = 1024 / 8;
+
+		for (set_size = big_size; set_size; set_size >>= 1) {
+			if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
+				     NULL, NULL, set_size))
+				break;
+		}
+
+		if (!set_size)
+			perror_msg_and_fail("rt_sigprocmask");
+	}
+
+	return set_size;
+}
diff --git a/tests-mx32/getcpu.c b/tests-mx32/getcpu.c
index ec671f1..3cb49cb 100644
--- a/tests-mx32/getcpu.c
+++ b/tests-mx32/getcpu.c
@@ -2,6 +2,7 @@
  * Check decoding of getcpu syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,8 +48,8 @@
 		(unsigned *) tail_alloc(sizeof(* bogus_tcache)) + 1;
 
 	long res;
-	unsigned *cpu = tail_alloc(sizeof(*cpu));
-	unsigned *node = tail_alloc(sizeof(*node));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, cpu);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, node);
 	long * tcache = tail_alloc(128);
 
 	res = syscall(__NR_getcpu, NULL, NULL, NULL);
diff --git a/tests-mx32/getcpu.gen.test b/tests-mx32/getcpu.gen.test
new file mode 100755
index 0000000..44d9a4b
--- /dev/null
+++ b/tests-mx32/getcpu.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests-mx32/getcpu.test b/tests-mx32/getcpu.test
deleted file mode 100755
index fe21265..0000000
--- a/tests-mx32/getcpu.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getcpu syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-mx32/getcwd.gen.test b/tests-mx32/getcwd.gen.test
new file mode 100755
index 0000000..af2ff08
--- /dev/null
+++ b/tests-mx32/getcwd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-mx32/getcwd.test b/tests-mx32/getcwd.test
deleted file mode 100755
index 405187e..0000000
--- a/tests-mx32/getcwd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-mx32/getdents.c b/tests-mx32/getdents.c
index b787c83..338eab0 100644
--- a/tests-mx32/getdents.c
+++ b/tests-mx32/getdents.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -92,12 +93,10 @@
 }
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "getdents.test.tmp.dir";
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests-mx32/getdents.gen.test b/tests-mx32/getdents.gen.test
new file mode 100755
index 0000000..0db5f20
--- /dev/null
+++ b/tests-mx32/getdents.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a22 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -v
diff --git a/tests-mx32/getdents.test b/tests-mx32/getdents.test
deleted file mode 100755
index 23c4ac3..0000000
--- a/tests-mx32/getdents.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a22 -v
diff --git a/tests-mx32/getdents64.c b/tests-mx32/getdents64.c
index 9da2a23..1f6b47e 100644
--- a/tests-mx32/getdents64.c
+++ b/tests-mx32/getdents64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -98,12 +99,10 @@
 }
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "getdents64.test.tmp.dir";
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests-mx32/getdents64.gen.test b/tests-mx32/getdents64.gen.test
new file mode 100755
index 0000000..6e24d40
--- /dev/null
+++ b/tests-mx32/getdents64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a24 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -v
diff --git a/tests-mx32/getdents64.test b/tests-mx32/getdents64.test
deleted file mode 100755
index 401cfc7..0000000
--- a/tests-mx32/getdents64.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a24 -v
diff --git a/tests-mx32/getegid.gen.test b/tests-mx32/getegid.gen.test
new file mode 100755
index 0000000..d6fecc2
--- /dev/null
+++ b/tests-mx32/getegid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getegid.test b/tests-mx32/getegid.test
deleted file mode 100755
index 4354158..0000000
--- a/tests-mx32/getegid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getegid32.gen.test b/tests-mx32/getegid32.gen.test
new file mode 100755
index 0000000..38c4a4b
--- /dev/null
+++ b/tests-mx32/getegid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getegid32.test b/tests-mx32/getegid32.test
deleted file mode 100755
index a266620..0000000
--- a/tests-mx32/getegid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/geteuid.gen.test b/tests-mx32/geteuid.gen.test
new file mode 100755
index 0000000..9e8c12f
--- /dev/null
+++ b/tests-mx32/geteuid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/geteuid.test b/tests-mx32/geteuid.test
deleted file mode 100755
index 14ff6a6..0000000
--- a/tests-mx32/geteuid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/geteuid32.gen.test b/tests-mx32/geteuid32.gen.test
new file mode 100755
index 0000000..5b78331
--- /dev/null
+++ b/tests-mx32/geteuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/geteuid32.test b/tests-mx32/geteuid32.test
deleted file mode 100755
index 9dd173d..0000000
--- a/tests-mx32/geteuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgid.gen.test b/tests-mx32/getgid.gen.test
new file mode 100755
index 0000000..5a87aee
--- /dev/null
+++ b/tests-mx32/getgid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgid.test b/tests-mx32/getgid.test
deleted file mode 100755
index f4f0c2e..0000000
--- a/tests-mx32/getgid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgid32.gen.test b/tests-mx32/getgid32.gen.test
new file mode 100755
index 0000000..05e2d70
--- /dev/null
+++ b/tests-mx32/getgid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgid32.test b/tests-mx32/getgid32.test
deleted file mode 100755
index 3bc98d1..0000000
--- a/tests-mx32/getgid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getgroups.c b/tests-mx32/getgroups.c
index 2617303..c7cd874 100644
--- a/tests-mx32/getgroups.c
+++ b/tests-mx32/getgroups.c
@@ -2,6 +2,7 @@
  * Check decoding of getgroups/getgroups32 syscalls.
  *
  * 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
@@ -91,7 +92,7 @@
 	if (ngroups < 0)
 		perror_msg_and_fail(SYSCALL_NAME);
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
 	printf("%s(0, NULL) = %ld\n", SYSCALL_NAME, rc);
 
 	rc = syscall(SYSCALL_NR, -1U, 0);
@@ -105,7 +106,7 @@
 	rc = syscall(SYSCALL_NR, ngroups_max, 0);
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL | ngroups_max, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, 0);
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
 	/* check how the second argument is decoded */
diff --git a/tests-mx32/getgroups.gen.test b/tests-mx32/getgroups.gen.test
new file mode 100755
index 0000000..48b09be
--- /dev/null
+++ b/tests-mx32/getgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-mx32/getgroups.test b/tests-mx32/getgroups.test
deleted file mode 100755
index 2eb3056..0000000
--- a/tests-mx32/getgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-mx32/getgroups32.gen.test b/tests-mx32/getgroups32.gen.test
new file mode 100755
index 0000000..74637d0
--- /dev/null
+++ b/tests-mx32/getgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-mx32/getgroups32.test b/tests-mx32/getgroups32.test
deleted file mode 100755
index 12a8bcc..0000000
--- a/tests-mx32/getgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-mx32/getpeername.gen.test b/tests-mx32/getpeername.gen.test
new file mode 100755
index 0000000..66fb0a9
--- /dev/null
+++ b/tests-mx32/getpeername.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/getpeername.test b/tests-mx32/getpeername.test
deleted file mode 100755
index 81f01bb..0000000
--- a/tests-mx32/getpeername.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getpeername syscall.
-
-. "${srcdir=.}/getsockname.test"
diff --git a/tests-mx32/getpgrp.gen.test b/tests-mx32/getpgrp.gen.test
new file mode 100755
index 0000000..1ec48e9
--- /dev/null
+++ b/tests-mx32/getpgrp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/getpgrp.test b/tests-mx32/getpgrp.test
deleted file mode 100755
index e116bb5..0000000
--- a/tests-mx32/getpgrp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgrp syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-mx32/getpid.c b/tests-mx32/getpid.c
new file mode 100644
index 0000000..96f2d15
--- /dev/null
+++ b/tests-mx32/getpid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getpid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	printf("getpid() = %ld\n", syscall(__NR_getpid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getpid")
+
+#endif
diff --git a/tests-mx32/getpid.gen.test b/tests-mx32/getpid.gen.test
new file mode 100755
index 0000000..4691774
--- /dev/null
+++ b/tests-mx32/getpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests-mx32/getppid.c b/tests-mx32/getppid.c
new file mode 100644
index 0000000..58901fc
--- /dev/null
+++ b/tests-mx32/getppid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getppid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	printf("getppid() = %ld\n", syscall(__NR_getppid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getppid")
+
+#endif
diff --git a/tests-mx32/getppid.gen.test b/tests-mx32/getppid.gen.test
new file mode 100755
index 0000000..52116a0
--- /dev/null
+++ b/tests-mx32/getppid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/getrandom.gen.test b/tests-mx32/getrandom.gen.test
new file mode 100755
index 0000000..2f5b989
--- /dev/null
+++ b/tests-mx32/getrandom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrandom -a32 -s3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -s3
diff --git a/tests-mx32/getrandom.test b/tests-mx32/getrandom.test
deleted file mode 100755
index ad34048..0000000
--- a/tests-mx32/getrandom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrandom syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -s3
diff --git a/tests-mx32/getresgid.gen.test b/tests-mx32/getresgid.gen.test
new file mode 100755
index 0000000..f53bccc
--- /dev/null
+++ b/tests-mx32/getresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests-mx32/getresgid.test b/tests-mx32/getresgid.test
deleted file mode 100755
index 9f5186e..0000000
--- a/tests-mx32/getresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-mx32/getresgid32.gen.test b/tests-mx32/getresgid32.gen.test
new file mode 100755
index 0000000..5f00506
--- /dev/null
+++ b/tests-mx32/getresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/getresgid32.test b/tests-mx32/getresgid32.test
deleted file mode 100755
index a979891..0000000
--- a/tests-mx32/getresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/getresugid.c b/tests-mx32/getresugid.c
index 0ee721c..af9f015 100644
--- a/tests-mx32/getresugid.c
+++ b/tests-mx32/getresugid.c
@@ -2,6 +2,7 @@
  * Check decoding of getresuid/getresgid/getresuid32/getresgid32 syscalls.
  *
  * 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
@@ -34,9 +35,9 @@
 int
 main(void)
 {
-	unsigned UGID_TYPE *const r = tail_alloc(sizeof(*r));
-	unsigned UGID_TYPE *const e = tail_alloc(sizeof(*e));
-	unsigned UGID_TYPE *const s = tail_alloc(sizeof(*s));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, r);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, e);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, s);
 
 	if (syscall(SYSCALL_NR, r, e, s))
 		perror_msg_and_fail(SYSCALL_NAME);
diff --git a/tests-mx32/getresuid.gen.test b/tests-mx32/getresuid.gen.test
new file mode 100755
index 0000000..e947a94
--- /dev/null
+++ b/tests-mx32/getresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests-mx32/getresuid.test b/tests-mx32/getresuid.test
deleted file mode 100755
index eee1ac0..0000000
--- a/tests-mx32/getresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests-mx32/getresuid32.gen.test b/tests-mx32/getresuid32.gen.test
new file mode 100755
index 0000000..b088a22
--- /dev/null
+++ b/tests-mx32/getresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/getresuid32.test b/tests-mx32/getresuid32.test
deleted file mode 100755
index fdc76a3..0000000
--- a/tests-mx32/getresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/getrlimit.gen.test b/tests-mx32/getrlimit.gen.test
new file mode 100755
index 0000000..b97c176
--- /dev/null
+++ b/tests-mx32/getrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/getrlimit.test b/tests-mx32/getrlimit.test
deleted file mode 100755
index 6fd88ae..0000000
--- a/tests-mx32/getrlimit.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit syscall.
-
-. "${srcdir=.}/setrlimit.test"
diff --git a/tests-mx32/getrusage.c b/tests-mx32/getrusage.c
index 8b76eff..bb52dd9 100644
--- a/tests-mx32/getrusage.c
+++ b/tests-mx32/getrusage.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * 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
@@ -35,27 +36,46 @@
 # include <stdint.h>
 # include <sys/resource.h>
 # include <unistd.h>
+# include <errno.h>
+
+# include "xlat.h"
+# include "xlat/usagewho.h"
 
 int
-main(void)
+invoke_print(int who, const char *who_str, struct rusage *usage)
 {
-	struct rusage *const usage = tail_alloc(sizeof(struct rusage));
-	int rc = syscall(__NR_getrusage, RUSAGE_SELF, usage);
-	printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%jd, tv_usec=%jd}"
-	       ", ru_stime={tv_sec=%jd, tv_usec=%jd}, ru_maxrss=%lu"
+	int rc = syscall(__NR_getrusage, who, usage);
+	int saved_errno = errno;
+	printf("getrusage(%s, {ru_utime={tv_sec=%lld, tv_usec=%llu}"
+	       ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%lu"
 	       ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
 	       ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
 	       ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
-	       ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %d\n",
-	       (intmax_t) usage->ru_utime.tv_sec,
-	       (intmax_t) usage->ru_utime.tv_usec,
-	       (intmax_t) usage->ru_stime.tv_sec,
-	       (intmax_t) usage->ru_stime.tv_usec,
+	       ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %s\n",
+	       who_str,
+	       (long long) usage->ru_utime.tv_sec,
+	       zero_extend_signed_to_ull(usage->ru_utime.tv_usec),
+	       (long long) usage->ru_stime.tv_sec,
+	       zero_extend_signed_to_ull(usage->ru_stime.tv_usec),
 	       usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
 	       usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
 	       usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
 	       usage->ru_msgsnd, usage->ru_msgrcv, usage->ru_nsignals,
-	       usage->ru_nvcsw, usage->ru_nivcsw, rc);
+	       usage->ru_nvcsw, usage->ru_nivcsw, sprintrc(rc));
+	errno = saved_errno;
+	return rc;
+}
+
+int
+main(void)
+{
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+	if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {
+		perror_msg_and_fail("RUSAGE_SELF");
+	}
+	if (invoke_print(ARG_STR(RUSAGE_THREAD), usage) && errno != EINVAL) {
+		perror_msg_and_fail("RUSAGE_THREAD");
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/getrusage.gen.test b/tests-mx32/getrusage.gen.test
new file mode 100755
index 0000000..c4fb182
--- /dev/null
+++ b/tests-mx32/getrusage.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v
diff --git a/tests-mx32/getrusage.test b/tests-mx32/getrusage.test
deleted file mode 100755
index 4a3e8ed..0000000
--- a/tests-mx32/getrusage.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrusage syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v
diff --git a/tests-mx32/getsid.gen.test b/tests-mx32/getsid.gen.test
new file mode 100755
index 0000000..123f177
--- /dev/null
+++ b/tests-mx32/getsid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/getsid.test b/tests-mx32/getsid.test
deleted file mode 100755
index 3fcf979..0000000
--- a/tests-mx32/getsid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getsid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-mx32/getsockname.gen.test b/tests-mx32/getsockname.gen.test
new file mode 100755
index 0000000..cd40d3e
--- /dev/null
+++ b/tests-mx32/getsockname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/getsockname.test b/tests-mx32/getsockname.test
deleted file mode 100755
index 99b2850..0000000
--- a/tests-mx32/getsockname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getsockname syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/gettid.c b/tests-mx32/gettid.c
new file mode 100644
index 0000000..9b13eb8
--- /dev/null
+++ b/tests-mx32/gettid.c
@@ -0,0 +1,12 @@
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+int
+main(void)
+{
+	printf("gettid() = %ld\n", syscall(__NR_gettid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-mx32/gettid.gen.test b/tests-mx32/gettid.gen.test
new file mode 100755
index 0000000..1ceaa53
--- /dev/null
+++ b/tests-mx32/gettid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests-mx32/getuid.test b/tests-mx32/getuid.test
index 9aaf74b..0bad1ff 100755
--- a/tests-mx32/getuid.test
+++ b/tests-mx32/getuid.test
@@ -9,4 +9,3 @@
 run_strace -qq -a9 -e$NAME $args > "$EXP"
 uniq < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests-mx32/getuid32.gen.test b/tests-mx32/getuid32.gen.test
new file mode 100755
index 0000000..ac0d0ad
--- /dev/null
+++ b/tests-mx32/getuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getuid32.test b/tests-mx32/getuid32.test
deleted file mode 100755
index ae0c557..0000000
--- a/tests-mx32/getuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests-mx32/getxxid.gen.test b/tests-mx32/getxxid.gen.test
new file mode 100755
index 0000000..5aa89f6
--- /dev/null
+++ b/tests-mx32/getxxid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxxid -a10 -e trace=getxpid,getxuid,getxgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests-mx32/getxxid.test b/tests-mx32/getxxid.test
deleted file mode 100755
index 9b89d7c..0000000
--- a/tests-mx32/getxxid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getxpid, getxuid, and getxgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests-mx32/inet-cmsg.gen.test b/tests-mx32/inet-cmsg.gen.test
new file mode 100755
index 0000000..8eeb7c9
--- /dev/null
+++ b/tests-mx32/inet-cmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inet-cmsg -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=recvmsg
diff --git a/tests-mx32/inet-cmsg.test b/tests-mx32/inet-cmsg.test
deleted file mode 100755
index 52ff5f5..0000000
--- a/tests-mx32/inet-cmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check IPPROTO_IP control messages decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmsg
diff --git a/tests-mx32/init.sh b/tests-mx32/init.sh
index f368b98..2844765 100644
--- a/tests-mx32/init.sh
+++ b/tests-mx32/init.sh
@@ -1,6 +1,7 @@
 #!/bin/sh
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -26,10 +27,9 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ME_="${0##*/}"
-LOG="$ME_.tmp"
-OUT="$LOG.out"
-EXP="$LOG.exp"
-NAME="${ME_%.test}"
+LOG="log"
+OUT="out"
+EXP="exp"
 
 warn_() { printf >&2 '%s\n' "$*"; }
 fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
@@ -52,7 +52,7 @@
 run_prog()
 {
 	if [ $# -eq 0 ]; then
-		set -- "./$NAME"
+		set -- "../$NAME"
 	fi
 	args="$*"
 	"$@" || {
@@ -72,6 +72,20 @@
 	"$@" || framework_skip_ "$args failed with code $?"
 }
 
+try_run_prog()
+{
+	local rc
+
+	"$@" > /dev/null || {
+		rc=$?
+		if [ $rc -eq 77 ]; then
+			return 1
+		else
+			fail_ "$* failed with code $rc"
+		fi
+	}
+}
+
 run_strace()
 {
 	> "$LOG" || fail_ "failed to write $LOG"
@@ -213,7 +227,6 @@
 	run_prog > /dev/null
 	run_strace "$@" $args > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 # Print kernel version code.
@@ -250,22 +263,110 @@
 	cat < "/proc/$pid/status" | grep "$@"
 }
 
+# Subtracts one program set from another.
+# If an optional regular expression is specified, the lines in the minuend file
+# that match this regular expression are elso excluded from the output.
+#
+# Usage: prog_set_subtract minuend_file subtrahend_file [subtrahend_regexp]
+prog_set_subtract()
+{
+	local min sub re pat
+	min="$1"; shift
+	sub="$1"; shift
+	re="${1-}"
+	pat="$re|$(sed 's/[[:space:]].*//' < "$sub" | tr -s '\n' '|')"
+	grep -E -v -x -e "$pat" < "$min"
+}
+
+# Usage: test_pure_prog_set [--expfile FILE] COMMON_ARGS < tests_file
+# stdin should consist of lines in "test_name strace_args..." format.
+test_pure_prog_set()
+{
+	local expfile
+
+	expfile="$EXP"
+
+	while [ -n "$1" ]; do
+		case "$1" in
+		--expfile)
+			shift
+			expfile="$1"
+			shift
+			;;
+		*)
+			break
+			;;
+		esac
+	done
+
+	while read -r t prog_args; do {
+		# skip lines beginning with "#" symbol
+		[ "${t###}" = "$t" ] || continue
+
+		try_run_prog "../$t" || continue
+		run_strace $prog_args "$@" "../$t" > "$expfile"
+		match_diff "$LOG" "$expfile"
+	} < /dev/null; done
+}
+
+# Run strace against list of programs put in "$NAME.in" and then against the
+# rest of pure_executables.list with the expectation of empty output in the
+# latter case.
+#
+# Usage: source this file after init.sh and call:
+#   test_trace_expr subtrahend_regexp strace_args
+# Environment:
+#   $NAME:	test name, used for "$NAME.in" file containing list of tests
+#		for positive trace expression match;
+#   $srcdir:	used to find pure_executables.list and "$NAME.in" files.
+# Files created:
+#   negative.list: File containing list of tests for negative match.
+test_trace_expr()
+{
+	local subtrahend_regexp
+	subtrahend_regexp="$1"; shift
+	test_pure_prog_set "$@" < "$srcdir/$NAME.in"
+	prog_set_subtract "$srcdir/pure_executables.list" "$srcdir/$NAME.in" \
+		"$subtrahend_regexp" > negative.list
+	test_pure_prog_set --expfile /dev/null -qq -esignal=none "$@" \
+		< negative.list
+}
+
 check_prog cat
 check_prog rm
 
-rm -f "$LOG"
+case "$ME_" in
+	*.gen.test) NAME="${ME_%.gen.test}" ;;
+	*.test) NAME="${ME_%.test}" ;;
+	*) NAME=
+esac
 
-[ -n "${STRACE-}" ] || {
-	STRACE=../strace
-	case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
-		*--suppressions=*--error-exitcode=*--tool=*)
+if [ -n "$NAME" ]; then
+	TESTDIR="$NAME.dir"
+	rm -rf -- "$TESTDIR"
+	mkdir -- "$TESTDIR"
+	cd "$TESTDIR"
+
+	case "$srcdir" in
+		/*) ;;
+		*) srcdir="../$srcdir" ;;
+	esac
+
+	[ -n "${STRACE-}" ] || {
+		STRACE=../../strace
+		case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
+			*--suppressions=*--error-exitcode=*--tool=*)
 			# add valgrind command prefix
 			STRACE="${LOG_COMPILER-} ${LOG_FLAGS-} $STRACE"
 			;;
-	esac
-}
+		esac
+	}
+else
+	[ -n "${STRACE-}" ] ||
+		STRACE=../strace
+fi
 
-: "${TIMEOUT_DURATION:=60}"
+: "${TIMEOUT_DURATION:=120}"
 : "${SLEEP_A_BIT:=sleep 1}"
 
 [ -z "${VERBOSE-}" ] ||
diff --git a/tests-mx32/init_delete_module.h b/tests-mx32/init_delete_module.h
index db550c3..cabf26f 100644
--- a/tests-mx32/init_delete_module.h
+++ b/tests-mx32/init_delete_module.h
@@ -3,6 +3,7 @@
  * and delete_module tests.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,9 +43,6 @@
 	MAX_STRLEN = 32,
 };
 
-static const kernel_ulong_t bogus_zero =
-	(kernel_ulong_t) 0xffffffff00000000ULL;
-
 static void
 print_str(unsigned int base, unsigned int len, bool escape)
 {
diff --git a/tests-mx32/init_module.c b/tests-mx32/init_module.c
index 88ef9ec..8fbb263 100644
--- a/tests-mx32/init_module.c
+++ b/tests-mx32/init_module.c
@@ -2,6 +2,7 @@
  * Check decoding of init_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,9 +56,9 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_init_module, NULL, bogus_zero, NULL);
+	rc = syscall(__NR_init_module, NULL, F8ILL_KULONG_MASK, NULL);
 	printf("init_module(NULL, %llu, NULL) = %s\n",
-	       (unsigned long long) bogus_zero, sprintrc(rc));
+	       (unsigned long long) F8ILL_KULONG_MASK, sprintrc(rc));
 
 	rc = syscall(__NR_init_module, bogus_addr, 0, bogus_param1);
 	errstr = sprintrc(rc);
diff --git a/tests-mx32/init_module.gen.test b/tests-mx32/init_module.gen.test
new file mode 100755
index 0000000..8948e2e
--- /dev/null
+++ b/tests-mx32/init_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/init_module.test b/tests-mx32/init_module.test
deleted file mode 100755
index ef7c732..0000000
--- a/tests-mx32/init_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of init_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/inotify.gen.test b/tests-mx32/inotify.gen.test
new file mode 100755
index 0000000..7010206
--- /dev/null
+++ b/tests-mx32/inotify.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify -a23 -e trace=inotify_add_watch,inotify_rm_watch); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=inotify_add_watch,inotify_rm_watch
diff --git a/tests-mx32/inotify.test b/tests-mx32/inotify.test
deleted file mode 100755
index 436f3bc..0000000
--- a/tests-mx32/inotify.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=inotify_add_watch,inotify_rm_watch -a23
diff --git a/tests-mx32/inotify_init1.gen.test b/tests-mx32/inotify_init1.gen.test
new file mode 100755
index 0000000..d847b50
--- /dev/null
+++ b/tests-mx32/inotify_init1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/inotify_init1.test b/tests-mx32/inotify_init1.test
deleted file mode 100755
index 1a7c926..0000000
--- a/tests-mx32/inotify_init1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of inotify_init1 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/int_0x80.c b/tests-mx32/int_0x80.c
new file mode 100644
index 0000000..012694f
--- /dev/null
+++ b/tests-mx32/int_0x80.c
@@ -0,0 +1,52 @@
+/*
+ * Check decoding of int 0x80 on x86_64, x32, and x86.
+ *
+ * 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"
+
+#if defined __x86_64__ || defined __i386__
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	/* 200 is __NR_getgid32 on x86 and __NR_tkill on x86_64. */
+	__asm__("movl $200, %eax; int $0x80");
+	printf("getgid32() = %d\n", getegid());
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__x86_64__ || __i386__")
+
+#endif
diff --git a/tests-mx32/int_0x80.gen.test b/tests-mx32/int_0x80.gen.test
new file mode 100755
index 0000000..2ab4f2f
--- /dev/null
+++ b/tests-mx32/int_0x80.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (int_0x80 -a11 -e trace=getgid32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getgid32
diff --git a/tests-mx32/ioctl-v.sh b/tests-mx32/ioctl-v.sh
new file mode 100755
index 0000000..be89671
--- /dev/null
+++ b/tests-mx32/ioctl-v.sh
@@ -0,0 +1,11 @@
+#!/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 92a3191..5dc0864 100644
--- a/tests-mx32/ioctl.c
+++ b/tests-mx32/ioctl.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/ioctl.test b/tests-mx32/ioctl.test
index 94bc5d4..1eb469e 100755
--- a/tests-mx32/ioctl.test
+++ b/tests-mx32/ioctl.test
@@ -4,12 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-mx32/ioctl_block.c b/tests-mx32/ioctl_block.c
index f62b0b3..8e883d4 100644
--- a/tests-mx32/ioctl_block.c
+++ b/tests-mx32/ioctl_block.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_block strace test.
  *
  * 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
@@ -113,7 +114,7 @@
 	ioctl(-1, BLKFRASET, lmagic);
 	printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
-	int *const val_int = tail_alloc(sizeof(*val_int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
 	*val_int = magic;
 
 	ioctl(-1, BLKROSET, val_int);
@@ -144,7 +145,7 @@
 	       " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
-	struct blkpg_ioctl_arg *const blkpg = tail_alloc(sizeof(*blkpg));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_ioctl_arg, blkpg);
 	blkpg->op = 3;
 	blkpg->flags = 0xdeadbeef;
 	blkpg->datalen = 0xbadc0ded;
@@ -156,7 +157,7 @@
 	       "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen,
 	       (unsigned long) blkpg->data);
 
-	struct blkpg_partition *const bp = tail_alloc(sizeof(*bp));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_partition, bp);
 	bp->start = 0xfac1fed2dad3bef4ULL;
 	bp->length = 0xfac5fed6dad7bef8ULL;
 	bp->pno = magic;
@@ -177,7 +178,7 @@
 	       (int) sizeof(bp->volname) - 1, bp->volname);
 
 #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
-	struct blk_user_trace_setup *const buts = tail_alloc(sizeof(*buts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts);
 	fill_memory(buts, sizeof(*buts));
 
 	ioctl(-1, BLKTRACESETUP, buts);
diff --git a/tests-mx32/ioctl_block.gen.test b/tests-mx32/ioctl_block.gen.test
new file mode 100755
index 0000000..0ffec6f
--- /dev/null
+++ b/tests-mx32/ioctl_block.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_block.test b/tests-mx32/ioctl_block.test
deleted file mode 100755
index 0bf2500..0000000
--- a/tests-mx32/ioctl_block.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of BLK* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_dm-v.test b/tests-mx32/ioctl_dm-v.test
index ade3b9e..eed37c2 100755
--- a/tests-mx32/ioctl_dm-v.test
+++ b/tests-mx32/ioctl_dm-v.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -s9 -veioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_dm.c b/tests-mx32/ioctl_dm.c
index 08f036c..544d70b 100644
--- a/tests-mx32/ioctl_dm.c
+++ b/tests-mx32/ioctl_dm.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -234,15 +235,15 @@
 	dm_arg->version[1] = 0xbadc0dee;
 	dm_arg->version[2] = 0xbadc0def;
 	ioctl(-1, DM_VERSION, dm_arg);
-	printf("ioctl(-1, DM_VERSION, {version=%u.%u.%u, "
-	       "/* Unsupported device mapper ABI version */ ...}) = "
+	printf("ioctl(-1, DM_VERSION, {version=%u.%u.%u"
+	       " /* unsupported device mapper ABI version */}) = "
 	       "-1 EBADF (%m)\n", 0xbadc0ded, 0xbadc0dee, 0xbadc0def);
 
 	/* Incorrect data_size */
 	init_s(dm_arg, 14, 64);
 	ioctl(-1, DM_VERSION, dm_arg);
-	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14, "
-	       "/* Incorrect data_size */ ...}) = -1 EBADF (%m)\n");
+	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14"
+	       " /* data_size too small */}) = -1 EBADF (%m)\n");
 
 	/* Unterminated name/uuid */
 	init_s(dm_arg, min_sizeof_dm_ioctl, 0);
@@ -395,8 +396,8 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
 	       "target_count=1234, flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_spec */ ..."
-# else /* !VERBOSE */
+	       "??? /* misplaced struct dm_target_spec */"
+# else
 	       "..."
 # endif /* VERBOSE */
 	       "}) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
@@ -491,7 +492,7 @@
 	print_dm_target_spec(&dm_arg_open3->target1, 15);
 	printf("\"\\377\"}, ");
 	print_dm_target_spec(&dm_arg_open3->target1, 42);
-	printf("\"\\1\\2\"}, /* misplaced struct dm_target_spec */ ...");
+	printf("\"\\1\\2\"}, ??? /* misplaced struct dm_target_spec */");
 # else /* !VERBOSE */
 	printf("...");
 # endif /* VERBOSE */
@@ -575,7 +576,7 @@
 	       "{version=4.1.2, data_size=%zu, data_start=%zu, "
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_msg */"
+	       "??? /* misplaced struct dm_target_msg */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -590,7 +591,7 @@
 	       "{version=4.1.2, data_size=%zu, data_start=%u, "
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_msg */"
+	       "??? /* misplaced struct dm_target_msg */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -706,7 +707,7 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
 	       "flags=0, "
 # if VERBOSE
-	       "/* misplaced string */"
+	       "??? /* misplaced string */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -757,10 +758,12 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
 	       "target_count=4294967295, flags=0, "
 # if VERBOSE
-	       "{sector_start=0, length=0, target_type=\"\", string=\"\"}, "
-	       "/* misplaced struct dm_target_spec */ "
+	       "{sector_start=0, length=0, target_type=\"\", string=\"\"}"
+	       ", ??? /* misplaced struct dm_target_spec */"
+# else
+	       "..."
 # endif /* VERBOSE */
-	       "...}) = -1 EBADF (%m)\n",
+	       "}) = -1 EBADF (%m)\n",
 	       s.ioc.data_size, s.ioc.data_start);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-mx32/ioctl_dm.test b/tests-mx32/ioctl_dm.test
index 6485205..e9cca03 100755
--- a/tests-mx32/ioctl_dm.test
+++ b/tests-mx32/ioctl_dm.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -s9 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_evdev-v.gen.test b/tests-mx32/ioctl_evdev-v.gen.test
new file mode 100755
index 0000000..fc7e2f0
--- /dev/null
+++ b/tests-mx32/ioctl_evdev-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests-mx32/ioctl_evdev-v.test b/tests-mx32/ioctl_evdev-v.test
deleted file mode 100755
index 8794101..0000000
--- a/tests-mx32/ioctl_evdev-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding EVIOC* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_evdev.c b/tests-mx32/ioctl_evdev.c
index d12323e..6cbc09f 100644
--- a/tests-mx32/ioctl_evdev.c
+++ b/tests-mx32/ioctl_evdev.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_evdev strace test.
  *
  * 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
@@ -148,7 +149,7 @@
 	void *const page = tail_alloc(size);
 	fill_memory(page, size);
 
-	int *const val_int = tail_alloc(sizeof(*val_int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
 	*val_int = magic;
 
 # ifdef EVIOCSCLOCKID
@@ -172,7 +173,7 @@
 	       pair_int[0], "KEY_ESC");
 
 # ifdef EVIOCSKEYCODE_V2
-	struct input_keymap_entry *const ike = tail_alloc(sizeof(*ike));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_keymap_entry, ike);
 	fill_memory(ike, sizeof(*ike));
 	ike->keycode = 2;
 
@@ -196,7 +197,7 @@
 	printf("}) = -1 EBADF (%m)\n");
 # endif
 
-	struct ff_effect *const ffe = tail_alloc(sizeof(*ffe));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ff_effect, ffe);
 	fill_memory(ffe, sizeof(*ffe));
 
 	ffe->type = FF_CONSTANT;
diff --git a/tests-mx32/ioctl_evdev.gen.test b/tests-mx32/ioctl_evdev.gen.test
new file mode 100755
index 0000000..26f0a28
--- /dev/null
+++ b/tests-mx32/ioctl_evdev.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_evdev.test b/tests-mx32/ioctl_evdev.test
deleted file mode 100755
index 7ed2e98..0000000
--- a/tests-mx32/ioctl_evdev.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of EVIOC* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_loop-nv.test b/tests-mx32/ioctl_loop-nv.test
index dcc27e1..7d59cc2 100755
--- a/tests-mx32/ioctl_loop-nv.test
+++ b/tests-mx32/ioctl_loop-nv.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_loop-v.gen.test b/tests-mx32/ioctl_loop-v.gen.test
new file mode 100755
index 0000000..7fd9f66
--- /dev/null
+++ b/tests-mx32/ioctl_loop-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests-mx32/ioctl_loop-v.test b/tests-mx32/ioctl_loop-v.test
deleted file mode 100755
index ff3995d..0000000
--- a/tests-mx32/ioctl_loop-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a22 -v -eioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_loop.c b/tests-mx32/ioctl_loop.c
index a95e775..4dcbf9a 100644
--- a/tests-mx32/ioctl_loop.c
+++ b/tests-mx32/ioctl_loop.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@gmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -175,8 +176,8 @@
 	static const kernel_ulong_t kernel_mask =
 		((kernel_ulong_t) -1) - ((unsigned long) -1L);
 
-	struct loop_info * const info = tail_alloc(sizeof(*info));
-	struct loop_info64 * const info64 = tail_alloc(sizeof(*info64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info, info);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info64, info64);
 
 	/* Unknown loop commands */
 	ioctl(-1, unknown_loop_cmd, magic);
diff --git a/tests-mx32/ioctl_loop.gen.test b/tests-mx32/ioctl_loop.gen.test
new file mode 100755
index 0000000..f7aee8e
--- /dev/null
+++ b/tests-mx32/ioctl_loop.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_loop.test b/tests-mx32/ioctl_loop.test
deleted file mode 100755
index 112cd63..0000000
--- a/tests-mx32/ioctl_loop.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a22 -eioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_mtd.c b/tests-mx32/ioctl_mtd.c
index a37d5d0..71d0c0d 100644
--- a/tests-mx32/ioctl_mtd.c
+++ b/tests-mx32/ioctl_mtd.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_mtd strace test.
  *
  * 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
@@ -95,13 +96,13 @@
 	ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL);
 	printf("ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL) = -1 EBADF (%m)\n");
 
-	int *const opt = tail_alloc(sizeof(*opt));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, opt);
 	*opt = MTD_OTP_OFF;
 	ioctl(-1, OTPSELECT, opt);
 	printf("ioctl(-1, MIXER_READ(%u) or OTPSELECT, [MTD_OTP_OFF])"
 	       " = -1 EBADF (%m)\n", (unsigned int) _IOC_NR(OTPSELECT));
 
-	uint64_t *const v64 = tail_alloc(sizeof(*v64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, v64);
 	fill_memory(v64, sizeof(*v64));
 
 	ioctl(-1, MEMGETBADBLOCK, v64);
@@ -114,7 +115,7 @@
 	       " = -1 EBADF (%m)\n",
 	       (unsigned int) _IOC_NR(MEMSETBADBLOCK), *v64);
 
-	struct region_info_user *const riu = tail_alloc(sizeof(*riu));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct region_info_user, riu);
 	fill_memory(riu, sizeof(*riu));
 	ioctl(-1, MEMGETREGIONINFO, riu);
 	printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
@@ -124,7 +125,7 @@
 #endif
 	       , riu->regionindex);
 
-	struct erase_info_user *const eiu = tail_alloc(sizeof(*eiu));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user, eiu);
 	fill_memory(eiu, sizeof(*eiu));
 
 	TEST_erase_info_user(MEMERASE, eiu);
@@ -132,7 +133,7 @@
 	TEST_erase_info_user(MEMUNLOCK, eiu);
 	TEST_erase_info_user(MEMISLOCKED, eiu);
 
-	struct erase_info_user64 *const eiu64 = tail_alloc(sizeof(*eiu64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user64, eiu64);
 	fill_memory(eiu64, sizeof(*eiu64));
 	ioctl(-1, MEMERASE64, eiu64);
 	printf("ioctl(-1, MIXER_WRITE(%u) or %s, {start=%#llx, length=%#llx})"
@@ -141,7 +142,7 @@
 	       (unsigned long long) eiu64->start,
 	       (unsigned long long) eiu64->length);
 
-	struct mtd_oob_buf *const oob = tail_alloc(sizeof(*oob));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf, oob);
 	fill_memory(oob, sizeof(*oob));
 
 	ioctl(-1, MEMWRITEOOB, oob);
@@ -152,7 +153,7 @@
 	printf("ioctl(-1, MEMREADOOB, {start=%#x, length=%#x, ptr=%p})"
 	       " = -1 EBADF (%m)\n", oob->start, oob->length, oob->ptr);
 
-	struct mtd_oob_buf64 *const oob64 = tail_alloc(sizeof(*oob64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf64, oob64);
 	fill_memory(oob64, sizeof(*oob64));
 
 	ioctl(-1, MEMWRITEOOB64, oob64);
@@ -168,14 +169,14 @@
 	       (unsigned long long) oob64->usr_ptr);
 
 
-	struct otp_info *const oi = tail_alloc(sizeof(*oi));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct otp_info, oi);
 	fill_memory(oi, sizeof(*oi));
 	ioctl(-1, OTPLOCK, oi);
 	printf("ioctl(-1, MIXER_READ(%u) or OTPLOCK"
 	       ", {start=%#x, length=%#x, locked=%u}) = -1 EBADF (%m)\n",
 	       (unsigned int) _IOC_NR(OTPLOCK),  oi->start, oi->length, oi->locked);
 
-	struct mtd_write_req *const wr = tail_alloc(sizeof(*wr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_write_req, wr);
 	fill_memory(wr, sizeof(*wr));
 	wr->mode = MTD_OPS_PLACE_OOB;
 	ioctl(-1, MEMWRITE, wr);
diff --git a/tests-mx32/ioctl_mtd.gen.test b/tests-mx32/ioctl_mtd.gen.test
new file mode 100755
index 0000000..cbc3104
--- /dev/null
+++ b/tests-mx32/ioctl_mtd.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_mtd.test b/tests-mx32/ioctl_mtd.test
deleted file mode 100755
index 0842807..0000000
--- a/tests-mx32/ioctl_mtd.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of 'M' type ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_nsfs.c b/tests-mx32/ioctl_nsfs.c
new file mode 100644
index 0000000..b2dbd1b
--- /dev/null
+++ b/tests-mx32/ioctl_nsfs.c
@@ -0,0 +1,145 @@
+/*
+ * Check decoding of NS_* commands of ioctl syscall.
+ *
+ * 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.
+ */
+
+#include "tests.h"
+
+#include <fcntl.h>
+#include <sched.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include "nsfs.h"
+
+#ifndef CLONE_NEWUSER
+# define CLONE_NEWUSER 0x10000000
+#endif
+
+static void
+test_no_namespace(void)
+{
+	ioctl(-1, NS_GET_USERNS);
+	printf("ioctl(-1, NS_GET_USERNS) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_PARENT);
+	printf("ioctl(-1, NS_GET_PARENT) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_NSTYPE);
+	printf("ioctl(-1, NS_GET_NSTYPE) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_OWNER_UID, NULL);
+	printf("ioctl(-1, NS_GET_OWNER_UID, NULL) = -1 EBADF (%m)\n");
+}
+
+static void
+test_clone(pid_t pid)
+{
+	char path[sizeof("/proc/%d/ns/user") + sizeof(int)*3];
+	snprintf(path, sizeof(path), "/proc/%d/ns/user", pid);
+
+	int ns_fd = open(path, O_RDONLY);
+	if (ns_fd == -1)
+		perror_msg_and_skip("open: %s", path);
+
+	int userns_fd = ioctl(ns_fd, NS_GET_USERNS);
+	printf("ioctl(%d, NS_GET_USERNS) = %s\n", ns_fd, sprintrc(userns_fd));
+
+	int parent_ns_fd = ioctl(userns_fd, NS_GET_PARENT);
+	printf("ioctl(%d, NS_GET_PARENT) = %s\n",
+	       userns_fd, sprintrc(parent_ns_fd));
+
+	int nstype = ioctl(userns_fd, NS_GET_NSTYPE);
+	if (nstype == -1) {
+		printf("ioctl(%d, NS_GET_NSTYPE) = %s\n",
+		       userns_fd, sprintrc(nstype));
+	} else {
+		printf("ioctl(%d, NS_GET_NSTYPE) = %d (CLONE_NEWUSER)\n",
+		       userns_fd, nstype);
+	}
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, uid);
+	int rc = ioctl(userns_fd, NS_GET_OWNER_UID, uid);
+	if (rc == -1) {
+		printf("ioctl(%d, NS_GET_OWNER_UID, %p) = %s\n",
+		       userns_fd, uid, sprintrc(rc));
+	} else {
+		printf("ioctl(%d, NS_GET_OWNER_UID, [%u]) = %d\n",
+		       userns_fd, *uid, rc);
+	}
+}
+
+static int
+child(void *arg)
+{
+	int *pipefd = (int *) arg;
+	close(pipefd[1]);
+	/* Wait for EOF from pipe. */
+	if (read(pipefd[0], &pipefd[1], 1))
+		perror_msg_and_fail("read");
+	return 0;
+}
+
+#ifdef IA64
+extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
+# define clone(fn, child_stack, flags, arg)	\
+		__clone2(fn, child_stack, get_page_size() / 2, flags, arg)
+#endif
+
+static void
+test_user_namespace(void)
+{
+	pid_t pid;
+	int pipefd[2];
+	int status;
+
+	if (pipe(pipefd))
+		perror_msg_and_fail("pipe");
+
+	pid = clone(child, tail_alloc(get_page_size() / 2),
+		    CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD, pipefd);
+	if (pid == -1) {
+		perror("clone");
+		return;
+	}
+	close(pipefd[0]);
+	test_clone(pid);
+	close(pipefd[1]);
+	if (wait(&status) != pid) {
+		perror_msg_and_fail("wait");
+	} else if (status != 0) {
+		error_msg_and_fail("unexpected child exit status %d", status);
+	}
+}
+
+int
+main(void)
+{
+	test_no_namespace();
+	test_user_namespace();
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-mx32/ioctl_nsfs.test b/tests-mx32/ioctl_nsfs.test
new file mode 100755
index 0000000..acdfb61
--- /dev/null
+++ b/tests-mx32/ioctl_nsfs.test
@@ -0,0 +1,11 @@
+#!/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
new file mode 100755
index 0000000..b534a02
--- /dev/null
+++ b/tests-mx32/ioctl_rtc-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests-mx32/ioctl_rtc-v.test b/tests-mx32/ioctl_rtc-v.test
deleted file mode 100755
index a255322..0000000
--- a/tests-mx32/ioctl_rtc-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of RTC_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_rtc.c b/tests-mx32/ioctl_rtc.c
index 49d7ec7..466a1d3 100644
--- a/tests-mx32/ioctl_rtc.c
+++ b/tests-mx32/ioctl_rtc.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_rtc strace test.
  *
  * 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
@@ -73,13 +74,13 @@
 	void *const page = tail_alloc(size);
 	fill_memory(page, size);
 
-	struct rtc_time *rt = tail_alloc(sizeof(*rt));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_time, rt);
 	fill_memory(rt, sizeof(*rt));
 
-	struct rtc_wkalrm *wk = tail_alloc(sizeof(*wk));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_wkalrm, wk);
 	fill_memory(wk, sizeof(*wk));
 
-	struct rtc_pll_info *pll = tail_alloc(sizeof(*pll));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_pll_info, pll);
 	fill_memory(pll, sizeof(*pll));
 
 	/* RTC_ALM_READ */
diff --git a/tests-mx32/ioctl_rtc.gen.test b/tests-mx32/ioctl_rtc.gen.test
new file mode 100755
index 0000000..e430a82
--- /dev/null
+++ b/tests-mx32/ioctl_rtc.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_rtc.test b/tests-mx32/ioctl_rtc.test
deleted file mode 100755
index 4545f2a..0000000
--- a/tests-mx32/ioctl_rtc.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic decoding of RTC_* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_scsi.c b/tests-mx32/ioctl_scsi.c
index 0db94d8..a9ecf28 100644
--- a/tests-mx32/ioctl_scsi.c
+++ b/tests-mx32/ioctl_scsi.c
@@ -69,7 +69,7 @@
 int
 main(void)
 {
-	int *const pint = tail_alloc(sizeof(*pint));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, pint);
 	*pint = (int) 0xfacefeed;
 
 	TEST_NO_ARG(SG_GET_TIMEOUT);
diff --git a/tests-mx32/ioctl_scsi.gen.test b/tests-mx32/ioctl_scsi.gen.test
new file mode 100755
index 0000000..23ac307
--- /dev/null
+++ b/tests-mx32/ioctl_scsi.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_scsi.test b/tests-mx32/ioctl_scsi.test
deleted file mode 100755
index 2710f12..0000000
--- a/tests-mx32/ioctl_scsi.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of SCSI ioctl commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sg_io_v3.c b/tests-mx32/ioctl_sg_io_v3.c
index ef25795..3808b20 100644
--- a/tests-mx32/ioctl_sg_io_v3.c
+++ b/tests-mx32/ioctl_sg_io_v3.c
@@ -43,7 +43,7 @@
 	ioctl(-1, SG_IO, 0);
 	printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
 
-	struct sg_io_hdr *const sg_io = tail_alloc(sizeof(*sg_io));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_hdr, sg_io);
 	fill_memory(sg_io, sizeof(*sg_io));
 
 	const void *const efault = sg_io + 1;
@@ -53,7 +53,7 @@
 	ioctl(-1, SG_IO, sg_io);
 	printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->interface_id);
 
-	unsigned int *const piid = tail_alloc(sizeof(*piid));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, piid);
 	*piid = (unsigned char) 'S';
 	ioctl(-1, SG_IO, piid);
 	printf("ioctl(-1, SG_IO, {interface_id='S', %p}) = -1 EBADF (%m)\n", piid + 1);
diff --git a/tests-mx32/ioctl_sg_io_v3.gen.test b/tests-mx32/ioctl_sg_io_v3.gen.test
new file mode 100755
index 0000000..e7e5ea5
--- /dev/null
+++ b/tests-mx32/ioctl_sg_io_v3.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sg_io_v3.test b/tests-mx32/ioctl_sg_io_v3.test
deleted file mode 100755
index dacacdf..0000000
--- a/tests-mx32/ioctl_sg_io_v3.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ioctl SG_IO v3 commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sg_io_v4.c b/tests-mx32/ioctl_sg_io_v4.c
index 5f899ee..9c1e9fa 100644
--- a/tests-mx32/ioctl_sg_io_v4.c
+++ b/tests-mx32/ioctl_sg_io_v4.c
@@ -45,7 +45,7 @@
 	ioctl(-1, SG_IO, 0);
 	printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
 
-	struct sg_io_v4 *const sg_io = tail_alloc(sizeof(*sg_io));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_v4, sg_io);
 	fill_memory(sg_io, sizeof(*sg_io));
 
 	const void *const efault = sg_io + 1;
@@ -55,7 +55,7 @@
 	ioctl(-1, SG_IO, sg_io);
 	printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->guard);
 
-	unsigned int *const pguard = tail_alloc(sizeof(*pguard));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, pguard);
 	*pguard = (unsigned char) 'Q';
 	ioctl(-1, SG_IO, pguard);
 	printf("ioctl(-1, SG_IO, {guard='Q', %p}) = -1 EBADF (%m)\n", pguard + 1);
diff --git a/tests-mx32/ioctl_sg_io_v4.gen.test b/tests-mx32/ioctl_sg_io_v4.gen.test
new file mode 100755
index 0000000..575ad96
--- /dev/null
+++ b/tests-mx32/ioctl_sg_io_v4.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sg_io_v4.test b/tests-mx32/ioctl_sg_io_v4.test
deleted file mode 100755
index 2556722..0000000
--- a/tests-mx32/ioctl_sg_io_v4.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ioctl SG_IO v4 commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_sock_gifconf.c b/tests-mx32/ioctl_sock_gifconf.c
index ae0bea4..f81faef 100644
--- a/tests-mx32/ioctl_sock_gifconf.c
+++ b/tests-mx32/ioctl_sock_gifconf.c
@@ -2,6 +2,7 @@
  * Check decoding of SIOCGIFCONF command of ioctl syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -134,7 +135,7 @@
 main(int argc, char *argv[])
 {
 	struct ifreq *ifr = tail_alloc(2 * sizeof(*ifr));
-	struct ifconf *ifc = tail_alloc(sizeof(*ifc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ifconf, ifc);
 
 	struct sockaddr_in addr;
 	int fd;
diff --git a/tests-mx32/ioctl_sock_gifconf.test b/tests-mx32/ioctl_sock_gifconf.test
index 2e2fc01..22d7ea4 100755
--- a/tests-mx32/ioctl_sock_gifconf.test
+++ b/tests-mx32/ioctl_sock_gifconf.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a28 -s1 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/ioctl_uffdio.c b/tests-mx32/ioctl_uffdio.c
index 10b8b84..c98e4a0 100644
--- a/tests-mx32/ioctl_uffdio.c
+++ b/tests-mx32/ioctl_uffdio.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c)      2016 Red Hat, Inc.
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
 		perror_msg_and_skip("userfaultfd");
 
 	/* ---- API ---- */
-	struct uffdio_api *api_struct = tail_alloc(sizeof(*api_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_api, api_struct);
 
 	/* With a bad fd */
 	memset(api_struct, 0, sizeof(*api_struct));
@@ -127,7 +128,7 @@
 	 * userfaultfd will cause us to stall.
 	 */
 	/* ---- COPY ---- */
-	struct uffdio_copy *copy_struct = tail_alloc(sizeof(*copy_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_copy, copy_struct);
 
 	memset(copy_struct, 0, sizeof(*copy_struct));
 	rc = ioctl(-1, UFFDIO_COPY, copy_struct);
@@ -148,7 +149,7 @@
 	       fd, area2, area1, pagesize, pagesize, rc);
 
 	/* ---- ZEROPAGE ---- */
-	struct uffdio_zeropage *zero_struct = tail_alloc(sizeof(*zero_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_zeropage, zero_struct);
 	madvise(area2, pagesize, MADV_DONTNEED);
 
 	memset(zero_struct, 0, sizeof(*zero_struct));
@@ -169,7 +170,7 @@
 	       fd, area2, pagesize, pagesize, rc);
 
 	/* ---- WAKE ---- */
-	struct uffdio_range *range_struct = tail_alloc(sizeof(*range_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_range, range_struct);
 	memset(range_struct, 0, sizeof(*range_struct));
 
 	rc = ioctl(-1, UFFDIO_WAKE, range_struct);
diff --git a/tests-mx32/ioctl_uffdio.gen.test b/tests-mx32/ioctl_uffdio.gen.test
new file mode 100755
index 0000000..80fd2a6
--- /dev/null
+++ b/tests-mx32/ioctl_uffdio.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_uffdio.test b/tests-mx32/ioctl_uffdio.test
deleted file mode 100755
index fae9b55..0000000
--- a/tests-mx32/ioctl_uffdio.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2.c b/tests-mx32/ioctl_v4l2.c
index af8c341..921e7a8 100644
--- a/tests-mx32/ioctl_v4l2.c
+++ b/tests-mx32/ioctl_v4l2.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
@@ -56,6 +57,272 @@
 
 static const unsigned int magic = 0xdeadbeef;
 
+static void
+init_v4l2_format(struct v4l2_format *const f,
+		 const unsigned int buf_type)
+{
+	memset(f, -1, sizeof(*f));
+	f->type = buf_type;
+	switch (buf_type) {
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+		f->fmt.pix.width = 0x657b8160;
+		f->fmt.pix.height = 0x951c0047;
+		f->fmt.pix.pixelformat = magic;
+		f->fmt.pix.field = V4L2_FIELD_NONE;
+		f->fmt.pix.bytesperline = 0xdf20d185;
+		f->fmt.pix.sizeimage = 0x0cf7be41;
+		f->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+		unsigned int i;
+
+		f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+		f->fmt.pix_mp.width = 0x1f3b774b;
+		f->fmt.pix_mp.height = 0xab96a8d6;
+		f->fmt.pix_mp.pixelformat = magic;
+		f->fmt.pix_mp.field = V4L2_FIELD_NONE;
+		f->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
+		struct v4l2_plane_pix_format* cur_pix =
+		       f->fmt.pix_mp.plane_fmt;
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+		     i++) {
+			cur_pix[i].sizeimage = 0x1e3c531c | i;
+			cur_pix[i].bytesperline = 0xa983d721 | i;
+		}
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+		f->fmt.win.w.left = 0xe8373662;
+		f->fmt.win.w.top = 0x0336d283;
+		f->fmt.win.w.width = 0x9235fe72;
+		f->fmt.win.w.height = 0xbbd886c8;
+		f->fmt.win.field = V4L2_FIELD_ANY;
+		f->fmt.win.chromakey = 0xdb1f991f;
+		f->fmt.win.clipcount = 2;
+		f->fmt.win.clips =
+			tail_alloc(sizeof(*f->fmt.win.clips) *
+			f->fmt.win.clipcount);
+		f->fmt.win.clips[0].c.left = 0x3313d36e;
+		f->fmt.win.clips[0].c.top = 0xcdffe510;
+		f->fmt.win.clips[0].c.width = 0x2064f3a8;
+		f->fmt.win.clips[0].c.height = 0xd06d314a;
+		f->fmt.win.clips[1].c.left = 0xd8c8a83f;
+		f->fmt.win.clips[1].c.top = 0x336e87ba;
+		f->fmt.win.clips[1].c.width = 0x9e3a6fb3;
+		f->fmt.win.clips[1].c.height = 0x05617b76;
+
+		f->fmt.win.bitmap = (void*) -2UL;
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		f->fmt.win.global_alpha = 0xce;
+#endif
+		break;
+	case V4L2_BUF_TYPE_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_VBI_OUTPUT:
+		f->fmt.vbi.sampling_rate = 0x3d9b5b79;
+		f->fmt.vbi.offset = 0x055b3a09;
+		f->fmt.vbi.samples_per_line = 0xf176d436;
+		f->fmt.vbi.sample_format = magic;
+		f->fmt.vbi.start[0] = 0x9858e2eb;
+		f->fmt.vbi.start[1] = 0x8a4dc8c1;
+		f->fmt.vbi.count[0] = 0x4bcf36a3;
+		f->fmt.vbi.count[1] = 0x97dff65f;
+		f->fmt.vbi.flags = V4L2_VBI_INTERLACED;
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+		unsigned int i;
+
+		f->fmt.sliced.service_set = V4L2_SLICED_VPS;
+		f->fmt.sliced.io_size = 0xd897925a;
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+		     i++) {
+			f->fmt.sliced.service_lines[0][i] = 0xc38e | i;
+			f->fmt.sliced.service_lines[1][i] = 0x3abb | i;
+		}
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	case V4L2_BUF_TYPE_SDR_CAPTURE:
+		f->fmt.sdr.pixelformat = magic;
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		f->fmt.sdr.buffersize = 0x25afabfb;
+#endif
+		break;
+#endif
+	}
+}
+
+static void
+dprint_ioctl_v4l2(struct v4l2_format *const f,
+		  const char* request, const unsigned int buf_type,
+		  const char* buf_type_string)
+{
+	switch (buf_type) {
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.pix={width=%u, height=%u, pixelformat="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
+		       ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.pix.width, f->fmt.pix.height,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+		       f->fmt.pix.bytesperline,
+		       f->fmt.pix.sizeimage);
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+		unsigned int i;
+
+		printf("ioctl(-1, %s"
+		       ", {type=%s"
+		       ", fmt.pix_mp={width=%u, height=%u, pixelformat="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", field=V4L2_FIELD_NONE, colorspace="
+		       "V4L2_COLORSPACE_JPEG, plane_fmt=[",
+		       request,
+		       buf_type_string,
+		       f->fmt.pix_mp.width, f->fmt.pix_mp.height,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic));
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+		     ++i) {
+			if (i)
+				printf(", ");
+			printf("{sizeimage=%u, bytesperline=%u}",
+			f->fmt.pix_mp.plane_fmt[i].sizeimage,
+			f->fmt.pix_mp.plane_fmt[i].bytesperline);
+		}
+		printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
+		f->fmt.pix_mp.num_planes);
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.win={left=%d, top=%d, width=%u, height=%u"
+		       ", field=V4L2_FIELD_ANY, chromakey=%#x, clips="
+		       "[{left=%d, top=%d, width=%u, height=%u}, "
+		       "{left=%d, top=%d, width=%u, height=%u}]"
+		       ", clipcount=%u, bitmap=%p"
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		       ", global_alpha=%#x"
+#endif
+		       "}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.win.w.left, f->fmt.win.w.top,
+		       f->fmt.win.w.width, f->fmt.win.w.height,
+		       f->fmt.win.chromakey,
+		       f->fmt.win.clips[0].c.left,
+		       f->fmt.win.clips[0].c.top,
+		       f->fmt.win.clips[0].c.width,
+		       f->fmt.win.clips[0].c.height,
+		       f->fmt.win.clips[1].c.left,
+		       f->fmt.win.clips[1].c.top,
+		       f->fmt.win.clips[1].c.width,
+		       f->fmt.win.clips[1].c.height,
+		       f->fmt.win.clipcount, f->fmt.win.bitmap
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		       , f->fmt.win.global_alpha
+#endif
+		       );
+		break;
+	case V4L2_BUF_TYPE_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_VBI_OUTPUT:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.vbi={sampling_rate=%u, offset=%u"
+		       ", samples_per_line=%u, sample_format="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", start=[%u, %u], count=[%u, %u]"
+		       ", flags=V4L2_VBI_INTERLACED}})"
+		       " = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
+		       f->fmt.vbi.samples_per_line,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+		       f->fmt.vbi.start[0], f->fmt.vbi.start[1],
+		       f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+		unsigned int i, j;
+
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.sliced={service_set=V4L2_SLICED_VPS"
+		       ", io_size=%u, service_lines=[",
+		       request,
+		       buf_type_string,
+		       f->fmt.sliced.io_size);
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.sliced.service_lines);
+		     i++) {
+			if (i > 0)
+				printf(", ");
+			printf("[");
+			for (j = 0;
+			     j < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+			     j++) {
+				if (j > 0)
+					printf(", ");
+				printf("%#x",
+				       f->fmt.sliced.service_lines[i][j]);
+			}
+			printf("]");
+		}
+		printf("]}}) = -1 EBADF (%m)\n");
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	case V4L2_BUF_TYPE_SDR_CAPTURE:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.sdr={pixelformat=v4l2_fourcc('\\x%x', '\\x%x',"
+		       " '\\x%x', '\\x%x')"
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		       ", buffersize=%u"
+#endif
+		       "}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic)
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		       , f->fmt.sdr.buffersize
+#endif
+		       );
+		break;
+#endif
+	}
+}
+#define print_ioctl_v4l2(v4l2_format, request, buf_type) do { \
+	dprint_ioctl_v4l2((v4l2_format), (request), (buf_type), #buf_type); \
+} while (0)
+
 int
 main(void )
 {
@@ -76,7 +343,7 @@
 	ioctl(-1, VIDIOC_ENUM_FMT, 0);
 	printf("ioctl(-1, VIDIOC_ENUM_FMT, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_fmtdesc *const p_fmtdesc = tail_alloc(sizeof(*p_fmtdesc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_fmtdesc, p_fmtdesc);
 	p_fmtdesc->index = magic;
 	p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
@@ -88,78 +355,146 @@
 	ioctl(-1, VIDIOC_G_FMT, 0);
 	printf("ioctl(-1, VIDIOC_G_FMT, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_format *const p_format = tail_alloc(sizeof(*p_format));
-	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_format, p_format);
 
+	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	ioctl(-1, VIDIOC_G_FMT, p_format);
 	printf("ioctl(-1, VIDIOC_G_FMT"
 	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE}) ="
+	       " -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY}) ="
+	       " -1 EBADF (%m)\n");
+#endif
+	p_format->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_OVERLAY}) ="
+	       " -1 EBADF (%m)\n");
 
+	p_format->type = V4L2_BUF_TYPE_VBI_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	p_format->type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SLICED_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	p_format->type = V4L2_BUF_TYPE_SDR_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SDR_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	p_format->type = V4L2_BUF_TYPE_SDR_OUTPUT;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SDR_OUTPUT}) = -1 EBADF (%m)\n");
+#endif
 	/* VIDIOC_S_FMT */
 	ioctl(-1, VIDIOC_S_FMT, 0);
 	printf("ioctl(-1, VIDIOC_S_FMT, NULL) = -1 EBADF (%m)\n");
 
-	p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-	p_format->fmt.pix.width = 0xdad1beaf;
-	p_format->fmt.pix.height = 0xdad2beaf;
-	p_format->fmt.pix.pixelformat = magic;
-	p_format->fmt.pix.field = V4L2_FIELD_NONE;
-	p_format->fmt.pix.bytesperline = 0xdad3beaf;
-	p_format->fmt.pix.sizeimage = 0xdad4beaf;
-	p_format->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
-
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
 	ioctl(-1, VIDIOC_S_FMT, p_format);
-	printf("ioctl(-1, VIDIOC_S_FMT, {type=V4L2_BUF_TYPE_VIDEO_OUTPUT"
-	       ", fmt.pix={width=%u, height=%u, pixelformat="
-	       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
-	       ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
-	       ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
-	       p_format->fmt.pix.width, p_format->fmt.pix.height,
-	       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
-	       p_format->fmt.pix.bytesperline, p_format->fmt.pix.sizeimage);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
 	/* VIDIOC_TRY_FMT */
 	ioctl(-1, VIDIOC_TRY_FMT, 0);
 	printf("ioctl(-1, VIDIOC_TRY_FMT, NULL) = -1 EBADF (%m)\n");
 
-#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
-	memset(p_format, -1, sizeof(*p_format));
-	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
-	p_format->fmt.pix_mp.width = 0xdad1beaf;
-	p_format->fmt.pix_mp.height = 0xdad2beaf;
-	p_format->fmt.pix_mp.pixelformat = magic;
-	p_format->fmt.pix_mp.field = V4L2_FIELD_NONE;
-	p_format->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
-	unsigned int i;
-	for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
-		p_format->fmt.pix_mp.plane_fmt[i].sizeimage = 0xbadc0de0 | i;
-		p_format->fmt.pix_mp.plane_fmt[i].bytesperline = 0xdadbeaf0 | i;
-	}
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
 	ioctl(-1, VIDIOC_TRY_FMT, p_format);
-	printf("ioctl(-1, VIDIOC_TRY_FMT"
-	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE"
-	       ", fmt.pix_mp={width=%u, height=%u, pixelformat="
-	       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
-	       ", field=V4L2_FIELD_NONE, colorspace=V4L2_COLORSPACE_JPEG"
-	       ", plane_fmt=[",
-	       p_format->fmt.pix_mp.width, p_format->fmt.pix_mp.height,
-	       cc0(magic), cc1(magic), cc2(magic), cc3(magic));
-	for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
-		if (i)
-			printf(", ");
-		printf("{sizeimage=%u, bytesperline=%u}",
-		       p_format->fmt.pix_mp.plane_fmt[i].sizeimage,
-		       p_format->fmt.pix_mp.plane_fmt[i].bytesperline);
-	}
-	printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
-	       p_format->fmt.pix_mp.num_planes);
-#else
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OVERLAY);
+
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
 	struct v4l2_format *const p_v4l2_format =
 		page + size - sizeof(*p_v4l2_format);
 	ioctl(-1, VIDIOC_TRY_FMT, p_v4l2_format);
 	printf("ioctl(-1, VIDIOC_TRY_FMT, {type=%#x /* V4L2_BUF_TYPE_??? */})"
 	       " = -1 EBADF (%m)\n", p_v4l2_format->type);
-#endif
 
 	/* VIDIOC_REQBUFS */
 	ioctl(-1, VIDIOC_REQBUFS, 0);
@@ -259,8 +594,7 @@
 	printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
 	       " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
 
-	struct v4l2_streamparm *const p_streamparm =
-		tail_alloc(sizeof(*p_streamparm));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_streamparm, p_streamparm);
 	p_streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	p_streamparm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
 	p_streamparm->parm.capture.capturemode = V4L2_MODE_HIGHQUALITY;
@@ -339,6 +673,42 @@
 	       ", value=%d}) = -1 EBADF (%m)\n",
 	       p_v4l2_control->id, p_v4l2_control->value);
 
+	/* VIDIOC_G_TUNER */
+	ioctl(-1, VIDIOC_G_TUNER, 0);
+	printf("ioctl(-1, VIDIOC_G_TUNER, NULL) = -1 EBADF (%m)\n");
+
+	struct v4l2_tuner *const p_v4l2_tuner =
+		page + size - sizeof(*p_v4l2_tuner);
+	ioctl(-1, VIDIOC_G_TUNER, p_v4l2_tuner);
+	printf("ioctl(-1, VIDIOC_G_TUNER, {index=%u})"
+	       " = -1 EBADF (%m)\n", p_v4l2_tuner->index);
+
+	/* VIDIOC_S_TUNER */
+	ioctl(-1, VIDIOC_S_TUNER, 0);
+	printf("ioctl(-1, VIDIOC_S_TUNER, NULL) = -1 EBADF (%m)\n");
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_tuner, p_tuner);
+	p_tuner->index = 0x4fb6df39;
+	strcpy((char*)p_tuner->name, "cum tacent clamant");
+	p_tuner->type = V4L2_TUNER_RADIO;
+	p_tuner->capability = V4L2_TUNER_CAP_LOW;
+	p_tuner->rangelow = 0xa673bc29;
+	p_tuner->rangehigh = 0xbaf16d12;
+	p_tuner->rxsubchans = V4L2_TUNER_SUB_MONO;
+	p_tuner->audmode = V4L2_TUNER_MODE_MONO;
+	p_tuner->signal = 0x10bf92c8;
+	p_tuner->afc = 0x3bf7e18b;
+	ioctl(-1, VIDIOC_S_TUNER, p_tuner);
+	printf("ioctl(-1, VIDIOC_S_TUNER, {index=%u"
+	       ", name=\"cum tacent clamant\""
+	       ", type=V4L2_TUNER_RADIO, capability=V4L2_TUNER_CAP_LOW"
+	       ", rangelow=%u, rangehigh=%u"
+	       ", rxsubchans=V4L2_TUNER_SUB_MONO"
+	       ", audmode=V4L2_TUNER_MODE_MONO, signal=%d, afc=%d"
+	       "}) = -1 EBADF (%m)\n",
+	       p_tuner->index, p_tuner->rangelow,
+	       p_tuner->rangehigh, p_tuner->signal, p_tuner->afc);
+
 	/* VIDIOC_QUERYCTRL */
 	ioctl(-1, VIDIOC_QUERYCTRL, 0);
 	printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
@@ -355,8 +725,7 @@
 	       " = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
 # endif
 
-	struct v4l2_queryctrl *const p_queryctrl =
-		tail_alloc(sizeof(*p_queryctrl));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
 	p_queryctrl->id = V4L2_CID_SATURATION;
 	ioctl(-1, VIDIOC_QUERYCTRL, p_queryctrl);
 	printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CID_SATURATION})"
@@ -414,8 +783,7 @@
 	ioctl(-1, VIDIOC_S_EXT_CTRLS, 0);
 	printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_ext_controls *const p_ext_controls =
-		tail_alloc(sizeof(*p_ext_controls));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_ext_controls, p_ext_controls);
 	p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
 	p_ext_controls->count = 0;
 	p_ext_controls->controls = (void *) -2UL;
@@ -500,8 +868,7 @@
 	ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
 	printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_frmsizeenum *const p_frmsizeenum =
-		tail_alloc(sizeof(*p_frmsizeenum));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_frmsizeenum, p_frmsizeenum);
 	p_frmsizeenum->index = magic;
 	p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
 
diff --git a/tests-mx32/ioctl_v4l2.gen.test b/tests-mx32/ioctl_v4l2.gen.test
new file mode 100755
index 0000000..cbd36ba
--- /dev/null
+++ b/tests-mx32/ioctl_v4l2.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioctl_v4l2.test b/tests-mx32/ioctl_v4l2.test
deleted file mode 100755
index a092a3c..0000000
--- a/tests-mx32/ioctl_v4l2.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic VIDIOC_* ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests-mx32/ioperm.gen.test b/tests-mx32/ioperm.gen.test
new file mode 100755
index 0000000..154d60a
--- /dev/null
+++ b/tests-mx32/ioperm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/ioperm.test b/tests-mx32/ioperm.test
deleted file mode 100755
index 8c1c1cc..0000000
--- a/tests-mx32/ioperm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ioperm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/iopl.gen.test b/tests-mx32/iopl.gen.test
new file mode 100755
index 0000000..3d9704c
--- /dev/null
+++ b/tests-mx32/iopl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests-mx32/iopl.test b/tests-mx32/iopl.test
deleted file mode 100755
index d0b5b11..0000000
--- a/tests-mx32/iopl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check iopl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests-mx32/ioprio.gen.test b/tests-mx32/ioprio.gen.test
new file mode 100755
index 0000000..f43f78e
--- /dev/null
+++ b/tests-mx32/ioprio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioprio -a18 -e trace=ioprio_get,ioprio_set); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests-mx32/ioprio.test b/tests-mx32/ioprio.test
deleted file mode 100755
index e79310b..0000000
--- a/tests-mx32/ioprio.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check iprio_get and iprio_set syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests-mx32/ip_mreq.c b/tests-mx32/ip_mreq.c
index fa0c504..4bcda09 100644
--- a/tests-mx32/ip_mreq.c
+++ b/tests-mx32/ip_mreq.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,8 +45,8 @@
 	static const char multi6addr[] = "ff01::c";
 	static const char interface[] = "127.0.0.1";
 
-	struct ip_mreq *const m4 = tail_alloc(sizeof(*m4));
-	struct ipv6_mreq *const m6 = tail_alloc(sizeof(*m6));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ip_mreq, m4);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ipv6_mreq, m6);
 	unsigned int i;
 	int rc;
 
diff --git a/tests-mx32/ip_mreq.gen.test b/tests-mx32/ip_mreq.gen.test
new file mode 100755
index 0000000..990387a
--- /dev/null
+++ b/tests-mx32/ip_mreq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ip_mreq -e trace=setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=setsockopt
diff --git a/tests-mx32/ip_mreq.test b/tests-mx32/ip_mreq.test
deleted file mode 100755
index d0a9e0f..0000000
--- a/tests-mx32/ip_mreq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check {IP,IPV6}_{ADD,DROP}_MEMBERSHIP setsockopt decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setsockopt
diff --git a/tests-mx32/ipc.gen.test b/tests-mx32/ipc.gen.test
new file mode 100755
index 0000000..5ed1f0d
--- /dev/null
+++ b/tests-mx32/ipc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-mx32/ipc.sh b/tests-mx32/ipc.sh
index 752d4bb..5943c1a 100644
--- a/tests-mx32/ipc.sh
+++ b/tests-mx32/ipc.sh
@@ -5,9 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -eipc $args > "$OUT"
-match_grep "$LOG" "$OUT"
-
-rm -f "$OUT"
+run_strace -eipc $args > "$EXP"
+match_grep "$LOG" "$EXP"
 
 exit 0
diff --git a/tests-mx32/ipc.test b/tests-mx32/ipc.test
deleted file mode 100755
index aa33fa6..0000000
--- a/tests-mx32/ipc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-mx32/ipc_msg.gen.test b/tests-mx32/ipc_msg.gen.test
new file mode 100755
index 0000000..f4fec80
--- /dev/null
+++ b/tests-mx32/ipc_msg.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/ipc_msg.test b/tests-mx32/ipc_msg.test
deleted file mode 100755
index 177495b..0000000
--- a/tests-mx32/ipc_msg.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc msgget/msgctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/ipc_sem.c b/tests-mx32/ipc_sem.c
index 8f6382c..0b730c1 100644
--- a/tests-mx32/ipc_sem.c
+++ b/tests-mx32/ipc_sem.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Andreas Schwab <schwab@suse.de>
  * 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
diff --git a/tests-mx32/ipc_sem.gen.test b/tests-mx32/ipc_sem.gen.test
new file mode 100755
index 0000000..54159a6
--- /dev/null
+++ b/tests-mx32/ipc_sem.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/ipc_sem.test b/tests-mx32/ipc_sem.test
deleted file mode 100755
index cc93d07..0000000
--- a/tests-mx32/ipc_sem.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc semget/semctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/ipc_shm.gen.test b/tests-mx32/ipc_shm.gen.test
new file mode 100755
index 0000000..505eaba
--- /dev/null
+++ b/tests-mx32/ipc_shm.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/ipc_shm.test b/tests-mx32/ipc_shm.test
deleted file mode 100755
index a67ea29..0000000
--- a/tests-mx32/ipc_shm.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc shmget/shmctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests-mx32/kcmp.gen.test b/tests-mx32/kcmp.gen.test
new file mode 100755
index 0000000..da79d7c
--- /dev/null
+++ b/tests-mx32/kcmp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/kcmp.test b/tests-mx32/kcmp.test
deleted file mode 100755
index d022aeb..0000000
--- a/tests-mx32/kcmp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kcmp syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/kexec_file_load.c b/tests-mx32/kexec_file_load.c
index be90a37..c939e4f 100644
--- a/tests-mx32/kexec_file_load.c
+++ b/tests-mx32/kexec_file_load.c
@@ -2,6 +2,7 @@
  * Check decoding of kexec_file_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/kexec_file_load.gen.test b/tests-mx32/kexec_file_load.gen.test
new file mode 100755
index 0000000..aefaab3
--- /dev/null
+++ b/tests-mx32/kexec_file_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/kexec_file_load.test b/tests-mx32/kexec_file_load.test
deleted file mode 100755
index c95e123..0000000
--- a/tests-mx32/kexec_file_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kexec_file_load syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
diff --git a/tests-mx32/kexec_load.c b/tests-mx32/kexec_load.c
index 330238d..2a6b441 100644
--- a/tests-mx32/kexec_load.c
+++ b/tests-mx32/kexec_load.c
@@ -2,6 +2,7 @@
  * Check decoding of kexec_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,8 +63,7 @@
 	};
 
 	static const kernel_ulong_t bogus_zero =
-		sizeof(long) < sizeof(kernel_long_t) ?
-			(kernel_ulong_t) 0xffffffff00000000ULL : 0;
+		sizeof(long) < sizeof(kernel_long_t) ? F8ILL_KULONG_MASK : 0;
 	static const kernel_ulong_t bogus_entry =
 		(kernel_ulong_t) 0xdeadca57badda7a1ULL;
 	static const kernel_ulong_t bogus_nsegs =
diff --git a/tests-mx32/kexec_load.gen.test b/tests-mx32/kexec_load.gen.test
new file mode 100755
index 0000000..0af9527
--- /dev/null
+++ b/tests-mx32/kexec_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/kexec_load.test b/tests-mx32/kexec_load.test
deleted file mode 100755
index 4b1511e..0000000
--- a/tests-mx32/kexec_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kexec_load syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
diff --git a/tests-mx32/keyctl.gen.test b/tests-mx32/keyctl.gen.test
new file mode 100755
index 0000000..82afad9
--- /dev/null
+++ b/tests-mx32/keyctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (keyctl -a31 -s10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31 -s10
diff --git a/tests-mx32/keyctl.test b/tests-mx32/keyctl.test
deleted file mode 100755
index 875a82d..0000000
--- a/tests-mx32/keyctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of keyctl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31 -s10
diff --git a/tests-mx32/kill.gen.test b/tests-mx32/kill.gen.test
new file mode 100755
index 0000000..08a004e
--- /dev/null
+++ b/tests-mx32/kill.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kill -a12 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -esignal=none
diff --git a/tests-mx32/kill.test b/tests-mx32/kill.test
deleted file mode 100755
index 7a3a51a..0000000
--- a/tests-mx32/kill.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kill syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -esignal=none
diff --git a/tests-mx32/ksysent.c b/tests-mx32/ksysent.c
index 8cac93c..f598664 100644
--- a/tests-mx32/ksysent.c
+++ b/tests-mx32/ksysent.c
@@ -2,6 +2,7 @@
  * Validate syscallent.h file.
  *
  * 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
@@ -40,6 +41,13 @@
 #define TP 0
 #define TS 0
 #define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests-mx32/lchown.gen.test b/tests-mx32/lchown.gen.test
new file mode 100755
index 0000000..b31e29d
--- /dev/null
+++ b/tests-mx32/lchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30
diff --git a/tests-mx32/lchown.test b/tests-mx32/lchown.test
deleted file mode 100755
index ceeaa85..0000000
--- a/tests-mx32/lchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30
diff --git a/tests-mx32/lchown32.gen.test b/tests-mx32/lchown32.gen.test
new file mode 100755
index 0000000..83be4bc
--- /dev/null
+++ b/tests-mx32/lchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32
diff --git a/tests-mx32/lchown32.test b/tests-mx32/lchown32.test
deleted file mode 100755
index 6ee1ac9..0000000
--- a/tests-mx32/lchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests-mx32/link.gen.test b/tests-mx32/link.gen.test
new file mode 100755
index 0000000..b6db34d
--- /dev/null
+++ b/tests-mx32/link.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/link.test b/tests-mx32/link.test
deleted file mode 100755
index cfa2b0c..0000000
--- a/tests-mx32/link.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check link syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/linkat.gen.test b/tests-mx32/linkat.gen.test
new file mode 100755
index 0000000..54b12b9
--- /dev/null
+++ b/tests-mx32/linkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/linkat.test b/tests-mx32/linkat.test
deleted file mode 100755
index 5627de7..0000000
--- a/tests-mx32/linkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check linkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/llseek.test b/tests-mx32/llseek.test
index cf1607e..8dcd65d 100755
--- a/tests-mx32/llseek.test
+++ b/tests-mx32/llseek.test
@@ -9,7 +9,3 @@
 run_strace -e_llseek $args > "$EXP"
 grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-mx32/lookup_dcookie.gen.test b/tests-mx32/lookup_dcookie.gen.test
new file mode 100755
index 0000000..6357e19
--- /dev/null
+++ b/tests-mx32/lookup_dcookie.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/lookup_dcookie.test b/tests-mx32/lookup_dcookie.test
deleted file mode 100755
index 47e1c2d..0000000
--- a/tests-mx32/lookup_dcookie.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of lookup_cookie syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/lseek.test b/tests-mx32/lseek.test
index f96a91d..5b20a7f 100755
--- a/tests-mx32/lseek.test
+++ b/tests-mx32/lseek.test
@@ -9,7 +9,3 @@
 run_strace -a30 -elseek $args > "$EXP"
 grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-mx32/lstat.c b/tests-mx32/lstat.c
index 3754f76..8441bf8 100644
--- a/tests-mx32/lstat.c
+++ b/tests-mx32/lstat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/lstat.gen.test b/tests-mx32/lstat.gen.test
new file mode 100755
index 0000000..7231c49
--- /dev/null
+++ b/tests-mx32/lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/lstat.test b/tests-mx32/lstat.test
deleted file mode 100755
index f513bb4..0000000
--- a/tests-mx32/lstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/lstat64.c b/tests-mx32/lstat64.c
index da06609..500b60f 100644
--- a/tests-mx32/lstat64.c
+++ b/tests-mx32/lstat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/lstat64.gen.test b/tests-mx32/lstat64.gen.test
new file mode 100755
index 0000000..124cce4
--- /dev/null
+++ b/tests-mx32/lstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/lstat64.test b/tests-mx32/lstat64.test
deleted file mode 100755
index fcafe79..0000000
--- a/tests-mx32/lstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/lstatx.c b/tests-mx32/lstatx.c
index cdd1124..8049bea 100644
--- a/tests-mx32/lstatx.c
+++ b/tests-mx32/lstatx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/tests-mx32/madvise.c b/tests-mx32/madvise.c
new file mode 100644
index 0000000..bf9cd78
--- /dev/null
+++ b/tests-mx32/madvise.c
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+
+#include "tests.h"
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+static const char *errstr;
+
+static long
+k_madvise(const kernel_ulong_t addr,
+	  const kernel_ulong_t length,
+	  const kernel_ulong_t advice)
+{
+	long rc = syscall(__NR_madvise, addr, length, advice);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	const unsigned long length = get_page_size();
+	void *const addr = tail_alloc(length);
+	long rc;
+
+	rc = madvise(addr, length, MADV_NORMAL);
+	printf("madvise(%p, %lu, MADV_NORMAL) = %s\n",
+	       addr, length, sprintrc(rc));
+
+	static const kernel_ulong_t advice =
+		(kernel_ulong_t) 0xfacefeed00000000ULL | MADV_RANDOM;
+	rc = k_madvise((uintptr_t) addr, length, advice);
+	printf("madvise(%p, %lu, MADV_RANDOM) = %s\n",
+	       addr, length, sprintrc(rc));
+
+	static const kernel_ulong_t bogus_length =
+		(kernel_ulong_t) 0xfffffffffffffaceULL;
+	rc = k_madvise(0, bogus_length, MADV_SEQUENTIAL);
+	printf("madvise(NULL, %llu, MADV_SEQUENTIAL) = %s\n",
+	       (unsigned long long) bogus_length, sprintrc(rc));
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		rc = k_madvise(f8ill_ptr_to_kulong(addr), length, MADV_NORMAL);
+		printf("madvise(%#llx, %lu, MADV_NORMAL) = %s\n",
+		       (unsigned long long) f8ill_ptr_to_kulong(addr),
+		       length, sprintrc(rc));
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-mx32/madvise.gen.test b/tests-mx32/madvise.gen.test
new file mode 100755
index 0000000..bd36dad
--- /dev/null
+++ b/tests-mx32/madvise.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests-mx32/mbind.gen.test b/tests-mx32/mbind.gen.test
new file mode 100755
index 0000000..a0d144d
--- /dev/null
+++ b/tests-mx32/mbind.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/mbind.test b/tests-mx32/mbind.test
deleted file mode 100755
index 2a07cac..0000000
--- a/tests-mx32/mbind.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mbind syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/membarrier.gen.test b/tests-mx32/membarrier.gen.test
new file mode 100755
index 0000000..7a6ea10
--- /dev/null
+++ b/tests-mx32/membarrier.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-mx32/membarrier.test b/tests-mx32/membarrier.test
deleted file mode 100755
index ad1f713..0000000
--- a/tests-mx32/membarrier.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check membarrier syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-mx32/memfd_create.gen.test b/tests-mx32/memfd_create.gen.test
new file mode 100755
index 0000000..11762be
--- /dev/null
+++ b/tests-mx32/memfd_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/memfd_create.test b/tests-mx32/memfd_create.test
deleted file mode 100755
index 4361dae..0000000
--- a/tests-mx32/memfd_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of memfd_create syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/migrate_pages.gen.test b/tests-mx32/migrate_pages.gen.test
new file mode 100755
index 0000000..20b7cad
--- /dev/null
+++ b/tests-mx32/migrate_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/migrate_pages.test b/tests-mx32/migrate_pages.test
deleted file mode 100755
index fad53b7..0000000
--- a/tests-mx32/migrate_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check migrate_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
diff --git a/tests-mx32/mincore.gen.test b/tests-mx32/mincore.gen.test
new file mode 100755
index 0000000..dc40726
--- /dev/null
+++ b/tests-mx32/mincore.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-mx32/mincore.test b/tests-mx32/mincore.test
deleted file mode 100755
index 6af9f49..0000000
--- a/tests-mx32/mincore.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mincore syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-mx32/mkdir.gen.test b/tests-mx32/mkdir.gen.test
new file mode 100755
index 0000000..80b4995
--- /dev/null
+++ b/tests-mx32/mkdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-mx32/mkdir.test b/tests-mx32/mkdir.test
deleted file mode 100755
index 38ed692..0000000
--- a/tests-mx32/mkdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-mx32/mkdirat.gen.test b/tests-mx32/mkdirat.gen.test
new file mode 100755
index 0000000..0f3fdae
--- /dev/null
+++ b/tests-mx32/mkdirat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-mx32/mkdirat.test b/tests-mx32/mkdirat.test
deleted file mode 100755
index 0fcb841..0000000
--- a/tests-mx32/mkdirat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdirat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-mx32/mknod.c b/tests-mx32/mknod.c
index 4cc1c5c..b387149 100644
--- a/tests-mx32/mknod.c
+++ b/tests-mx32/mknod.c
@@ -8,7 +8,7 @@
 # include <sys/sysmacros.h>
 # include <unistd.h>
 
-static const char sample[] = "mknod";
+static const char *sample;
 
 static long
 call_mknod(unsigned short mode, unsigned long dev)
@@ -18,9 +18,10 @@
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
 	unsigned long dev = (unsigned long) 0xdeadbeefbadc0dedULL;
+	sample = av[0];
 
 	long rc = call_mknod(0, dev);
 	printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
diff --git a/tests-mx32/mknod.gen.test b/tests-mx32/mknod.gen.test
new file mode 100755
index 0000000..870c88b
--- /dev/null
+++ b/tests-mx32/mknod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests-mx32/mknod.test b/tests-mx32/mknod.test
deleted file mode 100755
index 195f1e3..0000000
--- a/tests-mx32/mknod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests-mx32/mknodat.gen.test b/tests-mx32/mknodat.gen.test
new file mode 100755
index 0000000..747fcbe
--- /dev/null
+++ b/tests-mx32/mknodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-mx32/mknodat.test b/tests-mx32/mknodat.test
deleted file mode 100755
index 1701a36..0000000
--- a/tests-mx32/mknodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknodat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-mx32/mlock.gen.test b/tests-mx32/mlock.gen.test
new file mode 100755
index 0000000..2c8ea5e
--- /dev/null
+++ b/tests-mx32/mlock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock -a20 -e trace=mlock,munlock); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=mlock,munlock
diff --git a/tests-mx32/mlock.test b/tests-mx32/mlock.test
deleted file mode 100755
index 9a73a30..0000000
--- a/tests-mx32/mlock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock and munlock syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mlock,munlock -a20
diff --git a/tests-mx32/mlock2.gen.test b/tests-mx32/mlock2.gen.test
new file mode 100755
index 0000000..aa1818e
--- /dev/null
+++ b/tests-mx32/mlock2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/mlock2.test b/tests-mx32/mlock2.test
deleted file mode 100755
index bc412e9..0000000
--- a/tests-mx32/mlock2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/mlockall.gen.test b/tests-mx32/mlockall.gen.test
new file mode 100755
index 0000000..06d8ca4
--- /dev/null
+++ b/tests-mx32/mlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-mx32/mlockall.test b/tests-mx32/mlockall.test
deleted file mode 100755
index d7a6182..0000000
--- a/tests-mx32/mlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mlockall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-mx32/mmap.c b/tests-mx32/mmap.c
index f726f63..0321bf5 100644
--- a/tests-mx32/mmap.c
+++ b/tests-mx32/mmap.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -89,10 +90,6 @@
 	printf("mremap(%p, %lu, %lu, MREMAP_MAYMOVE|MREMAP_FIXED"
 	       ", %p) = %p\n", addr, length2, length3, addr + length2, p);
 
-	if (madvise(p, length3, MADV_NORMAL))
-		perror_msg_and_fail("madvise");
-	printf("madvise(%p, %lu, MADV_NORMAL) = 0\n", p, length3);
-
 	if (munmap(p, length3))
 		perror_msg_and_fail("munmap");
 	printf("munmap(%p, %lu) = 0\n", p, length3);
diff --git a/tests-mx32/mmap.test b/tests-mx32/mmap.test
index 0b87114..7ba664e 100755
--- a/tests-mx32/mmap.test
+++ b/tests-mx32/mmap.test
@@ -4,6 +4,7 @@
 # syscalls decoding.
 #
 # 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
@@ -50,9 +51,7 @@
 
 syscall=$mmap,madvise,mlockall,mprotect,mremap,msync,munmap
 
-run_prog "./$NAME" $mmap > /dev/null
+run_prog "../$NAME" $mmap > /dev/null
 run_strace -a20 -e$syscall $args > "$EXP"
 sed -n "/^$mmap(NULL, 0, PROT_NONE,/,\$p" < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/mmap64.gen.test b/tests-mx32/mmap64.gen.test
new file mode 100755
index 0000000..5e747b0
--- /dev/null
+++ b/tests-mx32/mmap64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test); do not edit.
+. "${srcdir=.}/mmap.test"
diff --git a/tests-mx32/mmap64.test b/tests-mx32/mmap64.test
deleted file mode 100755
index 51f1896..0000000
--- a/tests-mx32/mmap64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mmap/mprotect/munmap syscalls decoding.
-# Target executable was compiled with -D_FILE_OFFSET_BITS=64.
-
-. "${srcdir=.}/mmap.test"
diff --git a/tests-mx32/mmsg-silent.gen.test b/tests-mx32/mmsg-silent.gen.test
new file mode 100755
index 0000000..47863f2
--- /dev/null
+++ b/tests-mx32/mmsg-silent.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg-silent -a25 -e verbose=none -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests-mx32/mmsg-silent.test b/tests-mx32/mmsg-silent.test
deleted file mode 100755
index 775e0ad..0000000
--- a/tests-mx32/mmsg-silent.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check silent decoding of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests-mx32/mmsg.gen.test b/tests-mx32/mmsg.gen.test
new file mode 100755
index 0000000..4d90e3d
--- /dev/null
+++ b/tests-mx32/mmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
diff --git a/tests-mx32/mmsg.test b/tests-mx32/mmsg.test
deleted file mode 100755
index a8148ba..0000000
--- a/tests-mx32/mmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how iovecs in struct mmsghdr are decoded.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmmsg,sendmmsg -e read=0 -e write=1
diff --git a/tests-mx32/mmsg_name-v.gen.test b/tests-mx32/mmsg_name-v.gen.test
new file mode 100755
index 0000000..e34946f
--- /dev/null
+++ b/tests-mx32/mmsg_name-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name-v -v -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-mx32/mmsg_name-v.test b/tests-mx32/mmsg_name-v.test
deleted file mode 100755
index ab8dfba..0000000
--- a/tests-mx32/mmsg_name-v.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-mx32/mmsg_name.gen.test b/tests-mx32/mmsg_name.gen.test
new file mode 100755
index 0000000..ac54294
--- /dev/null
+++ b/tests-mx32/mmsg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-mx32/mmsg_name.test b/tests-mx32/mmsg_name.test
deleted file mode 100755
index e18c972..0000000
--- a/tests-mx32/mmsg_name.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests-mx32/mount.gen.test b/tests-mx32/mount.gen.test
new file mode 100755
index 0000000..0b124bc
--- /dev/null
+++ b/tests-mx32/mount.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/mount.test b/tests-mx32/mount.test
deleted file mode 100755
index 40fdca9..0000000
--- a/tests-mx32/mount.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mount syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/move_pages.c b/tests-mx32/move_pages.c
index f4ccafa..5ec25aa 100644
--- a/tests-mx32/move_pages.c
+++ b/tests-mx32/move_pages.c
@@ -2,6 +2,7 @@
  * Check decoding of move_pages syscall.
  *
  * 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
@@ -126,7 +127,7 @@
 			printf("%d", status[i]);
 		} else {
 			errno = -status[i];
-			printf("%s", errno2name());
+			printf("-%s", errno2name());
 		}
 	}
 	printf("]");
@@ -190,9 +191,9 @@
 	const unsigned page_size = get_page_size();
 	const void *const page = tail_alloc(page_size);
 	const void *const efault = page + page_size;
-	const void **pages = tail_alloc(sizeof(*pages));
-	int *nodes = tail_alloc(sizeof(*nodes));
-	int *status = tail_alloc(sizeof(*status));
+	TAIL_ALLOC_OBJECT_VAR_PTR(const void *, pages);
+	TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes);
+	TAIL_ALLOC_OBJECT_VAR_PTR(int, status);
 
 	print_stat_pages(pid, 0, pages, status);
 	print_move_pages(pid, 0, 0, pages, nodes, status);
diff --git a/tests-mx32/move_pages.gen.test b/tests-mx32/move_pages.gen.test
new file mode 100755
index 0000000..2f060fa
--- /dev/null
+++ b/tests-mx32/move_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/move_pages.test b/tests-mx32/move_pages.test
deleted file mode 100755
index f957717..0000000
--- a/tests-mx32/move_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of move_pages syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3
diff --git a/tests-mx32/mq.c b/tests-mx32/mq.c
index 9c2ffc8..ee2d059 100644
--- a/tests-mx32/mq.c
+++ b/tests-mx32/mq.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
@@ -37,17 +38,19 @@
 # include <unistd.h>
 # include <sys/stat.h>
 
-# define NAME "strace-mq.test"
-
 int
 main (void)
 {
 	struct mq_attr attr;
 	(void) close(0);
 
-	if (mq_open("/" NAME, O_CREAT, 0700, NULL))
+	char *name;
+	if (asprintf(&name, "/strace-mq-%u.sample", getpid()) < 0)
+		perror_msg_and_fail("asprintf");
+
+	if (mq_open(name, O_CREAT, 0700, NULL))
 		perror_msg_and_skip("mq_open");
-	printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", NAME);
+	printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", name + 1);
 
 	if (mq_getattr(0, &attr))
 		perror_msg_and_skip("mq_getattr");
@@ -63,9 +66,9 @@
 	       (long long) attr.mq_maxmsg,
 	       (long long) attr.mq_msgsize);
 
-	if (mq_unlink("/" NAME))
+	if (mq_unlink(name))
 		perror_msg_and_skip("mq_unlink");
-	printf("mq_unlink(\"%s\") = 0\n", NAME);
+	printf("mq_unlink(\"%s\") = 0\n", name + 1);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/mq.gen.test b/tests-mx32/mq.gen.test
new file mode 100755
index 0000000..8be520d
--- /dev/null
+++ b/tests-mx32/mq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests-mx32/mq.test b/tests-mx32/mq.test
deleted file mode 100755
index 746b07b..0000000
--- a/tests-mx32/mq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_getsetattr, and mq_unlink syscalls.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a28 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests-mx32/mq_sendrecv-read.gen.test b/tests-mx32/mq_sendrecv-read.gen.test
new file mode 100755
index 0000000..278e9b7
--- /dev/null
+++ b/tests-mx32/mq_sendrecv-read.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests-mx32/mq_sendrecv-read.test b/tests-mx32/mq_sendrecv-read.test
deleted file mode 100755
index eb4ad75..0000000
--- a/tests-mx32/mq_sendrecv-read.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -eread=0 -a14
diff --git a/tests-mx32/mq_sendrecv-write.gen.test b/tests-mx32/mq_sendrecv-write.gen.test
new file mode 100755
index 0000000..5963eb4
--- /dev/null
+++ b/tests-mx32/mq_sendrecv-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-write -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests-mx32/mq_sendrecv-write.test b/tests-mx32/mq_sendrecv-write.test
deleted file mode 100755
index 38277ec..0000000
--- a/tests-mx32/mq_sendrecv-write.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -ewrite=0 -a14
diff --git a/tests-mx32/mq_sendrecv.c b/tests-mx32/mq_sendrecv.c
index c151542..e3ad0d5 100644
--- a/tests-mx32/mq_sendrecv.c
+++ b/tests-mx32/mq_sendrecv.c
@@ -3,6 +3,7 @@
  * mq_unlink syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,10 +50,6 @@
 
 # include "sigevent.h"
 
-# ifndef MQ_NAME
-#  define MQ_NAME "mq_sendrecv.sample"
-# endif
-
 # ifndef DUMPIO_READ
 #  define DUMPIO_READ 0
 # endif
@@ -61,6 +58,7 @@
 #  define DUMPIO_WRITE 0
 # endif
 
+static char *mq_name;
 
 enum {
 	NUM_ATTRS = 8,
@@ -124,8 +122,8 @@
 {
 	long rc;
 
-	rc = syscall(__NR_mq_unlink, MQ_NAME);
-	printf("mq_unlink(\"" MQ_NAME "\") = %s\n", sprintrc(rc));
+	rc = syscall(__NR_mq_unlink, mq_name);
+	printf("mq_unlink(\"%s\") = %s\n", mq_name, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 }
@@ -147,9 +145,9 @@
 		if (cropped)
 			printf("...");
 		errno = saved_errno;
-		printf(", %u, 42, {tv_sec=%jd, tv_nsec=%jd}) = %s\n", msg_size,
-		       (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		       sprintrc(rc));
+		printf(", %u, 42, {tv_sec=%lld, tv_nsec=%llu}) = %s\n", msg_size,
+		       (long long) tmout->tv_sec,
+		       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 		errno = saved_errno;
 
 		if (rc == -1) {
@@ -185,9 +183,9 @@
 			printf("%p", msg);
 		}
 		errno = saved_errno;
-		printf(", %u, [42], {tv_sec=%jd, tv_nsec=%jd}) = %s\n", MSG_SIZE,
-		       (intmax_t) tmout->tv_sec,
-		       (intmax_t) tmout->tv_nsec, sprintrc(rc));
+		printf(", %u, [42], {tv_sec=%lld, tv_nsec=%llu}) = %s\n", MSG_SIZE,
+		       (long long) tmout->tv_sec,
+		       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 		errno = saved_errno;
 
 		if (rc == -1) {
@@ -242,7 +240,7 @@
 	kernel_long_t *bogus_attrs = tail_alloc(sizeof(*bogus_attrs) *
 		NUM_ATTRS);
 	char *msg = tail_alloc(MSG_SIZE);
-	unsigned *bogus_prio_ptr = tail_alloc(sizeof(*bogus_prio_ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, bogus_prio_ptr);
 	struct timespec *bogus_tmout = tail_memdup(&bogus_tmout_data,
 		sizeof(*bogus_tmout));
 	struct timespec *future_tmout = tail_memdup(&future_tmout_data,
@@ -278,8 +276,8 @@
 	/* Valid attributes structure */
 	rc = syscall(__NR_mq_open, msg, O_CREAT | bogus_oflags, bogus_mode,
 		     bogus_attrs);
-	printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, {mq_flags=%#llx, "
-	       "mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}) = %s\n",
+	printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, {mq_flags=%#llx"
+	       ", mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}) = %s\n",
 	       msg, (unsigned short) bogus_mode,
 	       (unsigned long long) (kernel_ulong_t) bogus_attrs[0],
 	       (long long) bogus_attrs[1],
@@ -304,12 +302,12 @@
 	/* Partially invalid message (memory only partially available) */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
 		     MSG_SIZE, bogus_prio, bogus_tmout);
-	printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
-	       "%s\n",
+	printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
 	       (int) bogus_fd, msg + MSG_SIZE - MSG_CUT,
 	       (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       sprintrc(rc));
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
 
 	/* Fully valid message, uncut */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
@@ -317,10 +315,10 @@
 	errstr = sprintrc(rc);
 	printf("mq_timedsend(%d, ", (int) bogus_fd);
 	printstr(MSG_START + MSG_SIZE - MSG_CUT, MSG_CUT);
-	printf(", %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf(", %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 	       (unsigned long long) MSG_CUT, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       errstr);
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
 
 	/* Partially invalid message, cut at maxstrlen */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_CUT, MSG_SIZE,
@@ -328,10 +326,10 @@
 	errstr = sprintrc(rc);
 	printf("mq_timedsend(%d, ", (int) bogus_fd);
 	printstr(MSG_START + MSG_CUT, MSG_MAX_UNCUT);
-	printf("..., %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf("..., %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 	       (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       errstr);
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
 
 
 	/* mq_timedreceive */
@@ -351,11 +349,11 @@
 	/* Invalid fd, valid msg pointer */
 	rc = syscall(__NR_mq_timedreceive, bogus_fd, msg, bogus_size,
 		     bogus_prio_ptr, bogus_tmout);
-	printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%jd, tv_nsec=%jd}) = "
-	       "%s\n",
+	printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%lld, tv_nsec=%llu}) "
+	       "= %s\n",
 	       (int) bogus_fd, msg, (unsigned long long) bogus_size,
-	       bogus_prio_ptr, (intmax_t) bogus_tmout->tv_sec,
-	       (intmax_t) bogus_tmout->tv_nsec, sprintrc(rc));
+	       bogus_prio_ptr, (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
 
 
 	/* mq_notify */
@@ -381,8 +379,8 @@
 	/* SIGEV_NONE */
 	bogus_sev->sigev_notify = SIGEV_NONE;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=%u, sigev_notify=SIGEV_NONE}) = %s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=%u, sigev_notify=SIGEV_NONE}) = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr,
 	       bogus_sev->sigev_signo, sprintrc(rc));
@@ -391,8 +389,8 @@
 	bogus_sev->sigev_notify = SIGEV_SIGNAL;
 	bogus_sev->sigev_signo = SIGALRM;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}) = %s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}) = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr, sprintrc(rc));
 
@@ -403,10 +401,10 @@
 	bogus_sev->sigev_un.sigev_thread.attribute =
 		(unsigned long) 0xcafef00dfacefeedULL;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD, "
-	       "sigev_notify_function=%#lx, sigev_notify_attributes=%#lx}) = "
-	       "%s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD"
+	       ", sigev_notify_function=%#lx, sigev_notify_attributes=%#lx})"
+	       " = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr,
 	       bogus_sev->sigev_un.sigev_thread.function,
@@ -430,12 +428,15 @@
 
 	/* Sending and receiving test */
 
+	if (asprintf(&mq_name, "strace-mq_sendrecv-%u.sample", getpid()) < 0)
+		perror_msg_and_fail("asprintf");
+
 # if DUMPIO_READ || DUMPIO_WRITE
 	close(0);
 # endif
 	bogus_attrs[1] = 2;
 	bogus_attrs[2] = MSG_SIZE;
-	fd = rc = syscall(__NR_mq_open, MQ_NAME,
+	fd = rc = syscall(__NR_mq_open, mq_name,
 		          O_CREAT|O_RDWR|O_NONBLOCK, S_IRWXU, bogus_attrs);
 	errstr = sprintrc(rc);
 	if (rc < 0)
@@ -448,11 +449,11 @@
 # endif
 	fill_memory_ex(bogus_attrs, sizeof(*bogus_attrs) * NUM_ATTRS,
 		       0xbb, 0x70);
-	printf("mq_open(\"" MQ_NAME "\", O_RDWR|O_CREAT|O_NONBLOCK, "
-	       "0700, {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u, "
-	       "mq_curmsgs=%lld}) = %s\n",
-	       (unsigned long long) (kernel_ulong_t) bogus_attrs[0], MSG_SIZE,
-	       (long long) bogus_attrs[3], errstr);
+	printf("mq_open(\"%s\", O_RDWR|O_CREAT|O_NONBLOCK, 0700"
+	       ", {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u"
+	       ", mq_curmsgs=%lld}) = %s\n",
+	       mq_name, (unsigned long long) (kernel_ulong_t) bogus_attrs[0],
+	       MSG_SIZE, (long long) bogus_attrs[3], errstr);
 
 	rc = syscall(__NR_mq_getsetattr, fd, NULL, bogus_attrs);
 	if (rc < 0)
diff --git a/tests-mx32/mq_sendrecv.gen.test b/tests-mx32/mq_sendrecv.gen.test
new file mode 100755
index 0000000..d82576f
--- /dev/null
+++ b/tests-mx32/mq_sendrecv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests-mx32/mq_sendrecv.test b/tests-mx32/mq_sendrecv.test
deleted file mode 100755
index 67f4d63..0000000
--- a/tests-mx32/mq_sendrecv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -a14
diff --git a/tests-mx32/msg_control-v.gen.test b/tests-mx32/msg_control-v.gen.test
new file mode 100755
index 0000000..0a0de15
--- /dev/null
+++ b/tests-mx32/msg_control-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control-v -v -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests-mx32/msg_control-v.test b/tests-mx32/msg_control-v.test
deleted file mode 100755
index 41f9842..0000000
--- a/tests-mx32/msg_control-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests-mx32/msg_control.c b/tests-mx32/msg_control.c
index 709a307..1e64f1a 100644
--- a/tests-mx32/msg_control.c
+++ b/tests-mx32/msg_control.c
@@ -2,6 +2,7 @@
  * Check decoding of struct msghdr ancillary data.
  *
  * 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
@@ -689,7 +690,7 @@
 	int rc = sendmsg(-1, 0, 0);
 	printf("sendmsg(-1, NULL, 0) = %d %s (%m)\n", rc, errno2name());
 
-	struct msghdr *mh = tail_alloc(sizeof(*mh));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
 	memset(mh, 0, sizeof(*mh));
 	test_big_len(mh);
 
diff --git a/tests-mx32/msg_control.gen.test b/tests-mx32/msg_control.gen.test
new file mode 100755
index 0000000..446ebcb
--- /dev/null
+++ b/tests-mx32/msg_control.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests-mx32/msg_control.test b/tests-mx32/msg_control.test
deleted file mode 100755
index 809ec7b..0000000
--- a/tests-mx32/msg_control.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests-mx32/msg_name.c b/tests-mx32/msg_name.c
index c2ddda2..9e98e4e 100644
--- a/tests-mx32/msg_name.c
+++ b/tests-mx32/msg_name.c
@@ -2,6 +2,7 @@
  * Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
  *
  * 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
@@ -47,13 +48,13 @@
 static void
 test_msg_name(const int send_fd, const int recv_fd)
 {
-	char *const recv_buf = tail_alloc(sizeof(*recv_buf));
-	struct iovec *const iov = tail_alloc(sizeof(*iov));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char, recv_buf);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = recv_buf;
 	iov->iov_len = sizeof(*recv_buf);
 
-	struct sockaddr_un *const addr = tail_alloc(sizeof(*addr));
-	struct msghdr *const msg = tail_alloc(sizeof(*msg));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sockaddr_un, addr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, msg);
 	msg->msg_name = addr;
 	msg->msg_namelen = sizeof(*addr);
 	msg->msg_iov = iov;
diff --git a/tests-mx32/msg_name.gen.test b/tests-mx32/msg_name.gen.test
new file mode 100755
index 0000000..2d0ae90
--- /dev/null
+++ b/tests-mx32/msg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_name -a20 -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests-mx32/msg_name.test b/tests-mx32/msg_name.test
deleted file mode 100755
index ac06dd5..0000000
--- a/tests-mx32/msg_name.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests-mx32/munlockall.gen.test b/tests-mx32/munlockall.gen.test
new file mode 100755
index 0000000..18343cb
--- /dev/null
+++ b/tests-mx32/munlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests-mx32/munlockall.test b/tests-mx32/munlockall.test
deleted file mode 100755
index e25d60a..0000000
--- a/tests-mx32/munlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check munlockall syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests-mx32/nanosleep.c b/tests-mx32/nanosleep.c
index 9f0e626..8f9724e 100644
--- a/tests-mx32/nanosleep.c
+++ b/tests-mx32/nanosleep.c
@@ -1,5 +1,8 @@
 /*
+ * Check decoding of nanosleep syscall.
+ *
  * 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
@@ -57,40 +60,62 @@
 
 	if (nanosleep(&req.ts, NULL))
 		perror_msg_and_fail("nanosleep");
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, NULL) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	assert(nanosleep(NULL, &rem.ts) == -1);
 	printf("nanosleep(NULL, %p) = -1 EFAULT (%m)\n", &rem.ts);
 
 	if (nanosleep(&req.ts, &rem.ts))
 		perror_msg_and_fail("nanosleep");
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	req.ts.tv_nsec = 1000000000;
 	assert(nanosleep(&req.ts, &rem.ts) == -1);
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = 0xdeadbeefU;
+	req.ts.tv_nsec = 0xfacefeedU;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = -1;
+	req.ts.tv_nsec = -1;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
 
 	if (setitimer(ITIMER_REAL, &itv, NULL))
 		perror_msg_and_skip("setitimer");
-	printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
-	       (intmax_t) itv.it_interval.tv_sec,
-	       (intmax_t) itv.it_interval.tv_usec,
-	       (intmax_t) itv.it_value.tv_sec,
-	       (intmax_t) itv.it_value.tv_usec);
 
+	req.ts.tv_sec = 0;
 	req.ts.tv_nsec = 999999999;
 	assert(nanosleep(&req.ts, &rem.ts) == -1);
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, {tv_sec=%jd, tv_nsec=%jd})"
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}"
+	       ", {tv_sec=%lld, tv_nsec=%llu})"
 	       " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
-	       (intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec),
+	       (long long) rem.ts.tv_sec,
+	       zero_extend_signed_to_ull(rem.ts.tv_nsec));
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-mx32/nanosleep.gen.test b/tests-mx32/nanosleep.gen.test
new file mode 100755
index 0000000..ea5b19a
--- /dev/null
+++ b/tests-mx32/nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-mx32/nanosleep.test b/tests-mx32/nanosleep.test
deleted file mode 100755
index 055a8dc..0000000
--- a/tests-mx32/nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check nanosleep and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=nanosleep,setitimer
diff --git a/tests-mx32/net-icmp_filter.c b/tests-mx32/net-icmp_filter.c
index f3f99f1..71e530d 100644
--- a/tests-mx32/net-icmp_filter.c
+++ b/tests-mx32/net-icmp_filter.c
@@ -2,6 +2,7 @@
  * Check decoding of ICMP_FILTER.
  *
  * 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
@@ -43,9 +44,9 @@
 	printf("setsockopt(-1, SOL_RAW, ICMP_FILTER, NULL, 0) = -1 %s (%m)\n",
 	       errno2name());
 
-	socklen_t *const plen = tail_alloc(sizeof(*plen));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
 	void *const efault = plen + 1;
-	struct icmp_filter *const f = tail_alloc(sizeof(*f));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct icmp_filter, f);
 
 	getsockopt(-1, SOL_RAW, ICMP_FILTER, f, plen);
 	printf("getsockopt(-1, SOL_RAW, ICMP_FILTER, %p, %p) = -1 %s (%m)\n",
diff --git a/tests-mx32/net-icmp_filter.gen.test b/tests-mx32/net-icmp_filter.gen.test
new file mode 100755
index 0000000..bf6c765
--- /dev/null
+++ b/tests-mx32/net-icmp_filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-icmp_filter -e trace=getsockopt,setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests-mx32/net-icmp_filter.test b/tests-mx32/net-icmp_filter.test
deleted file mode 100755
index c05a5e6..0000000
--- a/tests-mx32/net-icmp_filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ICMP_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests-mx32/net-sockaddr.c b/tests-mx32/net-sockaddr.c
index bf37779..9dc9ecf 100644
--- a/tests-mx32/net-sockaddr.c
+++ b/tests-mx32/net-sockaddr.c
@@ -2,6 +2,7 @@
  * Check decoding of sockaddr structures
  *
  * 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
@@ -57,7 +58,7 @@
 static void
 check_un(void)
 {
-	struct sockaddr_un *un = tail_alloc(sizeof(*un));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_un, un);
 	un->sun_family = AF_UNIX;
 	memset(un->sun_path, '0', sizeof(un->sun_path));
 	unsigned int len = sizeof(*un);
@@ -133,7 +134,7 @@
 	const unsigned short h_port = 12345;
 	static const char h_addr[] = "12.34.56.78";
 
-	struct sockaddr_in *in = tail_alloc(sizeof(*in));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in, in);
 	in->sin_family = AF_INET;
 	in->sin_port = htons(h_port);
 	in->sin_addr.s_addr = inet_addr(h_addr);
@@ -207,7 +208,7 @@
 	const unsigned int h_flowinfo = 1234567890;
 	static const char h_addr[] = "12:34:56:78:90:ab:cd:ef";
 
-	struct sockaddr_in6 *in6 = tail_alloc(sizeof(*in6));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in6, in6);
 	in6->sin6_family = AF_INET6;
 	in6->sin6_port = htons(h_port);
 	in6->sin6_flowinfo = htonl(h_flowinfo);
@@ -298,7 +299,7 @@
 static void
 check_nl(void)
 {
-	struct sockaddr_nl *nl = tail_alloc(sizeof(*nl));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_nl, nl);
 	nl->nl_family = AF_NETLINK;
 	nl->nl_pid = 1234567890;
 	nl->nl_groups = 0xfacefeed;
@@ -390,7 +391,7 @@
 check_hci(void)
 {
 	const unsigned short h_port = 12345;
-	struct sockaddr_hci *hci = tail_alloc(sizeof(*hci));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
 	hci->hci_family = AF_BLUETOOTH;
 	hci->hci_dev = htobs(h_port);
 	hci->hci_channel = HCI_CHANNEL_RAW;
diff --git a/tests-mx32/net-sockaddr.gen.test b/tests-mx32/net-sockaddr.gen.test
new file mode 100755
index 0000000..53c8335
--- /dev/null
+++ b/tests-mx32/net-sockaddr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-sockaddr -a24 -e trace=connect); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=connect
diff --git a/tests-mx32/net-sockaddr.test b/tests-mx32/net-sockaddr.test
deleted file mode 100755
index cdfe536..0000000
--- a/tests-mx32/net-sockaddr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr structures.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=connect
diff --git a/tests-mx32/net-y-unix.c b/tests-mx32/net-y-unix.c
index 3efc2f6..df56ad6 100644
--- a/tests-mx32/net-y-unix.c
+++ b/tests-mx32/net-y-unix.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-y-unix strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-int
-main(int ac, const char **av)
-{
-	assert(ac == 2);
+#define TEST_SOCKET "net-y-unix.socket"
 
-	struct sockaddr_un addr = { .sun_family = AF_UNIX };
-	unsigned int sun_path_len = strlen(av[1]);
-	assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const struct sockaddr_un addr = {
+		.sun_family = AF_UNIX,
+		.sun_path = TEST_SOCKET
+	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
 
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
-	*len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	*len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
 	if (*len > sizeof(addr))
 		*len = sizeof(addr);
 
@@ -61,17 +63,18 @@
 	printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<socket:[%lu]>\n",
 	       listen_fd, listen_inode);
 
-	(void) unlink(av[1]);
+	(void) unlink(TEST_SOCKET);
 	if (bind(listen_fd, listen_sa, *len))
 		perror_msg_and_skip("bind");
 	printf("bind(%d<socket:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
-	       ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+	       ", %u) = 0\n",
+	       listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
 
 	if (listen(listen_fd, 1))
 		perror_msg_and_skip("listen");
 	printf("listen(%d<socket:[%lu]>, 1) = 0\n", listen_fd, listen_inode);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
 		perror_msg_and_fail("getsockopt");
@@ -85,7 +88,7 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -98,7 +101,7 @@
 		perror_msg_and_fail("connect");
 	printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
@@ -119,7 +122,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
-	       av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	char text[] = "text";
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -163,14 +166,14 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
-	       listen_fd, listen_inode, av[1],
+	       listen_fd, listen_inode, TEST_SOCKET,
 	       (int) sizeof(addr), (int) *len);
 
 	if (connect(connect_fd, listen_sa, *len))
 		perror_msg_and_fail("connect");
 	printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -192,7 +195,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
-	       connect_fd, connect_inode, av[1],
+	       connect_fd, connect_inode, TEST_SOCKET,
 	       (int) sizeof(addr), (int) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
@@ -224,7 +227,7 @@
 	assert(close(accept_fd) == 0);
 	printf("close(%d<socket:[%lu]>) = 0\n", accept_fd, accept_inode);
 
-	assert(unlink(av[1]) == 0);
+	assert(unlink(TEST_SOCKET) == 0);
 
 	assert(close(listen_fd) == 0);
 	printf("close(%d<socket:[%lu]>) = 0\n",
diff --git a/tests-mx32/net-y-unix.test b/tests-mx32/net-y-unix.test
index aec8159..fd3fd68 100755
--- a/tests-mx32/net-y-unix.test
+++ b/tests-mx32/net-y-unix.test
@@ -2,7 +2,7 @@
 #
 # Check decoding of network syscalls in -y mode.
 #
-# 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
@@ -29,18 +29,11 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -y is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
 
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog > /dev/null
 run_strace -a20 -y -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/net-yy-inet.c b/tests-mx32/net-yy-inet.c
index f76f941..af1262e 100644
--- a/tests-mx32/net-yy-inet.c
+++ b/tests-mx32/net-yy-inet.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,12 +42,14 @@
 int
 main(void)
 {
+	skip_if_unavailable("/proc/self/fd/");
+
 	const struct sockaddr_in addr = {
 		.sin_family = AF_INET,
 		.sin_addr.s_addr = htonl(INADDR_LOOPBACK)
 	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 	*len = sizeof(addr);
 
 	const int listen_fd = socket(AF_INET, SOCK_STREAM, 0);
@@ -77,7 +80,7 @@
 	       ", [%u]) = 0\n",
 	       listen_fd, listen_port, listen_port, (unsigned) *len);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_TCP, TCP_MAXSEG, optval, len))
 		perror_msg_and_fail("getsockopt");
diff --git a/tests-mx32/net-yy-inet.test b/tests-mx32/net-yy-inet.test
index 2ebf91f..6b527db 100755
--- a/tests-mx32/net-yy-inet.test
+++ b/tests-mx32/net-yy-inet.test
@@ -3,6 +3,7 @@
 # Check decoding of ip:port pairs associated with socket descriptors
 #
 # Copyright (c) 2014-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,18 +30,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_inet_diag
 
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_inet_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/net-yy-netlink.c b/tests-mx32/net-yy-netlink.c
index 64d0efc..6539eda 100644
--- a/tests-mx32/net-yy-netlink.c
+++ b/tests-mx32/net-yy-netlink.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-yy-netlink strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * All rights reserved.
  *
@@ -47,13 +47,14 @@
 int
 main(void)
 {
-	unsigned magic = 1234;
+	skip_if_unavailable("/proc/self/fd/");
+
 	struct sockaddr_nl addr = {
 		.nl_family = AF_NETLINK,
-		.nl_pid = 1234
+		.nl_pid = getpid()
 	};
 	struct sockaddr *const sa = tail_memdup(&addr, sizeof(addr));
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 	*len = sizeof(addr);
 
 	const int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
@@ -67,17 +68,17 @@
 		perror_msg_and_skip("bind");
 	printf("bind(%d<NETLINK:[%lu]>, {sa_family=AF_NETLINK"
 	       ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n",
-	       fd, inode, magic, (unsigned) *len);
+	       fd, inode, addr.nl_pid, (unsigned) *len);
 
 	if (getsockname(fd, sa, len))
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<NETLINK:[SOCK_DIAG:%u]>, {sa_family=AF_NETLINK"
 	       ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n",
-	       fd, magic, magic, (unsigned) *len);
+	       fd, addr.nl_pid, addr.nl_pid, (unsigned) *len);
 
 	if (close(fd))
 		perror_msg_and_fail("close");
-	printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, magic);
+	printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, addr.nl_pid);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/net-yy-netlink.test b/tests-mx32/net-yy-netlink.test
index bff1d86..3a07e45 100755
--- a/tests-mx32/net-yy-netlink.test
+++ b/tests-mx32/net-yy-netlink.test
@@ -6,6 +6,7 @@
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
+# Copyright (c) 2016-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -32,18 +33,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_netlink_diag
 
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_netlink_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/net-yy-unix.c b/tests-mx32/net-yy-unix.c
index 63637bd..f27cdc0 100644
--- a/tests-mx32/net-yy-unix.c
+++ b/tests-mx32/net-yy-unix.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-yy-unix strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-int
-main(int ac, const char **av)
-{
-	assert(ac == 2);
+#define TEST_SOCKET "net-yy-unix.socket"
 
-	struct sockaddr_un addr = { .sun_family = AF_UNIX };
-	unsigned int sun_path_len = strlen(av[1]);
-	assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	struct sockaddr_un addr = {
+		.sun_family = AF_UNIX,
+		.sun_path = TEST_SOCKET
+	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
 
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
-	*len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	*len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
 	if (*len > sizeof(addr))
 		*len = sizeof(addr);
 
@@ -61,24 +63,25 @@
 	printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<UNIX:[%lu]>\n",
 	       listen_fd, listen_inode);
 
-	(void) unlink(av[1]);
+	(void) unlink(TEST_SOCKET);
 	if (bind(listen_fd, listen_sa, *len))
 		perror_msg_and_skip("bind");
 	printf("bind(%d<UNIX:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
-	       ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+	       ", %u) = 0\n",
+	       listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
 
 	if (listen(listen_fd, 1))
 		perror_msg_and_skip("listen");
 	printf("listen(%d<UNIX:[%lu,\"%s\"]>, 1) = 0\n",
-	       listen_fd, listen_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
 		perror_msg_and_fail("getsockopt");
 	printf("getsockopt(%d<UNIX:[%lu,\"%s\"]>, SOL_SOCKET, SO_PASSCRED"
 	       ", [%u], [%u]) = 0\n",
-	       listen_fd, listen_inode, av[1], *optval, (unsigned) *len);
+	       listen_fd, listen_inode, TEST_SOCKET, *optval, (unsigned) *len);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -86,7 +89,7 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -99,7 +102,7 @@
 		perror_msg_and_fail("connect");
 	printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
@@ -110,8 +113,9 @@
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
 	printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX}"
 	       ", [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
-	       listen_fd, listen_inode, av[1], (int) sizeof(addr), (int) *len,
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET,
+	       (int) sizeof(addr), (int) *len,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -120,7 +124,7 @@
 	printf("getpeername(%d<UNIX:[%lu->%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
 	       connect_fd, connect_inode,
-	       accept_inode, av[1], (int) sizeof(addr), (int) *len);
+	       accept_inode, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	char text[] = "text";
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -134,7 +138,7 @@
 	       == sizeof(text) - 1);
 	printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
 	       ", NULL, NULL) = %u\n",
-	       accept_fd, accept_inode, connect_inode, av[1], text,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
 	       (unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
 
 	assert(close(connect_fd) == 0);
@@ -143,7 +147,7 @@
 
 	assert(close(accept_fd) == 0);
 	printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -166,13 +170,13 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	if (connect(connect_fd, listen_sa, *len))
 		perror_msg_and_fail("connect");
 	printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -184,9 +188,9 @@
 		((struct sockaddr_un *) accept_sa) -> sun_path + 1;
 	printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=@\"%s\"}, [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
-	       listen_fd, listen_inode, av[1], sun_path1,
+	       listen_fd, listen_inode, TEST_SOCKET, sun_path1,
 	       (int) sizeof(addr), (int) *len,
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -194,7 +198,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<UNIX:[%lu->%lu,@\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
-	       accept_inode, sun_path1, av[1], (int) sizeof(addr), (int) *len);
+	       accept_inode, sun_path1, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
 	       == sizeof(text) - 1);
@@ -207,7 +211,7 @@
 	       == sizeof(text) - 1);
 	printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
 	       ", NULL, NULL) = %u\n",
-	       accept_fd, accept_inode, connect_inode, av[1], text,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
 	       (unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
 
 	assert(close(connect_fd) == 0);
@@ -216,13 +220,13 @@
 
 	assert(close(accept_fd) == 0);
 	printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
-	assert(unlink(av[1]) == 0);
+	assert(unlink(TEST_SOCKET) == 0);
 
 	assert(close(listen_fd) == 0);
 	printf("close(%d<UNIX:[%lu,\"%s\"]>) = 0\n",
-	       listen_fd, listen_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/net-yy-unix.test b/tests-mx32/net-yy-unix.test
index b82761c..59323a4 100755
--- a/tests-mx32/net-yy-unix.test
+++ b/tests-mx32/net-yy-unix.test
@@ -4,7 +4,7 @@
 # associated with unix domain socket descriptors.
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
-# Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -31,19 +31,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_unix_diag
 
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog ../netlink_unix_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/net.test b/tests-mx32/net.test
index cf943ff..8320707 100755
--- a/tests-mx32/net.test
+++ b/tests-mx32/net.test
@@ -4,8 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./net-accept-connect net-local-stream
-run_strace_merge -enetwork $args
+run_prog ../net-accept-connect net-local-stream
+run_strace_merge -e%network $args
 match_grep
 
 exit 0
diff --git a/tests-mx32/netlink_protocol.c b/tests-mx32/netlink_protocol.c
index 34e114b..35f954f 100644
--- a/tests-mx32/netlink_protocol.c
+++ b/tests-mx32/netlink_protocol.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of netlink protocol.
  *
- * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * All rights reserved.
  *
@@ -199,6 +199,121 @@
 	printf(", ...], %u, MSG_DONTWAIT, NULL, 0) = %s\n", msg_len, errstr);
 }
 
+static void
+test_nlmsgerr(const int fd)
+{
+	struct nlmsgerr *err;
+	struct nlmsghdr *nlh;
+	void *const nlh0 = tail_alloc(NLMSG_HDRLEN);
+	long rc;
+
+	/* error message without enough room for the error code */
+	nlh = nlh0;
+	nlh->nlmsg_len = NLMSG_HDRLEN + 4;
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, %p}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	nlh->nlmsg_len = NLMSG_HDRLEN + 2;
+	nlh = nlh0 - 2;
+	memmove(nlh, nlh0, sizeof(*nlh));
+	memcpy(NLMSG_DATA(nlh), "42", 2);
+
+	rc = sendto(fd, nlh, NLMSG_HDRLEN + 2, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, \"42\"}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, NLMSG_HDRLEN + 2, NLMSG_HDRLEN + 2, sprintrc(rc));
+
+	/* error message with room for the error code only */
+	nlh = nlh0 - sizeof(err->error);
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(err->error);
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = 42;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=42}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+	err->error = -1;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EPERM}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+	err->error = -32767;
+	nlh->nlmsg_len += sizeof(err->msg.nlmsg_len);
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-32767, msg=%p}}"
+	       ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	/* error message with room for the error code and a header */
+	nlh = nlh0 - sizeof(*err);
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err);
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = -13;
+	err->msg.nlmsg_len = NLMSG_HDRLEN;
+	err->msg.nlmsg_type = NLMSG_NOOP;
+	err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+	err->msg.nlmsg_seq = 42;
+	err->msg.nlmsg_pid = 1234;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EACCES"
+	       ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+	       ", seq=%u, pid=%u}}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+	       err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	/* error message with room for the error code, a header, and some data */
+	nlh = nlh0 - sizeof(*err) - 4;
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err) + 4;
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = -13;
+	err->msg.nlmsg_len = NLMSG_HDRLEN + 4;
+	err->msg.nlmsg_type = NLMSG_NOOP;
+	err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+	err->msg.nlmsg_seq = 421;
+	err->msg.nlmsg_pid = 12345;
+	memcpy(NLMSG_DATA(&err->msg), "abcd", 4);
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EACCES"
+	       ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+	       ", seq=%u, pid=%u}, \"abcd\"}}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n",
+	       fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+	       err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+	       nlh->nlmsg_len, sprintrc(rc));
+}
+
 int main(void)
 {
 	struct sockaddr_nl addr;
@@ -227,6 +342,7 @@
 	free(path);
 
 	send_query(fd);
+	test_nlmsgerr(fd);
 
 	printf("+++ exited with 0 +++\n");
 
diff --git a/tests-mx32/netlink_protocol.gen.test b/tests-mx32/netlink_protocol.gen.test
new file mode 100755
index 0000000..9a132fa
--- /dev/null
+++ b/tests-mx32/netlink_protocol.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_protocol -e trace=%network); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=%network
diff --git a/tests-mx32/netlink_protocol.test b/tests-mx32/netlink_protocol.test
deleted file mode 100755
index ab2bb1e..0000000
--- a/tests-mx32/netlink_protocol.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of netlink protocol.
-
-. "${srcdir=.}/init.sh"
-
-# getfdproto is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-    framework_skip_ '/proc/self/fd/ is not available'
-
-run_strace_match_diff -e trace=network
diff --git a/tests-mx32/newfstatat.gen.test b/tests-mx32/newfstatat.gen.test
new file mode 100755
index 0000000..40ec797
--- /dev/null
+++ b/tests-mx32/newfstatat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/newfstatat.test b/tests-mx32/newfstatat.test
deleted file mode 100755
index 6d83ec0..0000000
--- a/tests-mx32/newfstatat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check newfstatat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/nsyscalls.c b/tests-mx32/nsyscalls.c
index aecf7aa..7fda5ba 100644
--- a/tests-mx32/nsyscalls.c
+++ b/tests-mx32/nsyscalls.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,6 +42,13 @@
 #define TP 0
 #define TS 0
 #define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests-mx32/old_mmap.gen.test b/tests-mx32/old_mmap.gen.test
new file mode 100755
index 0000000..1913eec
--- /dev/null
+++ b/tests-mx32/old_mmap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap -a11 -e trace=mmap); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests-mx32/old_mmap.test b/tests-mx32/old_mmap.test
deleted file mode 100755
index af776ff..0000000
--- a/tests-mx32/old_mmap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of "old mmap" edition of mmap syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests-mx32/oldfstat.c b/tests-mx32/oldfstat.c
index f5a9441..353614c 100644
--- a/tests-mx32/oldfstat.c
+++ b/tests-mx32/oldfstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/oldfstat.gen.test b/tests-mx32/oldfstat.gen.test
new file mode 100755
index 0000000..2b48b39
--- /dev/null
+++ b/tests-mx32/oldfstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldfstat -a18 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -v -P stat.sample
diff --git a/tests-mx32/oldfstat.test b/tests-mx32/oldfstat.test
deleted file mode 100755
index 66a1056..0000000
--- a/tests-mx32/oldfstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Check oldfstat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-syscall=$NAME
-run_prog > /dev/null
-sample=$syscall.sample
-> "$sample"
-run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-mx32/oldlstat.c b/tests-mx32/oldlstat.c
index 6613237..6f07531 100644
--- a/tests-mx32/oldlstat.c
+++ b/tests-mx32/oldlstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/oldlstat.gen.test b/tests-mx32/oldlstat.gen.test
new file mode 100755
index 0000000..3202b92
--- /dev/null
+++ b/tests-mx32/oldlstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldlstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/oldlstat.test b/tests-mx32/oldlstat.test
deleted file mode 100755
index a0f9ab9..0000000
--- a/tests-mx32/oldlstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldlstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/oldstat.c b/tests-mx32/oldstat.c
index d06e2bc..ddacd24 100644
--- a/tests-mx32/oldstat.c
+++ b/tests-mx32/oldstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/oldstat.gen.test b/tests-mx32/oldstat.gen.test
new file mode 100755
index 0000000..f265ac5
--- /dev/null
+++ b/tests-mx32/oldstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/oldstat.test b/tests-mx32/oldstat.test
deleted file mode 100755
index 42d70f7..0000000
--- a/tests-mx32/oldstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/open.gen.test b/tests-mx32/open.gen.test
new file mode 100755
index 0000000..eb931a3
--- /dev/null
+++ b/tests-mx32/open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open -a30 -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests-mx32/open.test b/tests-mx32/open.test
deleted file mode 100755
index 6df19cb..0000000
--- a/tests-mx32/open.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests-mx32/openat.gen.test b/tests-mx32/openat.gen.test
new file mode 100755
index 0000000..fe29e1c
--- /dev/null
+++ b/tests-mx32/openat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests-mx32/openat.test b/tests-mx32/openat.test
deleted file mode 100755
index 68c4cee..0000000
--- a/tests-mx32/openat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check openat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
diff --git a/tests-mx32/opipe.test b/tests-mx32/opipe.test
index 90e6838..f622045 100755
--- a/tests-mx32/opipe.test
+++ b/tests-mx32/opipe.test
@@ -6,11 +6,9 @@
 
 check_prog grep
 run_prog grep chdir $srcdir/umovestr.expected > "$EXP"
-run_prog ./umovestr
+run_prog ../umovestr
 
-> "$LOG" || fail_ "failed to write $LOG"
 $STRACE -o "|cat > $LOG && $SLEEP_A_BIT && grep chdir < $LOG > $OUT" -e chdir $args ||
 	dump_log_and_fail_with "$STRACE $args failed"
 
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/options-syntax.test b/tests-mx32/options-syntax.test
index 592b0e0..4c778b3 100755
--- a/tests-mx32/options-syntax.test
+++ b/tests-mx32/options-syntax.test
@@ -3,6 +3,7 @@
 # Check strace options syntax.
 #
 # 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
@@ -39,6 +40,16 @@
 			"strace $* failed to print expected diagnostics"
 }
 
+check_exit_status_and_stderr_using_grep()
+{
+	$STRACE "$@" 2> "$LOG" &&
+		dump_log_and_fail_with \
+			"strace $* failed to handle the error properly"
+	match_grep "$LOG" "$EXP" ||
+		dump_log_and_fail_with \
+			"strace $* failed to print expected diagnostics"
+}
+
 strace_exp="${STRACE##* }"
 
 check_e()
@@ -50,6 +61,15 @@
 	check_exit_status_and_stderr "$@"
 }
 
+check_e_using_grep()
+{
+	local pattern="$1"; shift
+	cat > "$EXP" << __EOF__
+$strace_exp: $pattern
+__EOF__
+	check_exit_status_and_stderr_using_grep "$@"
+}
+
 check_h()
 {
 	local pattern="$1"; shift
@@ -72,6 +92,7 @@
 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
@@ -88,6 +109,12 @@
 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'
+
 check_h 'must have PROG [ARGS] or -p PID'
 check_h 'PROG [ARGS] must be specified with -D' -D -p $$
 check_h '-c and -C are mutually exclusive' -c -C true
@@ -144,5 +171,3 @@
 [ -z "$args" ] ||
 	dump_log_and_fail_with \
 		"strace $args failed to print expected diagnostics"
-
-rm -f "$EXP"
diff --git a/tests-mx32/osf_utimes.c b/tests-mx32/osf_utimes.c
new file mode 100644
index 0000000..7ac083e
--- /dev/null
+++ b/tests-mx32/osf_utimes.c
@@ -0,0 +1,45 @@
+/*
+ * Check decoding of osf_utimes 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>
+
+#ifdef __NR_osf_utimes
+
+# define TEST_SYSCALL_NR	__NR_osf_utimes
+# define TEST_SYSCALL_STR	"osf_utimes"
+# define TEST_STRUCT		struct timeval32
+struct timeval32 { int tv_sec, tv_usec; };
+# include "xutimes.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_osf_utimes")
+
+#endif
diff --git a/tests-mx32/osf_utimes.gen.test b/tests-mx32/osf_utimes.gen.test
new file mode 100755
index 0000000..b6be305
--- /dev/null
+++ b/tests-mx32/osf_utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/pause.gen.test b/tests-mx32/pause.gen.test
new file mode 100755
index 0000000..76492b6
--- /dev/null
+++ b/tests-mx32/pause.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pause -a8 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 -esignal=none
diff --git a/tests-mx32/pause.test b/tests-mx32/pause.test
deleted file mode 100755
index c5fdacd..0000000
--- a/tests-mx32/pause.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pause syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8 -esignal=none
diff --git a/tests-mx32/pc.test b/tests-mx32/pc.test
index beadb7d..af09701 100755
--- a/tests-mx32/pc.test
+++ b/tests-mx32/pc.test
@@ -3,6 +3,7 @@
 # Check -i option.
 #
 # Copyright (c) 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
@@ -47,15 +48,11 @@
 [ -n "$addr" ] ||
 	dump_log_and_fail_with
 
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
 \\[[[:xdigit:]]{$len}\\] munmap\\(0x[[:xdigit:]]+, 0\\) += -1 .*
 \\[pid +$pid\\] \\[$ip\\] --- SIGSEGV \\{si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x$addr\\} ---
 \\[pid +$pid\\] \\[\\?{$len}\\] \\+\\+\\+ killed by SIGSEGV( \\(core dumped\\))? \\+\\+\\+
 \\[\\?{$len}\\] \\+\\+\\+ exited with 0 \\+\\+\\+
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests-mx32/perf_event_open.c b/tests-mx32/perf_event_open.c
index 0ffea29..3f544a6 100644
--- a/tests-mx32/perf_event_open.c
+++ b/tests-mx32/perf_event_open.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -681,7 +682,7 @@
 		ATTR_REC(attr_big_size),
 	};
 
-	struct perf_event_attr *small_attr = tail_alloc(sizeof(*small_attr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, small_attr);
 
 	struct {
 		struct perf_event_attr *attr;
diff --git a/tests-mx32/perf_event_open.gen.test b/tests-mx32/perf_event_open.gen.test
new file mode 100755
index 0000000..85336c3
--- /dev/null
+++ b/tests-mx32/perf_event_open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/perf_event_open.test b/tests-mx32/perf_event_open.test
deleted file mode 100755
index 499134b..0000000
--- a/tests-mx32/perf_event_open.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check perf_event_open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a1
diff --git a/tests-mx32/perf_event_open_nonverbose.c b/tests-mx32/perf_event_open_nonverbose.c
index 45d7c8f..b67715c 100644
--- a/tests-mx32/perf_event_open_nonverbose.c
+++ b/tests-mx32/perf_event_open_nonverbose.c
@@ -2,6 +2,7 @@
  * Check decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,7 +63,7 @@
 int
 main(void)
 {
-	struct perf_event_attr *attr = tail_alloc(sizeof(*attr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, attr);
 
 	attr->type = PERF_TYPE_HARDWARE;
 	attr->size = sizeof(*attr);
diff --git a/tests-mx32/perf_event_open_nonverbose.gen.test b/tests-mx32/perf_event_open_nonverbose.gen.test
new file mode 100755
index 0000000..f1ed333
--- /dev/null
+++ b/tests-mx32/perf_event_open_nonverbose.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_nonverbose -a34 -e verbose=none -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests-mx32/perf_event_open_nonverbose.test b/tests-mx32/perf_event_open_nonverbose.test
deleted file mode 100755
index 404827f..0000000
--- a/tests-mx32/perf_event_open_nonverbose.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of perf_event_open syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests-mx32/perf_event_open_unabbrev.gen.test b/tests-mx32/perf_event_open_unabbrev.gen.test
new file mode 100755
index 0000000..1d9bd85
--- /dev/null
+++ b/tests-mx32/perf_event_open_unabbrev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_unabbrev -a1 -v -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests-mx32/perf_event_open_unabbrev.test b/tests-mx32/perf_event_open_unabbrev.test
deleted file mode 100755
index f17fd17..0000000
--- a/tests-mx32/perf_event_open_unabbrev.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check perf_event_open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests-mx32/personality.test b/tests-mx32/personality.test
index 8f8c0ad..ab2faf4 100755
--- a/tests-mx32/personality.test
+++ b/tests-mx32/personality.test
@@ -5,8 +5,5 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -a20 -epersonality $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -epersonality $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests-mx32/pipe.c b/tests-mx32/pipe.c
index 41c7f21..3df2094 100644
--- a/tests-mx32/pipe.c
+++ b/tests-mx32/pipe.c
@@ -2,6 +2,7 @@
  * Check decoding of pipe syscall.
  *
  * 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
diff --git a/tests-mx32/pipe2.c b/tests-mx32/pipe2.c
index 375ae74..3a0e046 100644
--- a/tests-mx32/pipe2.c
+++ b/tests-mx32/pipe2.c
@@ -39,18 +39,16 @@
 int
 main(void)
 {
-	static const kernel_ulong_t bogus_zero =
-		(kernel_ulong_t) 0xffffffff00000000ULL;
 	int *const fds = tail_alloc(sizeof(*fds) * 2);
 	int *const efault = fds + 1;
 	long rc;
 
-	rc = syscall(__NR_pipe2, fds, bogus_zero | O_NONBLOCK);
+	rc = syscall(__NR_pipe2, fds, F8ILL_KULONG_MASK | O_NONBLOCK);
 	if (rc)
 		perror_msg_and_skip("pipe2");
 	printf("pipe2([%d, %d], O_NONBLOCK) = 0\n", fds[0], fds[1]);
 
-	rc = syscall(__NR_pipe2, efault, bogus_zero);
+	rc = syscall(__NR_pipe2, efault, F8ILL_KULONG_MASK);
 	printf("pipe2(%p, 0) = %s\n", efault, sprintrc(rc));
 
 	if (F8ILL_KULONG_SUPPORTED) {
diff --git a/tests-mx32/pipe2.gen.test b/tests-mx32/pipe2.gen.test
new file mode 100755
index 0000000..5a06c03
--- /dev/null
+++ b/tests-mx32/pipe2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-mx32/pipe2.test b/tests-mx32/pipe2.test
deleted file mode 100755
index aff6cd4..0000000
--- a/tests-mx32/pipe2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pipe2 syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a15
diff --git a/tests-mx32/pkey_alloc.gen.test b/tests-mx32/pkey_alloc.gen.test
new file mode 100755
index 0000000..b3e5869
--- /dev/null
+++ b/tests-mx32/pkey_alloc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/pkey_alloc.test b/tests-mx32/pkey_alloc.test
deleted file mode 100755
index f168c21..0000000
--- a/tests-mx32/pkey_alloc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_alloc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-mx32/pkey_free.gen.test b/tests-mx32/pkey_free.gen.test
new file mode 100755
index 0000000..588d1aa
--- /dev/null
+++ b/tests-mx32/pkey_free.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/pkey_free.test b/tests-mx32/pkey_free.test
deleted file mode 100755
index 9c01c3e..0000000
--- a/tests-mx32/pkey_free.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_free syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests-mx32/pkey_mprotect.gen.test b/tests-mx32/pkey_mprotect.gen.test
new file mode 100755
index 0000000..14be231
--- /dev/null
+++ b/tests-mx32/pkey_mprotect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/pkey_mprotect.test b/tests-mx32/pkey_mprotect.test
deleted file mode 100755
index 922d491..0000000
--- a/tests-mx32/pkey_mprotect.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_mprotect syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests-mx32/poll.test b/tests-mx32/poll.test
index b74be29..d09193d 100755
--- a/tests-mx32/poll.test
+++ b/tests-mx32/poll.test
@@ -5,13 +5,11 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -a16 -vepoll $args > "$OUT"
-match_diff "$LOG" "$OUT"
+run_strace -a16 -vepoll $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 $args > "$OUT"
-	match_diff "$LOG" "$OUT"
+	run_prog "../$NAME" $abbrev > /dev/null
+	run_strace -a16 -epoll -s$abbrev $args > "$EXP"
+	match_diff "$LOG" "$EXP"
 done
-
-rm -f "$OUT"
diff --git a/tests-mx32/ppoll-v.c b/tests-mx32/ppoll-v.c
new file mode 100644
index 0000000..cf4fdea
--- /dev/null
+++ b/tests-mx32/ppoll-v.c
@@ -0,0 +1,3 @@
+/* This file is part of ppoll-v strace test. */
+#define VERBOSE 1
+#include "ppoll.c"
diff --git a/tests-mx32/ppoll-v.expected b/tests-mx32/ppoll-v.expected
deleted file mode 100644
index 31070ad..0000000
--- a/tests-mx32/ppoll-v.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \{fd=3, events=POLLIN\|POLLPRI\}, \{fd=4, events=POLLOUT\}\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
-ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests-mx32/ppoll-v.gen.test b/tests-mx32/ppoll-v.gen.test
new file mode 100755
index 0000000..cd1fcc6
--- /dev/null
+++ b/tests-mx32/ppoll-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll-v -v -s2 -e trace=ppoll); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -s2 -e trace=ppoll
diff --git a/tests-mx32/ppoll.c b/tests-mx32/ppoll.c
index 46d7e81..85a7e0c 100644
--- a/tests-mx32/ppoll.c
+++ b/tests-mx32/ppoll.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of ppoll 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
@@ -26,69 +28,165 @@
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <poll.h>
-#include <signal.h>
-#include <unistd.h>
+#include <asm/unistd.h>
 
-static void
-test1(void)
+#ifdef __NR_ppoll
+
+# include <errno.h>
+# include <poll.h>
+# include <signal.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+sys_ppoll(const kernel_ulong_t ufds,
+	  const kernel_ulong_t nfds,
+	  const kernel_ulong_t tsp,
+	  const kernel_ulong_t sigmask,
+	  const kernel_ulong_t sigsetsize)
 {
-	const struct timespec timeout = { .tv_sec = 42, .tv_nsec = 999999999 };
-	struct pollfd fds[] = {
-		{ .fd = 0, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 1, .events = POLLOUT | POLLWRNORM | POLLWRBAND },
-		{ .fd = 3, .events = POLLIN | POLLPRI },
-		{ .fd = 4, .events = POLLOUT }
-	};
-
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-
-	int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
-	if (rc < 0)
-		perror_msg_and_skip("ppoll");
-	assert(rc == 2);
-}
-
-static void
-test2(void)
-{
-	const struct timespec timeout = { .tv_sec = 0, .tv_nsec = 999 };
-	struct pollfd fds[] = {
-		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
-	};
-
-	sigset_t mask;
-	sigfillset(&mask);
-	sigdelset(&mask, SIGHUP);
-	sigdelset(&mask, SIGKILL);
-	sigdelset(&mask, SIGSTOP);
-
-	int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
-	if (rc < 0)
-		perror_msg_and_skip("ppoll");
-	assert(rc == 0);
+	long rc = syscall(__NR_ppoll, ufds, nfds, tsp, sigmask, sigsetsize);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 int
 main(void)
 {
-	int fds[2];
+	static const kernel_ulong_t bogus_nfds =
+		(kernel_ulong_t) 0xdeadbeeffacefeedULL;
+	static const kernel_ulong_t bogus_sigsetsize =
+		(kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+	static const char *const POLLWRNORM_str =
+		(POLLWRNORM == POLLOUT) ? "" : "|POLLWRNORM";
+	static const char *const USR2_CHLD_str =
+		(SIGUSR2 < SIGCHLD) ? "USR2 CHLD" : "CHLD USR2";
+	void *const efault = tail_alloc(1024) + 1024;
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+	const unsigned int sigset_size = get_sigset_size();
+	void *const sigmask = tail_alloc(sigset_size);
+	struct pollfd *fds;
+	sigset_t mask;
+	int pipe_fd[4];
+	long rc;
 
-	(void) close(0);
-	(void) close(1);
-	(void) close(3);
-	(void) close(4);
-	if (pipe(fds) || pipe(fds))
+	sys_ppoll(0, bogus_nfds, 0, 0, bogus_sigsetsize);
+	if (ENOSYS == errno)
+		perror_msg_and_skip("ppoll");
+	printf("ppoll(NULL, %u, NULL, NULL, %llu) = %s\n",
+	       (unsigned) bogus_nfds, (unsigned long long) bogus_sigsetsize,
+	       errstr);
+
+	sys_ppoll((unsigned long) efault, 42, (unsigned long) efault + 8,
+		  (unsigned long) efault + 16, sigset_size);
+	printf("ppoll(%p, %u, %p, %p, %u) = %s\n",
+	       efault, 42, efault + 8, efault + 16, sigset_size, errstr);
+
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+	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);
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedL;
+	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+	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);
+
+	if (pipe(pipe_fd) || pipe(pipe_fd + 2))
 		perror_msg_and_fail("pipe");
 
-	test1();
-	test2();
+	ts->tv_sec = 42;
+	ts->tv_nsec = 999999999;
 
-	assert(ppoll(NULL, 42, NULL, NULL) < 0);
+	const struct pollfd fds1[] = {
+		{ .fd = pipe_fd[0], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = pipe_fd[1], .events = POLLOUT | POLLWRNORM | POLLWRBAND },
+		{ .fd = pipe_fd[2], .events = POLLIN | POLLPRI },
+		{ .fd = pipe_fd[3], .events = POLLOUT }
+	};
+	fds = efault - sizeof(fds1);
+	memcpy(fds, fds1, sizeof(fds1));
+
+	sigemptyset(&mask);
+	sigaddset(&mask, SIGUSR2);
+	sigaddset(&mask, SIGCHLD);
+	memcpy(sigmask, &mask, sigset_size);
+
+	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 1");
+	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=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
+	       pipe_fd[2], pipe_fd[3],
+#endif
+	       (unsigned) ARRAY_SIZE(fds1), USR2_CHLD_str,
+	       (unsigned) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
+	       pipe_fd[3], (unsigned ) ts->tv_sec, (unsigned) ts->tv_nsec);
+
+	ts->tv_sec = 0;
+	ts->tv_nsec = 999;
+	const struct pollfd fds2[] = {
+		{ .fd = pipe_fd[1], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = pipe_fd[0], .events = POLLOUT | POLLWRNORM | POLLWRBAND }
+	};
+	fds = efault - sizeof(fds2);
+	memcpy(fds, fds2, sizeof(fds2));
+
+	memset(&mask, -1, sizeof(mask));
+	sigdelset(&mask, SIGHUP);
+	sigdelset(&mask, SIGKILL);
+	sigdelset(&mask, SIGSTOP);
+	memcpy(sigmask, &mask, sigset_size);
+
+	rc = sys_ppoll((unsigned long) fds,
+		       F8ILL_KULONG_MASK | ARRAY_SIZE(fds2), (unsigned long) ts,
+		       (unsigned long) sigmask, sigset_size);
+	if (rc != 0)
+		perror_msg_and_fail("ppoll 2");
+	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);
+
+	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);
+		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);
+	}
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ppoll")
+
+#endif
diff --git a/tests-mx32/ppoll.expected b/tests-mx32/ppoll.expected
deleted file mode 100644
index c38a206..0000000
--- a/tests-mx32/ppoll.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \.\.\.\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
-ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests-mx32/ppoll.gen.test b/tests-mx32/ppoll.gen.test
new file mode 100755
index 0000000..4c07598
--- /dev/null
+++ b/tests-mx32/ppoll.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2
diff --git a/tests-mx32/ppoll.test b/tests-mx32/ppoll.test
deleted file mode 100755
index 98389ee..0000000
--- a/tests-mx32/ppoll.test
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# Check ppoll syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -a30 -s2 -e ppoll $args
-match_grep
-run_strace -a30 -v -s2 -e ppoll $args
-match_grep "$LOG" "$srcdir/$NAME-v.expected"
-
-exit 0
diff --git a/tests-mx32/prctl-arg2-intptr.c b/tests-mx32/prctl-arg2-intptr.c
index ee000eb..9cc3308 100644
--- a/tests-mx32/prctl-arg2-intptr.c
+++ b/tests-mx32/prctl-arg2-intptr.c
@@ -4,6 +4,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * 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
@@ -70,7 +71,7 @@
 		{ 11, "PR_GET_FPEXC" },
 	};
 
-	unsigned int *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
 	long rc;
 	unsigned int i;
 
diff --git a/tests-mx32/prctl-arg2-intptr.test b/tests-mx32/prctl-arg2-intptr.test
index bcef806..4f9e3a1 100755
--- a/tests-mx32/prctl-arg2-intptr.test
+++ b/tests-mx32/prctl-arg2-intptr.test
@@ -10,5 +10,3 @@
 LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^CEF]|.[^HNP]|..[^DEI])' \
 	< "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-dumpable.test b/tests-mx32/prctl-dumpable.test
index 08acb8b..05f1310 100755
--- a/tests-mx32/prctl-dumpable.test
+++ b/tests-mx32/prctl-dumpable.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^D][^U]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-name.test b/tests-mx32/prctl-name.test
index 071179c..95d34b6 100755
--- a/tests-mx32/prctl-name.test
+++ b/tests-mx32/prctl-name.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_GET_[^N][^A]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-no-args.c b/tests-mx32/prctl-no-args.c
index 57e1b73..496cd1a 100644
--- a/tests-mx32/prctl-no-args.c
+++ b/tests-mx32/prctl-no-args.c
@@ -4,6 +4,7 @@
  * PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,7 +58,7 @@
 		{ 32, "PR_TASK_PERF_EVENTS_ENABLE" },
 	};
 
-	unsigned int *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(options); i++) {
diff --git a/tests-mx32/prctl-no-args.test b/tests-mx32/prctl-no-args.test
index ce8ca67..8ff300b 100755
--- a/tests-mx32/prctl-no-args.test
+++ b/tests-mx32/prctl-no-args.test
@@ -10,5 +10,3 @@
 run_strace -a21 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^KST][^EI][^CEM]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-pdeathsig.c b/tests-mx32/prctl-pdeathsig.c
index c176030..ef56374 100644
--- a/tests-mx32/prctl-pdeathsig.c
+++ b/tests-mx32/prctl-pdeathsig.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 	static const kernel_ulong_t bogus_signal =
 		(kernel_ulong_t) 0xbadc0deddeadfeedULL;
 
-	int *pdeathsig = tail_alloc(sizeof(*pdeathsig));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, pdeathsig);
 	long rc;
 
 	rc = syscall(__NR_prctl, PR_SET_PDEATHSIG, bogus_signal);
diff --git a/tests-mx32/prctl-pdeathsig.test b/tests-mx32/prctl-pdeathsig.test
index 2777503..b6e0140 100755
--- a/tests-mx32/prctl-pdeathsig.test
+++ b/tests-mx32/prctl-pdeathsig.test
@@ -9,5 +9,3 @@
 run_strace -a30 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^P][^D]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-seccomp-filter-v.test b/tests-mx32/prctl-seccomp-filter-v.test
index 44e4a78..3663ad8 100755
--- a/tests-mx32/prctl-seccomp-filter-v.test
+++ b/tests-mx32/prctl-seccomp-filter-v.test
@@ -9,5 +9,3 @@
 run_strace -v -eprctl $args > "$EXP"
 grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-seccomp-strict.test b/tests-mx32/prctl-seccomp-strict.test
index 1f987df..bee85b8 100755
--- a/tests-mx32/prctl-seccomp-strict.test
+++ b/tests-mx32/prctl-seccomp-strict.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 check_prog grep
-set -- "./$NAME"
+set -- "../$NAME"
 "$@" > /dev/null || {
 	case $? in
 		77) skip_ "$* exited with code 77" ;;
@@ -16,4 +16,3 @@
 run_strace -eprctl "$@" > "$EXP"
 grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-securebits.test b/tests-mx32/prctl-securebits.test
index c91e62a..32b0f2a 100755
--- a/tests-mx32/prctl-securebits.test
+++ b/tests-mx32/prctl-securebits.test
@@ -8,5 +8,3 @@
 run_strace -a25 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^S][^E][^C][^U]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-tid_address.c b/tests-mx32/prctl-tid_address.c
index 24e4503..609e549 100644
--- a/tests-mx32/prctl-tid_address.c
+++ b/tests-mx32/prctl-tid_address.c
@@ -2,6 +2,7 @@
  * Check decoding of prctl PR_GET_TID_ADDRESS operation.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -59,7 +60,7 @@
 		(kernel_ulong_t) 0xfffffffffffffffdULL;
 
 	/* Note that kernel puts kernel-sized pointer even on x32 */
-	kernel_ulong_t *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(kernel_ulong_t, ptr);
 	long rc;
 	long set_ok;
 
diff --git a/tests-mx32/prctl-tid_address.test b/tests-mx32/prctl-tid_address.test
index dc7b7c3..62a39e5 100755
--- a/tests-mx32/prctl-tid_address.test
+++ b/tests-mx32/prctl-tid_address.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^T]|.[^I]|..[^D])' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/prctl-tsc.c b/tests-mx32/prctl-tsc.c
index fd9362d..0ddb380 100644
--- a/tests-mx32/prctl-tsc.c
+++ b/tests-mx32/prctl-tsc.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,7 +44,7 @@
 	static const kernel_ulong_t bogus_tsc =
 		(kernel_ulong_t) 0xdeadc0defacebeefULL;
 
-	int *tsc = tail_alloc(sizeof(*tsc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, tsc);
 	long rc;
 
 	rc = syscall(__NR_prctl, PR_SET_TSC, 0);
diff --git a/tests-mx32/prctl-tsc.test b/tests-mx32/prctl-tsc.test
index a906ba8..439d9d5 100755
--- a/tests-mx32/prctl-tsc.test
+++ b/tests-mx32/prctl-tsc.test
@@ -9,5 +9,3 @@
 run_strace -a24 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^T][^S]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests-mx32/pread64-pwrite64.c b/tests-mx32/pread64-pwrite64.c
index 4a0932a..e9d7a64 100644
--- a/tests-mx32/pread64-pwrite64.c
+++ b/tests-mx32/pread64-pwrite64.c
@@ -2,6 +2,7 @@
  * Check decoding of pread64 and pwrite64 syscalls.
  *
  * 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
@@ -123,7 +124,9 @@
 {
 	tprintf("%s", "");
 
-	static char tmp[] = "pread64-pwrite64-tmpfile";
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const char tmp[] = "pread64-pwrite64-tmpfile";
 	if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
 		perror_msg_and_fail("creat: %s", tmp);
 	if (open(tmp, O_WRONLY) != 1)
diff --git a/tests-mx32/pread64-pwrite64.gen.test b/tests-mx32/pread64-pwrite64.gen.test
new file mode 100755
index 0000000..b53e069
--- /dev/null
+++ b/tests-mx32/pread64-pwrite64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pread64-pwrite64 -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests-mx32/pread64-pwrite64.test b/tests-mx32/pread64-pwrite64.test
deleted file mode 100755
index e585406..0000000
--- a/tests-mx32/pread64-pwrite64.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of pread64 and pwrite64 syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=pread64-pwrite64-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
-	-a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 \
-	-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests-mx32/preadv-pwritev.gen.test b/tests-mx32/preadv-pwritev.gen.test
new file mode 100755
index 0000000..5ed8297
--- /dev/null
+++ b/tests-mx32/preadv-pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv-pwritev -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests-mx32/preadv-pwritev.test b/tests-mx32/preadv-pwritev.test
deleted file mode 100755
index cb2a077..0000000
--- a/tests-mx32/preadv-pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv and pwritev syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests-mx32/preadv.c b/tests-mx32/preadv.c
index fb5d3ad..a55909b 100644
--- a/tests-mx32/preadv.c
+++ b/tests-mx32/preadv.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
@@ -66,7 +67,7 @@
 {
 	const off_t offset = 0xdefaceddeadbeefLL;
 	char *buf = tail_alloc(LEN);
-	struct iovec *iov = tail_alloc(sizeof(*iov));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = buf;
 	iov->iov_len = LEN;
 
diff --git a/tests-mx32/preadv.gen.test b/tests-mx32/preadv.gen.test
new file mode 100755
index 0000000..8fb7b54
--- /dev/null
+++ b/tests-mx32/preadv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-mx32/preadv.test b/tests-mx32/preadv.test
deleted file mode 100755
index d1abdb7..0000000
--- a/tests-mx32/preadv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check preadv syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-mx32/preadv2-pwritev2.c b/tests-mx32/preadv2-pwritev2.c
index f7c46c0..e31e046 100644
--- a/tests-mx32/preadv2-pwritev2.c
+++ b/tests-mx32/preadv2-pwritev2.c
@@ -2,6 +2,7 @@
  * Check decoding of preadv2 and pwritev2 syscalls.
  *
  * 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
@@ -181,26 +182,45 @@
 main(void)
 {
 	const kernel_ulong_t vlen = (kernel_ulong_t) 0xfac1fed2dad3bef4ULL;
-	const unsigned long long pos = 0xfac5fed6dad7bef8;
+	const unsigned long long pos = 0x7ac5fed6dad7bef8;
 	const kernel_ulong_t pos_l = (kernel_ulong_t) pos;
-	const kernel_ulong_t pos_h =
-		(sizeof(kernel_ulong_t) == sizeof(long long)) ?
-		(kernel_ulong_t) 0xbadc0deddeadbeefULL : 0xfac5fed6UL;
-	int test_dumpio = 1;
+	long rc;
+	int test_dumpio;
 
 	tprintf("%s", "");
 
-	syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
-	if (ENOSYS == errno)
-		test_dumpio = 0;
-	tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
-		(unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+	/*
+	 * x32 is the only architecture where preadv2 takes 5 arguments,
+	 * see preadv64v2 in kernel sources.
+	 */
+	rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, 1);
+#else
+	const kernel_ulong_t pos_h =
+		(sizeof(pos_l) == sizeof(pos)) ?
+		(kernel_ulong_t) 0xbadc0deddeadbeefULL :
+		(kernel_ulong_t) (pos >> 32);
+	rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+	if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+		perror_msg_and_fail("preadv2");
+	test_dumpio = EBADF == errno;
+	tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+		(unsigned long) vlen, pos, sprintrc(rc));
 
-	syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
-	if (ENOSYS == errno)
-		test_dumpio = 0;
-	tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
-		(unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+	/*
+	 * x32 is the only architecture where pwritev2 takes 5 arguments,
+	 * see pwritev64v2 in kernel sources.
+	 */
+	rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, 1);
+#else
+	rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+	if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+		perror_msg_and_fail("pwritev2");
+	tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+		(unsigned long) vlen, pos, sprintrc(rc));
 
 	if (test_dumpio)
 		dumpio();
diff --git a/tests-mx32/preadv2-pwritev2.gen.test b/tests-mx32/preadv2-pwritev2.gen.test
new file mode 100755
index 0000000..2f89b41
--- /dev/null
+++ b/tests-mx32/preadv2-pwritev2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv2-pwritev2 -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests-mx32/preadv2-pwritev2.test b/tests-mx32/preadv2-pwritev2.test
deleted file mode 100755
index 5641ef4..0000000
--- a/tests-mx32/preadv2-pwritev2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv2 and pwritev2 syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests-mx32/print_time.c b/tests-mx32/print_time.c
new file mode 100644
index 0000000..4292329
--- /dev/null
+++ b/tests-mx32/print_time.c
@@ -0,0 +1,75 @@
+/*
+ * Print time_t and nanoseconds in symbolic format.
+ *
+ * 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 <stdio.h>
+#include <time.h>
+
+static void
+print_time_t_ex(const time_t t, const unsigned long long part_sec,
+		const unsigned int max_part_sec, const int width,
+		const int comment)
+{
+
+	if ((!t && !part_sec) || part_sec > max_part_sec)
+		return;
+
+	const struct tm *const p = localtime(&t);
+	char buf[256];
+	if (!p || !strftime(buf, sizeof(buf), "%FT%T", p))
+		return;
+
+	if (comment)
+		fputs(" /* ", stdout);
+
+	fputs(buf, stdout);
+
+	if (part_sec)
+		printf(".%0*llu", width, part_sec);
+
+	if (strftime(buf, sizeof(buf), "%z", p))
+		fputs(buf, stdout);
+
+	if (comment)
+		fputs(" */", stdout);
+
+	return;
+}
+
+void
+print_time_t_nsec(const time_t t, const unsigned long long nsec, int comment)
+{
+	print_time_t_ex(t, nsec, 999999999, 9, comment);
+}
+
+void
+print_time_t_usec(const time_t t, const unsigned long long usec, int comment)
+{
+	print_time_t_ex(t, usec, 999999, 6, comment);
+}
diff --git a/tests-mx32/printstr.gen.test b/tests-mx32/printstr.gen.test
new file mode 100755
index 0000000..c3bd93a
--- /dev/null
+++ b/tests-mx32/printstr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (printstr -e trace=writev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=writev
diff --git a/tests-mx32/printstr.test b/tests-mx32/printstr.test
deleted file mode 100755
index 5f164eb..0000000
--- a/tests-mx32/printstr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of non-NUL-terminated strings when len == -1.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -e trace=writev
diff --git a/tests-mx32/prlimit64.gen.test b/tests-mx32/prlimit64.gen.test
new file mode 100755
index 0000000..11964a5
--- /dev/null
+++ b/tests-mx32/prlimit64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/prlimit64.test b/tests-mx32/prlimit64.test
deleted file mode 100755
index 2d2240d..0000000
--- a/tests-mx32/prlimit64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of prlimit64 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/process_vm_readv.gen.test b/tests-mx32/process_vm_readv.gen.test
new file mode 100755
index 0000000..3142588
--- /dev/null
+++ b/tests-mx32/process_vm_readv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_readv -s5 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a37
diff --git a/tests-mx32/process_vm_readv.test b/tests-mx32/process_vm_readv.test
deleted file mode 100755
index c092f5a..0000000
--- a/tests-mx32/process_vm_readv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of process_vm_readv syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s5 -a37
diff --git a/tests-mx32/process_vm_writev.gen.test b/tests-mx32/process_vm_writev.gen.test
new file mode 100755
index 0000000..0b912c0
--- /dev/null
+++ b/tests-mx32/process_vm_writev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_writev -s5 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a38
diff --git a/tests-mx32/process_vm_writev.test b/tests-mx32/process_vm_writev.test
deleted file mode 100755
index f690e6a..0000000
--- a/tests-mx32/process_vm_writev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of process_vm_writev syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s5 -a38
diff --git a/tests-mx32/pselect6.c b/tests-mx32/pselect6.c
index f264485..f5939f3 100644
--- a/tests-mx32/pselect6.c
+++ b/tests-mx32/pselect6.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -95,13 +96,13 @@
 	FD_SET(fds[0], set[1]);
 	FD_SET(fds[1], set[1]);
 	assert(syscall(__NR_pselect6, fds[1] + 1, NULL, set[1], NULL, &tm.ts, NULL) == 3);
-	printf("pselect6(%d, NULL, [1 2 %d %d], NULL, "
-	       "{tv_sec=%lld, tv_nsec=%lld}, NULL) = 3 (out [1 2 %d], left "
-	       "{tv_sec=%lld, tv_nsec=%lld})\n",
-	       fds[1] + 1, fds[0], fds[1],
-	       (long long) tm_in.ts.tv_sec, (long long) tm_in.ts.tv_nsec,
-	       fds[1],
-	       (long long) tm.ts.tv_sec, (long long) tm.ts.tv_nsec);
+	printf("pselect6(%d, NULL, [1 2 %d %d], NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 3 (out [1 2 %d]"
+	       ", left {tv_sec=%lld, tv_nsec=%llu})\n",
+	       fds[1] + 1, fds[0], fds[1], (long long) tm_in.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm_in.ts.tv_nsec),
+	       fds[1], (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec));
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
@@ -122,21 +123,40 @@
 	tm.ts.tv_sec = 0;
 	tm.ts.tv_nsec = 123;
 	assert(pselect(FD_SETSIZE + 1, set[0], set[1], NULL, &tm.ts, &mask) == 0);
-	printf("pselect6(%d, [%d], [], NULL, {tv_sec=0, tv_nsec=123}, "
-	       "{[HUP CHLD], %u}) = 0 (Timeout)\n",
+	printf("pselect6(%d, [%d], [], NULL, {tv_sec=0, tv_nsec=123}"
+	       ", {[HUP CHLD], %u}) = 0 (Timeout)\n",
 	       FD_SETSIZE + 1, fds[0], NSIG_BYTES);
 
 	/*
 	 * See how timeouts are decoded.
 	 */
+	tm.ts.tv_sec = 0xdeadbeefU;
+	tm.ts.tv_nsec = 0xfacefeedU;
+	assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+	printf("pselect6(0, NULL, NULL, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+	       (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec),
+	       NSIG_BYTES, sprintrc(-1));
+
+	tm.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tm.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+	printf("pselect6(0, NULL, NULL, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+	       (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec),
+	       NSIG_BYTES, sprintrc(-1));
+
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(setitimer(ITIMER_REAL, &itv, NULL) == 0);
 
+	tm.ts.tv_sec = 0;
 	tm.ts.tv_nsec = 222222222;
 	assert(pselect(0, NULL, NULL, NULL, &tm.ts, &mask) == -1);
-	printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}, "
-	       "{[HUP CHLD], %u}) = "
-	       "? ERESTARTNOHAND (To be restarted if no handler)\n",
+	printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}"
+	       ", {[HUP CHLD], %u})"
+	       " = ? ERESTARTNOHAND (To be restarted if no handler)\n",
 	       NSIG_BYTES);
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
diff --git a/tests-mx32/pselect6.gen.test b/tests-mx32/pselect6.gen.test
new file mode 100755
index 0000000..c89e705
--- /dev/null
+++ b/tests-mx32/pselect6.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/pselect6.test b/tests-mx32/pselect6.test
deleted file mode 100755
index 203f8e2..0000000
--- a/tests-mx32/pselect6.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pselect6 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/ptrace.c b/tests-mx32/ptrace.c
index 80ce8cb..9e0ffdc 100644
--- a/tests-mx32/ptrace.c
+++ b/tests-mx32/ptrace.c
@@ -2,6 +2,7 @@
  * Check decoding of ptrace syscall.
  *
  * 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
@@ -30,16 +31,14 @@
 #include "tests.h"
 #include <asm/unistd.h>
 
-#ifdef __NR_rt_sigprocmask
-
-# include <errno.h>
-# include <signal.h>
-# include <stdio.h>
-# include <string.h>
-# include <sys/wait.h>
-# include <unistd.h>
-# include "ptrace.h"
-# include <linux/audit.h>
+#include <errno.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;
 
@@ -178,46 +177,38 @@
 	const unsigned long pid =
 		(unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
 
-	unsigned int sigset_size;
-
-	for (sigset_size = 1024 / 8; sigset_size; sigset_size >>= 1) {
-		if (!syscall(__NR_rt_sigprocmask,
-			     SIG_SETMASK, NULL, NULL, sigset_size))
-			break;
-	}
-	if (!sigset_size)
-		perror_msg_and_fail("rt_sigprocmask");
+	const unsigned int sigset_size = get_sigset_size();
 
 	void *const k_set = tail_alloc(sigset_size);
-	siginfo_t *const sip = tail_alloc(sizeof(*sip));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sip);
 
 	do_ptrace(bad_request, pid, 0, 0);
 	printf("ptrace(%#lx /* PTRACE_??? */, %u, NULL, NULL) = %s\n",
 	       bad_request, (unsigned) pid, errstr);
 
 	do_ptrace(PTRACE_PEEKDATA, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
 	do_ptrace(PTRACE_PEEKTEXT, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
 	do_ptrace(PTRACE_PEEKUSER, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
@@ -446,10 +437,3 @@
 	puts("+++ exited with 0 +++");
 	return 0;
 }
-
-
-#else
-
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask")
-
-#endif
diff --git a/tests-mx32/ptrace.gen.test b/tests-mx32/ptrace.gen.test
new file mode 100755
index 0000000..4b93250
--- /dev/null
+++ b/tests-mx32/ptrace.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ptrace -a23 -e signal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e signal=none
diff --git a/tests-mx32/ptrace.test b/tests-mx32/ptrace.test
deleted file mode 100755
index 5add9be..0000000
--- a/tests-mx32/ptrace.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ptrace syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e signal=none
diff --git a/tests-mx32/pure_executables.list b/tests-mx32/pure_executables.list
new file mode 100755
index 0000000..cc65614
--- /dev/null
+++ b/tests-mx32/pure_executables.list
@@ -0,0 +1,330 @@
+# executables without side effects
+_newselect
+accept
+accept4
+access
+acct
+add_key
+adjtimex
+aio
+alarm
+bpf
+brk
+btrfs
+caps
+chmod
+chown
+chown32
+chroot
+clock_adjtime
+clock_nanosleep
+clock_xettime
+copy_file_range
+creat
+delete_module
+dup
+dup2
+dup3
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erestartsys
+eventfd
+execve
+execveat
+faccessat
+fadvise64
+fadvise64_64
+fallocate
+fanotify_init
+fanotify_mark
+fchdir
+fchmod
+fchmodat
+fchown
+fchown32
+fchownat
+fcntl
+fcntl64
+fdatasync
+file_handle
+file_ioctl
+finit_module
+flock
+fstat
+fstat64
+fstatat64
+fstatfs
+fstatfs64
+fsync
+ftruncate
+ftruncate64
+futex
+futimesat
+get_mempolicy
+getcpu
+getcwd
+getdents
+getdents64
+getegid
+getegid32
+geteuid
+geteuid32
+getgid
+getgid32
+getgroups
+getgroups32
+getpeername
+getpgrp
+getpid
+getppid
+getrandom
+getresgid
+getresgid32
+getresuid
+getresuid32
+getrlimit
+getrusage
+getsid
+getsockname
+getuid
+getuid32
+getxxid
+inet-cmsg
+init_module
+inotify
+inotify_init1
+ioctl
+ioctl_block
+ioctl_dm
+ioctl_evdev
+ioctl_loop
+ioctl_mtd
+ioctl_rtc
+ioctl_scsi
+ioctl_sg_io_v3
+ioctl_sg_io_v4
+ioctl_sock_gifconf
+ioctl_uffdio
+ioctl_v4l2
+ioperm
+iopl
+ioprio
+ip_mreq
+ipc
+ipc_msg
+ipc_msgbuf
+ipc_sem
+ipc_shm
+kcmp
+kexec_file_load
+kexec_load
+keyctl
+kill
+lchown
+lchown32
+link
+linkat
+llseek
+lookup_dcookie
+lseek
+lstat
+lstat64
+madvise
+mbind
+membarrier
+memfd_create
+migrate_pages
+mincore
+mkdir
+mkdirat
+mknod
+mknodat
+mlock
+mlock2
+mlockall
+mmap
+mmap64
+mmsg
+mmsg_name
+mount
+move_pages
+mq
+mq_sendrecv
+mq_sendrecv-read
+mq_sendrecv-write
+msg_control
+msg_name
+munlockall
+nanosleep
+net-icmp_filter
+net-sockaddr
+net-y-unix
+net-yy-inet
+net-yy-netlink
+net-yy-unix
+netlink_protocol
+newfstatat
+old_mmap
+oldfstat
+oldlstat
+oldselect
+oldstat
+open
+openat
+osf_utimes
+pause
+perf_event_open
+personality
+pipe
+pipe2
+pkey_alloc
+pkey_free
+pkey_mprotect
+poll
+ppoll
+prctl-arg2-intptr
+prctl-dumpable
+prctl-name
+prctl-no-args
+prctl-pdeathsig
+prctl-securebits
+prctl-tid_address
+prctl-tsc
+pread64-pwrite64
+preadv
+preadv-pwritev
+preadv2-pwritev2
+printstr
+prlimit64
+process_vm_readv
+process_vm_writev
+pselect6
+ptrace
+pwritev
+quotactl
+quotactl-xfs
+read-write
+readahead
+readdir
+readlink
+readlinkat
+readv
+reboot
+recvfrom
+recvmmsg-timeout
+recvmsg
+remap_file_pages
+rename
+renameat
+renameat2
+request_key
+rmdir
+rt_sigpending
+rt_sigprocmask
+rt_sigqueueinfo
+rt_sigreturn
+rt_sigsuspend
+rt_sigtimedwait
+rt_tgsigqueueinfo
+sched_get_priority_mxx
+sched_rr_get_interval
+sched_xetaffinity
+sched_xetattr
+sched_xetparam
+sched_xetscheduler
+sched_yield
+seccomp-filter
+select
+semop
+sendfile
+sendfile64
+set_mempolicy
+setdomainname
+setfsgid
+setfsgid32
+setfsuid
+setfsuid32
+setgid
+setgid32
+setgroups
+setgroups32
+sethostname
+setns
+setregid
+setregid32
+setresgid
+setresgid32
+setresuid
+setresuid32
+setreuid
+setreuid32
+setrlimit
+setuid
+setuid32
+shmxt
+shutdown
+sigaction
+sigaltstack
+siginfo
+signalfd4
+sigreturn
+sigsuspend
+socketcall
+splice
+stat
+stat64
+statfs
+statfs64
+statx
+swap
+sxetmask
+symlink
+symlinkat
+sync
+sync_file_range
+sync_file_range2
+sysinfo
+syslog
+tee
+time
+timer_create
+timer_xettime
+timerfd_xettime
+times
+times-fail
+truncate
+truncate64
+ugetrlimit
+uio
+umask
+umount
+umount2
+umoven-illptr
+umovestr
+umovestr-illptr
+umovestr2
+umovestr3
+uname
+unlink
+unlinkat
+unshare
+userfaultfd
+ustat
+utime
+utimensat
+utimes
+vhangup
+vmsplice
+wait4
+waitid
+waitpid
+xattr
+xattr-strings
+xet_robust_list
+xetitimer
+xetpgid
+xetpriority
+xettimeofday
diff --git a/tests-mx32/pwritev.gen.test b/tests-mx32/pwritev.gen.test
new file mode 100755
index 0000000..e54fd15
--- /dev/null
+++ b/tests-mx32/pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pwritev -a22 -s7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s7
diff --git a/tests-mx32/pwritev.test b/tests-mx32/pwritev.test
deleted file mode 100755
index 0aed683..0000000
--- a/tests-mx32/pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pwritev syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -s7
diff --git a/tests-mx32/qual_fault-exit_group.test b/tests-mx32/qual_fault-exit_group.test
index c98ffc6..34a2da5 100755
--- a/tests-mx32/qual_fault-exit_group.test
+++ b/tests-mx32/qual_fault-exit_group.test
@@ -3,6 +3,7 @@
 # Check decoding of fault injected exit_group syscall.
 #
 # 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
@@ -41,13 +42,13 @@
 	match_diff
 }
 
-test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ./answer
+test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ../answer
 
 test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
-	  -efault=\!process:error=1 ./answer
+	  -efault=\!process:error=1 ../answer
 
 test_with -eexit,exit_group -efault=all:error=ENOSYS \
-	  -efault=exit:error=1:when=2+ ./answer
+	  -efault=exit:error=1:when=2+ ../answer
 
 test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
-	  -efault=\!desc,file,memory,process,signal,network,ipc:error=1 ./answer
+	  -efault=\!%desc,%file,%memory,%process,%signal,%network,%ipc:error=1 ../answer
diff --git a/tests-mx32/qual_fault-syntax.test b/tests-mx32/qual_fault-syntax.test
index 85093fc..0cce539 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-2017 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/qual_fault.c b/tests-mx32/qual_fault.c
index d26dc7c..ab692cb 100644
--- a/tests-mx32/qual_fault.c
+++ b/tests-mx32/qual_fault.c
@@ -2,6 +2,7 @@
  * Check that fault injection works properly.
  *
  * 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
diff --git a/tests-mx32/qual_fault.test b/tests-mx32/qual_fault.test
index e194a78..f8e57d2 100755
--- a/tests-mx32/qual_fault.test
+++ b/tests-mx32/qual_fault.test
@@ -3,6 +3,7 @@
 # Check that fault injection works properly.
 #
 # 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
@@ -76,12 +77,11 @@
 
 	run_strace -a11 -e trace=$trace \
 		"$@" -e fault=$fault$when$error $extra \
-		./$NAME $raw "$err" "$first" "$step" $N \
+		../$NAME $raw "$err" "$first" "$step" $N \
 		> "$EXP" 4> "$outexp" 5> "$outgot"
 
 	match_diff "$EXP" "$LOG"
 	match_diff "$outexp" "$outgot"
-	rm -f "$EXP" "$outexp" "$outgot"
 }
 
 for err in '' ENOSYS 22 einval; do
diff --git a/tests-mx32/qual_inject-error-signal.test b/tests-mx32/qual_inject-error-signal.test
index fcbcc39..1fe4612 100755
--- a/tests-mx32/qual_inject-error-signal.test
+++ b/tests-mx32/qual_inject-error-signal.test
@@ -4,5 +4,5 @@
 . "${srcdir=.}/scno_tampering.sh"
 
 run_strace -a12 -echdir,exit_group -einject=chdir:error=ENOENT:signal=USR1 \
-	"./$NAME"
+	"../$NAME"
 match_diff
diff --git a/tests-mx32/qual_inject-retval.test b/tests-mx32/qual_inject-retval.test
index 419030a..5a4efd1 100755
--- a/tests-mx32/qual_inject-retval.test
+++ b/tests-mx32/qual_inject-retval.test
@@ -12,9 +12,8 @@
 	rval="$1"; shift
 
 	run_strace -a12 -e$syscall -einject="$syscall:retval=$rval" "$@" \
-		./qual_inject-retval "$rval" > "$EXP"
+		../qual_inject-retval "$rval" > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 check_injection 0
diff --git a/tests-mx32/qual_inject-signal.test b/tests-mx32/qual_inject-signal.test
index 88002ce..f17e5a0 100755
--- a/tests-mx32/qual_inject-signal.test
+++ b/tests-mx32/qual_inject-signal.test
@@ -4,5 +4,5 @@
 . "${srcdir=.}/init.sh"
 
 run_strace -a12 -echdir,exit_group -einject=chdir:signal=USR1 \
-	./$NAME
+	../$NAME
 match_diff
diff --git a/tests-mx32/qual_signal.test b/tests-mx32/qual_signal.test
index 54a37a3..52812b7 100755
--- a/tests-mx32/qual_signal.test
+++ b/tests-mx32/qual_signal.test
@@ -3,6 +3,7 @@
 # Check how strace -e signal=set works.
 #
 # 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
@@ -34,10 +35,9 @@
 	local sigs
 	sigs="$1"; shift
 
-	run_prog "./$NAME" "$@" > /dev/null
-	run_strace -e trace=none -e signal="$sigs" "./$NAME" "$@" > "$EXP"
+	run_prog "../$NAME" "$@" > /dev/null
+	run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 test_sigs()
diff --git a/tests-mx32/qual_syscall.test b/tests-mx32/qual_syscall.test
index f7eb06d..1524405 100755
--- a/tests-mx32/qual_syscall.test
+++ b/tests-mx32/qual_syscall.test
@@ -5,17 +5,17 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./umovestr
-pattern_abbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[/\* [[:digit:]]* vars \*/\]) = 0'
-pattern_nonabbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
-pattern_nonverbose='execve("\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
+run_prog ../umovestr
+pattern_abbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/) = 0'
+pattern_nonabbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
+pattern_nonverbose='execve("\.\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
 pattern_raw='execve(0x[[:xdigit:]]*, 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
 
 check_output_mismatch()
 {
 	local pattern
 	pattern="$1"; shift
-	run_strace "$@" ./umovestr
+	run_strace "$@" ../umovestr
 	LC_ALL=C grep -x "$pattern" "$LOG" > /dev/null || {
 		printf '%s\n%s\n' \
 			'Failed patterns of expected output:' "$pattern"
@@ -28,15 +28,19 @@
 LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-check_output_mismatch "$pattern_abbrev_verbose" -e trace=process
+check_output_mismatch "$pattern_abbrev_verbose" -e trace=%process
 LC_ALL=C grep '^chdir' "$LOG" > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-run_strace -e 42 ./umovestr
+run_strace -e 42 ../umovestr
 LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-for a in execve \!chdir all \!none \
+run_strace -e/ -e42 ../umovestr
+LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
+	dump_log_and_fail_with "$STRACE $args unexpected output"
+
+for a in execve \!chdir /. all \!none \
 	 file process \!desc \!ipc \!memory \!network \!signal; do
 	check_output_mismatch \
 		"$pattern_abbrev_verbose" -e abbrev="$a" -e execve
diff --git a/tests-mx32/quotactl-v.gen.test b/tests-mx32/quotactl-v.gen.test
new file mode 100755
index 0000000..8659ed2
--- /dev/null
+++ b/tests-mx32/quotactl-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-mx32/quotactl-v.test b/tests-mx32/quotactl-v.test
deleted file mode 100755
index 6adaf82..0000000
--- a/tests-mx32/quotactl-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-mx32/quotactl-xfs-v.gen.test b/tests-mx32/quotactl-xfs-v.gen.test
new file mode 100755
index 0000000..f1f7e0a
--- /dev/null
+++ b/tests-mx32/quotactl-xfs-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-mx32/quotactl-xfs-v.test b/tests-mx32/quotactl-xfs-v.test
deleted file mode 100755
index d5ffc7d..0000000
--- a/tests-mx32/quotactl-xfs-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests-mx32/quotactl-xfs.c b/tests-mx32/quotactl-xfs.c
index e420d1c..b2a884b 100644
--- a/tests-mx32/quotactl-xfs.c
+++ b/tests-mx32/quotactl-xfs.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-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -207,10 +208,10 @@
 	char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
 
 	long rc;
-	struct fs_disk_quota *xdq = tail_alloc(sizeof(*xdq));
-	struct fs_quota_stat *xqstat = tail_alloc(sizeof(*xqstat));
-	struct fs_quota_statv *xqstatv = tail_alloc(sizeof(*xqstatv));
-	uint32_t *flags = tail_alloc(sizeof(*flags));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_disk_quota, xdq);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_stat, xqstat);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_statv, xqstatv);
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, flags);
 	char *unterminated = tail_memdup(unterminated_data,
 		sizeof(unterminated_data));
 
diff --git a/tests-mx32/quotactl-xfs.gen.test b/tests-mx32/quotactl-xfs.gen.test
new file mode 100755
index 0000000..cd7d11c
--- /dev/null
+++ b/tests-mx32/quotactl-xfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=quotactl
diff --git a/tests-mx32/quotactl-xfs.test b/tests-mx32/quotactl-xfs.test
deleted file mode 100755
index 404a737..0000000
--- a/tests-mx32/quotactl-xfs.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=quotactl
diff --git a/tests-mx32/quotactl.c b/tests-mx32/quotactl.c
index 3a7c113..88c3fda 100644
--- a/tests-mx32/quotactl.c
+++ b/tests-mx32/quotactl.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-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -173,10 +174,10 @@
 	long rc;
 	char *unterminated = tail_memdup(unterminated_data,
 					 sizeof(unterminated_data));
-	struct if_dqblk *dqblk = tail_alloc(sizeof(*dqblk));
-	struct if_dqinfo *dqinfo = tail_alloc(sizeof(*dqinfo));
-	uint32_t *fmt = tail_alloc(sizeof(*fmt));
-	struct if_nextdqblk *nextdqblk = tail_alloc(sizeof(*nextdqblk));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqblk, dqblk);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqinfo, dqinfo);
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, fmt);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_nextdqblk, nextdqblk);
 
 
 	snprintf(bogus_special_str, sizeof(bogus_special_str), "%p",
diff --git a/tests-mx32/quotactl.gen.test b/tests-mx32/quotactl.gen.test
new file mode 100755
index 0000000..c6ad6e1
--- /dev/null
+++ b/tests-mx32/quotactl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/quotactl.test b/tests-mx32/quotactl.test
deleted file mode 100755
index d0101f4..0000000
--- a/tests-mx32/quotactl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/read-write.c b/tests-mx32/read-write.c
index 262e07b..ed4c64d 100644
--- a/tests-mx32/read-write.c
+++ b/tests-mx32/read-write.c
@@ -2,6 +2,7 @@
  * Check decoding and dumping of read and write syscalls.
  *
  * 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
@@ -137,7 +138,9 @@
 {
 	tprintf("%s", "");
 
-	static char tmp[] = "read-write-tmpfile";
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const char tmp[] = "read-write-tmpfile";
 	if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
 		perror_msg_and_fail("creat: %s", tmp);
 	if (open(tmp, O_WRONLY) != 1)
diff --git a/tests-mx32/read-write.gen.test b/tests-mx32/read-write.gen.test
new file mode 100755
index 0000000..df1b3fb
--- /dev/null
+++ b/tests-mx32/read-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (read-write -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests-mx32/read-write.test b/tests-mx32/read-write.test
deleted file mode 100755
index 3700541..0000000
--- a/tests-mx32/read-write.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of read and write syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=read-write-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
-	-a15 -eread=0 -ewrite=1 -e trace=read,write \
-	-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests-mx32/readahead.c b/tests-mx32/readahead.c
index c11b577..c243ae4 100644
--- a/tests-mx32/readahead.c
+++ b/tests-mx32/readahead.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/readahead.gen.test b/tests-mx32/readahead.gen.test
new file mode 100755
index 0000000..4e88efa
--- /dev/null
+++ b/tests-mx32/readahead.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1
diff --git a/tests-mx32/readahead.test b/tests-mx32/readahead.test
deleted file mode 100755
index 397c690..0000000
--- a/tests-mx32/readahead.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readahead syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
diff --git a/tests-mx32/readdir.c b/tests-mx32/readdir.c
index 8c48362..a47856f 100644
--- a/tests-mx32/readdir.c
+++ b/tests-mx32/readdir.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -58,9 +59,9 @@
 	"A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "readdir.test.tmp.dir";
 	struct {
 		unsigned long   d_ino;
 		unsigned long   d_off;
@@ -69,8 +70,6 @@
 	} e;
 	int rc;
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests-mx32/readdir.gen.test b/tests-mx32/readdir.gen.test
new file mode 100755
index 0000000..10da83b
--- /dev/null
+++ b/tests-mx32/readdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests-mx32/readdir.test b/tests-mx32/readdir.test
deleted file mode 100755
index e313273..0000000
--- a/tests-mx32/readdir.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check readdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a16
diff --git a/tests-mx32/readlink.gen.test b/tests-mx32/readlink.gen.test
new file mode 100755
index 0000000..755fc8b
--- /dev/null
+++ b/tests-mx32/readlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests-mx32/readlink.test b/tests-mx32/readlink.test
deleted file mode 100755
index c026ecb..0000000
--- a/tests-mx32/readlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
diff --git a/tests-mx32/readlinkat.gen.test b/tests-mx32/readlinkat.gen.test
new file mode 100755
index 0000000..2a50299
--- /dev/null
+++ b/tests-mx32/readlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests-mx32/readlinkat.test b/tests-mx32/readlinkat.test
deleted file mode 100755
index 229c8e1..0000000
--- a/tests-mx32/readlinkat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check readlinkat syscall decoding.
-
-. "${srcdir=.}/readlink.test"
diff --git a/tests-mx32/readv.test b/tests-mx32/readv.test
index dc18799..d75e370 100755
--- a/tests-mx32/readv.test
+++ b/tests-mx32/readv.test
@@ -3,6 +3,7 @@
 # Check decoding and dumping of readv and writev syscalls.
 #
 # 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
@@ -38,7 +39,7 @@
 run_strace_match_diff -a16 -e trace=readv,writev \
 	-eread='!all' -ewrite=none -eread='!0,1,2' -ewrite='!0,1,2'
 
-wfd="$(./print_maxfd)"
+wfd="$(../print_maxfd)"
 rfd="$(($wfd - 1))"
 run_strace_match_diff -a16 -e trace=readv,writev \
 	-eread="$rfd" -ewrite="$wfd"
diff --git a/tests-mx32/reboot.gen.test b/tests-mx32/reboot.gen.test
new file mode 100755
index 0000000..0a48dea
--- /dev/null
+++ b/tests-mx32/reboot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/reboot.test b/tests-mx32/reboot.test
deleted file mode 100755
index a97dd21..0000000
--- a/tests-mx32/reboot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check reboot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/recvfrom.gen.test b/tests-mx32/recvfrom.gen.test
new file mode 100755
index 0000000..c23780c
--- /dev/null
+++ b/tests-mx32/recvfrom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-mx32/recvfrom.test b/tests-mx32/recvfrom.test
deleted file mode 100755
index 9dfbc89..0000000
--- a/tests-mx32/recvfrom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr related arguments of recvfrom syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-mx32/recvmmsg-timeout.c b/tests-mx32/recvmmsg-timeout.c
index 7cf064d..64ce16a 100644
--- a/tests-mx32/recvmmsg-timeout.c
+++ b/tests-mx32/recvmmsg-timeout.c
@@ -2,6 +2,7 @@
  * Check decoding of timeout argument of recvmmsg syscall.
  *
  * 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
@@ -50,13 +51,15 @@
 			.msg_iovlen = 1
 		}
 	};
-	struct timespec t = { .tv_sec = 0, .tv_nsec = 12345678 };
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+	ts->tv_sec = 0;
+	ts->tv_nsec = 12345678;
 
-	int rc = recv_mmsg(-1, &mh, 1, 0, &t);
+	int rc = recv_mmsg(-1, &mh, 1, 0, ts);
 	printf("recvmmsg(-1, %p, 1, 0, {tv_sec=0, tv_nsec=12345678})"
-	       " = %d %s (%m)\n", &mh, rc, errno2name());
+	       " = %s\n", &mh, sprintrc(rc));
 
-	rc = recv_mmsg(fds[0], &mh, 1, 0, &t);
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
 	if (rc < 0)
 		perror_msg_and_skip("recvmmsg");
 	printf("recvmmsg(%d, [{msg_hdr={msg_name=NULL, msg_namelen=0"
@@ -64,7 +67,23 @@
 	       ", msg_controllen=0, msg_flags=0}, msg_len=1}], 1, 0"
 	       ", {tv_sec=0, tv_nsec=12345678}) = "
 	       "%d (left {tv_sec=0, tv_nsec=%d})\n",
-	       fds[0], rc, (int) t.tv_nsec);
+	       fds[0], rc, (int) ts->tv_nsec);
+
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+	printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       fds[0], &mh, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+	printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       fds[0], &mh, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/recvmmsg-timeout.gen.test b/tests-mx32/recvmmsg-timeout.gen.test
new file mode 100755
index 0000000..6306de7
--- /dev/null
+++ b/tests-mx32/recvmmsg-timeout.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmmsg-timeout -a25 -e trace=recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests-mx32/recvmmsg-timeout.test b/tests-mx32/recvmmsg-timeout.test
deleted file mode 100755
index 36a1222..0000000
--- a/tests-mx32/recvmmsg-timeout.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of timeout argument of recvmmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests-mx32/recvmsg.gen.test b/tests-mx32/recvmsg.gen.test
new file mode 100755
index 0000000..fc8ef06
--- /dev/null
+++ b/tests-mx32/recvmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmsg -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests-mx32/recvmsg.test b/tests-mx32/recvmsg.test
deleted file mode 100755
index e373a20..0000000
--- a/tests-mx32/recvmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of recvmsg and sendmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests-mx32/redirect-fds.test b/tests-mx32/redirect-fds.test
index ddef8fa..3da6942 100755
--- a/tests-mx32/redirect-fds.test
+++ b/tests-mx32/redirect-fds.test
@@ -3,6 +3,7 @@
 # Check that strace does not leak placeholder descriptors.
 #
 # 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
@@ -47,18 +48,17 @@
 	a2="$2"
 	a3="$3"
 
+	rm -f "$LOG" "$fd0" "$fd1" "$fd2"
 	touch "$LOG" "$fd0" ||
 		framework_skip_ 'failed to create files'
 
-	set -- "\"./$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
+	set -- "\"../$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
 	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
 			fail_ "$* failed with code $rc"
 
 	set -- "$STRACE" -o"$LOG" -echdir "$@"
 	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
 		dump_log_and_fail_with "$* failed with code $?"
-
-	rm -f "$LOG" "$fd0" "$fd1" "$fd2"
 }
 
 check_fd "$fd0" "$fd1" "$fd2"
diff --git a/tests-mx32/redirect.test b/tests-mx32/redirect.test
index fa0c536..d70754e 100755
--- a/tests-mx32/redirect.test
+++ b/tests-mx32/redirect.test
@@ -3,6 +3,7 @@
 # Ensure that strace does not retain stdin and stdout descriptors.
 #
 # 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
@@ -74,5 +75,3 @@
 if [ -s "$OUT" ]; then
 	fail_ "$STRACE failed to redirect standard output"
 fi
-
-rm -f -- "$OUT"
diff --git a/tests-mx32/regex.gen.test b/tests-mx32/regex.gen.test
new file mode 100755
index 0000000..71a02d6
--- /dev/null
+++ b/tests-mx32/regex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (regex test_trace_expr '' -etrace='/^(.*_)?statv?fs'); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -etrace='/^(.*_)?statv?fs'
diff --git a/tests-mx32/regex.in b/tests-mx32/regex.in
new file mode 100755
index 0000000..7c4adfe
--- /dev/null
+++ b/tests-mx32/regex.in
@@ -0,0 +1,2 @@
+statfs	-a17
+statfs64	-a23
diff --git a/tests-mx32/remap_file_pages.gen.test b/tests-mx32/remap_file_pages.gen.test
new file mode 100755
index 0000000..e489473
--- /dev/null
+++ b/tests-mx32/remap_file_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/remap_file_pages.test b/tests-mx32/remap_file_pages.test
deleted file mode 100755
index 9d51a9a..0000000
--- a/tests-mx32/remap_file_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check remap_file_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/rename.gen.test b/tests-mx32/rename.gen.test
new file mode 100755
index 0000000..07f0180
--- /dev/null
+++ b/tests-mx32/rename.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-mx32/rename.test b/tests-mx32/rename.test
deleted file mode 100755
index 9067e4c..0000000
--- a/tests-mx32/rename.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rename syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-mx32/renameat.gen.test b/tests-mx32/renameat.gen.test
new file mode 100755
index 0000000..f2879cd
--- /dev/null
+++ b/tests-mx32/renameat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/renameat.test b/tests-mx32/renameat.test
deleted file mode 100755
index 9b0a61d..0000000
--- a/tests-mx32/renameat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/renameat2.gen.test b/tests-mx32/renameat2.gen.test
new file mode 100755
index 0000000..cd7c34c
--- /dev/null
+++ b/tests-mx32/renameat2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/renameat2.test b/tests-mx32/renameat2.test
deleted file mode 100755
index 4c176bb..0000000
--- a/tests-mx32/renameat2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/request_key.gen.test b/tests-mx32/request_key.gen.test
new file mode 100755
index 0000000..aeac708
--- /dev/null
+++ b/tests-mx32/request_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (request_key -a33 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -s12
diff --git a/tests-mx32/request_key.test b/tests-mx32/request_key.test
deleted file mode 100755
index 9812a18..0000000
--- a/tests-mx32/request_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of request_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -s12
diff --git a/tests-mx32/restart_syscall.c b/tests-mx32/restart_syscall.c
index e492e62..d06f9c2 100644
--- a/tests-mx32/restart_syscall.c
+++ b/tests-mx32/restart_syscall.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -55,11 +56,11 @@
 	if (nanosleep(&req, &rem))
 		perror_msg_and_fail("nanosleep");
 
-	printf("nanosleep\\(\\{tv_sec=%jd, tv_nsec=%jd\\}, "
-	       "\\{tv_sec=%jd, tv_nsec=%jd\\}\\)"
+	printf("nanosleep\\(\\{tv_sec=%lld, tv_nsec=%llu\\}"
+	       ", \\{tv_sec=%lld, tv_nsec=%llu\\}\\)"
 	       " = \\? ERESTART_RESTARTBLOCK \\(Interrupted by signal\\)\n",
-	       (intmax_t) req.tv_sec, (intmax_t) req.tv_nsec,
-	       (intmax_t) rem.tv_sec, (intmax_t) rem.tv_nsec);
+	       (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+	       (long long) rem.tv_sec, zero_extend_signed_to_ull(rem.tv_nsec));
 	puts("--- SIGALRM \\{si_signo=SIGALRM, si_code=SI_KERNEL\\} ---");
 #ifdef __arm__
 /* old kernels used to overwrite ARM_r0 with -EINTR */
@@ -67,11 +68,12 @@
 #else
 # define ALTERNATIVE_NANOSLEEP_REQ ""
 #endif
-	printf("(nanosleep\\((%s\\{tv_sec=%jd, tv_nsec=%jd\\}), "
-	       "%p|restart_syscall\\(<\\.\\.\\."
+	printf("(nanosleep\\((%s\\{tv_sec=%lld, tv_nsec=%llu\\})"
+	       ", %p|restart_syscall\\(<\\.\\.\\."
 	       " resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
 	       ALTERNATIVE_NANOSLEEP_REQ,
-	       (intmax_t) req.tv_sec, (intmax_t) req.tv_nsec, &rem);
+	       (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+	       &rem);
 
 	puts("\\+\\+\\+ exited with 0 \\+\\+\\+");
 	return 0;
diff --git a/tests-mx32/restart_syscall.test b/tests-mx32/restart_syscall.test
index 6dfda16..f7dfa04 100755
--- a/tests-mx32/restart_syscall.test
+++ b/tests-mx32/restart_syscall.test
@@ -6,8 +6,5 @@
 
 run_prog > /dev/null
 syscalls=nanosleep,restart_syscall
-run_strace -a20 -e trace=$syscalls $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -e trace=$syscalls $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests-mx32/rmdir.gen.test b/tests-mx32/rmdir.gen.test
new file mode 100755
index 0000000..b511039
--- /dev/null
+++ b/tests-mx32/rmdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-mx32/rmdir.test b/tests-mx32/rmdir.test
deleted file mode 100755
index 81ee66b..0000000
--- a/tests-mx32/rmdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rmdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-mx32/rt_sigpending.c b/tests-mx32/rt_sigpending.c
index accf691..b57921f 100644
--- a/tests-mx32/rt_sigpending.c
+++ b/tests-mx32/rt_sigpending.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigpending strace test.
  *
  * 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
@@ -78,7 +79,7 @@
 
 	const unsigned int big_size = 1024 / 8;
 	void *k_set = tail_alloc(big_size);
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 
 	sigemptyset(libc_set);
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests-mx32/rt_sigpending.gen.test b/tests-mx32/rt_sigpending.gen.test
new file mode 100755
index 0000000..0458876
--- /dev/null
+++ b/tests-mx32/rt_sigpending.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/rt_sigpending.test b/tests-mx32/rt_sigpending.test
deleted file mode 100755
index 40c83a8..0000000
--- a/tests-mx32/rt_sigpending.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigpending syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-mx32/rt_sigprocmask.c b/tests-mx32/rt_sigprocmask.c
index 27e357f..c38ac94 100644
--- a/tests-mx32/rt_sigprocmask.c
+++ b/tests-mx32/rt_sigprocmask.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigprocmask strace test.
  *
  * 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
@@ -91,7 +92,7 @@
 
 	void *const k_set = tail_alloc(set_size);
 	void *const old_set = tail_alloc(set_size);
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 
 	memset(k_set, 0, set_size);
 	if (k_sigprocmask(SIG_SETMASK, k_set, NULL, set_size))
diff --git a/tests-mx32/rt_sigprocmask.gen.test b/tests-mx32/rt_sigprocmask.gen.test
new file mode 100755
index 0000000..a21c6db
--- /dev/null
+++ b/tests-mx32/rt_sigprocmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/rt_sigprocmask.test b/tests-mx32/rt_sigprocmask.test
deleted file mode 100755
index 1e60ebd..0000000
--- a/tests-mx32/rt_sigprocmask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigprocmask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/rt_sigqueueinfo.c b/tests-mx32/rt_sigqueueinfo.c
index aba6776..f803d91 100644
--- a/tests-mx32/rt_sigqueueinfo.c
+++ b/tests-mx32/rt_sigqueueinfo.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/rt_sigqueueinfo.gen.test b/tests-mx32/rt_sigqueueinfo.gen.test
new file mode 100755
index 0000000..7baf0e4
--- /dev/null
+++ b/tests-mx32/rt_sigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/rt_sigqueueinfo.test b/tests-mx32/rt_sigqueueinfo.test
deleted file mode 100755
index c03c76f..0000000
--- a/tests-mx32/rt_sigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_sigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-mx32/rt_sigreturn.c b/tests-mx32/rt_sigreturn.c
new file mode 100644
index 0000000..40d1589
--- /dev/null
+++ b/tests-mx32/rt_sigreturn.c
@@ -0,0 +1,79 @@
+/*
+ * 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 <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef ASM_SIGRTMIN
+# define RT_0 ASM_SIGRTMIN
+#else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+# define RT_0 32
+#endif
+
+static void
+handler(int no, siginfo_t *si, void *uc)
+{
+}
+
+int
+main(void)
+{
+	static sigset_t set;
+	sigemptyset(&set);
+	sigaddset(&set, SIGINT);
+	sigaddset(&set, SIGUSR2);
+	sigaddset(&set, SIGCHLD);
+	sigaddset(&set, RT_0 +  3);
+	sigaddset(&set, RT_0 +  4);
+	sigaddset(&set, RT_0 +  5);
+	sigaddset(&set, RT_0 + 26);
+	sigaddset(&set, RT_0 + 27);
+	if (sigprocmask(SIG_SETMASK, &set, NULL))
+		perror_msg_and_fail("sigprocmask");
+	sigemptyset(&set);
+
+	static const struct sigaction sa = {
+		.sa_sigaction = handler,
+		.sa_flags = SA_SIGINFO
+	};
+	if (sigaction(SIGUSR1, &sa, NULL))
+		perror_msg_and_fail("sigaction");
+
+	if (raise(SIGUSR1))
+		perror_msg_and_fail("raise");
+
+	static const char *const sigs =
+		(SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+	static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+	printf("rt_sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests-mx32/rt_sigreturn.gen.test b/tests-mx32/rt_sigreturn.gen.test
new file mode 100755
index 0000000..0672f11
--- /dev/null
+++ b/tests-mx32/rt_sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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'
diff --git a/tests-mx32/rt_sigsuspend.c b/tests-mx32/rt_sigsuspend.c
index 73e1336..422ec19 100644
--- a/tests-mx32/rt_sigsuspend.c
+++ b/tests-mx32/rt_sigsuspend.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigsuspend strace test.
  *
  * 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
@@ -88,7 +89,7 @@
 	void *k_set = tail_alloc(big_size);
 	memset(k_set, 0, big_size);
 
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 	sigemptyset(libc_set);
 	sigaddset(libc_set, SIGUSR1);
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests-mx32/rt_sigsuspend.gen.test b/tests-mx32/rt_sigsuspend.gen.test
new file mode 100755
index 0000000..d5d1d5f
--- /dev/null
+++ b/tests-mx32/rt_sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigsuspend -a20 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -esignal=none
diff --git a/tests-mx32/rt_sigsuspend.test b/tests-mx32/rt_sigsuspend.test
deleted file mode 100755
index 2e30fd4..0000000
--- a/tests-mx32/rt_sigsuspend.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigsuspend syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -esignal=none
diff --git a/tests-mx32/rt_sigtimedwait.c b/tests-mx32/rt_sigtimedwait.c
index 10311e6..40544c7 100644
--- a/tests-mx32/rt_sigtimedwait.c
+++ b/tests-mx32/rt_sigtimedwait.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigtimedwait strace test.
  *
  * 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
@@ -54,25 +55,27 @@
 	for (;;) {
 		assert(k_sigtimedwait(set, NULL, timeout, size) == -1);
 		if (EINTR == errno) {
-			tprintf("rt_sigtimedwait(%s, NULL, "
-				"{tv_sec=%jd, tv_nsec=%jd}, %u)"
+			tprintf("rt_sigtimedwait(%s, NULL"
+				", {tv_sec=%lld, tv_nsec=%llu}, %u)"
 				" = -1 EAGAIN (%m)\n", text,
-				(intmax_t) timeout->tv_sec,
-				(intmax_t) timeout->tv_nsec,
+				(long long) timeout->tv_sec,
+				zero_extend_signed_to_ull(timeout->tv_nsec),
 				size);
 		} else {
 			if (size < sizeof(long))
-				tprintf("rt_sigtimedwait(%p, NULL, "
-					"{tv_sec=%jd, tv_nsec=%jd}"
+				tprintf("rt_sigtimedwait(%p, NULL"
+					", {tv_sec=%lld, tv_nsec=%llu}"
 					", %u) = -1 EINVAL (%m)\n",
-					set, (intmax_t) timeout->tv_sec,
-					(intmax_t) timeout->tv_nsec, size);
+					set, (long long) timeout->tv_sec,
+					zero_extend_signed_to_ull(timeout->tv_nsec),
+					size);
 			else
-				tprintf("rt_sigtimedwait(%s, NULL, "
-					"{tv_sec=%jd, tv_nsec=%jd}"
+				tprintf("rt_sigtimedwait(%s, NULL"
+					", {tv_sec=%lld, tv_nsec=%llu}"
 					", %u) = -1 EINVAL (%m)\n",
-					text, (intmax_t) timeout->tv_sec,
-					(intmax_t) timeout->tv_nsec, size);
+					text, (long long) timeout->tv_sec,
+					zero_extend_signed_to_ull(timeout->tv_nsec),
+					size);
 		}
 		if (!size)
 			break;
@@ -86,8 +89,8 @@
 {
 	tprintf("%s", "");
 
-	siginfo_t *const info = tail_alloc(sizeof(*info));
-	struct timespec *const timeout = tail_alloc(sizeof(*timeout));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, timeout);
 	timeout->tv_sec = 0;
 	timeout->tv_nsec = 42;
 
@@ -100,37 +103,58 @@
 		assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
 		if (EAGAIN == errno)
 			break;
-		tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%jd, tv_nsec=%jd}, %u)"
-			" = -1 EINVAL (%m)\n",
-			k_set, (intmax_t) timeout->tv_sec,
-			(intmax_t) timeout->tv_nsec, set_size);
+		tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%lld, tv_nsec=%llu}"
+			", %u) = -1 EINVAL (%m)\n",
+			k_set, (long long) timeout->tv_sec,
+			zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 	}
 	if (!set_size)
 		perror_msg_and_fail("rt_sigtimedwait");
-	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
-		set_size);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	timeout->tv_sec = 0xdeadbeefU;
+	timeout->tv_nsec = 0xfacefeedU;
+	assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+		", %u) = -1 EINVAL (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+	timeout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	timeout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+		", %u) = -1 EINVAL (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+	timeout->tv_sec = 0;
+	timeout->tv_nsec = 42;
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 	sigemptyset(libc_set);
 	sigaddset(libc_set, SIGHUP);
 	memcpy(k_set, libc_set, set_size);
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+	tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	sigaddset(libc_set, SIGINT);
 	memcpy(k_set, libc_set, set_size);
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%jd, tv_nsec=%jd}, %u)"
+	tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
 		" = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	sigaddset(libc_set, SIGQUIT);
 	sigaddset(libc_set, SIGALRM);
@@ -139,17 +163,19 @@
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
+	tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
 		"[HUP INT QUIT ALRM TERM]",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	memset(k_set - set_size, -1, set_size);
 	assert(k_sigtimedwait(k_set - set_size, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+	tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
 		perror_msg_and_fail("sigprocmask");
@@ -164,9 +190,11 @@
 	raise(SIGALRM);
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == SIGALRM);
 	tprintf("rt_sigtimedwait(%s, {si_signo=%s, si_code=SI_TKILL"
-		", si_pid=%d, si_uid=%d}, {tv_sec=%jd, tv_nsec=%jd}, %u) = %d (%s)\n",
+		", si_pid=%d, si_uid=%d}, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = %d (%s)\n",
 		"[HUP INT QUIT ALRM TERM]", "SIGALRM", getpid(), getuid(),
-		(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec),
 		set_size, SIGALRM, "SIGALRM");
 
 	raise(SIGALRM);
diff --git a/tests-mx32/rt_sigtimedwait.gen.test b/tests-mx32/rt_sigtimedwait.gen.test
new file mode 100755
index 0000000..2b18e7a
--- /dev/null
+++ b/tests-mx32/rt_sigtimedwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/rt_sigtimedwait.test b/tests-mx32/rt_sigtimedwait.test
deleted file mode 100755
index e15fb77..0000000
--- a/tests-mx32/rt_sigtimedwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigtimedwait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests-mx32/rt_tgsigqueueinfo.c b/tests-mx32/rt_tgsigqueueinfo.c
index ec09348..3b2da2a 100644
--- a/tests-mx32/rt_tgsigqueueinfo.c
+++ b/tests-mx32/rt_tgsigqueueinfo.c
@@ -2,6 +2,7 @@
  * This file is part of rt_tgsigqueueinfo strace test.
  *
  * 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
@@ -42,9 +43,9 @@
 k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
 {
 	return syscall(__NR_rt_tgsigqueueinfo,
-		       (unsigned long) 0xffffffff00000000ULL | pid,
-		       (unsigned long) 0xffffffff00000000ULL | pid,
-		       (unsigned long) 0xffffffff00000000ULL | sig,
+		       F8ILL_KULONG_MASK | pid,
+		       F8ILL_KULONG_MASK | pid,
+		       F8ILL_KULONG_MASK | sig,
 		       info);
 }
 
@@ -57,7 +58,7 @@
 	if (sigaction(SIGUSR1, &sa, NULL))
 		perror_msg_and_fail("sigaction");
 
-	siginfo_t *const info = tail_alloc(sizeof(*info));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
 	memset(info, 0, sizeof(*info));
 	info->si_signo = SIGUSR1;
 	info->si_errno = ENOENT;
diff --git a/tests-mx32/rt_tgsigqueueinfo.gen.test b/tests-mx32/rt_tgsigqueueinfo.gen.test
new file mode 100755
index 0000000..407bbff
--- /dev/null
+++ b/tests-mx32/rt_tgsigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/rt_tgsigqueueinfo.test b/tests-mx32/rt_tgsigqueueinfo.test
deleted file mode 100755
index ab24e2d..0000000
--- a/tests-mx32/rt_tgsigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_tgsigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-mx32/sched.gen.test b/tests-mx32/sched.gen.test
new file mode 100755
index 0000000..6747117
--- /dev/null
+++ b/tests-mx32/sched.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched test_trace_expr times -e/sched); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr times -e/sched
diff --git a/tests-mx32/sched.in b/tests-mx32/sched.in
new file mode 100755
index 0000000..46031d6
--- /dev/null
+++ b/tests-mx32/sched.in
@@ -0,0 +1,7 @@
+sched_xetaffinity	-a28
+sched_xetparam	-a23
+sched_rr_get_interval	-a31
+sched_get_priority_mxx	-a33
+sched_xetattr	-a29
+sched_xetscheduler	-a22
+sched_yield	-a14
diff --git a/tests-mx32/sched_get_priority_mxx.gen.test b/tests-mx32/sched_get_priority_mxx.gen.test
new file mode 100755
index 0000000..a235997
--- /dev/null
+++ b/tests-mx32/sched_get_priority_mxx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests-mx32/sched_get_priority_mxx.test b/tests-mx32/sched_get_priority_mxx.test
deleted file mode 100755
index 0d1a1a7..0000000
--- a/tests-mx32/sched_get_priority_mxx.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_get_priority_min and sched_get_priority_max syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests-mx32/sched_rr_get_interval.c b/tests-mx32/sched_rr_get_interval.c
index 0aacd2b..000a0be 100644
--- a/tests-mx32/sched_rr_get_interval.c
+++ b/tests-mx32/sched_rr_get_interval.c
@@ -11,7 +11,7 @@
 int
 main(void)
 {
-	struct timespec *const tp = tail_alloc(sizeof(struct timespec));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tp);
 	long rc;
 
 	rc = syscall(__NR_sched_rr_get_interval, 0, NULL);
@@ -25,8 +25,10 @@
 
 	rc = syscall(__NR_sched_rr_get_interval, 0, tp);
 	if (rc == 0)
-		printf("sched_rr_get_interval(0, {tv_sec=%jd, tv_nsec=%jd}) = "
-		       "0\n", (intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
+		printf("sched_rr_get_interval(0, {tv_sec=%lld, tv_nsec=%llu})"
+		       " = 0\n",
+		       (long long) tp->tv_sec,
+		       zero_extend_signed_to_ull(tp->tv_nsec));
 	else
 		printf("sched_rr_get_interval(-1, %p) = %s\n", tp,
 			sprintrc(rc));
diff --git a/tests-mx32/sched_rr_get_interval.gen.test b/tests-mx32/sched_rr_get_interval.gen.test
new file mode 100755
index 0000000..493de64
--- /dev/null
+++ b/tests-mx32/sched_rr_get_interval.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/sched_rr_get_interval.test b/tests-mx32/sched_rr_get_interval.test
deleted file mode 100755
index 828ba5d..0000000
--- a/tests-mx32/sched_rr_get_interval.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_rr_get_interval syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests-mx32/sched_xetaffinity.gen.test b/tests-mx32/sched_xetaffinity.gen.test
new file mode 100755
index 0000000..7a1c75b
--- /dev/null
+++ b/tests-mx32/sched_xetaffinity.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests-mx32/sched_xetaffinity.test b/tests-mx32/sched_xetaffinity.test
deleted file mode 100755
index 246ea21..0000000
--- a/tests-mx32/sched_xetaffinity.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getaffinity and sched_setaffinity syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests-mx32/sched_xetattr.c b/tests-mx32/sched_xetattr.c
index 1b48491..a9bd2ba 100644
--- a/tests-mx32/sched_xetattr.c
+++ b/tests-mx32/sched_xetattr.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,95 +32,214 @@
 
 # include <inttypes.h>
 # include <stdio.h>
+# include <sched.h>
 # include <unistd.h>
+# include "sched_attr.h"
+# include "xlat.h"
+# include "xlat/schedulers.h"
+
+static const char *errstr;
+
+static long
+sys_sched_getattr(kernel_ulong_t pid, kernel_ulong_t attr,
+		  kernel_ulong_t size, kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_sched_getattr, pid, attr, size, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+static long
+sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_sched_setattr, pid, attr, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	struct {
-		uint32_t size;
-		uint32_t sched_policy;
-		uint64_t sched_flags;
-		int32_t  sched_nice;
-		uint32_t sched_priority;
-		uint64_t sched_runtime;
-		uint64_t sched_deadline;
-		uint64_t sched_period;
-	} *sched_attr = tail_alloc(sizeof(*sched_attr));
+	static const kernel_ulong_t bogus_pid =
+		(kernel_ulong_t) 0xdefacedfacefeedULL;
+	static const kernel_ulong_t bogus_size =
+		(kernel_ulong_t) 0xdefacedcafef00dULL;
+	static const kernel_ulong_t bogus_flags =
+		(kernel_ulong_t) 0xdefaceddeadc0deULL;
 
-	long rc = syscall(__NR_sched_getattr, 0xdeadface, NULL, 0, 0);
-	printf("sched_getattr\\(%d, NULL, 0, 0\\) += %s\n",
-		0xdeadface, sprintrc_grep(rc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
+	void *const efault = attr + 1;
 
-	rc = syscall(__NR_sched_getattr, -1,
-		     sched_attr, 0xbadfaced, 0xc0defeed);
-	printf("sched_getattr\\(-1, %p, %u, %u\\) += %s\n",
-		sched_attr, 0xbadfaced, 0xc0defeed, sprintrc_grep(rc));
+	sys_sched_getattr(0, 0, 0, 0);
+	printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
 
-	rc = syscall(__NR_sched_getattr, 0,
-		     sched_attr + 1, sizeof(*sched_attr), 0);
-	printf("sched_getattr\\(0, %p, %u, 0\\) += %s\n",
-		sched_attr + 1, (unsigned)sizeof(*sched_attr),
-		sprintrc_grep(rc));
+	sys_sched_getattr(0, (unsigned long) attr, 0, 0);
+	printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
 
-	if (syscall(__NR_sched_getattr, 0, sched_attr, sizeof(*sched_attr), 0))
+	sys_sched_getattr(bogus_pid, 0, 0, 0);
+	printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
+
+	sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
+	printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
+	       attr,
+# if defined __arm64__ || defined __aarch64__
+	       "0xdefaced<<32|",
+# else
+	       "",
+# endif
+	       (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
+
+	sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
+	printf("sched_getattr(0, %p, %u, 0) = %s\n",
+	       efault, (unsigned) sizeof(*attr), errstr);
+
+	if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
 		perror_msg_and_skip("sched_getattr");
-
-	printf("sched_getattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
-	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
 	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-	       ", sched_period=%" PRIu64 "\\}, %u, 0\\) += 0\n",
-	       sched_attr->size,
-	       sched_attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
-	       sched_attr->sched_nice,
-	       sched_attr->sched_priority,
-	       sched_attr->sched_runtime,
-	       sched_attr->sched_deadline,
-	       sched_attr->sched_period,
-	       (unsigned) sizeof(*sched_attr));
+	       ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+	       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period,
+	       (unsigned) sizeof(*attr));
 
-	sched_attr->sched_flags |= 1;
-	if (syscall(__NR_sched_setattr, 0, sched_attr, 0))
+# if defined __arm64__ || defined __aarch64__
+	long rc =
+# endif
+	sys_sched_getattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+			  F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
+# if defined __arm64__ || defined __aarch64__
+	if (rc) {
+		printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
+		       attr, (unsigned) sizeof(*attr), errstr);
+	} else
+# endif
+	{
+		printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+		printxval(schedulers, attr->sched_policy, NULL);
+		printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+		       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+		       ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+		       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+		       attr->sched_nice,
+		       attr->sched_priority,
+		       attr->sched_runtime,
+		       attr->sched_deadline,
+		       attr->sched_period,
+		       (unsigned) sizeof(*attr));
+	}
+
+	sys_sched_setattr(bogus_pid, 0, 0);
+	printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
+
+	attr->sched_flags |= 1;
+
+	if (sys_sched_setattr(0, (unsigned long) attr, 0))
 		perror_msg_and_skip("sched_setattr");
-
-	printf("sched_setattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
-	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
 	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-	       ", sched_period=%" PRIu64 "\\}, 0\\) += 0\n",
-	       sched_attr->size,
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
 	       "SCHED_FLAG_RESET_ON_FORK",
-	       sched_attr->sched_nice,
-	       sched_attr->sched_priority,
-	       sched_attr->sched_runtime,
-	       sched_attr->sched_deadline,
-	       sched_attr->sched_period);
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
 
-	sched_attr->size = 0x90807060;
-	sched_attr->sched_policy = 0xca7faced;
-	sched_attr->sched_flags = 0xbadc0ded1057da7aULL;
-	sched_attr->sched_nice = 0xafbfcfdf;
-	sched_attr->sched_priority = 0xb8c8d8e8;
-	sched_attr->sched_runtime = 0xbadcaffedeadf157ULL;
-	sched_attr->sched_deadline = 0xc0de70a57badac75ULL;
-	sched_attr->sched_period = 0xded1ca7edda7aca7ULL;
+	sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+			  F8ILL_KULONG_MASK);
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
+	       "SCHED_FLAG_RESET_ON_FORK",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
 
-	rc = syscall(__NR_sched_setattr, 0xfacec0de, sched_attr, 0xbeeff00d);
+	*psize = attr->size;
 
-	printf("sched_setattr\\(%d, \\{size=%u, "
-		"sched_policy=%#x /\\* SCHED_\\?\\?\\? \\*/, "
-		"sched_flags=%#" PRIx64 " /\\* SCHED_FLAG_\\?\\?\\? \\*/, "
-		"sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-		"sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "\\}, "
-		"%u\\) += %s\n",
-		0xfacec0de, sched_attr->size,
-		sched_attr->sched_policy,
-		sched_attr->sched_flags,
-		sched_attr->sched_nice,
-		sched_attr->sched_priority,
-		sched_attr->sched_runtime,
-		sched_attr->sched_deadline,
-		sched_attr->sched_period, 0xbeeff00d, sprintrc_grep(rc));
+	sys_sched_setattr(0, (unsigned long) psize, 0);
+	printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
 
+	attr->size = 0;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
+	       "SCHED_FLAG_RESET_ON_FORK",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
+
+	attr->size = 1;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+	       1, attr->size, errstr);
+
+	attr->size = SCHED_ATTR_MIN_SIZE - 1;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+	       SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
+
+	attr->size = 0x90807060;
+	attr->sched_policy = 0xca7faced;
+	attr->sched_flags = 0xbadc0ded1057da7aULL;
+	attr->sched_nice = 0xafbfcfdf;
+	attr->sched_priority = 0xb8c8d8e8;
+	attr->sched_runtime = 0xbadcaffedeadf157ULL;
+	attr->sched_deadline = 0xc0de70a57badac75ULL;
+	attr->sched_period = 0xded1ca7edda7aca7ULL;
+
+	sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+	printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
+	       "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
+	       "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+	       "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
+	       " = %s\n",
+	       (int) bogus_pid,
+	       attr->size,
+	       attr->sched_policy,
+	       attr->sched_flags,
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period,
+	       (unsigned) bogus_flags, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+		sys_sched_getattr(0, ill, sizeof(*attr), 0);
+		printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+		       (unsigned long long) ill, (unsigned) sizeof(*attr),
+		       errstr);
+
+		sys_sched_setattr(0, ill, 0);
+		printf("sched_setattr(0, %#llx, 0) = %s\n",
+		       (unsigned long long) ill, errstr);
+	}
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests-mx32/sched_xetattr.gen.test b/tests-mx32/sched_xetattr.gen.test
new file mode 100755
index 0000000..e4f31c5
--- /dev/null
+++ b/tests-mx32/sched_xetattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetattr -a29 -e trace=sched_getattr,sched_setattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=sched_getattr,sched_setattr
diff --git a/tests-mx32/sched_xetattr.test b/tests-mx32/sched_xetattr.test
deleted file mode 100755
index c2c7914..0000000
--- a/tests-mx32/sched_xetattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check sched_getattr and sched_setattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e sched_getattr,sched_setattr $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-mx32/sched_xetparam.gen.test b/tests-mx32/sched_xetparam.gen.test
new file mode 100755
index 0000000..220ffb2
--- /dev/null
+++ b/tests-mx32/sched_xetparam.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetparam -a23 -e trace=sched_getparam,sched_setparam); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests-mx32/sched_xetparam.test b/tests-mx32/sched_xetparam.test
deleted file mode 100755
index c9fede1..0000000
--- a/tests-mx32/sched_xetparam.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getparam and sched_setparam syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests-mx32/sched_xetscheduler.c b/tests-mx32/sched_xetscheduler.c
index 7faee8c..8248a0c 100644
--- a/tests-mx32/sched_xetscheduler.c
+++ b/tests-mx32/sched_xetscheduler.c
@@ -10,7 +10,7 @@
 int
 main(void)
 {
-	struct sched_param *const param = tail_alloc(sizeof(struct sched_param));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
 	long rc = syscall(__NR_sched_getscheduler, 0);
 	const char *scheduler;
 	switch (rc) {
diff --git a/tests-mx32/sched_xetscheduler.gen.test b/tests-mx32/sched_xetscheduler.gen.test
new file mode 100755
index 0000000..0a80072
--- /dev/null
+++ b/tests-mx32/sched_xetscheduler.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests-mx32/sched_xetscheduler.test b/tests-mx32/sched_xetscheduler.test
deleted file mode 100755
index 07c93f3..0000000
--- a/tests-mx32/sched_xetscheduler.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getscheduler and sched_setscheduler syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests-mx32/sched_yield.gen.test b/tests-mx32/sched_yield.gen.test
new file mode 100755
index 0000000..3f4542f
--- /dev/null
+++ b/tests-mx32/sched_yield.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/sched_yield.test b/tests-mx32/sched_yield.test
deleted file mode 100755
index f0c2c30..0000000
--- a/tests-mx32/sched_yield.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_yield syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-mx32/scm_rights-fd.test b/tests-mx32/scm_rights-fd.test
index 8447375..279666e 100755
--- a/tests-mx32/scm_rights-fd.test
+++ b/tests-mx32/scm_rights-fd.test
@@ -3,6 +3,7 @@
 # Check how SCM_RIGHTS and SCM_CREDENTIALS control messages are decoded in -y mode.
 #
 # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -34,22 +35,19 @@
 	framework_skip_ '/proc/self/fd/ is not available'
 
 check_prog mkdir
-check_prog rm
 check_prog seq
 check_prog touch
 
-dir="$LOG.dir"
-rm -rf -- "$dir"
-mkdir -- "$dir" ||
+mkdir dir ||
 	framework_skip_ 'failed to create a directory'
 
-file="$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
+file="dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
 
 touch -- "$file" ||
 	framework_skip_ 'failed to create a file'
 
-run_prog ./scm_rights /dev/zero
-run_strace -y -x -enetwork $args "$file"
+run_prog ../scm_rights /dev/zero
+run_strace -y -x -e%network $args "$file"
 
 hex='[[:xdigit:]]'
 n='[1-9][0-9]*'
@@ -66,15 +64,9 @@
 rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, cmsg_data='"$rights_data"'\}'
 creds='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data='"$ids"'\}'
 
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
 sendmsg\\(3$socket, $msg_head\\[$rights\\]$msg_tail\\}, 0\\) = 15
 recvmsg\\(0$socket, $msg_head\\[$creds, $rights\\]$msg_tail\\}, 0\\) = 15
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-rm -rf -- "$dir"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests-mx32/scm_rights.c b/tests-mx32/scm_rights.c
index 42caed7..632cf91 100644
--- a/tests-mx32/scm_rights.c
+++ b/tests-mx32/scm_rights.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,11 +45,11 @@
 	void *data = tail_alloc(data_size);
 	memcpy(data, sample, data_size);
 
-	struct iovec *iov = tail_alloc(sizeof(struct iovec));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = data;
 	iov->iov_len = data_size;
 
-	struct msghdr *mh = tail_alloc(sizeof(struct msghdr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
 	memset(mh, 0, sizeof(*mh));
 	mh->msg_iov = iov;
 	mh->msg_iovlen = 1;
diff --git a/tests-mx32/scno_tampering.sh b/tests-mx32/scno_tampering.sh
index 6aa7843..094175e 100755
--- a/tests-mx32/scno_tampering.sh
+++ b/tests-mx32/scno_tampering.sh
@@ -3,6 +3,7 @@
 # Skip the test if arch+kernel combination is not supported.
 #
 # 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
diff --git a/tests-mx32/seccomp-filter-v.c b/tests-mx32/seccomp-filter-v.c
index dbf686d..fe88ac7 100644
--- a/tests-mx32/seccomp-filter-v.c
+++ b/tests-mx32/seccomp-filter-v.c
@@ -2,6 +2,7 @@
  * Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2015-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
@@ -105,7 +106,7 @@
 		tail_memdup(filter_c, sizeof(filter_c));
 	struct sock_filter *const big_filter =
 		tail_alloc(sizeof(*big_filter) * (BPF_MAXINSNS + 1));
-	struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
 
 	int fds[2];
 	if (pipe(fds))
diff --git a/tests-mx32/seccomp-filter-v.gen.test b/tests-mx32/seccomp-filter-v.gen.test
new file mode 100755
index 0000000..efce637
--- /dev/null
+++ b/tests-mx32/seccomp-filter-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter-v -v -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=seccomp
diff --git a/tests-mx32/seccomp-filter-v.test b/tests-mx32/seccomp-filter-v.test
deleted file mode 100755
index f873eb6..0000000
--- a/tests-mx32/seccomp-filter-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=seccomp
diff --git a/tests-mx32/seccomp-filter.c b/tests-mx32/seccomp-filter.c
index d4d76dd..e2bea06 100644
--- a/tests-mx32/seccomp-filter.c
+++ b/tests-mx32/seccomp-filter.c
@@ -2,6 +2,7 @@
  * Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * 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
@@ -49,7 +50,7 @@
 {
 	struct sock_filter *const filter = tail_alloc(sizeof(*filter) * N);
 	const void *const efault = tail_alloc(1);
-	struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
 	long rc;
 
 	prog->filter = filter;
diff --git a/tests-mx32/seccomp-filter.gen.test b/tests-mx32/seccomp-filter.gen.test
new file mode 100755
index 0000000..52af0d5
--- /dev/null
+++ b/tests-mx32/seccomp-filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=seccomp
diff --git a/tests-mx32/seccomp-filter.test b/tests-mx32/seccomp-filter.test
deleted file mode 100755
index 65c6d49..0000000
--- a/tests-mx32/seccomp-filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=seccomp
diff --git a/tests-mx32/seccomp-strict.test b/tests-mx32/seccomp-strict.test
index b354c6a..b039871 100755
--- a/tests-mx32/seccomp-strict.test
+++ b/tests-mx32/seccomp-strict.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-set -- "./$NAME"
+set -- "../$NAME"
 "$@" > /dev/null || {
 	case $? in
 		77) skip_ "$* exited with code 77" ;;
@@ -14,4 +14,3 @@
 }
 run_strace -eseccomp "$@" > "$EXP"
 match_diff "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-mx32/select.gen.test b/tests-mx32/select.gen.test
new file mode 100755
index 0000000..cb3b8f1
--- /dev/null
+++ b/tests-mx32/select.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-mx32/select.test b/tests-mx32/select.test
deleted file mode 100755
index 60b88ca..0000000
--- a/tests-mx32/select.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check select syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-mx32/semop.c b/tests-mx32/semop.c
index a2ff263..3d1f384 100644
--- a/tests-mx32/semop.c
+++ b/tests-mx32/semop.c
@@ -33,9 +33,7 @@
 	static void * const bogus_sops = (void *) -1L;
 	static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
 
-	static const struct timespec ts_data = { 1, 123456789 };
-
-	struct timespec *ts = tail_memdup(&ts_data, sizeof(*ts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
 	int rc;
 
 	id = semget(IPC_PRIVATE, 1, 0600);
@@ -47,8 +45,8 @@
 	if (semctl(id, 0, SETVAL, sem_union) == -1)
 		perror_msg_and_skip("semctl");
 
-	struct sembuf *const sem_b = tail_alloc(sizeof(*sem_b));
-	struct sembuf *const sem_b2 = tail_alloc(sizeof(*sem_b2));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
 
 	rc = semop(bogus_semid, NULL, bogus_nsops);
 	printf("semop(%d, NULL, %u) = %s\n",
@@ -91,15 +89,17 @@
 	printf("semtimedop(%d, %p, 1, %p) = %s\n",
 		id, sem_b + 1, ts + 1, sprintrc(rc));
 
+	ts->tv_sec = 1;
+	ts->tv_nsec = 123456789;
 	rc = semtimedop(bogus_semid, sem_b2, 2, ts);
-	printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u"
+		", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 		bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
 		sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
 		sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
 		sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT),
 		sem_b2 + 1, 2,
-		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec,
+		(long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 		sprintrc(rc));
 
 	sem_b->sem_op = 1;
@@ -110,9 +110,27 @@
 	sem_b->sem_op = -1;
 	if (semtimedop(id, sem_b, 1, ts))
 		perror_msg_and_skip("semtimedop, -1");
-	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = 0\n", id,
-		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec);
+	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
+	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
+
+	sem_b->sem_op = 1;
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	rc = semtimedop(id, sem_b, 1, ts);
+	printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       id, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	sem_b->sem_op = -1;
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	rc = semtimedop(id, sem_b, 1, ts);
+	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       id, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/semop.gen.test b/tests-mx32/semop.gen.test
new file mode 100755
index 0000000..21b67ea
--- /dev/null
+++ b/tests-mx32/semop.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 -e trace=semop,semtimedop); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests-mx32/semop.test b/tests-mx32/semop.test
deleted file mode 100755
index 3e77d2f..0000000
--- a/tests-mx32/semop.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check semop syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests-mx32/sendfile.c b/tests-mx32/sendfile.c
index 23f096b..9253c10 100644
--- a/tests-mx32/sendfile.c
+++ b/tests-mx32/sendfile.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -69,7 +70,7 @@
 	printf("sendfile(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
 	       (unsigned long) page_len);
 
-	uint32_t *p_off = tail_alloc(sizeof(uint32_t));
+	TAIL_ALLOC_OBJECT_VAR_PTR(uint32_t, p_off);
 	void *p = p_off + 1;
 	*p_off = 0;
 
diff --git a/tests-mx32/sendfile.gen.test b/tests-mx32/sendfile.gen.test
new file mode 100755
index 0000000..433878f
--- /dev/null
+++ b/tests-mx32/sendfile.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/sendfile.test b/tests-mx32/sendfile.test
deleted file mode 100755
index 48dba58..0000000
--- a/tests-mx32/sendfile.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/sendfile64.c b/tests-mx32/sendfile64.c
index 7208c30..de02400 100644
--- a/tests-mx32/sendfile64.c
+++ b/tests-mx32/sendfile64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -69,7 +70,7 @@
 	printf("sendfile64(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
 	       (unsigned long) page_len);
 
-	uint64_t *p_off = tail_alloc(sizeof(uint64_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, p_off);
 	void *p = p_off + 1;
 	*p_off = 0;
 
diff --git a/tests-mx32/sendfile64.gen.test b/tests-mx32/sendfile64.gen.test
new file mode 100755
index 0000000..1655dd3
--- /dev/null
+++ b/tests-mx32/sendfile64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29
diff --git a/tests-mx32/sendfile64.test b/tests-mx32/sendfile64.test
deleted file mode 100755
index faa0525..0000000
--- a/tests-mx32/sendfile64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29
diff --git a/tests-mx32/set_mempolicy.gen.test b/tests-mx32/set_mempolicy.gen.test
new file mode 100755
index 0000000..f8c81c7
--- /dev/null
+++ b/tests-mx32/set_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -s3 -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a35
diff --git a/tests-mx32/set_mempolicy.test b/tests-mx32/set_mempolicy.test
deleted file mode 100755
index 0ed6666..0000000
--- a/tests-mx32/set_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check set_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a35
diff --git a/tests-mx32/set_ptracer_any.c b/tests-mx32/set_ptracer_any.c
index bc2f90c..3b4ea2c 100644
--- a/tests-mx32/set_ptracer_any.c
+++ b/tests-mx32/set_ptracer_any.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests-mx32/setdomainname.gen.test b/tests-mx32/setdomainname.gen.test
new file mode 100755
index 0000000..2b12e08
--- /dev/null
+++ b/tests-mx32/setdomainname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-mx32/setdomainname.test b/tests-mx32/setdomainname.test
deleted file mode 100755
index 2159e7c..0000000
--- a/tests-mx32/setdomainname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setdomainname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-mx32/setfsgid.gen.test b/tests-mx32/setfsgid.gen.test
new file mode 100755
index 0000000..caff401
--- /dev/null
+++ b/tests-mx32/setfsgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-mx32/setfsgid.test b/tests-mx32/setfsgid.test
deleted file mode 100755
index 0ae2b0a..0000000
--- a/tests-mx32/setfsgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-mx32/setfsgid32.gen.test b/tests-mx32/setfsgid32.gen.test
new file mode 100755
index 0000000..fae29e0
--- /dev/null
+++ b/tests-mx32/setfsgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-mx32/setfsgid32.test b/tests-mx32/setfsgid32.test
deleted file mode 100755
index 9b7a2bf..0000000
--- a/tests-mx32/setfsgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-mx32/setfsugid.c b/tests-mx32/setfsugid.c
index 79ba34d..7484db5 100644
--- a/tests-mx32/setfsugid.c
+++ b/tests-mx32/setfsugid.c
@@ -2,6 +2,7 @@
  * Check decoding of setfsuid/setfsgid/setfsuid32/setfsgid32 syscalls.
  *
  * 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
@@ -47,7 +48,7 @@
 	const kernel_ulong_t tests[] = {
 		ugid,
 		0xffff0000U | ugid,
-		(kernel_ulong_t) 0xffffffff00000000ULL | ugid,
+		F8ILL_KULONG_MASK | ugid,
 		0xffffU,
 		-1U,
 		-1L,
diff --git a/tests-mx32/setfsuid.gen.test b/tests-mx32/setfsuid.gen.test
new file mode 100755
index 0000000..e4c4d20
--- /dev/null
+++ b/tests-mx32/setfsuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-mx32/setfsuid.test b/tests-mx32/setfsuid.test
deleted file mode 100755
index 18a1021..0000000
--- a/tests-mx32/setfsuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-mx32/setfsuid32.gen.test b/tests-mx32/setfsuid32.gen.test
new file mode 100755
index 0000000..b6cd67d
--- /dev/null
+++ b/tests-mx32/setfsuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-mx32/setfsuid32.test b/tests-mx32/setfsuid32.test
deleted file mode 100755
index 2dce3cc..0000000
--- a/tests-mx32/setfsuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-mx32/setgid.gen.test b/tests-mx32/setgid.gen.test
new file mode 100755
index 0000000..f10add6
--- /dev/null
+++ b/tests-mx32/setgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/setgid.test b/tests-mx32/setgid.test
deleted file mode 100755
index a3a9004..0000000
--- a/tests-mx32/setgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-mx32/setgid32.gen.test b/tests-mx32/setgid32.gen.test
new file mode 100755
index 0000000..26f194e
--- /dev/null
+++ b/tests-mx32/setgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-mx32/setgid32.test b/tests-mx32/setgid32.test
deleted file mode 100755
index 11a87e1..0000000
--- a/tests-mx32/setgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-mx32/setgroups.c b/tests-mx32/setgroups.c
index 1ec8333..5645c22 100644
--- a/tests-mx32/setgroups.c
+++ b/tests-mx32/setgroups.c
@@ -2,6 +2,7 @@
  * Check decoding of setgroups/setgroups32 syscalls.
  *
  * 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
@@ -75,7 +76,7 @@
 	long rc = syscall(SYSCALL_NR, 0, 0);
 	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
 	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
 	rc = syscall(SYSCALL_NR, 1, 0);
@@ -91,7 +92,7 @@
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, -1, sprintrc(rc));
 
 	/* check how the second argument is decoded */
-	const GID_TYPE *const g1 = tail_alloc(sizeof(*g1));
+	TAIL_ALLOC_OBJECT_CONST_PTR(const GID_TYPE, g1);
 	GID_TYPE *const g2 = tail_alloc(sizeof(*g2) * 2);
 	GID_TYPE *const g3 = tail_alloc(sizeof(*g3) * 3);
 
@@ -164,9 +165,7 @@
 		printuid(g3[1]);
 		printf(", ...]) = %s\n", errstr);
 
-		const unsigned long size =
-			(unsigned long) 0xffffffff00000000ULL | ngroups_max;
-		rc = syscall(SYSCALL_NR, size, g3);
+		rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, g3);
 		errstr = sprintrc(rc);
 		printf("%s(%d, [", SYSCALL_NAME, ngroups_max);
 		printuid(g3[0]);
diff --git a/tests-mx32/setgroups.gen.test b/tests-mx32/setgroups.gen.test
new file mode 100755
index 0000000..01ec2e7
--- /dev/null
+++ b/tests-mx32/setgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups -s2 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a17
diff --git a/tests-mx32/setgroups.test b/tests-mx32/setgroups.test
deleted file mode 100755
index 0dcc8f7..0000000
--- a/tests-mx32/setgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a17
diff --git a/tests-mx32/setgroups32.gen.test b/tests-mx32/setgroups32.gen.test
new file mode 100755
index 0000000..e9e70ad
--- /dev/null
+++ b/tests-mx32/setgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups32 -s2 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a19
diff --git a/tests-mx32/setgroups32.test b/tests-mx32/setgroups32.test
deleted file mode 100755
index ee4750d..0000000
--- a/tests-mx32/setgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a19
diff --git a/tests-mx32/sethostname.gen.test b/tests-mx32/sethostname.gen.test
new file mode 100755
index 0000000..2827b1d
--- /dev/null
+++ b/tests-mx32/sethostname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests-mx32/sethostname.test b/tests-mx32/sethostname.test
deleted file mode 100755
index 78f8c58..0000000
--- a/tests-mx32/sethostname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sethostname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests-mx32/setns.gen.test b/tests-mx32/setns.gen.test
new file mode 100755
index 0000000..45fcc60
--- /dev/null
+++ b/tests-mx32/setns.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-mx32/setns.test b/tests-mx32/setns.test
deleted file mode 100755
index e9a905a..0000000
--- a/tests-mx32/setns.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-mx32/setregid.gen.test b/tests-mx32/setregid.gen.test
new file mode 100755
index 0000000..0125d7a
--- /dev/null
+++ b/tests-mx32/setregid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-mx32/setregid.test b/tests-mx32/setregid.test
deleted file mode 100755
index 101c7bd..0000000
--- a/tests-mx32/setregid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests-mx32/setregid32.gen.test b/tests-mx32/setregid32.gen.test
new file mode 100755
index 0000000..24f1505
--- /dev/null
+++ b/tests-mx32/setregid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-mx32/setregid32.test b/tests-mx32/setregid32.test
deleted file mode 100755
index e57e66c..0000000
--- a/tests-mx32/setregid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-mx32/setresgid.gen.test b/tests-mx32/setresgid.gen.test
new file mode 100755
index 0000000..ca5bc6b
--- /dev/null
+++ b/tests-mx32/setresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-mx32/setresgid.test b/tests-mx32/setresgid.test
deleted file mode 100755
index 5a69574..0000000
--- a/tests-mx32/setresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-mx32/setresgid32.gen.test b/tests-mx32/setresgid32.gen.test
new file mode 100755
index 0000000..a5edb90
--- /dev/null
+++ b/tests-mx32/setresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-mx32/setresgid32.test b/tests-mx32/setresgid32.test
deleted file mode 100755
index 528b2c9..0000000
--- a/tests-mx32/setresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-mx32/setresuid.gen.test b/tests-mx32/setresuid.gen.test
new file mode 100755
index 0000000..a6e0664
--- /dev/null
+++ b/tests-mx32/setresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests-mx32/setresuid.test b/tests-mx32/setresuid.test
deleted file mode 100755
index f1219e0..0000000
--- a/tests-mx32/setresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests-mx32/setresuid32.gen.test b/tests-mx32/setresuid32.gen.test
new file mode 100755
index 0000000..3fbf36b
--- /dev/null
+++ b/tests-mx32/setresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests-mx32/setresuid32.test b/tests-mx32/setresuid32.test
deleted file mode 100755
index 942a3a6..0000000
--- a/tests-mx32/setresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-mx32/setreuid.gen.test b/tests-mx32/setreuid.gen.test
new file mode 100755
index 0000000..4c3dc93
--- /dev/null
+++ b/tests-mx32/setreuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests-mx32/setreuid.test b/tests-mx32/setreuid.test
deleted file mode 100755
index b6db3c1..0000000
--- a/tests-mx32/setreuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests-mx32/setreuid32.gen.test b/tests-mx32/setreuid32.gen.test
new file mode 100755
index 0000000..d179053
--- /dev/null
+++ b/tests-mx32/setreuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-mx32/setreuid32.test b/tests-mx32/setreuid32.test
deleted file mode 100755
index 23323d4..0000000
--- a/tests-mx32/setreuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests-mx32/setrlimit.gen.test b/tests-mx32/setrlimit.gen.test
new file mode 100755
index 0000000..dfe2da3
--- /dev/null
+++ b/tests-mx32/setrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests-mx32/setrlimit.test b/tests-mx32/setrlimit.test
deleted file mode 100755
index 7920608..0000000
--- a/tests-mx32/setrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit/ugetrlimit/setrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests-mx32/setuid.gen.test b/tests-mx32/setuid.gen.test
new file mode 100755
index 0000000..98d470f
--- /dev/null
+++ b/tests-mx32/setuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/setuid.test b/tests-mx32/setuid.test
deleted file mode 100755
index 9279233..0000000
--- a/tests-mx32/setuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-mx32/setuid32.gen.test b/tests-mx32/setuid32.gen.test
new file mode 100755
index 0000000..7d15495
--- /dev/null
+++ b/tests-mx32/setuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests-mx32/setuid32.test b/tests-mx32/setuid32.test
deleted file mode 100755
index 7998392..0000000
--- a/tests-mx32/setuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests-mx32/shmxt.gen.test b/tests-mx32/shmxt.gen.test
new file mode 100755
index 0000000..dd9d35f
--- /dev/null
+++ b/tests-mx32/shmxt.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shmxt -a11 -e trace='/(osf_)?shmat,shmdt'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace='/(osf_)?shmat,shmdt'
diff --git a/tests-mx32/shmxt.test b/tests-mx32/shmxt.test
deleted file mode 100755
index 3757cfa..0000000
--- a/tests-mx32/shmxt.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check shmat and shmdt syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-case "$STRACE_ARCH" in
-	alpha) shmat=osf_shmat ;;
-	*) shmat=shmat ;;
-esac
-
-run_strace_match_diff -e trace=$shmat,shmdt -a11
diff --git a/tests-mx32/shutdown.gen.test b/tests-mx32/shutdown.gen.test
new file mode 100755
index 0000000..3412513
--- /dev/null
+++ b/tests-mx32/shutdown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-mx32/shutdown.test b/tests-mx32/shutdown.test
deleted file mode 100755
index 22f0d5a..0000000
--- a/tests-mx32/shutdown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of shutdown syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-mx32/siginfo.gen.test b/tests-mx32/siginfo.gen.test
new file mode 100755
index 0000000..33792b9
--- /dev/null
+++ b/tests-mx32/siginfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (siginfo -e trace=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=none
diff --git a/tests-mx32/siginfo.test b/tests-mx32/siginfo.test
deleted file mode 100755
index 725f714..0000000
--- a/tests-mx32/siginfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check SIGCHLD siginfo_t decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=none
diff --git a/tests-mx32/signal_receive.gen.test b/tests-mx32/signal_receive.gen.test
new file mode 100755
index 0000000..79e8fb8
--- /dev/null
+++ b/tests-mx32/signal_receive.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signal_receive -a16 -e trace=kill); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -e trace=kill
diff --git a/tests-mx32/signal_receive.test b/tests-mx32/signal_receive.test
deleted file mode 100755
index 9685b66..0000000
--- a/tests-mx32/signal_receive.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check whether strace traces signals properly.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16 -e trace=kill
diff --git a/tests-mx32/signalfd4.c b/tests-mx32/signalfd4.c
index 47e49b5..4391b92 100644
--- a/tests-mx32/signalfd4.c
+++ b/tests-mx32/signalfd4.c
@@ -2,6 +2,7 @@
  * Check decoding of signalfd4 syscall.
  *
  * Copyright (c) 2015-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
@@ -31,8 +32,7 @@
 #include <fcntl.h>
 #include <asm/unistd.h>
 
-#if defined __NR_rt_sigprocmask \
- && defined HAVE_SYS_SIGNALFD_H \
+#if defined HAVE_SYS_SIGNALFD_H \
  && defined HAVE_SIGNALFD \
  && defined O_CLOEXEC
 
@@ -41,24 +41,6 @@
 # include <unistd.h>
 # include <sys/signalfd.h>
 
-static unsigned int
-get_sigset_size(void)
-{
-	const unsigned int big_size = 1024 / 8;
-	unsigned int set_size;
-
-	for (set_size = big_size; set_size; set_size >>= 1) {
-		if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
-			     NULL, NULL, set_size))
-			break;
-	}
-
-	if (!set_size)
-		perror_msg_and_fail("rt_sigprocmask");
-
-	return set_size;
-}
-
 int
 main(void)
 {
@@ -80,7 +62,6 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask && HAVE_SYS_SIGNALFD_H"
-		    " && HAVE_SIGNALFD && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
 
 #endif
diff --git a/tests-mx32/signalfd4.gen.test b/tests-mx32/signalfd4.gen.test
new file mode 100755
index 0000000..e91a9fe
--- /dev/null
+++ b/tests-mx32/signalfd4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/signalfd4.test b/tests-mx32/signalfd4.test
deleted file mode 100755
index a615a5b..0000000
--- a/tests-mx32/signalfd4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of signalfd4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/sigreturn.c b/tests-mx32/sigreturn.c
index dace040..ff9a59f 100644
--- a/tests-mx32/sigreturn.c
+++ b/tests-mx32/sigreturn.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,23 +26,38 @@
  */
 
 #include "tests.h"
-#include <stdlib.h>
-#include <signal.h>
+#include <asm/unistd.h>
 
-#ifdef ASM_SIGRTMIN
-# define RT_0 ASM_SIGRTMIN
-#else
-/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
-# define RT_0 32
+#if defined __powerpc64__ \
+ || (defined __sparc__ && defined __arch64__)
+/* Old sigreturn is defined but not implemented in the kernel. */
+# undef __NR_sigreturn
 #endif
 
-static void handler(int sig)
+#ifdef __NR_sigreturn
+
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+
+# ifdef ASM_SIGRTMIN
+#  define RT_0 ASM_SIGRTMIN
+# else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+#  define RT_0 32
+# endif
+
+static void
+handler(int sig)
 {
 }
 
-int main(void) {
-	sigset_t set;
+int
+main(void)
+{
+	static sigset_t set;
 	sigemptyset(&set);
+	sigaddset(&set, SIGINT);
 	sigaddset(&set, SIGUSR2);
 	sigaddset(&set, SIGCHLD);
 	sigaddset(&set, RT_0 +  3);
@@ -50,8 +65,28 @@
 	sigaddset(&set, RT_0 +  5);
 	sigaddset(&set, RT_0 + 26);
 	sigaddset(&set, RT_0 + 27);
-	sigprocmask(SIG_SETMASK, &set, NULL);
-	signal(SIGUSR1, handler);
-	raise(SIGUSR1);
+	if (sigprocmask(SIG_SETMASK, &set, NULL))
+		perror_msg_and_fail("sigprocmask");
+	sigemptyset(&set);
+
+	/* This should result to old sigreturn. */
+	if (signal(SIGUSR1, handler) == SIG_ERR)
+		perror_msg_and_fail("sigaction");
+
+	if (raise(SIGUSR1))
+		perror_msg_and_fail("raise");
+
+	static const char *const sigs =
+		(SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+	static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+	printf("sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigreturn")
+
+#endif
diff --git a/tests-mx32/sigreturn.gen.test b/tests-mx32/sigreturn.gen.test
new file mode 100755
index 0000000..f317e89
--- /dev/null
+++ b/tests-mx32/sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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'
diff --git a/tests-mx32/sigreturn.test b/tests-mx32/sigreturn.test
deleted file mode 100755
index f9a612b..0000000
--- a/tests-mx32/sigreturn.test
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-#
-# Check rt_sigprocmask and sigreturn/rt_sigreturn decoding.
-#
-# Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -esignal $args
-
-mask='\[(USR2 CHLD|CHLD USR2) RT_3 RT_4 RT_5 RT_26 RT_27\]'
-rt_sigprocmask='rt_sigprocmask\(SIG_SETMASK, '"$mask"', NULL, [[:digit:]]+\) += 0'
-osf_sigprocmask='osf_sigprocmask\(SIG_SETMASK, '"$mask"'\) += 0 +\(old mask \[[^]]*\]\)'
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
-$rt_sigprocmask|$osf_sigprocmask
-(rt_)?sigreturn\\((\\{mask=$mask\\})?\\) += 0
-__EOF__
-
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
diff --git a/tests-mx32/sigsuspend.c b/tests-mx32/sigsuspend.c
new file mode 100644
index 0000000..dac6890
--- /dev/null
+++ b/tests-mx32/sigsuspend.c
@@ -0,0 +1,117 @@
+/*
+ * Check decoding of sigsuspend syscall.
+ *
+ * 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 <asm/unistd.h>
+
+#ifdef __NR_sigsuspend
+
+# include <assert.h>
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+# ifdef MIPS
+#  define SIGNAL_MASK_BY_REF 1
+# else
+#  define SIGNAL_MASK_BY_REF 0
+# endif
+
+static long
+k_sigsuspend(const kernel_ulong_t arg1,
+	     const kernel_ulong_t arg2,
+	     const kernel_ulong_t arg3)
+{
+	return syscall(__NR_sigsuspend, arg1, arg2, arg3);
+}
+
+static int signo;
+static const char *sigtxt[] = {
+	[SIGUSR1] = "USR1",
+	[SIGUSR2] = "USR2"
+};
+
+static void
+handler(int i)
+{
+	signo = i;
+}
+
+int
+main(void)
+{
+	union {
+		sigset_t libc_mask;
+		unsigned long old_mask;
+	} u;
+
+	sigemptyset(&u.libc_mask);
+	sigaddset(&u.libc_mask, SIGUSR1);
+	sigaddset(&u.libc_mask, SIGUSR2);
+	if (sigprocmask(SIG_SETMASK, &u.libc_mask, NULL))
+		perror_msg_and_fail("sigprocmask");
+
+	const struct sigaction sa = { .sa_handler = handler };
+	if (sigaction(SIGUSR1, &sa, NULL) || sigaction(SIGUSR2, &sa, NULL))
+		perror_msg_and_fail("sigaction");
+
+	raise(SIGUSR1);
+	raise(SIGUSR2);
+
+	u.old_mask = -1UL;
+	sigdelset(&u.libc_mask, SIGUSR1);
+	const unsigned long mask1 = u.old_mask;
+
+	u.old_mask = -1UL;
+	sigdelset(&u.libc_mask, SIGUSR2);
+	const unsigned long mask2 = u.old_mask;
+
+#if SIGNAL_MASK_BY_REF
+	k_sigsuspend((uintptr_t) &mask1, 0xdeadbeef, (uintptr_t) &mask2);
+#else
+	k_sigsuspend(mask1, 0xdeadbeef, mask2);
+#endif
+	if (EINTR != errno)
+		perror_msg_and_skip("sigsuspend");
+
+	printf("sigsuspend(~[%s]) = ? ERESTARTNOHAND"
+	       " (To be restarted if no handler)\n", sigtxt[signo]);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigsuspend")
+
+#endif
diff --git a/tests-mx32/sigsuspend.gen.test b/tests-mx32/sigsuspend.gen.test
new file mode 100755
index 0000000..afd0207
--- /dev/null
+++ b/tests-mx32/sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigsuspend -a19 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -esignal=none
diff --git a/tests-mx32/skip_unavailable.c b/tests-mx32/skip_unavailable.c
new file mode 100644
index 0000000..074fc3a
--- /dev/null
+++ b/tests-mx32/skip_unavailable.c
@@ -0,0 +1,13 @@
+#include "tests.h"
+
+#include <sys/stat.h>
+#include <unistd.h>
+
+void
+skip_if_unavailable(const char *const path)
+{
+	struct stat st;
+
+	if (stat(path, &st))
+		perror_msg_and_skip("stat: %s", path);
+}
diff --git a/tests-mx32/socketcall.gen.test b/tests-mx32/socketcall.gen.test
new file mode 100755
index 0000000..95c45fd
--- /dev/null
+++ b/tests-mx32/socketcall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests-mx32/socketcall.test b/tests-mx32/socketcall.test
deleted file mode 100755
index 959bc83..0000000
--- a/tests-mx32/socketcall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of socketcall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests-mx32/sockname.c b/tests-mx32/sockname.c
index c5072ca..9bab8ed 100644
--- a/tests-mx32/sockname.c
+++ b/tests-mx32/sockname.c
@@ -2,6 +2,7 @@
  * Check decoding of sockname family syscalls.
  *
  * 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
@@ -74,7 +75,7 @@
 static void
 test_sockname_syscall(const int fd)
 {
-	socklen_t *const plen = tail_alloc(sizeof(*plen));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
 	*plen = sizeof(struct sockaddr_un);
 	struct sockaddr_un *addr = tail_alloc(*plen);
 
diff --git a/tests-mx32/splice.c b/tests-mx32/splice.c
index b6f2525..cf07c80 100644
--- a/tests-mx32/splice.c
+++ b/tests-mx32/splice.c
@@ -2,6 +2,7 @@
  * This file is part of splice strace test.
  *
  * 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
@@ -40,8 +41,8 @@
 {
 	const long int fd_in = (long int) 0xdeadbeefffffffffULL;
 	const long int fd_out = (long int) 0xdeadbeeffffffffeULL;
-	long long int *const off_in = tail_alloc(sizeof(*off_in));
-	long long int *const off_out = tail_alloc(sizeof(*off_out));
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
 	*off_in = 0xdeadbef1facefed1ULL;
 	*off_out = 0xdeadbef2facefed2ULL;
 	const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests-mx32/splice.gen.test b/tests-mx32/splice.gen.test
new file mode 100755
index 0000000..83c8406
--- /dev/null
+++ b/tests-mx32/splice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/splice.test b/tests-mx32/splice.test
deleted file mode 100755
index cc5c327..0000000
--- a/tests-mx32/splice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check splice syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/stat.c b/tests-mx32/stat.c
index d4ca7b0..79e9175 100644
--- a/tests-mx32/stat.c
+++ b/tests-mx32/stat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/stat.gen.test b/tests-mx32/stat.gen.test
new file mode 100755
index 0000000..13ccd0b
--- /dev/null
+++ b/tests-mx32/stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/stat.test b/tests-mx32/stat.test
deleted file mode 100755
index ba8938c..0000000
--- a/tests-mx32/stat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/stat64.c b/tests-mx32/stat64.c
index 782de33..74927de 100644
--- a/tests-mx32/stat64.c
+++ b/tests-mx32/stat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests-mx32/stat64.gen.test b/tests-mx32/stat64.gen.test
new file mode 100755
index 0000000..f49df37
--- /dev/null
+++ b/tests-mx32/stat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/stat64.test b/tests-mx32/stat64.test
deleted file mode 100755
index abcfb9e..0000000
--- a/tests-mx32/stat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests-mx32/statfs.expected b/tests-mx32/statfs.expected
deleted file mode 100644
index 11e9f0b..0000000
--- a/tests-mx32/statfs.expected
+++ /dev/null
@@ -1 +0,0 @@
-statfs(64)?\("/proc/self/status"(, [1-9][0-9]*)?, \{f_type=PROC_SUPER_MAGIC, f_bsize=[1-9][0-9]*, f_blocks=[0-9]+, f_bfree=[0-9]+, f_bavail=[0-9]+, f_files=[0-9]+, f_ffree=[0-9]+, f_fsid=\{val=\[[0-9]+, [0-9]+\]\}, f_namelen=[1-9][0-9]*(, f_frsize=[0-9]+)?(, f_flags=ST_VALID(\|ST_[A-Z]+)*)?\}\) += 0
diff --git a/tests-mx32/statfs.gen.test b/tests-mx32/statfs.gen.test
new file mode 100755
index 0000000..19b26dd
--- /dev/null
+++ b/tests-mx32/statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-mx32/statfs.test b/tests-mx32/statfs.test
deleted file mode 100755
index 6075576..0000000
--- a/tests-mx32/statfs.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check statfs syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# this test probes /proc/self/status
-[ -f /proc/self/status ] ||
-	framework_skip_ '/proc/self/status is not available'
-
-run_strace_match_diff -a17
diff --git a/tests-mx32/statfs64.gen.test b/tests-mx32/statfs64.gen.test
new file mode 100755
index 0000000..66409f9
--- /dev/null
+++ b/tests-mx32/statfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23
diff --git a/tests-mx32/statfs64.test b/tests-mx32/statfs64.test
deleted file mode 100755
index 9c0aa27..0000000
--- a/tests-mx32/statfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check statfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests-mx32/statx.c b/tests-mx32/statx.c
new file mode 100644
index 0000000..f36fb0e
--- /dev/null
+++ b/tests-mx32/statx.c
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_statx
+
+# include <linux/stat.h>
+# include "xlat.h"
+# include "xlat/statx_masks.h"
+# include "xlat/statx_attrs.h"
+# include "xlat/at_statx_sync_types.h"
+
+# define IS_STATX 1
+# define TEST_SYSCALL_STR "statx"
+# define STRUCT_STAT struct statx
+# define STRUCT_STAT_STR "struct statx"
+# define STRUCT_STAT_IS_STAT64 0
+
+static unsigned    TEST_SYSCALL_STATX_FLAGS     = AT_STATX_SYNC_AS_STAT;
+static const char *TEST_SYSCALL_STATX_FLAGS_STR = "AT_STATX_SYNC_AS_STAT";
+static unsigned    TEST_SYSCALL_STATX_MASK      = STATX_ALL;
+static const char *TEST_SYSCALL_STATX_MASK_STR  = "STATX_ALL";
+
+# define TEST_SYSCALL_INVOKE(sample, pst) \
+	syscall(__NR_statx, AT_FDCWD, sample, TEST_SYSCALL_STATX_FLAGS, \
+	        TEST_SYSCALL_STATX_MASK, pst)
+# define PRINT_SYSCALL_HEADER(sample) \
+	do { \
+		int saved_errno = errno; \
+		printf("%s(AT_FDCWD, \"%s\", %s, %s, ", \
+		       TEST_SYSCALL_STR, sample, TEST_SYSCALL_STATX_FLAGS_STR, \
+		       TEST_SYSCALL_STATX_MASK_STR)
+# define PRINT_SYSCALL_FOOTER(rc) \
+		errno = saved_errno; \
+		printf(") = %s\n", sprintrc(rc)); \
+	} while (0)
+
+# include "xstatx.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_statx")
+
+#endif
diff --git a/tests-mx32/statx.gen.test b/tests-mx32/statx.gen.test
new file mode 100755
index 0000000..bff3e3f
--- /dev/null
+++ b/tests-mx32/statx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/statx.sh b/tests-mx32/statx.sh
deleted file mode 100755
index a630193..0000000
--- a/tests-mx32/statx.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of stat family syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -P $NAME.sample -P /dev/full -a32
diff --git a/tests-mx32/strace-C.test b/tests-mx32/strace-C.test
index ccca9a0..359ddbd 100755
--- a/tests-mx32/strace-C.test
+++ b/tests-mx32/strace-C.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -a24 -C -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -C -enanosleep ../sleep 1
 match_grep
diff --git a/tests-mx32/strace-E.expected b/tests-mx32/strace-E.expected
index d7823b7..3ae2c28 100644
--- a/tests-mx32/strace-E.expected
+++ b/tests-mx32/strace-E.expected
@@ -1 +1 @@
-execve\("\./sleep", \["\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
diff --git a/tests-mx32/strace-E.test b/tests-mx32/strace-E.test
index d76ec3f..843f27a 100755
--- a/tests-mx32/strace-E.test
+++ b/tests-mx32/strace-E.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0 > /dev/null
+run_prog ../sleep 0 > /dev/null
 run_strace -E option_E_var=OPTION_E_VAL -v $args
 match_grep
diff --git a/tests-mx32/strace-S.test b/tests-mx32/strace-S.test
index 3ea315c..64e4a41 100755
--- a/tests-mx32/strace-S.test
+++ b/tests-mx32/strace-S.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./readv > /dev/null
+run_prog ../readv > /dev/null
 
 test_c()
 {
@@ -13,7 +13,7 @@
 	sortopts="$1"; shift
 	sedexpr="$1"; shift
 
-	run_strace -c -w -S "$sortby" ./readv > /dev/null
+	run_strace -c -w -S "$sortby" ../readv > /dev/null
 	sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
 
 	[ -s "$OUT" ] ||
@@ -28,5 +28,3 @@
 c='[[:space:]]+([^[:space:]]+)'
 test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
 test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
-
-rm -f "$OUT"
diff --git a/tests-mx32/strace-T.test b/tests-mx32/strace-T.test
index 7ab84a7..a6dac4e 100755
--- a/tests-mx32/strace-T.test
+++ b/tests-mx32/strace-T.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -a24 -T -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -T -enanosleep ../sleep 1
 match_grep
diff --git a/tests-mx32/strace-V.test b/tests-mx32/strace-V.test
index 9a051e0..d5c3ac0 100755
--- a/tests-mx32/strace-V.test
+++ b/tests-mx32/strace-V.test
@@ -10,15 +10,22 @@
 
 getval()
 {
-	sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' ../config.h
+	sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
+		../../config.h
+}
+
+config_year=$(getval COPYRIGHT_YEAR)
+
+[ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || {
+	echo >&2 "The year derived from config.h (${config_year}) does not pass sanity checks."
+	exit 1
 }
 
 cat > "$EXP" << __EOF__
 $(getval PACKAGE_NAME) -- version $(getval PACKAGE_VERSION)
-Copyright (C) 1991-$year The strace developers <$(getval PACKAGE_URL)>.
+Copyright (C) 1991-${config_year} The strace developers <$(getval PACKAGE_URL)>.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 __EOF__
 
-match_diff "$EXP" "$LOG"
-rm -f "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests-mx32/strace-ff.test b/tests-mx32/strace-ff.test
index 2ce06f1..7107527 100755
--- a/tests-mx32/strace-ff.test
+++ b/tests-mx32/strace-ff.test
@@ -7,7 +7,7 @@
 run_prog_skip_if_failed \
 	kill -0 $$
 
-./set_ptracer_any ./sleep 1 > "$OUT" &
+../set_ptracer_any ../sleep 1 > "$OUT" &
 tracee_pid=$!
 
 while ! [ -s "$OUT" ]; do
@@ -15,7 +15,6 @@
 		fail_ 'set_ptracer_any sleep failed'
 done
 
-rm -f "$LOG".*
 run_strace -a14 -eexit_group -ff -p $tracee_pid
 
 # check that output matches
@@ -25,5 +24,3 @@
 set -- "$LOG".*
 [ "$LOG.$tracee_pid" = "$*" ] ||
 	fail_ "too many output files: $*"
-
-rm -f "$OUT" "$LOG.$tracee_pid"
diff --git a/tests-mx32/strace-k.test b/tests-mx32/strace-k.test
index d5e8ed2..e68951e 100755
--- a/tests-mx32/strace-k.test
+++ b/tests-mx32/strace-k.test
@@ -4,6 +4,7 @@
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,7 +38,7 @@
 check_prog sed
 check_prog tr
 
-run_prog ./stack-fcall
+run_prog ../stack-fcall
 run_strace -e getpid -k $args
 
 expected='getpid f3 f2 f1 f0 main '
diff --git a/tests-mx32/strace-r.expected b/tests-mx32/strace-r.expected
index 8009c35..2a5b977 100644
--- a/tests-mx32/strace-r.expected
+++ b/tests-mx32/strace-r.expected
@@ -1,2 +1,2 @@
-[ ]{5}0\.0{6} execve\("\./sleep", \["\./sleep", "1"\], \[/\* [[:digit:]]+ vars \*/\]\) = 0
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
 [ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests-mx32/strace-r.test b/tests-mx32/strace-r.test
index 4ba01f1..00649b5 100755
--- a/tests-mx32/strace-r.test
+++ b/tests-mx32/strace-r.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -r -eexecve ./sleep 1
+run_prog ../sleep 0
+run_strace -r -eexecve ../sleep 1
 match_grep
diff --git a/tests-mx32/strace-t.test b/tests-mx32/strace-t.test
index 1d213e6..38070f3 100755
--- a/tests-mx32/strace-t.test
+++ b/tests-mx32/strace-t.test
@@ -5,16 +5,14 @@
 . "${srcdir=.}/init.sh"
 
 run_prog_skip_if_failed date +%T > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 t0="$(date +%T)"
 run_strace -t -eexecve $args
 t1="$(date +%T)"
 
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
-($t0|$t1) execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+cat > "$EXP" << __EOF__
+($t0|$t1) execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+match_grep "$LOG" "$EXP"
diff --git a/tests-mx32/strace-tt.test b/tests-mx32/strace-tt.test
index 3f80001..3285655 100755
--- a/tests-mx32/strace-tt.test
+++ b/tests-mx32/strace-tt.test
@@ -6,7 +6,7 @@
 
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 s0="$(date +%s)"
 run_strace -tt -eexecve $args
@@ -21,8 +21,7 @@
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-mx32/strace-ttt.test b/tests-mx32/strace-ttt.test
index 4439715..7d4435b 100755
--- a/tests-mx32/strace-ttt.test
+++ b/tests-mx32/strace-ttt.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog_skip_if_failed date +%s > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 s0="$(date +%s)"
 run_strace -ttt -eexecve $args
@@ -19,8 +19,7 @@
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests-mx32/struct_flock.c b/tests-mx32/struct_flock.c
index 34cf58e..428c038 100644
--- a/tests-mx32/struct_flock.c
+++ b/tests-mx32/struct_flock.c
@@ -1,5 +1,6 @@
 /*
  * 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,7 +33,6 @@
 #include "flock.h"
 
 #define FILE_LEN 4096
-#define EINVAL_STR "-1 EINVAL (Invalid argument)"
 
 #define TEST_FLOCK_EINVAL(cmd) test_flock_einval(cmd, #cmd)
 
@@ -45,9 +45,10 @@
 static long
 invoke_test_syscall(const unsigned int cmd, void *const p)
 {
-	const unsigned long op = (unsigned long) 0xffffffff00000000ULL | cmd;
+	const kernel_ulong_t fd = F8ILL_KULONG_MASK;
+	const kernel_ulong_t op = F8ILL_KULONG_MASK | cmd;
 
-	return syscall(TEST_SYSCALL_NR, 0, op, (unsigned long) p);
+	return syscall(TEST_SYSCALL_NR, fd, op, (unsigned long) p);
 }
 
 static void
@@ -58,10 +59,10 @@
 		.l_start = (TYPEOF_FLOCK_OFF_T) 0xdefaced1facefeedULL,
 		.l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
-	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
 }
 
 static void
@@ -77,7 +78,7 @@
 	long rc = invoke_test_syscall(F_SETLK, &fl);
 	printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=0, l_len=%d}) = %s\n",
-	       TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+	       TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
 	if (rc)
 		return;
 
diff --git a/tests-mx32/sun_path.test b/tests-mx32/sun_path.test
index 728328a..f0b7a02 100755
--- a/tests-mx32/sun_path.test
+++ b/tests-mx32/sun_path.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
+run_prog ../net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
 run_strace_merge -ebind,connect,getsockname $args
 match_grep
 
diff --git a/tests-mx32/swap.gen.test b/tests-mx32/swap.gen.test
new file mode 100755
index 0000000..4ca7891
--- /dev/null
+++ b/tests-mx32/swap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (swap -a23 -e trace=swapon,swapoff); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests-mx32/swap.test b/tests-mx32/swap.test
deleted file mode 100755
index a30e1fd..0000000
--- a/tests-mx32/swap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check swapon and swapoff syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests-mx32/sxetmask.c b/tests-mx32/sxetmask.c
new file mode 100644
index 0000000..0ede9ad
--- /dev/null
+++ b/tests-mx32/sxetmask.c
@@ -0,0 +1,124 @@
+/*
+ * Check decoding of sgetmask and ssetmask syscalls.
+ *
+ * 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 <asm/unistd.h>
+
+#if defined __NR_sgetmask && defined __NR_ssetmask
+
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+static long
+k_sgetmask(void)
+{
+	return syscall(__NR_sgetmask);
+}
+
+static long
+k_ssetmask(const kernel_ulong_t arg)
+{
+	return syscall(__NR_ssetmask, arg);
+}
+
+int
+main(void)
+{
+	union {
+		sigset_t libc_mask;
+		unsigned long old_mask;
+	} uset, uget;
+	long rc;
+
+	/*
+	 * Block, reset, and raise SIGUSR1.
+	 * If a subsequent ssetmask call fails to set the proper mask,
+	 * the process will be terminated by SIGUSR1.
+	 */
+	sigemptyset(&uset.libc_mask);
+	sigaddset(&uset.libc_mask, SIGUSR1);
+	if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+		perror_msg_and_fail("sigprocmask");
+	if (signal(SIGUSR1, SIG_DFL) == SIG_ERR)
+		perror_msg_and_fail("signal");
+	raise(SIGUSR1);
+
+	sigaddset(&uset.libc_mask, SIGUSR2);
+	rc = k_ssetmask((kernel_ulong_t) 0xfacefeed00000000ULL | uset.old_mask);
+	if (rc == -1L) {
+		printf("ssetmask([USR1 USR2]) = %s\n", sprintrc(rc));
+	} else {
+		printf("ssetmask([USR1 USR2]) = %#lx (old mask [USR1])\n", rc);
+		/*
+		 * Use a regular sigprocmask call to check the value
+		 * returned by the ssetmask call being tested.
+		 */
+		if (sigprocmask(SIG_SETMASK, NULL, &uget.libc_mask))
+			perror_msg_and_fail("sigprocmask");
+		if (uset.old_mask != uget.old_mask)
+			error_msg_and_fail("sigprocmask returned %#lx"
+					   " instead of %#lx",
+					   uget.old_mask, uset.old_mask);
+	}
+
+	rc = k_sgetmask();
+	if (rc == -1L) {
+		printf("sgetmask() = %s\n", sprintrc(rc));
+	} else {
+		printf("sgetmask() = %#lx (mask [USR1 USR2])\n", rc);
+		if (uget.old_mask != (unsigned long) rc)
+			error_msg_and_fail("sigprocmask returned %#lx",
+					   uget.old_mask);
+
+		if (sizeof(long) > 4) {
+			sigaddset(&uset.libc_mask, 32 + 27);
+			if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+				perror_msg_and_fail("sigprocmask");
+			rc = k_sgetmask();
+			printf("sgetmask() = %#lx"
+			       " (mask [USR1 USR2 RT_27])\n", rc);
+			if (uset.old_mask != (unsigned long) rc)
+				error_msg_and_fail("sigprocmask set %#lx",
+						   uset.old_mask);
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sgetmask && __NR_ssetmask")
+
+#endif
diff --git a/tests-mx32/sxetmask.gen.test b/tests-mx32/sxetmask.gen.test
new file mode 100755
index 0000000..fea9e4a
--- /dev/null
+++ b/tests-mx32/sxetmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sxetmask -a11 -e trace=sgetmask,ssetmask); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=sgetmask,ssetmask
diff --git a/tests-mx32/symlink.c b/tests-mx32/symlink.c
index 72cb490..3e01cf2 100644
--- a/tests-mx32/symlink.c
+++ b/tests-mx32/symlink.c
@@ -7,14 +7,12 @@
 # include <unistd.h>
 
 int
-main(void)
+main(int ac, char **av)
 {
-	static const char sample_1[] = "symlink_new";
-	static const char sample_2[] = "symlink";
+	static const char sample[] = "symlink.sample";
 
-	long rc = syscall(__NR_symlink, sample_1, sample_2);
-	printf("symlink(\"%s\", \"%s\") = %ld %s (%m)\n",
-	       sample_1, sample_2, rc, errno2name());
+	long rc = syscall(__NR_symlink, sample, av[0]);
+	printf("symlink(\"%s\", \"%s\") = %s\n", sample, av[0], sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/symlink.gen.test b/tests-mx32/symlink.gen.test
new file mode 100755
index 0000000..f41668c
--- /dev/null
+++ b/tests-mx32/symlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34
diff --git a/tests-mx32/symlink.test b/tests-mx32/symlink.test
deleted file mode 100755
index 79b93ba..0000000
--- a/tests-mx32/symlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
diff --git a/tests-mx32/symlinkat.gen.test b/tests-mx32/symlinkat.gen.test
new file mode 100755
index 0000000..39e624a
--- /dev/null
+++ b/tests-mx32/symlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/symlinkat.test b/tests-mx32/symlinkat.test
deleted file mode 100755
index d8501ff..0000000
--- a/tests-mx32/symlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/sync.gen.test b/tests-mx32/sync.gen.test
new file mode 100755
index 0000000..4aaf8c7
--- /dev/null
+++ b/tests-mx32/sync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a7
diff --git a/tests-mx32/sync.test b/tests-mx32/sync.test
deleted file mode 100755
index f6bf6c8..0000000
--- a/tests-mx32/sync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a7
diff --git a/tests-mx32/sync_file_range.gen.test b/tests-mx32/sync_file_range.gen.test
new file mode 100755
index 0000000..0693c12
--- /dev/null
+++ b/tests-mx32/sync_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/sync_file_range.test b/tests-mx32/sync_file_range.test
deleted file mode 100755
index 6aa86d6..0000000
--- a/tests-mx32/sync_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/sync_file_range2.gen.test b/tests-mx32/sync_file_range2.gen.test
new file mode 100755
index 0000000..23046b6
--- /dev/null
+++ b/tests-mx32/sync_file_range2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/sync_file_range2.test b/tests-mx32/sync_file_range2.test
deleted file mode 100755
index 0d9945e..0000000
--- a/tests-mx32/sync_file_range2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/sysinfo.c b/tests-mx32/sysinfo.c
index 377bdc9..b4b348c 100644
--- a/tests-mx32/sysinfo.c
+++ b/tests-mx32/sysinfo.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
@@ -38,7 +39,7 @@
 	sysinfo(NULL);
 	printf("sysinfo(NULL) = -1 EFAULT (%m)\n");
 
-	struct sysinfo * const si = tail_alloc(sizeof(*si));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sysinfo, si);
 
 	if (sysinfo(si))
 		perror_msg_and_skip("sysinfo");
diff --git a/tests-mx32/sysinfo.gen.test b/tests-mx32/sysinfo.gen.test
new file mode 100755
index 0000000..e6469d5
--- /dev/null
+++ b/tests-mx32/sysinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests-mx32/sysinfo.test b/tests-mx32/sysinfo.test
deleted file mode 100755
index 806d8b6..0000000
--- a/tests-mx32/sysinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sysinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests-mx32/syslog.gen.test b/tests-mx32/syslog.gen.test
new file mode 100755
index 0000000..5423d5b
--- /dev/null
+++ b/tests-mx32/syslog.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests-mx32/syslog.test b/tests-mx32/syslog.test
deleted file mode 100755
index 1c2158e..0000000
--- a/tests-mx32/syslog.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check syslog syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests-mx32/tee.gen.test b/tests-mx32/tee.gen.test
new file mode 100755
index 0000000..2a87fae
--- /dev/null
+++ b/tests-mx32/tee.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/tee.test b/tests-mx32/tee.test
deleted file mode 100755
index 76b6000..0000000
--- a/tests-mx32/tee.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check tee syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/tests.h b/tests-mx32/tests.h
index d4294de..dcc1057 100644
--- a/tests-mx32/tests.h
+++ b/tests-mx32/tests.h
@@ -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
@@ -44,6 +45,9 @@
 /* Cached sysconf(_SC_PAGESIZE). */
 size_t get_page_size(void);
 
+/* The size of kernel's sigset_t. */
+unsigned int get_sigset_size(void);
+
 /* Print message and strerror(errno) to stderr, then exit(1). */
 void perror_msg_and_fail(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
@@ -57,6 +61,9 @@
 void perror_msg_and_skip(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
 
+/* Stat the specified file and skip the test if the stat call failed. */
+void skip_if_unavailable(const char *);
+
 /*
  * Allocate memory that ends on the page boundary.
  * Pages allocated by this call are preceeded by an unmapped page
@@ -69,6 +76,22 @@
 	ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((2));
 
 /*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified constant pointer.
+ */
+#define TAIL_ALLOC_OBJECT_CONST_PTR(type_name, type_ptr)	\
+	type_name *const type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified variable pointer.
+ */
+#define TAIL_ALLOC_OBJECT_VAR_PTR(type_name, type_ptr)		\
+	type_name *type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
  * Fill memory (pointed by ptr, having size bytes) with different bytes (with
  * values starting with start and resetting every period) in order to catch
  * sign, byte order and/or alignment errors.
@@ -100,6 +123,12 @@
 /* Print memory in a quoted form. */
 void print_quoted_memory(const char *, size_t);
 
+/* Print time_t and nanoseconds in symbolic format. */
+void print_time_t_nsec(time_t, unsigned long long, int);
+
+/* Print time_t and microseconds in symbolic format. */
+void print_time_t_usec(time_t, unsigned long long, int);
+
 /* Read an int from the file. */
 int read_int_from_file(const char *, int *);
 
diff --git a/tests-mx32/threads-execve.c b/tests-mx32/threads-execve.c
index 853645f..4eb334f 100644
--- a/tests-mx32/threads-execve.c
+++ b/tests-mx32/threads-execve.c
@@ -2,6 +2,7 @@
  * Check decoding of threads when a non-leader thread invokes execve.
  *
  * 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
@@ -136,25 +137,25 @@
 	switch (action % NUMBER_OF_ACTIONS) {
 		case ACTION_exit:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <pid changed to %u ...>\n",
+			       ", %p /* %u vars */ <pid changed to %u ...>\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ), leader);
+			       environ, arglen(environ), leader);
 			break;
 		case ACTION_rt_sigsuspend:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <unfinished ...>\n"
+			       ", %p /* %u vars */ <unfinished ...>\n"
 			       "%-5d <... rt_sigsuspend resumed>) = ?\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ),
+			       environ, arglen(environ),
 			       leader);
 			break;
 		case ACTION_nanosleep:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <unfinished ...>\n"
+			       ", %p /* %u vars */ <unfinished ...>\n"
 			       "%-5d <... nanosleep resumed> <unfinished ...>)"
 			       " = ?\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ),
+			       environ, arglen(environ),
 			       leader);
 			break;
 	}
@@ -180,18 +181,15 @@
 		if (clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL))
 			perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
 
-		printf("%-5d execve(\"%s\", [\"%s\"], [/* %u vars */]) = 0\n",
-		       leader, av[0], av[0], arglen(environ));
-
 		get_sigsetsize();
 		static char buf[sizeof(sigsetsize) * 3];
 		sprintf(buf, "%u", sigsetsize);
 
 		char *argv[] = { av[0], buf, (char *) "0", NULL };
 		printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-		       ", [/* %u vars */]) = 0\n",
+		       ", %p /* %u vars */) = 0\n",
 		       leader, argv[0], argv[0], argv[1], argv[2],
-		       arglen(environ));
+		       environ, arglen(environ));
 		execve(argv[0], argv, environ);
 		perror_msg_and_fail("execve");
 	}
diff --git a/tests-mx32/threads-execve.test b/tests-mx32/threads-execve.test
index 4a77146..02c8924 100755
--- a/tests-mx32/threads-execve.test
+++ b/tests-mx32/threads-execve.test
@@ -3,6 +3,7 @@
 # Check decoding of threads when a non-leader thread invokes execve.
 #
 # 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
@@ -40,10 +41,11 @@
 
 # Due to probabilistic nature of the test, try it several times.
 i=0
-while [ $i -le 9 ]; do
+while [ $i -le 19 ]; do
+	i="$(($i+1))"
 	run_strace "$@" > "$EXP"
-	diff -- "$EXP" "$LOG" || continue
-	rm -f "$EXP"
+	sed 1d < "$LOG" > "$OUT"
+	diff -- "$EXP" "$OUT" || continue
 	exit 0
 done
 
diff --git a/tests-mx32/time.c b/tests-mx32/time.c
index 4a5cde9..c329a79 100644
--- a/tests-mx32/time.c
+++ b/tests-mx32/time.c
@@ -2,6 +2,7 @@
  * This file is part of time strace test.
  *
  * 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
@@ -40,15 +41,24 @@
 int
 main(void)
 {
-	time_t *p = tail_alloc(sizeof(time_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(time_t, p);
 
 	time_t t = syscall(__NR_time, NULL);
 	if ((time_t) -1 == t)
 		perror_msg_and_skip("time");
-	printf("time(NULL) = %jd\n", (intmax_t) t);
+	printf("time(NULL) = %lld (", (long long) t);
+	print_time_t_nsec(t, 0, 0);
+	puts(")");
+
+	t = syscall(__NR_time, p + 1);
+	printf("time(%p) = %s\n", p + 1, sprintrc(t));
 
 	t = syscall(__NR_time, p);
-	printf("time([%jd]) = %jd\n", (intmax_t) *p, (intmax_t) t);
+	printf("time([%lld", (long long) *p);
+	print_time_t_nsec((time_t) *p, 0, 1),
+	printf("]) = %lld (", (long long) t);
+	print_time_t_nsec(t, 0, 0);
+	puts(")");
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/time.gen.test b/tests-mx32/time.gen.test
new file mode 100755
index 0000000..ed7ec69
--- /dev/null
+++ b/tests-mx32/time.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/time.test b/tests-mx32/time.test
deleted file mode 100755
index 6ab193a..0000000
--- a/tests-mx32/time.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check time syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests-mx32/timer_create.gen.test b/tests-mx32/timer_create.gen.test
new file mode 100755
index 0000000..6b4c543
--- /dev/null
+++ b/tests-mx32/timer_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/timer_create.test b/tests-mx32/timer_create.test
deleted file mode 100755
index 870a179..0000000
--- a/tests-mx32/timer_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/timer_xettime.c b/tests-mx32/timer_xettime.c
index 9eabbf0..aacd770 100644
--- a/tests-mx32/timer_xettime.c
+++ b/tests-mx32/timer_xettime.c
@@ -2,6 +2,7 @@
  * This file is part of timer_xettime strace test.
  *
  * 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
@@ -47,6 +48,7 @@
 	printf("timer_settime(%d, TIMER_ABSTIME, NULL, NULL)"
 	       " = -1 EINVAL (%m)\n", 0xdefaced);
 
+	long rc;
 	int tid;
 	struct sigevent sev = { .sigev_notify = SIGEV_NONE };
 
@@ -55,51 +57,61 @@
 	printf("timer_create(CLOCK_MONOTONIC, {sigev_signo=0"
 	       ", sigev_notify=SIGEV_NONE}, [%d]) = 0\n", tid);
 
-	struct {
-		struct itimerspec its;
-		uint32_t pad[4];
-	} old = {
-		.its = {
-			.it_interval = { 0xdeface5, 0xdeface6 },
-			.it_value = { 0xdeface7, 0xdeface8 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.its = {
-			.it_interval = { 0xdeface1, 0xdeface2 },
-			.it_value = { 0xdeface3, 0xdeface4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
 
-	if (syscall(__NR_timer_settime, tid, 0, &new.its, &old.its))
+	its_new->it_interval.tv_sec = 0xdeadbeefU;
+	its_new->it_interval.tv_nsec = 0xfacefeedU;
+	its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = syscall(__NR_timer_settime, tid, 0, its_new, its_old);
+	printf("timer_settime(%d, 0"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+	       tid, (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       its_old, sprintrc(rc));
+
+	its_new->it_interval.tv_sec = 0xdeface1;
+	its_new->it_interval.tv_nsec = 0xdeface2;
+	its_new->it_value.tv_sec = 0xdeface3;
+	its_new->it_value.tv_nsec = 0xdeface4;
+	its_old->it_interval.tv_sec = 0xdeface5;
+	its_old->it_interval.tv_nsec = 0xdeface6;
+	its_old->it_value.tv_sec = 0xdeface7;
+	its_old->it_value.tv_nsec = 0xdeface8;
+
+	if (syscall(__NR_timer_settime, tid, 0, its_new, its_old))
 		perror_msg_and_skip("timer_settime");
 	printf("timer_settime(%d, 0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
 	       ") = 0\n",
 	       tid,
-	       (intmax_t) new.its.it_interval.tv_sec,
-	       (intmax_t) new.its.it_interval.tv_nsec,
-	       (intmax_t) new.its.it_value.tv_sec,
-	       (intmax_t) new.its.it_value.tv_nsec,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
-	if (syscall(__NR_timer_gettime, tid, &old.its))
+	if (syscall(__NR_timer_gettime, tid, its_old))
 		perror_msg_and_skip("timer_gettime");
 	printf("timer_gettime(%d"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
 	       tid,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/timer_xettime.gen.test b/tests-mx32/timer_xettime.gen.test
new file mode 100755
index 0000000..6e2dffa
--- /dev/null
+++ b/tests-mx32/timer_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_xettime -e trace=timer_create,timer_settime,timer_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests-mx32/timer_xettime.test b/tests-mx32/timer_xettime.test
deleted file mode 100755
index 08bcdd6..0000000
--- a/tests-mx32/timer_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create, timer_settime, and timer_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests-mx32/timerfd_xettime.c b/tests-mx32/timerfd_xettime.c
index ca7124e..1e8a23a 100644
--- a/tests-mx32/timerfd_xettime.c
+++ b/tests-mx32/timerfd_xettime.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -47,49 +48,59 @@
 		perror_msg_and_skip("timerfd_create");
 	puts("timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC|TFD_NONBLOCK) = 0");
 
-	struct {
-		struct itimerspec its;
-		uint32_t pad[4];
-	} old = {
-		.its = {
-			.it_interval = { 0xdeface5, 0xdeface6 },
-			.it_value = { 0xdeface7, 0xdeface8 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.its = {
-			.it_interval = { 0xdeface1, 0xdeface2 },
-			.it_value = { 0xdeface3, 0xdeface4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
 
-	if (syscall(__NR_timerfd_settime, 0, 0, &new.its, &old.its))
+	its_new->it_interval.tv_sec = 0xdeadbeefU;
+	its_new->it_interval.tv_nsec = 0xfacefeedU;
+	its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	long rc = syscall(__NR_timerfd_settime, 0, 0, its_new, its_old);
+	printf("timerfd_settime(0, 0"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       its_old, sprintrc(rc));
+
+	its_new->it_interval.tv_sec = 0xdeface1;
+	its_new->it_interval.tv_nsec = 0xdeface2;
+	its_new->it_value.tv_sec = 0xdeface3;
+	its_new->it_value.tv_nsec = 0xdeface4;
+	its_old->it_interval.tv_sec = 0xdeface5;
+	its_old->it_interval.tv_nsec = 0xdeface6;
+	its_old->it_value.tv_sec = 0xdeface7;
+	its_old->it_value.tv_nsec = 0xdeface8;
+
+	if (syscall(__NR_timerfd_settime, 0, 0, its_new, its_old))
 		perror_msg_and_skip("timerfd_settime");
 	printf("timerfd_settime(0, 0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
 	       ") = 0\n",
-	       (intmax_t) new.its.it_interval.tv_sec,
-	       (intmax_t) new.its.it_interval.tv_nsec,
-	       (intmax_t) new.its.it_value.tv_sec,
-	       (intmax_t) new.its.it_value.tv_nsec,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
-	if (syscall(__NR_timerfd_gettime, 0, &old.its))
+	if (syscall(__NR_timerfd_gettime, 0, its_old))
 		perror_msg_and_skip("timerfd_gettime");
 	printf("timerfd_gettime(0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/timerfd_xettime.gen.test b/tests-mx32/timerfd_xettime.gen.test
new file mode 100755
index 0000000..97e560b
--- /dev/null
+++ b/tests-mx32/timerfd_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests-mx32/timerfd_xettime.test b/tests-mx32/timerfd_xettime.test
deleted file mode 100755
index 75aa21c..0000000
--- a/tests-mx32/timerfd_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timerfd_create, timerfd_settime, and timerfd_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests-mx32/times-fail.gen.test b/tests-mx32/times-fail.gen.test
new file mode 100755
index 0000000..9934d19
--- /dev/null
+++ b/tests-mx32/times-fail.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times-fail -a12 -e trace=times); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -e trace=times
diff --git a/tests-mx32/times-fail.test b/tests-mx32/times-fail.test
deleted file mode 100755
index ee28a06..0000000
--- a/tests-mx32/times-fail.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of failing times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -e trace=times
diff --git a/tests-mx32/times.gen.test b/tests-mx32/times.gen.test
new file mode 100755
index 0000000..ca4ebbe
--- /dev/null
+++ b/tests-mx32/times.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/times.test b/tests-mx32/times.test
deleted file mode 100755
index b97e0d3..0000000
--- a/tests-mx32/times.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-mx32/trace_fstat.gen.test b/tests-mx32/trace_fstat.gen.test
new file mode 100755
index 0000000..c3aede1
--- /dev/null
+++ b/tests-mx32/trace_fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/trace_fstat.in b/tests-mx32/trace_fstat.in
new file mode 100644
index 0000000..34cfa7e
--- /dev/null
+++ b/tests-mx32/trace_fstat.in
@@ -0,0 +1,5 @@
+fstat	-a15
+fstat64	-a17
+fstatat64	-a32
+newfstatat	-a32
+oldfstat	-a21
diff --git a/tests-mx32/trace_fstatfs.gen.test b/tests-mx32/trace_fstatfs.gen.test
new file mode 100755
index 0000000..063f624
--- /dev/null
+++ b/tests-mx32/trace_fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstatfs test_trace_expr '' -e%fstatfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstatfs
diff --git a/tests-mx32/trace_fstatfs.in b/tests-mx32/trace_fstatfs.in
new file mode 100644
index 0000000..6441a07
--- /dev/null
+++ b/tests-mx32/trace_fstatfs.in
@@ -0,0 +1,2 @@
+fstatfs	-a18
+fstatfs64	-a24
diff --git a/tests-mx32/trace_lstat.gen.test b/tests-mx32/trace_lstat.gen.test
new file mode 100755
index 0000000..a05b7a1
--- /dev/null
+++ b/tests-mx32/trace_lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_lstat test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/trace_lstat.in b/tests-mx32/trace_lstat.in
new file mode 100644
index 0000000..abbabc4
--- /dev/null
+++ b/tests-mx32/trace_lstat.in
@@ -0,0 +1,3 @@
+lstat	-a32
+lstat64	-a32
+oldlstat	-a32
diff --git a/tests-mx32/trace_question.gen.test b/tests-mx32/trace_question.gen.test
new file mode 100755
index 0000000..76b3578
--- /dev/null
+++ b/tests-mx32/trace_question.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_question test_trace_expr '' -e?osf_utimes,?/^pkey_.*); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e?osf_utimes,?/^pkey_.*
diff --git a/tests-mx32/trace_question.in b/tests-mx32/trace_question.in
new file mode 100644
index 0000000..74d662c
--- /dev/null
+++ b/tests-mx32/trace_question.in
@@ -0,0 +1,4 @@
+osf_utimes	-a21
+pkey_alloc	-a17
+pkey_free	-a13
+pkey_mprotect	-a37
diff --git a/tests-mx32/trace_stat.gen.test b/tests-mx32/trace_stat.gen.test
new file mode 100755
index 0000000..ae95ab8
--- /dev/null
+++ b/tests-mx32/trace_stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/trace_stat.in b/tests-mx32/trace_stat.in
new file mode 100644
index 0000000..f105d78
--- /dev/null
+++ b/tests-mx32/trace_stat.in
@@ -0,0 +1,3 @@
+oldstat	-a32
+stat	-a32
+stat64	-a32
diff --git a/tests-mx32/trace_stat_like.gen.test b/tests-mx32/trace_stat_like.gen.test
new file mode 100755
index 0000000..5681a8a
--- /dev/null
+++ b/tests-mx32/trace_stat_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
diff --git a/tests-mx32/trace_stat_like.in b/tests-mx32/trace_stat_like.in
new file mode 100644
index 0000000..22bd7f2
--- /dev/null
+++ b/tests-mx32/trace_stat_like.in
@@ -0,0 +1,12 @@
+fstat	-a15
+fstat64	-a17
+fstatat64	-a32
+lstat	-a32
+lstat64	-a32
+newfstatat	-a32
+oldfstat	-a21
+oldlstat	-a32
+oldstat	-a32
+stat	-a32
+stat64	-a32
+statx	-a32
diff --git a/tests-mx32/trace_statfs.gen.test b/tests-mx32/trace_statfs.gen.test
new file mode 100755
index 0000000..957412b
--- /dev/null
+++ b/tests-mx32/trace_statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs test_trace_expr '' -e%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%statfs
diff --git a/tests-mx32/trace_statfs.in b/tests-mx32/trace_statfs.in
new file mode 100644
index 0000000..7c4adfe
--- /dev/null
+++ b/tests-mx32/trace_statfs.in
@@ -0,0 +1,2 @@
+statfs	-a17
+statfs64	-a23
diff --git a/tests-mx32/trace_statfs_like.gen.test b/tests-mx32/trace_statfs_like.gen.test
new file mode 100755
index 0000000..be1a9c0
--- /dev/null
+++ b/tests-mx32/trace_statfs_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs_like test_trace_expr '' -e%%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%statfs
diff --git a/tests-mx32/trace_statfs_like.in b/tests-mx32/trace_statfs_like.in
new file mode 100644
index 0000000..285aec6
--- /dev/null
+++ b/tests-mx32/trace_statfs_like.in
@@ -0,0 +1,5 @@
+statfs	-a17
+statfs64	-a23
+fstatfs	-a18
+fstatfs64	-a24
+ustat	-a33
diff --git a/tests-mx32/truncate.gen.test b/tests-mx32/truncate.gen.test
new file mode 100755
index 0000000..0410e73
--- /dev/null
+++ b/tests-mx32/truncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/truncate.test b/tests-mx32/truncate.test
deleted file mode 100755
index 6bf1e70..0000000
--- a/tests-mx32/truncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/truncate64.gen.test b/tests-mx32/truncate64.gen.test
new file mode 100755
index 0000000..dae0fe6
--- /dev/null
+++ b/tests-mx32/truncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests-mx32/truncate64.test b/tests-mx32/truncate64.test
deleted file mode 100755
index c466806..0000000
--- a/tests-mx32/truncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests-mx32/ugetrlimit.gen.test b/tests-mx32/ugetrlimit.gen.test
new file mode 100755
index 0000000..ff27134
--- /dev/null
+++ b/tests-mx32/ugetrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-mx32/ugetrlimit.test b/tests-mx32/ugetrlimit.test
deleted file mode 100755
index f4648ff..0000000
--- a/tests-mx32/ugetrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ugetrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-mx32/uio.test b/tests-mx32/uio.test
index 020b97e..0184685 100755
--- a/tests-mx32/uio.test
+++ b/tests-mx32/uio.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog
-run_strace -edesc $args
+run_strace -e%desc $args
 match_grep
 
 exit 0
diff --git a/tests-mx32/umask.gen.test b/tests-mx32/umask.gen.test
new file mode 100755
index 0000000..60af5e9
--- /dev/null
+++ b/tests-mx32/umask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests-mx32/umask.test b/tests-mx32/umask.test
deleted file mode 100755
index 1351721..0000000
--- a/tests-mx32/umask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check umask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests-mx32/umode_t.c b/tests-mx32/umode_t.c
index 5041638..dcd1514 100644
--- a/tests-mx32/umode_t.c
+++ b/tests-mx32/umode_t.c
@@ -2,6 +2,7 @@
  * Check decoding of umode_t type syscall arguments.
  *
  * 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
@@ -38,7 +39,7 @@
 # define TEST_SYSCALL_PREFIX_STR ""
 #endif
 
-static const char sample[] = TEST_SYSCALL_STR;
+static const char *sample;
 
 static void
 test_syscall(unsigned short mode)
@@ -49,17 +50,18 @@
 
 	if (mode <= 07)
 		printf("%s(%s\"%s\", 00%d) = %ld %s (%m)\n",
-		       sample, TEST_SYSCALL_PREFIX_STR,
+		       TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
 		       sample, (int) mode, rc, errno2name());
 	else
 		printf("%s(%s\"%s\", %#03ho) = %ld %s (%m)\n",
-		       sample, TEST_SYSCALL_PREFIX_STR,
+		       TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
 		       sample, mode, rc, errno2name());
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
+	sample = av[0];
 	test_syscall(0);
 	test_syscall(0xffff);
 	test_syscall(06);
diff --git a/tests-mx32/umoven-illptr.gen.test b/tests-mx32/umoven-illptr.gen.test
new file mode 100755
index 0000000..eea7b1c
--- /dev/null
+++ b/tests-mx32/umoven-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umoven-illptr -a36 -e trace=nanosleep); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests-mx32/umoven-illptr.test b/tests-mx32/umoven-illptr.test
deleted file mode 100755
index 7b8cb31..0000000
--- a/tests-mx32/umoven-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of invalid pointer by umoven.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests-mx32/umovestr-illptr.gen.test b/tests-mx32/umovestr-illptr.gen.test
new file mode 100755
index 0000000..7685d44
--- /dev/null
+++ b/tests-mx32/umovestr-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr-illptr -a11 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests-mx32/umovestr-illptr.test b/tests-mx32/umovestr-illptr.test
deleted file mode 100755
index 6f1cc86..0000000
--- a/tests-mx32/umovestr-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of invalid pointer by umovestr.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests-mx32/umovestr2.test b/tests-mx32/umovestr2.test
index 5c5d561..3decbe2 100755
--- a/tests-mx32/umovestr2.test
+++ b/tests-mx32/umovestr2.test
@@ -9,7 +9,3 @@
 check_prog sed
 sed 1d < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests-mx32/umovestr3.gen.test b/tests-mx32/umovestr3.gen.test
new file mode 100755
index 0000000..b16e1ed
--- /dev/null
+++ b/tests-mx32/umovestr3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr3 -a14 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests-mx32/umovestr3.test b/tests-mx32/umovestr3.test
deleted file mode 100755
index d5be283..0000000
--- a/tests-mx32/umovestr3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# yet another umovestr short read test
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests-mx32/uname.c b/tests-mx32/uname.c
index cd6f51c..96db753 100644
--- a/tests-mx32/uname.c
+++ b/tests-mx32/uname.c
@@ -10,7 +10,7 @@
 int main(int ac, char **av)
 {
 	int abbrev = ac > 1;
-	struct utsname *const uname = tail_alloc(sizeof(struct utsname));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct utsname, uname);
 	int rc = syscall(__NR_uname, uname);
 	printf("uname({sysname=\"");
 	print_quoted_string(uname->sysname);
diff --git a/tests-mx32/uname.test b/tests-mx32/uname.test
index 03fe30c..7ca1b5b 100755
--- a/tests-mx32/uname.test
+++ b/tests-mx32/uname.test
@@ -10,9 +10,8 @@
 run_strace -v -euname $args > "$EXP"
 uniq < "$LOG" > "$OUT"
 
-run_prog "./$NAME" abbrev > /dev/null
+run_prog "../$NAME" abbrev > /dev/null
 run_strace -euname $args >> "$EXP"
 uniq < "$LOG" >> "$OUT"
 
 match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests-mx32/unix-pair-send-recv.test b/tests-mx32/unix-pair-send-recv.test
index 4defdeb..10ab7cc 100755
--- a/tests-mx32/unix-pair-send-recv.test
+++ b/tests-mx32/unix-pair-send-recv.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
 run_strace -a32 -esignal=none -esend,recv -eread=0 -ewrite=0 $args
 match_diff
 
diff --git a/tests-mx32/unix-pair-sendto-recvfrom.test b/tests-mx32/unix-pair-sendto-recvfrom.test
index 21afe23..0bd9a04 100755
--- a/tests-mx32/unix-pair-sendto-recvfrom.test
+++ b/tests-mx32/unix-pair-sendto-recvfrom.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
 run_strace -esignal=none -esendto,recvfrom -eread=0 -ewrite=0 $args
 match_diff
 
diff --git a/tests-mx32/unlink.gen.test b/tests-mx32/unlink.gen.test
new file mode 100755
index 0000000..7b8522b
--- /dev/null
+++ b/tests-mx32/unlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests-mx32/unlink.test b/tests-mx32/unlink.test
deleted file mode 100755
index 09bf79a..0000000
--- a/tests-mx32/unlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests-mx32/unlinkat.gen.test b/tests-mx32/unlinkat.gen.test
new file mode 100755
index 0000000..5a77c6a
--- /dev/null
+++ b/tests-mx32/unlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests-mx32/unlinkat.test b/tests-mx32/unlinkat.test
deleted file mode 100755
index 864261f..0000000
--- a/tests-mx32/unlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests-mx32/unshare.gen.test b/tests-mx32/unshare.gen.test
new file mode 100755
index 0000000..077a458
--- /dev/null
+++ b/tests-mx32/unshare.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests-mx32/unshare.test b/tests-mx32/unshare.test
deleted file mode 100755
index ccb9575..0000000
--- a/tests-mx32/unshare.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests-mx32/userfaultfd.gen.test b/tests-mx32/userfaultfd.gen.test
new file mode 100755
index 0000000..4735146
--- /dev/null
+++ b/tests-mx32/userfaultfd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a38
diff --git a/tests-mx32/userfaultfd.test b/tests-mx32/userfaultfd.test
deleted file mode 100755
index af8b6fb..0000000
--- a/tests-mx32/userfaultfd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests-mx32/ustat.c b/tests-mx32/ustat.c
index 57bb29c..3341c70 100644
--- a/tests-mx32/ustat.c
+++ b/tests-mx32/ustat.c
@@ -47,7 +47,7 @@
 	long rc;
 
 # ifdef HAVE_USTAT_H
-	struct ustat *const ust = tail_alloc(sizeof(*ust));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ustat, ust);
 	struct stat st;
 	if (stat(".", &st))
 		perror_msg_and_fail("stat");
diff --git a/tests-mx32/ustat.gen.test b/tests-mx32/ustat.gen.test
new file mode 100755
index 0000000..f64b28d
--- /dev/null
+++ b/tests-mx32/ustat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests-mx32/ustat.test b/tests-mx32/ustat.test
deleted file mode 100755
index 60a88e0..0000000
--- a/tests-mx32/ustat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ustat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
diff --git a/tests-mx32/utime.c b/tests-mx32/utime.c
index 8fd594f..03e3958 100644
--- a/tests-mx32/utime.c
+++ b/tests-mx32/utime.c
@@ -2,6 +2,7 @@
  * Check decoding of utime syscall.
  *
  * 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
@@ -38,17 +39,6 @@
 # include <stdio.h>
 # include <unistd.h>
 
-
-static void
-print_tm(const struct tm * const p)
-{
-	char buf[256];
-
-	strftime(buf, sizeof(buf), "%FT%T%z", p);
-
-	printf("%s", buf);
-}
-
 static long
 k_utime(const void *const filename, const void *const times)
 {
@@ -60,8 +50,7 @@
 {
 	static const char *const dummy_str = "dummy filename";
 
-	const time_t t = time(NULL);
-	const struct tm * const p = localtime(&t);
+	const time_t t = 1492350678;
 	const struct utimbuf u = { .actime = t, .modtime = t };
 	const struct utimbuf *const tail_u = tail_memdup(&u, sizeof(u));
 	const char *const dummy_filename =
@@ -80,10 +69,10 @@
 
 	rc = k_utime("utime\nfilename", tail_u);
 	const char *errstr = sprintrc(rc);
-	printf("utime(\"utime\\nfilename\", {actime=");
-	print_tm(p);
-	printf(", modtime=");
-	print_tm(p);
+	printf("utime(\"utime\\nfilename\", {actime=%lld", (long long) t);
+	print_time_t_nsec(t, 0, 1);
+	printf(", modtime=%lld", (long long) t);
+	print_time_t_nsec(t, 0, 1);
 	printf("}) = %s\n", errstr);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-mx32/utime.gen.test b/tests-mx32/utime.gen.test
new file mode 100755
index 0000000..7270556
--- /dev/null
+++ b/tests-mx32/utime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests-mx32/utime.test b/tests-mx32/utime.test
deleted file mode 100755
index bd64c53..0000000
--- a/tests-mx32/utime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utime syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a 16 -e trace=utime
diff --git a/tests-mx32/utimensat.c b/tests-mx32/utimensat.c
index 6d9faac..ddfd360 100644
--- a/tests-mx32/utimensat.c
+++ b/tests-mx32/utimensat.c
@@ -1,7 +1,7 @@
 /*
- * This file is part of utimensat strace test.
+ * Check decoding of utimensat syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,66 +28,173 @@
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
 
-#if defined HAVE_UTIMENSAT \
- && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW \
- && defined UTIME_NOW && defined UTIME_OMIT
+#if defined __NR_utimensat && defined UTIME_NOW && defined UTIME_OMIT
 
 static void
 print_ts(const struct timespec *ts)
 {
-	printf("{tv_sec=%ju, tv_nsec=%ju}", (uintmax_t) ts->tv_sec,
-		(uintmax_t) ts->tv_nsec);
+	printf("{tv_sec=%lld, tv_nsec=%llu}", (long long) ts->tv_sec,
+		zero_extend_signed_to_ull(ts->tv_nsec));
+	print_time_t_nsec(ts->tv_sec,
+			  zero_extend_signed_to_ull(ts->tv_nsec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimensat(const kernel_ulong_t dirfd,
+	    const kernel_ulong_t pathname,
+	    const kernel_ulong_t times,
+	    const kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_utimensat, dirfd, pathname, times, flags);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 int
 main(void)
 {
-	static const char fname[] = "utimensat\nfilename";
+	static const kernel_ulong_t bogus_fd =
+		(kernel_ulong_t) 0xbadc0deddeadbeef;
+	static const kernel_ulong_t kfdcwd =
+		(kernel_ulong_t) 0xdefaced00000000 | -100U;
+	static const char proto_fname[] = "utimensat\nfilename";
+	static const char qname[] = "\"utimensat\\nfilename\"";
 
-	assert(utimensat(AT_FDCWD, fname, NULL, 0) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	struct timespec *const ts = tail_alloc(sizeof(*ts) * 2);
 
-	#define PREFIX "utimensat(AT_FDCWD, \"utimensat\\nfilename\", "
-	printf(PREFIX "NULL, 0) = -1 ENOENT (%m)\n");
+	(void) close(0);
 
-	struct timeval tv;
-	struct timespec ts[2];
+	/* dirfd */
+	k_utimensat(0, kfname, 0, 0);
+	printf("utimensat(0, %s, NULL, 0) = %s\n", qname, errstr);
 
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_skip("gettimeofday");
+	k_utimensat(bogus_fd, kfname, 0, 0);
+	printf("utimensat(%d, %s, NULL, 0) = %s\n",
+	       (int) bogus_fd, qname, errstr);
 
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_nsec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_nsec = tv.tv_usec + 1;
+	k_utimensat(-100U, kfname, 0, 0);
+	printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
 
-	printf(PREFIX "[");
+	k_utimensat(kfdcwd, kfname, 0, 0);
+	printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
+
+	/* pathname */
+	k_utimensat(kfdcwd, 0, 0, 0);
+	printf("utimensat(AT_FDCWD, NULL, NULL, 0) = %s\n", errstr);
+
+	k_utimensat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0, 0);
+	printf("utimensat(AT_FDCWD, \"\", NULL, 0) = %s\n", errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_utimensat(kfdcwd, kfname, 0, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("utimensat(AT_FDCWD, %p, NULL, 0) = %s\n", fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimensat(kfdcwd, f8ill_ptr_to_kulong(fname), 0, 0);
+		printf("utimensat(AT_FDCWD, %#jx, NULL, 0) = %s\n",
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 1), 0);
+	printf("utimensat(AT_FDCWD, %s, %p, 0) = %s\n",
+	       qname, ts + 1, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 2), 0);
+	printf("utimensat(AT_FDCWD, %s, %p, 0)"
+	       " = %s\n", qname, ts + 2, errstr);
+
+	ts[0].tv_sec = 1492358706;
+	ts[0].tv_nsec = 123456789;
+	ts[1].tv_sec = 1492357068;
+	ts[1].tv_nsec = 234567890;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
 	print_ts(&ts[0]);
 	printf(", ");
 	print_ts(&ts[1]);
-	printf("], AT_SYMLINK_NOFOLLOW) = -1 ENOENT ");
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
 
-	assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
-	printf("(%m)\n");
+	ts[0].tv_sec = -1;
+	ts[0].tv_nsec = 2000000000;
+	ts[1].tv_sec = (time_t) -0x100000001LL;
+	ts[1].tv_nsec = 2345678900U;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+	ts[0].tv_sec = 0;
+	ts[0].tv_nsec = 0;
+	ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts[1].tv_nsec = 0;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+	ts[0].tv_sec = 0xdeadbeefU;
+	ts[0].tv_nsec = 0xfacefeedU;
+	ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts[1].tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
 
 	ts[0].tv_nsec = UTIME_NOW;
 	ts[1].tv_nsec = UTIME_OMIT;
-	assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
-	printf(PREFIX "[UTIME_NOW, UTIME_OMIT], AT_SYMLINK_NOFOLLOW)"
-	       " = -1 ENOENT (%m)\n");
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_SYMLINK_NOFOLLOW) = %s\n", qname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimensat(kfdcwd, kfname, f8ill_ptr_to_kulong(ts), 0);
+		printf("utimensat(AT_FDCWD, %s, %#jx, 0) = %s\n",
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(ts), errstr);
+	}
+
+	/* flags */
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+		    (kernel_ulong_t) 0xdefaced00000200);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_REMOVEDIR) = %s\n",
+	       qname, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+		    (kernel_ulong_t) 0xdefaced00000600);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_REMOVEDIR|AT_SYMLINK_FOLLOW) = %s\n",
+	       qname, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, (kernel_ulong_t) -1ULL);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
+	       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff) = %s\n",
+	       qname, errstr);
 
 	puts("+++ exited with 0 +++");
 	return 0;
@@ -95,7 +202,6 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_UTIMENSAT && AT_FDCWD && AT_SYMLINK_NOFOLLOW"
-		    " && UTIME_NOW && UTIME_OMIT")
+SKIP_MAIN_UNDEFINED("__NR_utimensat && UTIME_NOW && UTIME_OMIT")
 
 #endif
diff --git a/tests-mx32/utimensat.gen.test b/tests-mx32/utimensat.gen.test
new file mode 100755
index 0000000..a4d6656
--- /dev/null
+++ b/tests-mx32/utimensat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests-mx32/utimensat.test b/tests-mx32/utimensat.test
deleted file mode 100755
index 52e3f31..0000000
--- a/tests-mx32/utimensat.test
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utimensat syscall.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e utimensat $args > "$OUT"
-
-check_prog grep
-LC_ALL=C grep -x "utimensat(.*" "$LOG" > /dev/null || {
-        rm -f "$OUT"
-        skip_ 'test executable does not use utimensat syscall'
-}
-
-match_diff "$LOG" "$OUT"
-
-rm -f "$OUT"
-
-exit 0
diff --git a/tests-mx32/utimes.c b/tests-mx32/utimes.c
index bbfa031..4bef1a6 100644
--- a/tests-mx32/utimes.c
+++ b/tests-mx32/utimes.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of utimes syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,50 +32,10 @@
 
 #ifdef __NR_utimes
 
-# include <stdint.h>
-# include <stdio.h>
-# include <sys/time.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-	struct timeval tv;
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_fail("gettimeofday");
-
-	static const char sample[] = "utimes_sample";
-
-	long rc = syscall(__NR_utimes, sample, 0);
-	printf("utimes(\"%s\", NULL) = %ld %s (%m)\n",
-	       sample, rc, errno2name());
-
-	struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
-
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_usec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_usec = tv.tv_usec + 1;
-
-	rc = syscall(__NR_utimes, 0, ts + 2);
-	printf("utimes(NULL, %p) = %ld %s (%m)\n", ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_utimes, 0, ts + 1);
-	printf("utimes(NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
-	       "%ld %s (%m)\n",
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_utimes, "", ts);
-	printf("utimes(\"\", [{tv_sec=%jd, tv_usec=%jd}, "
-	       "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
-	       (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       rc, errno2name());
-
-	puts("+++ exited with 0 +++");
-	return 0;
-}
+# define TEST_SYSCALL_NR	__NR_utimes
+# define TEST_SYSCALL_STR	"utimes"
+# define TEST_STRUCT		struct timeval
+# include "xutimes.c"
 
 #else
 
diff --git a/tests-mx32/utimes.gen.test b/tests-mx32/utimes.gen.test
new file mode 100755
index 0000000..37ed29c
--- /dev/null
+++ b/tests-mx32/utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests-mx32/utimes.test b/tests-mx32/utimes.test
deleted file mode 100755
index 99143a0..0000000
--- a/tests-mx32/utimes.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check utimes syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests-mx32/vfork-f.gen.test b/tests-mx32/vfork-f.gen.test
new file mode 100755
index 0000000..b3c1c6b
--- /dev/null
+++ b/tests-mx32/vfork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vfork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests-mx32/vfork-f.test b/tests-mx32/vfork-f.test
deleted file mode 100755
index ff4422b..0000000
--- a/tests-mx32/vfork-f.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows vfork syscall.
-
-. "${srcdir=.}/fork-f.test"
diff --git a/tests-mx32/vhangup.gen.test b/tests-mx32/vhangup.gen.test
new file mode 100755
index 0000000..7ac84e5
--- /dev/null
+++ b/tests-mx32/vhangup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests-mx32/vhangup.test b/tests-mx32/vhangup.test
deleted file mode 100755
index 8fe1cac..0000000
--- a/tests-mx32/vhangup.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check vhangup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a10
diff --git a/tests-mx32/vmsplice.gen.test b/tests-mx32/vmsplice.gen.test
new file mode 100755
index 0000000..fe6a07d
--- /dev/null
+++ b/tests-mx32/vmsplice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/vmsplice.test b/tests-mx32/vmsplice.test
deleted file mode 100755
index 8a80650..0000000
--- a/tests-mx32/vmsplice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of vmsplice syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -ewrite=1
diff --git a/tests-mx32/wait4-v.gen.test b/tests-mx32/wait4-v.gen.test
new file mode 100755
index 0000000..5b23f42
--- /dev/null
+++ b/tests-mx32/wait4-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4-v -v -e signal=none -e trace=wait4); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests-mx32/wait4-v.test b/tests-mx32/wait4-v.test
deleted file mode 100755
index 58e55f2..0000000
--- a/tests-mx32/wait4-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests-mx32/wait4.c b/tests-mx32/wait4.c
index ccb3ebb..ab0c7a4 100644
--- a/tests-mx32/wait4.c
+++ b/tests-mx32/wait4.c
@@ -2,6 +2,7 @@
  * Check decoding of wait4 syscall.
  *
  * Copyright (c) 2015-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
@@ -40,8 +41,8 @@
 {
 	static char buf[1024];
 	snprintf(buf, sizeof(buf),
-		 "{ru_utime={tv_sec=%lu, tv_usec=%lu}"
-		 ", ru_stime={tv_sec=%lu, tv_usec=%lu}"
+		 "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+		 ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
 #if VERBOSE
 		 ", ru_maxrss=%lu"
 		 ", ru_ixrss=%lu"
@@ -60,10 +61,10 @@
 #else
 		 ", ...}"
 #endif
-		 , (long) ru->ru_utime.tv_sec
-		 , (long) ru->ru_utime.tv_usec
-		 , (long) ru->ru_stime.tv_sec
-		 , (long) ru->ru_stime.tv_usec
+		 , (long long) ru->ru_utime.tv_sec
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
+		 , (long long) ru->ru_stime.tv_sec
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
 #if VERBOSE
 		 , (long) ru->ru_maxrss
 		 , (long) ru->ru_ixrss
@@ -119,12 +120,12 @@
 
 	(void) close(0);
 
-	int *const s = tail_alloc(sizeof(*s));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, s);
 	if (wait4(pid, s, WNOHANG|__WALL, NULL))
 		perror_msg_and_fail("wait4 #1");
 	tprintf("wait4(%d, %p, WNOHANG|__WALL, NULL) = 0\n", pid, s);
 
-	struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
 	if (wait4(pid, s, WNOHANG|__WALL, rusage))
 		perror_msg_and_fail("wait4 #2");
 	tprintf("wait4(%d, %p, WNOHANG|__WALL, %p) = 0\n", pid, s, rusage);
diff --git a/tests-mx32/wait4.gen.test b/tests-mx32/wait4.gen.test
new file mode 100755
index 0000000..ae04915
--- /dev/null
+++ b/tests-mx32/wait4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/wait4.test b/tests-mx32/wait4.test
deleted file mode 100755
index 6338d1f..0000000
--- a/tests-mx32/wait4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-mx32/waitid-v.gen.test b/tests-mx32/waitid-v.gen.test
new file mode 100755
index 0000000..45744cd
--- /dev/null
+++ b/tests-mx32/waitid-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid-v -v -e signal=none -e trace=waitid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests-mx32/waitid-v.test b/tests-mx32/waitid-v.test
deleted file mode 100755
index eb498cb..0000000
--- a/tests-mx32/waitid-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests-mx32/waitid.c b/tests-mx32/waitid.c
index 6a10299..b56feea 100644
--- a/tests-mx32/waitid.c
+++ b/tests-mx32/waitid.c
@@ -2,6 +2,7 @@
  * Check decoding of waitid syscall.
  *
  * Copyright (c) 2015-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
@@ -42,8 +43,8 @@
 {
 	static char buf[1024];
 	snprintf(buf, sizeof(buf),
-		 "{ru_utime={tv_sec=%lld, tv_usec=%lld}"
-		 ", ru_stime={tv_sec=%lld, tv_usec=%lld}"
+		 "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+		 ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
 #if VERBOSE
 		 ", ru_maxrss=%llu"
 		 ", ru_ixrss=%llu"
@@ -63,9 +64,9 @@
 		 ", ...}"
 #endif
 		 , (long long) ru->ru_utime.tv_sec
-		 , (long long) ru->ru_utime.tv_usec
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
 		 , (long long) ru->ru_stime.tv_sec
-		 , (long long) ru->ru_stime.tv_usec
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
 #if VERBOSE
 		 , zero_extend_signed_to_ull(ru->ru_maxrss)
 		 , zero_extend_signed_to_ull(ru->ru_ixrss)
@@ -185,9 +186,9 @@
 		perror_msg_and_fail("waitid #1");
 	tprintf("waitid(P_PID, %d, NULL, WNOHANG|WEXITED, NULL) = 0\n", pid);
 
-	siginfo_t *const sinfo = tail_alloc(sizeof(*sinfo));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
 	memset(sinfo, 0, sizeof(*sinfo));
-	struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
 	if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
 		perror_msg_and_fail("waitid #2");
 	tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",
diff --git a/tests-mx32/waitid.gen.test b/tests-mx32/waitid.gen.test
new file mode 100755
index 0000000..59f4022
--- /dev/null
+++ b/tests-mx32/waitid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests-mx32/waitid.test b/tests-mx32/waitid.test
deleted file mode 100755
index 3bcba3a..0000000
--- a/tests-mx32/waitid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests-mx32/waitpid.gen.test b/tests-mx32/waitpid.gen.test
new file mode 100755
index 0000000..d91e298
--- /dev/null
+++ b/tests-mx32/waitpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests-mx32/waitpid.test b/tests-mx32/waitpid.test
deleted file mode 100755
index 93807d1..0000000
--- a/tests-mx32/waitpid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitpid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests-mx32/xattr-strings.gen.test b/tests-mx32/xattr-strings.gen.test
new file mode 100755
index 0000000..3317892
--- /dev/null
+++ b/tests-mx32/xattr-strings.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr-strings -a22 -s 4 -e trace=fsetxattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests-mx32/xattr-strings.test b/tests-mx32/xattr-strings.test
deleted file mode 100755
index 25ef360..0000000
--- a/tests-mx32/xattr-strings.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check *xattr syscalls decoding when limiting string size.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests-mx32/xattr.gen.test b/tests-mx32/xattr.gen.test
new file mode 100755
index 0000000..030f2ce
--- /dev/null
+++ b/tests-mx32/xattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
diff --git a/tests-mx32/xattr.test b/tests-mx32/xattr.test
deleted file mode 100755
index 8c7a87b..0000000
--- a/tests-mx32/xattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check *xattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=
-for n in getxattr setxattr listxattr removexattr; do
-	syscalls="$syscalls,${n},f${n},l${n}"
-done
-
-run_strace_match_diff -a22 -e trace=$syscalls
diff --git a/tests-mx32/xet_robust_list.c b/tests-mx32/xet_robust_list.c
index 211dec4..a612b92 100644
--- a/tests-mx32/xet_robust_list.c
+++ b/tests-mx32/xet_robust_list.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -51,8 +52,8 @@
 {
 	const pid_t pid = getpid();
 	const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid);
-	void **p_head = tail_alloc(sizeof(void *));
-	size_t *p_len = tail_alloc(sizeof(size_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head);
+	TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len);
 
 	if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
 		perror_msg_and_skip("get_robust_list");
diff --git a/tests-mx32/xet_robust_list.gen.test b/tests-mx32/xet_robust_list.gen.test
new file mode 100755
index 0000000..798cdff
--- /dev/null
+++ b/tests-mx32/xet_robust_list.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xet_robust_list -a24 -e trace=get_robust_list,set_robust_list); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests-mx32/xet_robust_list.test b/tests-mx32/xet_robust_list.test
deleted file mode 100755
index 8a3a382..0000000
--- a/tests-mx32/xet_robust_list.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_robust_list and set_robust_list syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests-mx32/xetitimer.c b/tests-mx32/xetitimer.c
index 4b17edd..3a81880 100644
--- a/tests-mx32/xetitimer.c
+++ b/tests-mx32/xetitimer.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of setitimer and getitimer syscalls.
+ *
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,48 +31,153 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
 
 int
 main(void)
 {
-	struct {
-		struct itimerval itv;
-		uint32_t pad[4];
-	} old = {
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.itv = {
-			.it_interval = { 0xc0de1, 0xc0de2 },
-			.it_value = { 0xc0de3, 0xc0de4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
+	static const struct itimerval new = {
+		.it_interval = { 0xc0de1, 0xc0de2 },
+		.it_value = { 0xc0de3, 0xc0de4 }
 	};
+	static const kernel_ulong_t long_timer =
+		F8ILL_KULONG_MASK | ITIMER_REAL;
+	static const kernel_ulong_t bogus_timer =
+		(kernel_ulong_t) 0xfacefeeddeadbeefULL;
 
-	if (setitimer(ITIMER_REAL, &new.itv, &old.itv))
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerval, p_old);
+	struct itimerval *const p_new = tail_memdup(&new, sizeof(new));
+	void *const efault = tail_alloc(sizeof(new) - 8);
+	long rc;
+
+	if (setitimer(ITIMER_REAL, p_new, NULL))
 		perror_msg_and_skip("setitimer");
 	printf("setitimer(ITIMER_REAL"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
-	       (intmax_t) new.itv.it_interval.tv_sec,
-	       (intmax_t) new.itv.it_interval.tv_usec,
-	       (intmax_t) new.itv.it_value.tv_sec,
-	       (intmax_t) new.itv.it_value.tv_usec,
-	       (intmax_t) old.itv.it_interval.tv_sec,
-	       (intmax_t) old.itv.it_interval.tv_usec,
-	       (intmax_t) old.itv.it_value.tv_sec,
-	       (intmax_t) old.itv.it_value.tv_usec);
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", NULL) = 0\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec));
 
-	if (getitimer(ITIMER_REAL, &old.itv))
+	fill_memory(p_old, sizeof(*p_old));
+	if (getitimer(ITIMER_REAL, p_old))
 		perror_msg_and_skip("getitimer");
 	printf("getitimer(ITIMER_REAL"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
-	       (intmax_t) old.itv.it_interval.tv_sec,
-	       (intmax_t) old.itv.it_interval.tv_usec,
-	       (intmax_t) old.itv.it_value.tv_sec,
-	       (intmax_t) old.itv.it_value.tv_usec);
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+	fill_memory(p_old, sizeof(*p_old));
+	setitimer(ITIMER_REAL, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+	rc = getitimer(ITIMER_REAL, efault);
+	printf("getitimer(ITIMER_REAL, %p) = %s\n", efault, sprintrc(rc));
+
+	rc = setitimer(ITIMER_REAL, p_new, efault);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       efault, sprintrc(rc));
+
+	rc = setitimer(ITIMER_REAL, efault, p_old);
+	printf("setitimer(ITIMER_REAL, %p, %p) = %s\n",
+	       efault, p_old, sprintrc(rc));
+
+	fill_memory(p_old, sizeof(*p_old));
+	rc = syscall(__NR_setitimer, long_timer, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+	       sprintrc(rc));
+
+	fill_memory(p_old, sizeof(*p_old));
+	rc = syscall(__NR_getitimer, long_timer, p_old);
+	printf("getitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+	       sprintrc(rc));
+
+	rc = syscall(__NR_setitimer, bogus_timer, p_new, p_old);
+	printf("setitimer(%#x /* ITIMER_??? */"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (int) bogus_timer,
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       p_old, sprintrc(rc));
+
+	rc = syscall(__NR_getitimer, bogus_timer, p_old);
+	printf("getitimer(%#x /* ITIMER_??? */, %p) = %s\n",
+	       (int) bogus_timer, p_old, sprintrc(rc));
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		const kernel_ulong_t ill_new = f8ill_ptr_to_kulong(p_new);
+		const kernel_ulong_t ill_old = f8ill_ptr_to_kulong(p_old);
+
+		rc = syscall(__NR_setitimer, long_timer, ill_new, ill_old);
+		printf("setitimer(ITIMER_REAL, %#llx, %#llx) = %s\n",
+		       (unsigned long long) ill_new,
+		       (unsigned long long) ill_old,
+		       sprintrc(rc));
+
+		rc = syscall(__NR_getitimer, long_timer, ill_old);
+		printf("getitimer(ITIMER_REAL, %#llx) = %s\n",
+		       (unsigned long long) ill_old, sprintrc(rc));
+	}
+
+	p_new->it_interval.tv_sec = 0xdeadbeefU;
+	p_new->it_interval.tv_usec = 0xfacefeedU;
+	p_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	p_new->it_value.tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = setitimer(ITIMER_REAL, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (long long) p_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_new->it_interval.tv_usec),
+	       (long long) p_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_new->it_value.tv_usec),
+	       p_old, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/xetitimer.gen.test b/tests-mx32/xetitimer.gen.test
new file mode 100755
index 0000000..0cdb926
--- /dev/null
+++ b/tests-mx32/xetitimer.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetitimer -a29 -e trace=setitimer,getitimer); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=setitimer,getitimer
diff --git a/tests-mx32/xetitimer.test b/tests-mx32/xetitimer.test
deleted file mode 100755
index 4aa00cc..0000000
--- a/tests-mx32/xetitimer.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setitimer and getitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setitimer,getitimer
diff --git a/tests-mx32/xetpgid.c b/tests-mx32/xetpgid.c
index 24e0d7f..0efffcb 100644
--- a/tests-mx32/xetpgid.c
+++ b/tests-mx32/xetpgid.c
@@ -2,6 +2,7 @@
  * This file is part of xetpgid strace test.
  *
  * 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
@@ -39,13 +40,10 @@
 main(void)
 {
 	const int pid = getpid();
-	long rc = syscall(__NR_getpgid,
-			  (unsigned long) 0xffffffff00000000ULL | pid);
+	long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
 	printf("getpgid(%d) = %ld\n", pid, rc);
 
-	rc = syscall(__NR_setpgid,
-		     (unsigned long) 0xffffffff00000000ULL,
-		     (unsigned long) 0xffffffff00000000ULL | pid);
+	rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid);
 	printf("setpgid(0, %d) = %ld\n", pid, rc);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-mx32/xetpgid.gen.test b/tests-mx32/xetpgid.gen.test
new file mode 100755
index 0000000..fc57fc4
--- /dev/null
+++ b/tests-mx32/xetpgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpgid -a11 -e trace=getpgid,setpgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests-mx32/xetpgid.test b/tests-mx32/xetpgid.test
deleted file mode 100755
index 07f4f9e..0000000
--- a/tests-mx32/xetpgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgid and setpgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests-mx32/xetpriority.c b/tests-mx32/xetpriority.c
index ed55259..30c59c8 100644
--- a/tests-mx32/xetpriority.c
+++ b/tests-mx32/xetpriority.c
@@ -12,12 +12,11 @@
 {
 	const int pid = getpid();
 	long rc = syscall(__NR_getpriority, PRIO_PROCESS,
-			  (unsigned long) 0xffffffff00000000ULL | pid);
+			  F8ILL_KULONG_MASK | pid);
 	printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
 
 	rc = syscall(__NR_setpriority, PRIO_PROCESS,
-		     (unsigned long) 0xffffffff00000000ULL | pid,
-		     (unsigned long) 0xffffffff00000000ULL);
+		     F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK);
 	printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
diff --git a/tests-mx32/xetpriority.gen.test b/tests-mx32/xetpriority.gen.test
new file mode 100755
index 0000000..4b95524
--- /dev/null
+++ b/tests-mx32/xetpriority.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a29 -e trace=getpriority,setpriority); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests-mx32/xetpriority.test b/tests-mx32/xetpriority.test
deleted file mode 100755
index 2c84ba4..0000000
--- a/tests-mx32/xetpriority.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpriority and setpriority syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests-mx32/xettimeofday.c b/tests-mx32/xettimeofday.c
index d36c57b..ec422cf 100644
--- a/tests-mx32/xettimeofday.c
+++ b/tests-mx32/xettimeofday.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -36,36 +37,49 @@
 int
 main(void)
 {
-	struct {
-		struct timeval tv;
-		uint32_t pad0[2];
-		struct timezone tz;
-		uint32_t pad1[2];
-	} t = {
-		.pad0 = { 0xdeadbeef, 0xbadc0ded },
-		.pad1 = { 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timezone, tz);
 
-	if (syscall(__NR_gettimeofday, &t.tv, NULL))
+	if (syscall(__NR_gettimeofday, tv, NULL))
 		perror_msg_and_skip("gettimeofday");
-	printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}, NULL) = 0\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec);
+	printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}, NULL) = 0\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
 
-	if (syscall(__NR_gettimeofday, &t.tv, &t.tz))
+	if (syscall(__NR_gettimeofday, tv, tz))
 		perror_msg_and_skip("gettimeofday");
-	printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}"
+	printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}"
 	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = 0\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
-	       t.tz.tz_minuteswest, t.tz.tz_dsttime);
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
 
-	t.tv.tv_sec = -1;
-	t.tv.tv_usec = 1000000000;
-	assert(syscall(__NR_settimeofday, &t.tv, &t.tz) == -1);
-	printf("settimeofday({tv_sec=%jd, tv_usec=%jd}"
-	       ", {tz_minuteswest=%d, tz_dsttime=%d})"
-	       " = -1 EINVAL (%m)\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
-	       t.tz.tz_minuteswest, t.tz.tz_dsttime);
+	tv->tv_sec = -1;
+	tv->tv_usec = 1000000;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
+
+	tv->tv_sec = 0xdeadbeefU;
+	tv->tv_usec = 0xfacefeedU;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
+
+	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests-mx32/xettimeofday.gen.test b/tests-mx32/xettimeofday.gen.test
new file mode 100755
index 0000000..1a021e4
--- /dev/null
+++ b/tests-mx32/xettimeofday.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xettimeofday -a20 -e trace=gettimeofday,settimeofday); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests-mx32/xettimeofday.test b/tests-mx32/xettimeofday.test
deleted file mode 100755
index 68764e4..0000000
--- a/tests-mx32/xettimeofday.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check gettimeofday and settimeofday syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests-mx32/xselect.c b/tests-mx32/xselect.c
index 39e87ac..e1638c8 100644
--- a/tests-mx32/xselect.c
+++ b/tests-mx32/xselect.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -31,6 +32,7 @@
 
 #include <assert.h>
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/select.h>
 
@@ -38,14 +40,10 @@
 
 int main(void)
 {
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+	struct timeval tv_in;
 	int fds[2];
-	struct {
-		struct timeval tv;
-		int pad[2];
-	} tm_in = {
-		.tv = { .tv_sec = 0xc0de1, .tv_usec = 0xc0de2 },
-		.pad = { 0xdeadbeef, 0xbadc0ded }
-	}, tm = tm_in;
+	long rc;
 
 	if (pipe(fds))
 		perror_msg_and_fail("pipe");
@@ -56,7 +54,7 @@
 	FD_ZERO(set);
 	FD_SET(fds[0], set);
 	FD_SET(fds[1], set);
-	int rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
+	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);
@@ -65,19 +63,73 @@
 	       fds[0], fds[1], fds[0], fds[1]);
 
 	/*
+	 * 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);
+	if (rc < 0) {
+		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));
+	} else {
+		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,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       rc, (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+	}
+
+	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
+	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+	memcpy(&tv_in, tv, sizeof(tv_in));
+	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	if (rc < 0) {
+		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));
+	} else {
+		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,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       rc, (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+	}
+
+	/*
 	 * Another simple one, with a timeout.
 	 */
 	FD_SET(1, set);
 	FD_SET(2, set);
 	FD_SET(fds[0], set);
 	FD_SET(fds[1], set);
-	assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, &tm.tv) == 3);
-	printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%lld})"
-	       " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%lld})\n",
+	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) tm_in.tv.tv_sec, (long long) tm_in.tv.tv_usec,
+	       (long long) tv_in.tv_sec,
+	       zero_extend_signed_to_ull(tv_in.tv_usec),
 	       fds[1],
-	       (long long) tm.tv.tv_sec, (long long) tm.tv.tv_usec);
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
@@ -94,9 +146,9 @@
 	 */
 	FD_ZERO(set);
 	FD_SET(fds[0],set);
-	tm.tv.tv_sec = 0;
-	tm.tv.tv_usec = 123;
-	assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, &tm.tv) == 0);
+	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]);
 
diff --git a/tests-mx32/xstatfsx.c b/tests-mx32/xstatfsx.c
index d8288f1..cb524ff 100644
--- a/tests-mx32/xstatfsx.c
+++ b/tests-mx32/xstatfsx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
@@ -62,9 +63,9 @@
 {
 	int fd = open(sample, O_RDONLY);
 	if (fd < 0)
-		perror_msg_and_fail("open: %s", sample);
+		perror_msg_and_skip("open: %s", sample);
 
-	STRUCT_STATFS *const b = tail_alloc(sizeof(*b));
+	TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STATFS, b);
 	long rc = SYSCALL_INVOKE(sample, fd, b, sizeof(*b));
 	if (rc)
 		perror_msg_and_skip(SYSCALL_NAME);
diff --git a/tests-mx32/xstatx.c b/tests-mx32/xstatx.c
index 0d5fca8..8758ef8 100644
--- a/tests-mx32/xstatx.c
+++ b/tests-mx32/xstatx.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -47,26 +48,7 @@
 # include <unistd.h>
 # include <sys/sysmacros.h>
 
-static void
-print_time(const time_t t)
-{
-	if (!t) {
-		printf("0");
-		return;
-	}
-
-	struct tm *p = localtime(&t);
-
-	if (p) {
-		char buf[256];
-
-		strftime(buf, sizeof(buf), "%FT%T%z", p);
-
-		printf("%s", buf);
-	} else {
-		printf("%llu", zero_extend_signed_to_ull(t));
-	}
-}
+# include "statx.h"
 
 # ifndef STRUCT_STAT
 #  define STRUCT_STAT struct stat
@@ -130,6 +112,10 @@
 #  define OLD_STAT 0
 # endif
 
+# ifndef IS_STATX
+#  define IS_STATX 0
+# endif
+
 static void
 print_ftype(const unsigned int mode)
 {
@@ -151,6 +137,8 @@
 	printf("%#o", mode & ~S_IFMT);
 }
 
+# if !IS_STATX
+
 static void
 print_stat(const STRUCT_STAT *st)
 {
@@ -165,12 +153,12 @@
 	printf(", st_nlink=%llu", zero_extend_signed_to_ull(st->st_nlink));
 	printf(", st_uid=%llu", zero_extend_signed_to_ull(st->st_uid));
 	printf(", st_gid=%llu", zero_extend_signed_to_ull(st->st_gid));
-# if OLD_STAT
+#  if OLD_STAT
 	printf(", st_blksize=0, st_blocks=0");
-# else /* !OLD_STAT */
+#  else /* !OLD_STAT */
 	printf(", st_blksize=%llu", zero_extend_signed_to_ull(st->st_blksize));
 	printf(", st_blocks=%llu", zero_extend_signed_to_ull(st->st_blocks));
-# endif /* OLD_STAT */
+#  endif /* OLD_STAT */
 
 	switch (st->st_mode & S_IFMT) {
 	case S_IFCHR: case S_IFBLK:
@@ -182,27 +170,87 @@
 		printf(", st_size=%llu", zero_extend_signed_to_ull(st->st_size));
 	}
 
-	printf(", st_atime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_atime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_atime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_atime_nsec));
-# endif
-	printf(", st_mtime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_mtime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_mtime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_mtime_nsec));
-# endif
-	printf(", st_ctime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_ctime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_ctime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_ctime_nsec));
-# endif
+#  if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
+#   define TIME_NSEC(val)	zero_extend_signed_to_ull(val)
+#   define HAVE_NSEC		1
+#  else
+#   define TIME_NSEC(val)	0ULL
+#   define HAVE_NSEC		0
+#  endif
+
+#define PRINT_ST_TIME(field)						\
+	printf(", st_" #field "=%lld",					\
+	       sign_extend_unsigned_to_ll(st->st_ ## field));		\
+	print_time_t_nsec(sign_extend_unsigned_to_ll(st->st_ ## field),	\
+			  TIME_NSEC(st->st_ ## field ## _nsec), 1);	\
+	if (HAVE_NSEC)							\
+		printf(", st_" #field "_nsec=%llu",			\
+		       TIME_NSEC(st->st_ ## field ## _nsec))
+
+	PRINT_ST_TIME(atime);
+	PRINT_ST_TIME(mtime);
+	PRINT_ST_TIME(ctime);
 	printf("}");
 }
 
+# else /* !IS_STATX */
+
+static void
+print_stat(const STRUCT_STAT *st)
+{
+#  define PRINT_FIELD_U(field) \
+	printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+#  define PRINT_FIELD_U32_UID(field) \
+	if (st->field == (uint32_t) -1) \
+		printf(", %s=-1", #field); \
+	else \
+		printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+#  define PRINT_FIELD_TIME(field)					\
+	printf(", %s={tv_sec=%lld, tv_nsec=%u}",			\
+	       #field, (long long) st->field.tv_sec,			\
+	       (unsigned) st->field.tv_nsec);				\
+	print_time_t_nsec(st->field.tv_sec,				\
+			  zero_extend_signed_to_ull(st->field.tv_nsec), 1);
+
+	printf("{stx_mask=");
+	printflags(statx_masks, st->stx_mask, "STATX_???");
+
+	PRINT_FIELD_U(stx_blksize);
+
+	printf(", stx_attributes=");
+	printflags(statx_attrs, st->stx_attributes, "STATX_ATTR_???");
+
+	PRINT_FIELD_U(stx_nlink);
+	PRINT_FIELD_U32_UID(stx_uid);
+	PRINT_FIELD_U32_UID(stx_gid);
+
+	printf(", stx_mode=");
+	print_ftype(st->stx_mode);
+	printf("|");
+	print_perms(st->stx_mode);
+
+	PRINT_FIELD_U(stx_ino);
+	PRINT_FIELD_U(stx_size);
+	PRINT_FIELD_U(stx_blocks);
+
+	printf(", stx_attributes_mask=");
+	printflags(statx_attrs, st->stx_attributes_mask, "STATX_ATTR_???");
+
+	PRINT_FIELD_TIME(stx_atime);
+	PRINT_FIELD_TIME(stx_btime);
+	PRINT_FIELD_TIME(stx_ctime);
+	PRINT_FIELD_TIME(stx_mtime);
+	PRINT_FIELD_U(stx_rdev_major);
+	PRINT_FIELD_U(stx_rdev_minor);
+	PRINT_FIELD_U(stx_dev_major);
+	PRINT_FIELD_U(stx_dev_minor);
+	printf("}");
+}
+
+# endif /* !IS_STATX */
+
 static int
 create_sample(const char *fname, const libc_off_t size)
 {
@@ -229,19 +277,19 @@
 int
 main(void)
 {
-# if !IS_FSTAT
+# if IS_FSTAT
+	skip_if_unavailable("/proc/self/fd/");
+# else
 	static const char full[] = "/dev/full";
 # endif
-	static const char sample[] = TEST_SYSCALL_STR ".sample";
-	STRUCT_STAT st[2];
+	static const char sample[] = "stat.sample";
+	TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STAT, st);
 
 	int rc;
 
 	rc = create_sample(sample, SAMPLE_SIZE);
-	if (rc) {
-		(void) unlink(sample);
+	if (rc)
 		return rc;
-	}
 
 # if TEST_BOGUS_STRUCT_STAT
 	STRUCT_STAT *st_cut = tail_alloc(sizeof(long) * 4);
@@ -262,46 +310,71 @@
 # endif
 
 	if ((rc = TEST_SYSCALL_INVOKE(sample, st))) {
-# if OLD_STAT
-		if (errno != EOVERFLOW)
-# endif
-		{
+		if (errno != EOVERFLOW) {
+			rc = (errno == ENOSYS) ? 77 : 1;
 			perror(TEST_SYSCALL_STR);
-			(void) unlink(sample);
-			return 77;
+			return rc;
 		}
 	}
-	(void) unlink(sample);
+
+# if IS_STATX
+#  define ST_SIZE_FIELD stx_size
+# else
+#  define ST_SIZE_FIELD st_size
+# endif
 	if (!rc && zero_extend_signed_to_ull(SAMPLE_SIZE) !=
-	    zero_extend_signed_to_ull(st[0].st_size)) {
+	    zero_extend_signed_to_ull(st->ST_SIZE_FIELD)) {
 		fprintf(stderr, "Size mismatch: "
 				"requested size(%llu) != st_size(%llu)\n",
 			zero_extend_signed_to_ull(SAMPLE_SIZE),
-			zero_extend_signed_to_ull(st[0].st_size));
+			zero_extend_signed_to_ull(st->ST_SIZE_FIELD));
 		fprintf(stderr, "The most likely reason for this is incorrect"
 				" definition of %s.\n"
 				"Here is some diagnostics that might help:\n",
 			STRUCT_STAT_STR);
 
-#define LOG_STAT_OFFSETOF_SIZEOF(object, member)			\
+# define LOG_STAT_OFFSETOF_SIZEOF(object, member)			\
 		fprintf(stderr, "offsetof(%s, %s) = %zu"		\
 				", sizeof(%s) = %zu\n",			\
 				STRUCT_STAT_STR, #member,		\
 				offsetof(STRUCT_STAT, member),		\
 				#member, sizeof((object).member))
 
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_dev);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_ino);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_mode);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_nlink);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_uid);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_gid);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_rdev);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_size);
-# if !OLD_STAT
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blksize);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blocks);
-# endif /* !OLD_STAT */
+# if IS_STATX
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mask);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blksize);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_nlink);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_uid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_gid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mode);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ino);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_size);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blocks);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes_mask);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_atime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_btime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ctime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mtime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_major);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_minor);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_major);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_minor);
+# else
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_dev);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_ino);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_mode);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_nlink);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_uid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_gid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_rdev);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_size);
+#  if !OLD_STAT
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_blksize);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_blocks);
+#  endif /* !OLD_STAT */
+
+# endif /* IS_STATX */
 
 		return 1;
 	}
@@ -313,6 +386,63 @@
 		print_stat(st);
 	PRINT_SYSCALL_FOOTER(rc);
 
+# if IS_STATX
+
+#  define INVOKE() \
+	rc = TEST_SYSCALL_INVOKE(sample, st); \
+	PRINT_SYSCALL_HEADER(sample); \
+	if (rc) \
+		printf("%p", st); \
+	else \
+		print_stat(st); \
+	PRINT_SYSCALL_FOOTER(rc)
+
+#  define SET_FLAGS_INVOKE(flags, flags_str) \
+	TEST_SYSCALL_STATX_FLAGS = flags; \
+	TEST_SYSCALL_STATX_FLAGS_STR = flags_str; \
+	INVOKE()
+
+#  define SET_MASK_INVOKE(mask, mask_str) \
+	TEST_SYSCALL_STATX_MASK = mask; \
+	TEST_SYSCALL_STATX_MASK_STR = mask_str; \
+	INVOKE()
+
+	unsigned old_flags = TEST_SYSCALL_STATX_FLAGS;
+	const char *old_flags_str = TEST_SYSCALL_STATX_FLAGS_STR;
+	unsigned old_mask = TEST_SYSCALL_STATX_MASK;
+	const char *old_mask_str = TEST_SYSCALL_STATX_MASK_STR;
+
+	SET_FLAGS_INVOKE(AT_SYMLINK_FOLLOW | 0xffff0000U,
+		"AT_STATX_SYNC_AS_STAT|AT_SYMLINK_FOLLOW|0xffff0000");
+
+	SET_FLAGS_INVOKE(AT_STATX_SYNC_TYPE,
+		"AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC");
+
+	SET_FLAGS_INVOKE(0xffffff,
+		"AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC|AT_SYMLINK_NOFOLLOW|"
+		"AT_REMOVEDIR|AT_SYMLINK_FOLLOW|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|"
+		"0xff80ff");
+
+	/* We're done playing with flags. */
+	TEST_SYSCALL_STATX_FLAGS = old_flags;
+	TEST_SYSCALL_STATX_FLAGS_STR = old_flags_str;
+
+	SET_MASK_INVOKE(0, "0");
+	SET_MASK_INVOKE(0xfffff000U, "0xfffff000 /* STATX_??? */");
+
+	SET_MASK_INVOKE(0xfffffffbU,
+		"STATX_TYPE|STATX_MODE|STATX_UID|STATX_GID|STATX_ATIME|"
+		"STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|"
+		"STATX_BTIME|0xfffff000");
+
+	SET_MASK_INVOKE(STATX_UID, "STATX_UID");
+
+	/* ...and with mask. */
+	TEST_SYSCALL_STATX_MASK = old_mask;
+	TEST_SYSCALL_STATX_MASK_STR = old_mask_str;
+
+# endif /* IS_STATX */
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests-mx32/xutimes.c b/tests-mx32/xutimes.c
new file mode 100644
index 0000000..5fd7161
--- /dev/null
+++ b/tests-mx32/xutimes.c
@@ -0,0 +1,149 @@
+/*
+ * Check decoding of utimes/osf_utimes 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.
+ */
+
+#ifndef TEST_SYSCALL_NR
+# error TEST_SYSCALL_NR must be defined
+#endif
+
+#ifndef TEST_SYSCALL_STR
+# error TEST_SYSCALL_STR must be defined
+#endif
+
+#ifndef TEST_STRUCT
+# error TEST_STRUCT must be defined
+#endif
+
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+static void
+print_tv(const TEST_STRUCT *const tv)
+{
+	printf("{tv_sec=%lld, tv_usec=%llu}",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
+	print_time_t_usec(tv->tv_sec,
+			  zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimes(const kernel_ulong_t pathname, const kernel_ulong_t times)
+{
+	long rc = syscall(TEST_SYSCALL_NR, pathname, times);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	static const char proto_fname[] = TEST_SYSCALL_STR "_sample";
+	static const char qname[] = "\"" TEST_SYSCALL_STR "_sample\"";
+
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	TEST_STRUCT *const tv = tail_alloc(sizeof(*tv) * 2);
+
+	/* pathname */
+	k_utimes(0, 0);
+	printf("%s(NULL, NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+	k_utimes(kfname + sizeof(proto_fname) - 1, 0);
+	printf("%s(\"\", NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+	k_utimes(kfname, 0);
+	printf("%s(%s, NULL) = %s\n", TEST_SYSCALL_STR, qname, errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_utimes(kfname, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("%s(%p, NULL) = %s\n", TEST_SYSCALL_STR, fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimes(f8ill_ptr_to_kulong(fname), 0);
+		printf("%s(%#jx, NULL) = %s\n", TEST_SYSCALL_STR,
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_utimes(kfname, (uintptr_t) (tv + 1));
+	printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+	       qname, tv + 1, errstr);
+
+	k_utimes(kfname, (uintptr_t) (tv + 2));
+	printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+	       qname, tv + 2, errstr);
+
+	tv[0].tv_sec = 0xdeadbeefU;
+	tv[0].tv_usec = 0xfacefeedU;
+	tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_sec = 1492358607;
+	tv[0].tv_usec = 1000000;
+	tv[1].tv_sec = 1492356078;
+	tv[1].tv_usec = 1000001;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_usec = 345678;
+	tv[1].tv_usec = 456789;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimes(kfname, f8ill_ptr_to_kulong(tv));
+		printf("%s(%s, %#jx) = %s\n", TEST_SYSCALL_STR,
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests/Makefile b/tests/Makefile
index 53b7a6c..f2071c4 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -17,6 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
 POST_UNINSTALL = :
 build_triplet = x86_64-pc-linux-gnu
 host_triplet = x86_64-pc-linux-gnu
-check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
-	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
-	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
-	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
-	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
-	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
-	chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
-	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
-	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
-	count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-	dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
-	epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
-	epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
-	execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
-	execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
-	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
-	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
-	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
-	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
-	file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
-	finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
-	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
-	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
-	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
-	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
-	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
-	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
-	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
-	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
-	getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
-	getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
-	getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
-	getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
-	getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
-	inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
-	ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
-	ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
-	ioctl_rtc-v$(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) ipc_msg$(EXEEXT) \
-	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
-	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
-	keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
-	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
-	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
-	lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
-	membarrier$(EXEEXT) memfd_create$(EXEEXT) \
-	migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
-	mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
-	mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
-	mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
-	mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
-	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
-	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
-	msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
-	munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-accept-connect$(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_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
-	netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
-	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
-	pc$(EXEEXT) perf_event_open$(EXEEXT) \
-	perf_event_open_nonverbose$(EXEEXT) \
-	perf_event_open_unabbrev$(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-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
-	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
-	print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
-	process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
-	pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
-	qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
-	qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
-	qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
-	quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
-	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
-	readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
-	reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
-	recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
-	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) \
-	restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
-	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
-	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
-	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
-	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
-	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
-	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
-	scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
-	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
-	sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
-	setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
-	setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
-	setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
-	setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
-	setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
-	setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
-	setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
-	shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
-	sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
-	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
-	stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-	statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
-	symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
-	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-	tee$(EXEEXT) threads-execve$(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) unix-pair-send-recv$(EXEEXT) \
-	unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
-	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-	utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
-	vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
-	waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
-	xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
-DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+	$(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) caps-abbrev$(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) ksysent$(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) \
+	perf_event_open_nonverbose$(EXEEXT) \
+	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+	print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+	qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+	qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+	quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+	scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+	seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+	wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+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 \
@@ -300,6 +191,7 @@
 	libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
+	libtests_a-get_sigset_size.$(OBJEXT) \
 	libtests_a-hexdump_strdup.$(OBJEXT) \
 	libtests_a-hexquote_strndup.$(OBJEXT) \
 	libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
 	libtests_a-overflowuid.$(OBJEXT) \
 	libtests_a-pipe_maxfd.$(OBJEXT) \
 	libtests_a-print_quoted_string.$(OBJEXT) \
+	libtests_a-print_time.$(OBJEXT) \
 	libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
-	libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
-	libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+	libtests_a-signal2name.$(OBJEXT) \
+	libtests_a-skip_unavailable.$(OBJEXT) \
+	libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+	libtests_a-tprintf.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+	chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) creat$(EXEEXT) \
+	delete_module$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) \
+	dup3$(EXEEXT) epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
+	epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
+	erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
+	execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+	file_ioctl$(EXEEXT) finit_module$(EXEEXT) flock$(EXEEXT) \
+	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+	getpgrp$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
+	getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+	getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+	getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+	getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(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_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) ipc_msg$(EXEEXT) \
+	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+	keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+	lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(EXEEXT) \
+	mbind$(EXEEXT) membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+	migrate_pages$(EXEEXT) mincore$(EXEEXT) 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) \
+	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+	netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+	old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+	oldselect$(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) \
+	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+	printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+	process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+	pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+	readlink$(EXEEXT) 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) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+	rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(EXEEXT) \
+	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+	seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+	sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+	setdomainname$(EXEEXT) setfsgid$(EXEEXT) setfsgid32$(EXEEXT) \
+	setfsuid$(EXEEXT) setfsuid32$(EXEEXT) setgid$(EXEEXT) \
+	setgid32$(EXEEXT) setgroups$(EXEEXT) setgroups32$(EXEEXT) \
+	sethostname$(EXEEXT) setns$(EXEEXT) setregid$(EXEEXT) \
+	setregid32$(EXEEXT) setresgid$(EXEEXT) setresgid32$(EXEEXT) \
+	setresuid$(EXEEXT) setresuid32$(EXEEXT) setreuid$(EXEEXT) \
+	setreuid32$(EXEEXT) setrlimit$(EXEEXT) setuid$(EXEEXT) \
+	setuid32$(EXEEXT) shmxt$(EXEEXT) shutdown$(EXEEXT) \
+	sigaction$(EXEEXT) sigaltstack$(EXEEXT) siginfo$(EXEEXT) \
+	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(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) \
+	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+	xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
 getrandom_SOURCES = getrandom.c
 getrandom_OBJECTS = getrandom.$(OBJEXT)
 getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
 getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
 ioctl_SOURCES = ioctl.c
 ioctl_OBJECTS = ioctl.$(OBJEXT)
 ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
 ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
 ioctl_mtd_LDADD = $(LDADD)
 ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
 ioctl_rtc_SOURCES = ioctl_rtc.c
 ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
 ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
 lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
 lstat64_LDADD = $(LDADD)
 lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
 pause_SOURCES = pause.c
 pause_OBJECTS = pause.$(OBJEXT)
 pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
 prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
 prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
 prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
 rt_sigsuspend_SOURCES = rt_sigsuspend.c
 rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
 rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
 sigreturn_OBJECTS = sigreturn.$(OBJEXT)
 sigreturn_LDADD = $(LDADD)
 sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
 sleep_SOURCES = sleep.c
 sleep_OBJECTS = sleep.$(OBJEXT)
 sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
 swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
 symlink_SOURCES = symlink.c
 symlink_OBJECTS = symlink.$(OBJEXT)
 symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-#am__EXEEXT_1 = strace-k.test
+#am__EXEEXT_2 = strace-k.test
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS =  .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2234,12 +2298,12 @@
       b='$*';; \
   esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing aclocal-1.14
+ACLOCAL = ${SHELL} /tmp/strace-4.17/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
-AUTOCONF = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoconf
-AUTOHEADER = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing autoheader
-AUTOMAKE = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing automake-1.14
+AUTOCONF = ${SHELL} /tmp/strace-4.17/missing autoconf
+AUTOHEADER = ${SHELL} /tmp/strace-4.17/missing autoheader
+AUTOMAKE = ${SHELL} /tmp/strace-4.17/missing automake-1.14
 AWK = gawk
 BUILD_EXEEXT = 
 BUILD_OBJEXT = 
@@ -2253,12 +2317,13 @@
 CODE_COVERAGE_CXXFLAGS = 
 CODE_COVERAGE_ENABLED = no
 CODE_COVERAGE_LDFLAGS = 
+COPYRIGHT_YEAR = 2017
 CPP = gcc -E
 CPPFLAGS = 
 CPPFLAGS_FOR_BUILD = 
 CPP_FOR_BUILD = gcc -E
 CYGPATH_W = echo
-DEB_CHANGELOGTIME = Wed, 15 Feb 2017 11:38:25 -0800
+DEB_CHANGELOGTIME = Thu, 25 May 2017 15:09:49 -0700
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
 ECHO_C = 
@@ -2285,34 +2350,34 @@
 LIBS = 
 LTLIBOBJS = 
 MAINT = #
-MAKEINFO = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/missing makeinfo
+MAKEINFO = ${SHELL} /tmp/strace-4.17/missing makeinfo
 MIPS_ABI = 
 MKDIR_P = /bin/mkdir -p
 OBJEXT = o
 PACKAGE = strace
 PACKAGE_BUGREPORT = strace-devel@lists.sourceforge.net
 PACKAGE_NAME = strace
-PACKAGE_STRING = strace 4.16
+PACKAGE_STRING = strace 4.17
 PACKAGE_TARNAME = strace
 PACKAGE_URL = https://strace.io
-PACKAGE_VERSION = 4.16
+PACKAGE_VERSION = 4.17
 PATH_SEPARATOR = :
 PERL = /usr/bin/perl
 RANLIB = ranlib
-RPM_CHANGELOGTIME = Wed Feb 15 2017
+RPM_CHANGELOGTIME = Thu May 25 2017
 SED = /bin/sed
 SET_MAKE = 
 SHELL = /bin/sh
 STRIP = 
 VALGRIND = valgrind
 VALGRIND_ENABLED = yes
-VERSION = 4.16
+VERSION = 4.17
 WARN_CFLAGS =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
 WARN_CFLAGS_FOR_BUILD =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
-abs_builddir = /usr/local/google/home/enh/Downloads/strace-4.16/tests
-abs_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16/tests
-abs_top_builddir = /usr/local/google/home/enh/Downloads/strace-4.16
-abs_top_srcdir = /usr/local/google/home/enh/Downloads/strace-4.16
+abs_builddir = /tmp/strace-4.17/tests
+abs_srcdir = /tmp/strace-4.17/tests
+abs_top_builddir = /tmp/strace-4.17
+abs_top_srcdir = /tmp/strace-4.17
 ac_ct_CC = gcc
 ac_ct_CC_FOR_BUILD = gcc
 am__include = include
@@ -2344,7 +2409,7 @@
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = ${SHELL} /usr/local/google/home/enh/Downloads/strace-4.16/install-sh
+install_sh = ${SHELL} /tmp/strace-4.17/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 libunwind_CPPFLAGS = 
@@ -2389,6 +2454,7 @@
 	error_msg.c \
 	fill_memory.c \
 	get_page_size.c \
+	get_sigset_size.c \
 	hexdump_strdup.c \
 	hexquote_strndup.c \
 	inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
 	overflowuid.c \
 	pipe_maxfd.c \
 	print_quoted_string.c \
+	print_time.c \
 	printflags.c \
 	printxval.c \
 	signal2name.c \
+	skip_unavailable.c \
 	sprintrc.c \
 	tail_alloc.c \
 	tests.h \
@@ -2409,6 +2477,340 @@
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
 LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+  _newselect \
+  accept \
+  accept4 \
+  access \
+  acct \
+  add_key \
+  adjtimex \
+  aio \
+  alarm \
+  bpf \
+  brk \
+  btrfs \
+  caps \
+  chmod \
+  chown \
+  chown32 \
+  chroot \
+  clock_adjtime \
+  clock_nanosleep \
+  clock_xettime \
+  copy_file_range \
+  creat \
+  delete_module \
+  dup \
+  dup2 \
+  dup3 \
+  epoll_create \
+  epoll_create1 \
+  epoll_ctl \
+  epoll_pwait \
+  epoll_wait \
+  erestartsys \
+  eventfd \
+  execve \
+  execveat \
+  faccessat \
+  fadvise64 \
+  fadvise64_64 \
+  fallocate \
+  fanotify_init \
+  fanotify_mark \
+  fchdir \
+  fchmod \
+  fchmodat \
+  fchown \
+  fchown32 \
+  fchownat \
+  fcntl \
+  fcntl64 \
+  fdatasync \
+  file_handle \
+  file_ioctl \
+  finit_module \
+  flock \
+  fstat \
+  fstat64 \
+  fstatat64 \
+  fstatfs \
+  fstatfs64 \
+  fsync \
+  ftruncate \
+  ftruncate64 \
+  futex \
+  futimesat \
+  get_mempolicy \
+  getcpu \
+  getcwd \
+  getdents \
+  getdents64 \
+  getegid \
+  getegid32 \
+  geteuid \
+  geteuid32 \
+  getgid \
+  getgid32 \
+  getgroups \
+  getgroups32 \
+  getpeername \
+  getpgrp \
+  getpid \
+  getppid \
+  getrandom \
+  getresgid \
+  getresgid32 \
+  getresuid \
+  getresuid32 \
+  getrlimit \
+  getrusage \
+  getsid \
+  getsockname \
+  getuid \
+  getuid32 \
+  getxxid \
+  inet-cmsg \
+  init_module \
+  inotify \
+  inotify_init1 \
+  ioctl \
+  ioctl_block \
+  ioctl_dm \
+  ioctl_evdev \
+  ioctl_loop \
+  ioctl_mtd \
+  ioctl_rtc \
+  ioctl_scsi \
+  ioctl_sg_io_v3 \
+  ioctl_sg_io_v4 \
+  ioctl_sock_gifconf \
+  ioctl_uffdio \
+  ioctl_v4l2 \
+  ioperm \
+  iopl \
+  ioprio \
+  ip_mreq \
+  ipc \
+  ipc_msg \
+  ipc_msgbuf \
+  ipc_sem \
+  ipc_shm \
+  kcmp \
+  kexec_file_load \
+  kexec_load \
+  keyctl \
+  kill \
+  lchown \
+  lchown32 \
+  link \
+  linkat \
+  llseek \
+  lookup_dcookie \
+  lseek \
+  lstat \
+  lstat64 \
+  madvise \
+  mbind \
+  membarrier \
+  memfd_create \
+  migrate_pages \
+  mincore \
+  mkdir \
+  mkdirat \
+  mknod \
+  mknodat \
+  mlock \
+  mlock2 \
+  mlockall \
+  mmap \
+  mmap64 \
+  mmsg \
+  mmsg_name \
+  mount \
+  move_pages \
+  mq \
+  mq_sendrecv \
+  mq_sendrecv-read \
+  mq_sendrecv-write \
+  msg_control \
+  msg_name \
+  munlockall \
+  nanosleep \
+  net-icmp_filter \
+  net-sockaddr \
+  net-y-unix \
+  net-yy-inet \
+  net-yy-netlink \
+  net-yy-unix \
+  netlink_protocol \
+  newfstatat \
+  old_mmap \
+  oldfstat \
+  oldlstat \
+  oldselect \
+  oldstat \
+  open \
+  openat \
+  osf_utimes \
+  pause \
+  perf_event_open \
+  personality \
+  pipe \
+  pipe2 \
+  pkey_alloc \
+  pkey_free \
+  pkey_mprotect \
+  poll \
+  ppoll \
+  prctl-arg2-intptr \
+  prctl-dumpable \
+  prctl-name \
+  prctl-no-args \
+  prctl-pdeathsig \
+  prctl-securebits \
+  prctl-tid_address \
+  prctl-tsc \
+  pread64-pwrite64 \
+  preadv \
+  preadv-pwritev \
+  preadv2-pwritev2 \
+  printstr \
+  prlimit64 \
+  process_vm_readv \
+  process_vm_writev \
+  pselect6 \
+  ptrace \
+  pwritev \
+  quotactl \
+  quotactl-xfs \
+  read-write \
+  readahead \
+  readdir \
+  readlink \
+  readlinkat \
+  readv \
+  reboot \
+  recvfrom \
+  recvmmsg-timeout \
+  recvmsg \
+  remap_file_pages \
+  rename \
+  renameat \
+  renameat2 \
+  request_key \
+  rmdir \
+  rt_sigpending \
+  rt_sigprocmask \
+  rt_sigqueueinfo \
+  rt_sigreturn \
+  rt_sigsuspend \
+  rt_sigtimedwait \
+  rt_tgsigqueueinfo \
+  sched_get_priority_mxx \
+  sched_rr_get_interval \
+  sched_xetaffinity \
+  sched_xetattr \
+  sched_xetparam \
+  sched_xetscheduler \
+  sched_yield \
+  seccomp-filter \
+  select \
+  semop \
+  sendfile \
+  sendfile64 \
+  set_mempolicy \
+  setdomainname \
+  setfsgid \
+  setfsgid32 \
+  setfsuid \
+  setfsuid32 \
+  setgid \
+  setgid32 \
+  setgroups \
+  setgroups32 \
+  sethostname \
+  setns \
+  setregid \
+  setregid32 \
+  setresgid \
+  setresgid32 \
+  setresuid \
+  setresuid32 \
+  setreuid \
+  setreuid32 \
+  setrlimit \
+  setuid \
+  setuid32 \
+  shmxt \
+  shutdown \
+  sigaction \
+  sigaltstack \
+  siginfo \
+  signalfd4 \
+  sigreturn \
+  sigsuspend \
+  socketcall \
+  splice \
+  stat \
+  stat64 \
+  statfs \
+  statfs64 \
+  statx \
+  swap \
+  sxetmask \
+  symlink \
+  symlinkat \
+  sync \
+  sync_file_range \
+  sync_file_range2 \
+  sysinfo \
+  syslog \
+  tee \
+  time \
+  timer_create \
+  timer_xettime \
+  timerfd_xettime \
+  times \
+  times-fail \
+  truncate \
+  truncate64 \
+  ugetrlimit \
+  uio \
+  umask \
+  umount \
+  umount2 \
+  umoven-illptr \
+  umovestr \
+  umovestr-illptr \
+  umovestr2 \
+  umovestr3 \
+  uname \
+  unlink \
+  unlinkat \
+  unshare \
+  userfaultfd \
+  ustat \
+  utime \
+  utimensat \
+  utimes \
+  vhangup \
+  vmsplice \
+  wait4 \
+  waitid \
+  waitpid \
+  xattr \
+  xattr-strings \
+  xet_robust_list \
+  xetitimer \
+  xetpgid \
+  xetpriority \
+  xettimeofday \
+  #
+
 attach_f_p_LDADD = -lrt -lpthread $(LDADD)
 clock_xettime_LDADD = -lrt $(LDADD)
 count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-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 \
+	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 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 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_protocol.gen.test \
+	newfstatat.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 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 \
+	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 \
+	siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+	sigreturn.gen.test sigsuspend.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
 LIBUNWIND_TESTS = 
 #LIBUNWIND_TESTS = strace-k.test
 DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
 	brk.test \
 	btrfs-v.test \
 	btrfs-vw.test \
 	btrfs-w.test \
-	btrfs.test \
 	caps-abbrev.test \
 	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
 	eventfd.test \
 	execve-v.test \
 	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
 	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
 	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
 	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
 	ioctl.test \
-	ioctl_block.test \
 	ioctl_dm-v.test \
 	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
 	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
+	ioctl_nsfs.test \
 	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
 	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
 	llseek.test \
-	lookup_dcookie.test \
 	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
 	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
 	net-y-unix.test \
 	net-yy-inet.test \
 	net-yy-netlink.test \
 	net-yy-unix.test \
 	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
 	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
 	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
 	personality.test \
 	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
 	poll.test \
-	ppoll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
 	prctl-name.test \
@@ -2650,148 +3002,21 @@
 	prctl-securebits.test \
 	prctl-tid_address.test \
 	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
 	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
 	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
 	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
 	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
 	sigaction.test \
 	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
 	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
 	uio.test \
-	umask.test \
 	umount.test \
 	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
 	umovestr.test \
 	umovestr2.test \
-	umovestr3.test \
 	uname.test \
 	unix-pair-send-recv.test \
 	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
 	# end of DECODER_TESTS
 
 MISC_TESTS = \
@@ -2804,7 +3029,7 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
-	fork-f.test \
+	get_regs.test \
 	ksysent.test \
 	opipe.test \
 	options-syntax.test \
@@ -2820,7 +3045,6 @@
 	redirect-fds.test \
 	redirect.test \
 	restart_syscall.test \
-	signal_receive.test \
 	strace-C.test \
 	strace-E.test \
 	strace-S.test \
@@ -2832,77 +3056,94 @@
 	strace-tt.test \
 	strace-ttt.test \
 	threads-execve.test \
-	vfork-f.test \
 	# end of MISC_TESTS
 
 XFAIL_TESTS_ = 
 XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
 XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+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
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
+EXTRA_DIST = \
+	caps-abbrev.awk \
+	caps.awk \
+	clock.in \
+	count-f.expected \
+	eventfd.expected \
+	fadvise.h \
+	filter-unavailable.expected \
+	fstatat.c \
+	fstatx.c \
+	gen_pure_executables.sh \
+	gen_tests.in \
+	gen_tests.sh \
+	getresugid.c \
+	init.sh \
+	init_delete_module.h \
+	ioctl-v.sh \
+	ipc.sh \
+	ipc_msgbuf.expected \
+	ksysent.sed \
+	lstatx.c \
+	match.awk \
+	net.expected \
+	oldselect.expected \
+	pipe.expected \
+	process_vm_readv_writev.c \
+	pure_executables.list \
+	qual_fault-exit_group.expected \
+	qual_inject-error-signal.expected \
+	qual_inject-signal.expected \
+	quotactl.h \
+	regex.in \
+	run.sh \
+	sched.in \
+	scno_tampering.sh \
+	setfsugid.c \
+	setresugid.c \
+	setreugid.c \
+	setugid.c \
+	sigaction.awk \
+	sigaltstack.expected \
+	sockname.c \
+	strace-C.expected \
+	strace-E.expected \
+	strace-T.expected \
+	strace-ff.expected \
+	strace-k.test \
+	strace-r.expected \
+	strace.supp \
+	struct_flock.c \
+	sun_path.expected \
+	trace_fstat.in \
+	trace_fstatfs.in \
+	trace_lstat.in \
+	trace_question.in \
+	trace_stat.in \
+	trace_stat_like.in \
+	trace_statfs.in \
+	trace_statfs_like.in \
+	uio.expected \
+	umode_t.c \
+	umovestr.expected \
+	unix-pair-send-recv.expected \
+	unix-pair-sendto-recvfrom.expected \
+	xchownx.c \
+	xgetrlimit.c \
+	xselect.c \
+	xstatfs.c \
+	xstatfs64.c \
+	xstatfsx.c \
+	xstatx.c \
+	xutimes.c \
+	$(TESTS)
 
 objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
 
@@ -2913,7 +3154,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -2934,7 +3175,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../scno.am:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
 	@rm -f getpgrp$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
+	@rm -f getpid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
+	@rm -f getppid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
 getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES) 
 	@rm -f getrandom$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
 	@rm -f getsockname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
 
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES) 
+	@rm -f gettid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
 	@rm -f getuid$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
 	@rm -f inotify_init1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
+	@rm -f int_0x80$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
 ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES) 
 	@rm -f ioctl$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
 	@rm -f ioctl_mtd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
 
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES) 
+	@rm -f ioctl_nsfs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_LDADD) $(LIBS)
+
 ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES) 
 	@rm -f ioctl_rtc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
@@ -3548,6 +3809,10 @@
 	@rm -f lstat64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
 
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES) 
+	@rm -f madvise$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
 	@rm -f mbind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
 	@rm -f openat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES) 
+	@rm -f osf_utimes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
 pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES) 
 	@rm -f pause$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_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)
+
 prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES) 
 	@rm -f prctl-arg2-intptr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
@@ -4004,6 +4277,10 @@
 	@rm -f rt_sigqueueinfo$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
+	@rm -f rt_sigreturn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
 rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES) 
 	@rm -f rt_sigsuspend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
@@ -4204,6 +4481,10 @@
 	@rm -f sigreturn$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
 
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES) 
+	@rm -f sigsuspend$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
 sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES) 
 	@rm -f sleep$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
 	@rm -f statfs64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
+	@rm -f statx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
 	@rm -f swap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
 
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES) 
+	@rm -f sxetmask$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
 symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES) 
 	@rm -f symlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
 include ./$(DEPDIR)/getgroups32.Po
 include ./$(DEPDIR)/getpeername.Po
 include ./$(DEPDIR)/getpgrp.Po
+include ./$(DEPDIR)/getpid.Po
+include ./$(DEPDIR)/getppid.Po
 include ./$(DEPDIR)/getrandom.Po
 include ./$(DEPDIR)/getresgid.Po
 include ./$(DEPDIR)/getresgid32.Po
@@ -4557,6 +4848,7 @@
 include ./$(DEPDIR)/getrusage.Po
 include ./$(DEPDIR)/getsid.Po
 include ./$(DEPDIR)/getsockname.Po
+include ./$(DEPDIR)/gettid.Po
 include ./$(DEPDIR)/getuid.Po
 include ./$(DEPDIR)/getuid32.Po
 include ./$(DEPDIR)/getxxid.Po
@@ -4564,6 +4856,7 @@
 include ./$(DEPDIR)/init_module.Po
 include ./$(DEPDIR)/inotify.Po
 include ./$(DEPDIR)/inotify_init1.Po
+include ./$(DEPDIR)/int_0x80.Po
 include ./$(DEPDIR)/ioctl.Po
 include ./$(DEPDIR)/ioctl_block.Po
 include ./$(DEPDIR)/ioctl_dm-v.Po
@@ -4574,6 +4867,7 @@
 include ./$(DEPDIR)/ioctl_loop-v.Po
 include ./$(DEPDIR)/ioctl_loop.Po
 include ./$(DEPDIR)/ioctl_mtd.Po
+include ./$(DEPDIR)/ioctl_nsfs.Po
 include ./$(DEPDIR)/ioctl_rtc-v.Po
 include ./$(DEPDIR)/ioctl_rtc.Po
 include ./$(DEPDIR)/ioctl_scsi.Po
@@ -4603,6 +4897,7 @@
 include ./$(DEPDIR)/libtests_a-error_msg.Po
 include ./$(DEPDIR)/libtests_a-fill_memory.Po
 include ./$(DEPDIR)/libtests_a-get_page_size.Po
+include ./$(DEPDIR)/libtests_a-get_sigset_size.Po
 include ./$(DEPDIR)/libtests_a-hexdump_strdup.Po
 include ./$(DEPDIR)/libtests_a-hexquote_strndup.Po
 include ./$(DEPDIR)/libtests_a-inode_of_sockfd.Po
@@ -4611,9 +4906,11 @@
 include ./$(DEPDIR)/libtests_a-overflowuid.Po
 include ./$(DEPDIR)/libtests_a-pipe_maxfd.Po
 include ./$(DEPDIR)/libtests_a-print_quoted_string.Po
+include ./$(DEPDIR)/libtests_a-print_time.Po
 include ./$(DEPDIR)/libtests_a-printflags.Po
 include ./$(DEPDIR)/libtests_a-printxval.Po
 include ./$(DEPDIR)/libtests_a-signal2name.Po
+include ./$(DEPDIR)/libtests_a-skip_unavailable.Po
 include ./$(DEPDIR)/libtests_a-sprintrc.Po
 include ./$(DEPDIR)/libtests_a-tail_alloc.Po
 include ./$(DEPDIR)/libtests_a-tprintf.Po
@@ -4624,6 +4921,7 @@
 include ./$(DEPDIR)/lseek.Po
 include ./$(DEPDIR)/lstat.Po
 include ./$(DEPDIR)/lstat64-lstat64.Po
+include ./$(DEPDIR)/madvise.Po
 include ./$(DEPDIR)/mbind.Po
 include ./$(DEPDIR)/membarrier.Po
 include ./$(DEPDIR)/memfd_create.Po
@@ -4673,6 +4971,7 @@
 include ./$(DEPDIR)/oldstat.Po
 include ./$(DEPDIR)/open.Po
 include ./$(DEPDIR)/openat.Po
+include ./$(DEPDIR)/osf_utimes.Po
 include ./$(DEPDIR)/pause.Po
 include ./$(DEPDIR)/pc.Po
 include ./$(DEPDIR)/perf_event_open.Po
@@ -4685,6 +4984,7 @@
 include ./$(DEPDIR)/pkey_free.Po
 include ./$(DEPDIR)/pkey_mprotect.Po
 include ./$(DEPDIR)/poll.Po
+include ./$(DEPDIR)/ppoll-v.Po
 include ./$(DEPDIR)/ppoll.Po
 include ./$(DEPDIR)/prctl-arg2-intptr.Po
 include ./$(DEPDIR)/prctl-dumpable.Po
@@ -4738,6 +5038,7 @@
 include ./$(DEPDIR)/rt_sigpending.Po
 include ./$(DEPDIR)/rt_sigprocmask.Po
 include ./$(DEPDIR)/rt_sigqueueinfo.Po
+include ./$(DEPDIR)/rt_sigreturn.Po
 include ./$(DEPDIR)/rt_sigsuspend.Po
 include ./$(DEPDIR)/rt_sigtimedwait.Po
 include ./$(DEPDIR)/rt_tgsigqueueinfo.Po
@@ -4788,6 +5089,7 @@
 include ./$(DEPDIR)/signal_receive.Po
 include ./$(DEPDIR)/signalfd4.Po
 include ./$(DEPDIR)/sigreturn.Po
+include ./$(DEPDIR)/sigsuspend.Po
 include ./$(DEPDIR)/sleep.Po
 include ./$(DEPDIR)/socketcall.Po
 include ./$(DEPDIR)/splice.Po
@@ -4800,7 +5102,9 @@
 include ./$(DEPDIR)/stat64-stat64.Po
 include ./$(DEPDIR)/statfs-statfs.Po
 include ./$(DEPDIR)/statfs64.Po
+include ./$(DEPDIR)/statx.Po
 include ./$(DEPDIR)/swap.Po
+include ./$(DEPDIR)/sxetmask.Po
 include ./$(DEPDIR)/symlink.Po
 include ./$(DEPDIR)/symlinkat.Po
 include ./$(DEPDIR)/sync.Po
@@ -4925,6 +5229,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
 
+libtests_a-get_sigset_size.o: get_sigset_size.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+#	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+#	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+
 libtests_a-hexdump_strdup.o: hexdump_strdup.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
@@ -5037,6 +5355,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
 
+libtests_a-print_time.o: print_time.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+#	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+#	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+
 libtests_a-printflags.o: printflags.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
@@ -5079,6 +5411,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
 
+libtests_a-skip_unavailable.o: skip_unavailable.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+#	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.o' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+#	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.obj' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+
 libtests_a-sprintrc.o: sprintrc.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
@@ -5603,7 +5949,7 @@
 clean: clean-am
 
 clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	mostlyclean-am
+	clean-local mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
 .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
 	check-valgrind-am check-valgrind-local clean \
 	clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
 	uninstall uninstall-am
 
 
+$(srcdir)/_newselect.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) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.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_loop.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_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.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) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.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) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.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)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.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) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.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) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.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) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/select.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) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.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) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 
 # Valgrind check
 #
@@ -5786,6 +7095,11 @@
 ksysent.$(OBJEXT): ksysent.h
 $(objects): scno.h
 
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+	-rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
 syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
 	$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
 
diff --git a/tests/Makefile.am b/tests/Makefile.am
deleted file mode 100644
index 311d3bb..0000000
--- a/tests/Makefile.am
+++ /dev/null
@@ -1,962 +0,0 @@
-# Automake input for strace tests.
-#
-# Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-OS = linux
-ARCH = @arch@
-MPERS_NAME =
-ARCH_MFLAGS =
-AM_CFLAGS = $(WARN_CFLAGS)
-AM_CPPFLAGS = $(ARCH_MFLAGS) \
-	      -I$(builddir) \
-	      -I$(top_builddir)/$(OS)/$(ARCH) \
-	      -I$(top_srcdir)/$(OS)/$(ARCH) \
-	      -I$(top_builddir)/$(OS) \
-	      -I$(top_srcdir)/$(OS) \
-	      -I$(top_builddir) \
-	      -I$(top_srcdir)
-AM_LDFLAGS = $(ARCH_MFLAGS)
-
-libtests_a_SOURCES = \
-	errno2name.c \
-	error_msg.c \
-	fill_memory.c \
-	get_page_size.c \
-	hexdump_strdup.c \
-	hexquote_strndup.c \
-	inode_of_sockfd.c \
-	libmmsg.c \
-	libsocketcall.c \
-	overflowuid.c \
-	pipe_maxfd.c \
-	print_quoted_string.c \
-	printflags.c \
-	printxval.c \
-	signal2name.c \
-	sprintrc.c \
-	tail_alloc.c \
-	tests.h \
-	tprintf.c \
-	# end of libtests_a_SOURCES
-libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-check_LIBRARIES = libtests.a
-LDADD = libtests.a
-
-check_PROGRAMS = \
-	_newselect \
-	accept \
-	accept4 \
-	access \
-	acct \
-	add_key \
-	adjtimex \
-	aio \
-	alarm \
-	answer \
-	attach-f-p \
-	attach-f-p-cmd \
-	attach-p-cmd-cmd \
-	attach-p-cmd-p \
-	bpf \
-	brk \
-	btrfs \
-	caps \
-	caps-abbrev \
-	chmod \
-	chown \
-	chown32 \
-	chroot \
-	clock_adjtime \
-	clock_nanosleep \
-	clock_xettime \
-	copy_file_range \
-	count-f \
-	creat \
-	delete_module \
-	dup \
-	dup2 \
-	dup3 \
-	epoll_create \
-	epoll_create1 \
-	epoll_ctl \
-	epoll_pwait \
-	epoll_wait \
-	erestartsys \
-	eventfd \
-	execve \
-	execve-v \
-	execveat \
-	execveat-v \
-	faccessat \
-	fadvise64 \
-	fadvise64_64 \
-	fallocate \
-	fanotify_init \
-	fanotify_mark \
-	fchdir \
-	fchmod \
-	fchmodat \
-	fchown \
-	fchown32 \
-	fchownat \
-	fcntl \
-	fcntl64 \
-	fdatasync \
-	file_handle \
-	file_ioctl \
-	filter-unavailable \
-	finit_module \
-	flock \
-	fork-f \
-	fstat \
-	fstat64 \
-	fstatat64 \
-	fstatfs \
-	fstatfs64 \
-	fsync \
-	ftruncate \
-	ftruncate64 \
-	futex \
-	futimesat \
-	get_mempolicy \
-	getcpu \
-	getcwd \
-	getdents \
-	getdents64 \
-	getegid \
-	getegid32 \
-	geteuid \
-	geteuid32 \
-	getgid \
-	getgid32 \
-	getgroups \
-	getgroups32 \
-	getpeername \
-	getpgrp \
-	getrandom \
-	getresgid \
-	getresgid32 \
-	getresuid \
-	getresuid32 \
-	getrlimit \
-	getrusage \
-	getsid \
-	getsockname \
-	getuid \
-	getuid32 \
-	getxxid \
-	inet-cmsg \
-	init_module \
-	inotify \
-	inotify_init1 \
-	ioctl \
-	ioctl_block \
-	ioctl_dm \
-	ioctl_dm-v \
-	ioctl_evdev \
-	ioctl_evdev-v \
-	ioctl_loop \
-	ioctl_loop-nv \
-	ioctl_loop-v \
-	ioctl_mtd \
-	ioctl_rtc \
-	ioctl_rtc-v \
-	ioctl_scsi \
-	ioctl_sg_io_v3 \
-	ioctl_sg_io_v4 \
-	ioctl_sock_gifconf \
-	ioctl_uffdio \
-	ioctl_v4l2 \
-	ioperm \
-	iopl \
-	ioprio \
-	ip_mreq \
-	ipc \
-	ipc_msg \
-	ipc_msgbuf \
-	ipc_sem \
-	ipc_shm \
-	kcmp \
-	kexec_file_load \
-	kexec_load \
-	keyctl \
-	kill \
-	ksysent \
-	lchown \
-	lchown32 \
-	link \
-	linkat \
-	llseek \
-	lookup_dcookie \
-	lseek \
-	lstat \
-	lstat64 \
-	mbind \
-	membarrier \
-	memfd_create \
-	migrate_pages \
-	mincore \
-	mkdir \
-	mkdirat \
-	mknod \
-	mknodat \
-	mlock \
-	mlock2 \
-	mlockall \
-	mmap \
-	mmap64 \
-	mmsg \
-	mmsg-silent \
-	mmsg_name \
-	mmsg_name-v \
-	mount \
-	move_pages \
-	mq \
-	mq_sendrecv \
-	mq_sendrecv-read \
-	mq_sendrecv-write \
-	msg_control \
-	msg_control-v \
-	msg_name \
-	munlockall \
-	nanosleep \
-	net-accept-connect \
-	net-icmp_filter \
-	net-sockaddr \
-	net-y-unix \
-	net-yy-inet \
-	net-yy-netlink \
-	net-yy-unix \
-	netlink_inet_diag \
-	netlink_netlink_diag \
-	netlink_protocol \
-	netlink_unix_diag \
-	newfstatat \
-	nsyscalls \
-	old_mmap \
-	oldfstat \
-	oldlstat \
-	oldselect \
-	oldstat \
-	open \
-	openat \
-	pause \
-	pc \
-	perf_event_open \
-	perf_event_open_nonverbose \
-	perf_event_open_unabbrev \
-	personality \
-	pipe \
-	pipe2 \
-	pkey_alloc \
-	pkey_free \
-	pkey_mprotect \
-	poll \
-	ppoll \
-	prctl-arg2-intptr \
-	prctl-dumpable \
-	prctl-name \
-	prctl-no-args \
-	prctl-pdeathsig \
-	prctl-seccomp-filter-v \
-	prctl-seccomp-strict \
-	prctl-securebits \
-	prctl-tid_address \
-	prctl-tsc \
-	pread64-pwrite64 \
-	preadv \
-	preadv-pwritev \
-	preadv2-pwritev2 \
-	print_maxfd \
-	printstr \
-	prlimit64 \
-	process_vm_readv \
-	process_vm_writev \
-	pselect6 \
-	ptrace \
-	pwritev \
-	qual_fault \
-	qual_inject-error-signal \
-	qual_inject-retval \
-	qual_inject-signal \
-	qual_signal \
-	quotactl \
-	quotactl-v \
-	quotactl-xfs \
-	quotactl-xfs-v \
-	read-write \
-	readahead \
-	readdir \
-	readlink \
-	readlinkat \
-	readv \
-	reboot \
-	recvfrom \
-	recvmmsg-timeout \
-	recvmsg \
-	redirect-fds \
-	remap_file_pages \
-	rename \
-	renameat \
-	renameat2 \
-	request_key \
-	restart_syscall \
-	rmdir \
-	rt_sigpending \
-	rt_sigprocmask \
-	rt_sigqueueinfo \
-	rt_sigsuspend \
-	rt_sigtimedwait \
-	rt_tgsigqueueinfo \
-	sched_get_priority_mxx \
-	sched_rr_get_interval \
-	sched_xetaffinity \
-	sched_xetattr \
-	sched_xetparam \
-	sched_xetscheduler \
-	sched_yield \
-	scm_rights \
-	seccomp-filter \
-	seccomp-filter-v \
-	seccomp-strict \
-	select \
-	semop \
-	sendfile \
-	sendfile64 \
-	set_mempolicy \
-	set_ptracer_any \
-	setdomainname \
-	setfsgid \
-	setfsgid32 \
-	setfsuid \
-	setfsuid32 \
-	setgid \
-	setgid32 \
-	setgroups \
-	setgroups32 \
-	sethostname \
-	setns \
-	setregid \
-	setregid32 \
-	setresgid \
-	setresgid32 \
-	setresuid \
-	setresuid32 \
-	setreuid \
-	setreuid32 \
-	setrlimit \
-	setuid \
-	setuid32 \
-	shmxt \
-	shutdown \
-	sigaction \
-	sigaltstack \
-	siginfo \
-	signal_receive \
-	signalfd4 \
-	sigreturn \
-	sleep \
-	socketcall \
-	splice \
-	stack-fcall \
-	stat \
-	stat64 \
-	statfs \
-	statfs64 \
-	swap \
-	symlink \
-	symlinkat \
-	sync \
-	sync_file_range \
-	sync_file_range2 \
-	sysinfo \
-	syslog \
-	tee \
-	threads-execve \
-	time \
-	timer_create \
-	timer_xettime \
-	timerfd_xettime \
-	times \
-	times-fail \
-	truncate \
-	truncate64 \
-	ugetrlimit \
-	uio \
-	umask \
-	umount \
-	umount2 \
-	umoven-illptr \
-	umovestr \
-	umovestr-illptr \
-	umovestr2 \
-	umovestr3 \
-	uname \
-	unix-pair-send-recv \
-	unix-pair-sendto-recvfrom \
-	unlink \
-	unlinkat \
-	unshare \
-	userfaultfd \
-	ustat \
-	utime \
-	utimensat \
-	utimes \
-	vfork-f \
-	vhangup \
-	vmsplice \
-	wait4 \
-	wait4-v \
-	waitid \
-	waitid-v \
-	waitpid \
-	xattr \
-	xattr-strings \
-	xet_robust_list \
-	xetitimer \
-	xetpgid \
-	xetpriority \
-	xettimeofday \
-	# end of check_PROGRAMS
-
-attach_f_p_LDADD = -lrt -lpthread $(LDADD)
-clock_xettime_LDADD = -lrt $(LDADD)
-count_f_LDADD = -lpthread $(LDADD)
-filter_unavailable_LDADD = -lpthread $(LDADD)
-fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-mq_LDADD = -lrt $(LDADD)
-mq_sendrecv_LDADD = -lrt $(LDADD)
-mq_sendrecv_read_LDADD = -lrt $(LDADD)
-mq_sendrecv_write_LDADD = -lrt $(LDADD)
-newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-pc_LDADD = $(dl_LIBS) $(LDADD)
-pread64_pwrite64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-preadv_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-threads_execve_LDADD = -lrt -lpthread $(LDADD)
-times_LDADD = -lrt $(LDADD)
-truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
-
-stack_fcall_SOURCES = stack-fcall.c \
-	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c
-
-if USE_LIBUNWIND
-LIBUNWIND_TESTS = strace-k.test
-else
-LIBUNWIND_TESTS =
-endif
-
-DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
-	brk.test \
-	btrfs-v.test \
-	btrfs-vw.test \
-	btrfs-w.test \
-	btrfs.test \
-	caps-abbrev.test \
-	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
-	eventfd.test \
-	execve-v.test \
-	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
-	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
-	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
-	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
-	ioctl.test \
-	ioctl_block.test \
-	ioctl_dm-v.test \
-	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
-	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
-	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
-	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
-	llseek.test \
-	lookup_dcookie.test \
-	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
-	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
-	net-y-unix.test \
-	net-yy-inet.test \
-	net-yy-netlink.test \
-	net-yy-unix.test \
-	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
-	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
-	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
-	personality.test \
-	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
-	poll.test \
-	ppoll.test \
-	prctl-arg2-intptr.test \
-	prctl-dumpable.test \
-	prctl-name.test \
-	prctl-no-args.test \
-	prctl-pdeathsig.test \
-	prctl-seccomp-filter-v.test \
-	prctl-seccomp-strict.test \
-	prctl-securebits.test \
-	prctl-tid_address.test \
-	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
-	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
-	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
-	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
-	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
-	sigaction.test \
-	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
-	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
-	uio.test \
-	umask.test \
-	umount.test \
-	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
-	umovestr.test \
-	umovestr2.test \
-	umovestr3.test \
-	uname.test \
-	unix-pair-send-recv.test \
-	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
-	# end of DECODER_TESTS
-
-MISC_TESTS = \
-	attach-f-p.test \
-	attach-p-cmd.test \
-	bexecve.test \
-	count-f.test \
-	count.test \
-	detach-running.test \
-	detach-sleeping.test \
-	detach-stopped.test \
-	filter-unavailable.test \
-	fork-f.test \
-	ksysent.test \
-	opipe.test \
-	options-syntax.test \
-	pc.test \
-	qual_fault-syntax.test \
-	qual_fault.test \
-	qual_inject-error-signal.test \
-	qual_inject-retval.test \
-	qual_inject-signal.test \
-	qual_inject-syntax.test \
-	qual_signal.test \
-	qual_syscall.test \
-	redirect-fds.test \
-	redirect.test \
-	restart_syscall.test \
-	signal_receive.test \
-	strace-C.test \
-	strace-E.test \
-	strace-S.test \
-	strace-T.test \
-	strace-V.test \
-	strace-ff.test \
-	strace-r.test \
-	strace-t.test \
-	strace-tt.test \
-	strace-ttt.test \
-	threads-execve.test \
-	vfork-f.test \
-	# end of MISC_TESTS
-
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(LIBUNWIND_TESTS)
-
-XFAIL_TESTS_ =
-XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
-
-TEST_LOG_COMPILER = env
-AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) MIPS_ABI=$(MIPS_ABI) $(srcdir)/run.sh
-
-@VALGRIND_CHECK_RULES@
-VALGRIND_FLAGS = --quiet
-VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
-
-ksysent.h: $(srcdir)/ksysent.sed
-	echo '#include <asm/unistd.h>' | \
-		$(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM - > $@.t1
-	LC_COLLATE=C sed -r -n -f $(srcdir)/ksysent.sed < $@.t1 > $@.t2
-	mv -f $@.t2 $@
-	rm -f $@.t1
-
-ksysent.$(OBJEXT): ksysent.h
-
-objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-$(objects): scno.h
-
-CLEANFILES = ksysent.h $(TESTS:=.tmp)
-
-include ../scno.am
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 3a4d792..4a51782 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -17,6 +17,7 @@
 # Automake input for strace tests.
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -131,148 +132,38 @@
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-check_PROGRAMS = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
-	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
-	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) answer$(EXEEXT) \
-	attach-f-p$(EXEEXT) attach-f-p-cmd$(EXEEXT) \
-	attach-p-cmd-cmd$(EXEEXT) attach-p-cmd-p$(EXEEXT) bpf$(EXEEXT) \
-	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) caps-abbrev$(EXEEXT) \
-	chmod$(EXEEXT) chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
-	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
-	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) \
-	count-f$(EXEEXT) creat$(EXEEXT) delete_module$(EXEEXT) \
-	dup$(EXEEXT) dup2$(EXEEXT) dup3$(EXEEXT) epoll_create$(EXEEXT) \
-	epoll_create1$(EXEEXT) epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) \
-	epoll_wait$(EXEEXT) erestartsys$(EXEEXT) eventfd$(EXEEXT) \
-	execve$(EXEEXT) execve-v$(EXEEXT) execveat$(EXEEXT) \
-	execveat-v$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
-	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
-	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
-	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
-	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
-	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
-	file_ioctl$(EXEEXT) filter-unavailable$(EXEEXT) \
-	finit_module$(EXEEXT) flock$(EXEEXT) fork-f$(EXEEXT) \
-	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
-	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
-	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
-	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
-	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
-	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
-	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
-	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
-	getpgrp$(EXEEXT) getrandom$(EXEEXT) getresgid$(EXEEXT) \
-	getresgid32$(EXEEXT) getresuid$(EXEEXT) getresuid32$(EXEEXT) \
-	getrlimit$(EXEEXT) getrusage$(EXEEXT) getsid$(EXEEXT) \
-	getsockname$(EXEEXT) getuid$(EXEEXT) getuid32$(EXEEXT) \
-	getxxid$(EXEEXT) inet-cmsg$(EXEEXT) init_module$(EXEEXT) \
-	inotify$(EXEEXT) inotify_init1$(EXEEXT) ioctl$(EXEEXT) \
-	ioctl_block$(EXEEXT) ioctl_dm$(EXEEXT) ioctl_dm-v$(EXEEXT) \
-	ioctl_evdev$(EXEEXT) ioctl_evdev-v$(EXEEXT) \
-	ioctl_loop$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
-	ioctl_loop-v$(EXEEXT) ioctl_mtd$(EXEEXT) ioctl_rtc$(EXEEXT) \
-	ioctl_rtc-v$(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) ipc_msg$(EXEEXT) \
-	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
-	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
-	keyctl$(EXEEXT) kill$(EXEEXT) ksysent$(EXEEXT) lchown$(EXEEXT) \
-	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
-	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
-	lstat$(EXEEXT) lstat64$(EXEEXT) mbind$(EXEEXT) \
-	membarrier$(EXEEXT) memfd_create$(EXEEXT) \
-	migrate_pages$(EXEEXT) mincore$(EXEEXT) mkdir$(EXEEXT) \
-	mkdirat$(EXEEXT) mknod$(EXEEXT) mknodat$(EXEEXT) \
-	mlock$(EXEEXT) mlock2$(EXEEXT) mlockall$(EXEEXT) mmap$(EXEEXT) \
-	mmap64$(EXEEXT) mmsg$(EXEEXT) mmsg-silent$(EXEEXT) \
-	mmsg_name$(EXEEXT) mmsg_name-v$(EXEEXT) mount$(EXEEXT) \
-	move_pages$(EXEEXT) mq$(EXEEXT) mq_sendrecv$(EXEEXT) \
-	mq_sendrecv-read$(EXEEXT) mq_sendrecv-write$(EXEEXT) \
-	msg_control$(EXEEXT) msg_control-v$(EXEEXT) msg_name$(EXEEXT) \
-	munlockall$(EXEEXT) nanosleep$(EXEEXT) \
-	net-accept-connect$(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_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
-	netlink_protocol$(EXEEXT) netlink_unix_diag$(EXEEXT) \
-	newfstatat$(EXEEXT) nsyscalls$(EXEEXT) old_mmap$(EXEEXT) \
-	oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
-	oldstat$(EXEEXT) open$(EXEEXT) openat$(EXEEXT) pause$(EXEEXT) \
-	pc$(EXEEXT) perf_event_open$(EXEEXT) \
-	perf_event_open_nonverbose$(EXEEXT) \
-	perf_event_open_unabbrev$(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-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
-	prctl-securebits$(EXEEXT) prctl-tid_address$(EXEEXT) \
-	prctl-tsc$(EXEEXT) pread64-pwrite64$(EXEEXT) preadv$(EXEEXT) \
-	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
-	print_maxfd$(EXEEXT) printstr$(EXEEXT) prlimit64$(EXEEXT) \
-	process_vm_readv$(EXEEXT) process_vm_writev$(EXEEXT) \
-	pselect6$(EXEEXT) ptrace$(EXEEXT) pwritev$(EXEEXT) \
-	qual_fault$(EXEEXT) qual_inject-error-signal$(EXEEXT) \
-	qual_inject-retval$(EXEEXT) qual_inject-signal$(EXEEXT) \
-	qual_signal$(EXEEXT) quotactl$(EXEEXT) quotactl-v$(EXEEXT) \
-	quotactl-xfs$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
-	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
-	readlink$(EXEEXT) readlinkat$(EXEEXT) readv$(EXEEXT) \
-	reboot$(EXEEXT) recvfrom$(EXEEXT) recvmmsg-timeout$(EXEEXT) \
-	recvmsg$(EXEEXT) redirect-fds$(EXEEXT) \
-	remap_file_pages$(EXEEXT) rename$(EXEEXT) renameat$(EXEEXT) \
-	renameat2$(EXEEXT) request_key$(EXEEXT) \
-	restart_syscall$(EXEEXT) rmdir$(EXEEXT) rt_sigpending$(EXEEXT) \
-	rt_sigprocmask$(EXEEXT) rt_sigqueueinfo$(EXEEXT) \
-	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
-	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
-	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
-	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
-	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
-	scm_rights$(EXEEXT) seccomp-filter$(EXEEXT) \
-	seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
-	select$(EXEEXT) semop$(EXEEXT) sendfile$(EXEEXT) \
-	sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
-	set_ptracer_any$(EXEEXT) setdomainname$(EXEEXT) \
-	setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
-	setfsuid32$(EXEEXT) setgid$(EXEEXT) setgid32$(EXEEXT) \
-	setgroups$(EXEEXT) setgroups32$(EXEEXT) sethostname$(EXEEXT) \
-	setns$(EXEEXT) setregid$(EXEEXT) setregid32$(EXEEXT) \
-	setresgid$(EXEEXT) setresgid32$(EXEEXT) setresuid$(EXEEXT) \
-	setresuid32$(EXEEXT) setreuid$(EXEEXT) setreuid32$(EXEEXT) \
-	setrlimit$(EXEEXT) setuid$(EXEEXT) setuid32$(EXEEXT) \
-	shmxt$(EXEEXT) shutdown$(EXEEXT) sigaction$(EXEEXT) \
-	sigaltstack$(EXEEXT) siginfo$(EXEEXT) signal_receive$(EXEEXT) \
-	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sleep$(EXEEXT) \
-	socketcall$(EXEEXT) splice$(EXEEXT) stack-fcall$(EXEEXT) \
-	stat$(EXEEXT) stat64$(EXEEXT) statfs$(EXEEXT) \
-	statfs64$(EXEEXT) swap$(EXEEXT) symlink$(EXEEXT) \
-	symlinkat$(EXEEXT) sync$(EXEEXT) sync_file_range$(EXEEXT) \
-	sync_file_range2$(EXEEXT) sysinfo$(EXEEXT) syslog$(EXEEXT) \
-	tee$(EXEEXT) threads-execve$(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) unix-pair-send-recv$(EXEEXT) \
-	unix-pair-sendto-recvfrom$(EXEEXT) unlink$(EXEEXT) \
-	unlinkat$(EXEEXT) unshare$(EXEEXT) userfaultfd$(EXEEXT) \
-	ustat$(EXEEXT) utime$(EXEEXT) utimensat$(EXEEXT) \
-	utimes$(EXEEXT) vfork-f$(EXEEXT) vhangup$(EXEEXT) \
-	vmsplice$(EXEEXT) wait4$(EXEEXT) wait4-v$(EXEEXT) \
-	waitid$(EXEEXT) waitid-v$(EXEEXT) waitpid$(EXEEXT) \
-	xattr$(EXEEXT) xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
-	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
-	xettimeofday$(EXEEXT)
-TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(am__EXEEXT_1)
-DIST_COMMON = $(srcdir)/../scno.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
+	$(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) caps-abbrev$(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) ksysent$(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) \
+	perf_event_open_nonverbose$(EXEEXT) \
+	perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
+	prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
+	print_maxfd$(EXEEXT) qual_fault$(EXEEXT) \
+	qual_inject-error-signal$(EXEEXT) qual_inject-retval$(EXEEXT) \
+	qual_inject-signal$(EXEEXT) qual_signal$(EXEEXT) \
+	quotactl-v$(EXEEXT) quotactl-xfs-v$(EXEEXT) \
+	redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
+	scm_rights$(EXEEXT) seccomp-filter-v$(EXEEXT) \
+	seccomp-strict$(EXEEXT) set_ptracer_any$(EXEEXT) \
+	signal_receive$(EXEEXT) sleep$(EXEEXT) stack-fcall$(EXEEXT) \
+	threads-execve$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
+	unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
+	wait4-v$(EXEEXT) waitid-v$(EXEEXT)
+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 \
@@ -300,6 +191,7 @@
 	libtests_a-error_msg.$(OBJEXT) \
 	libtests_a-fill_memory.$(OBJEXT) \
 	libtests_a-get_page_size.$(OBJEXT) \
+	libtests_a-get_sigset_size.$(OBJEXT) \
 	libtests_a-hexdump_strdup.$(OBJEXT) \
 	libtests_a-hexquote_strndup.$(OBJEXT) \
 	libtests_a-inode_of_sockfd.$(OBJEXT) \
@@ -308,10 +200,130 @@
 	libtests_a-overflowuid.$(OBJEXT) \
 	libtests_a-pipe_maxfd.$(OBJEXT) \
 	libtests_a-print_quoted_string.$(OBJEXT) \
+	libtests_a-print_time.$(OBJEXT) \
 	libtests_a-printflags.$(OBJEXT) libtests_a-printxval.$(OBJEXT) \
-	libtests_a-signal2name.$(OBJEXT) libtests_a-sprintrc.$(OBJEXT) \
-	libtests_a-tail_alloc.$(OBJEXT) libtests_a-tprintf.$(OBJEXT)
+	libtests_a-signal2name.$(OBJEXT) \
+	libtests_a-skip_unavailable.$(OBJEXT) \
+	libtests_a-sprintrc.$(OBJEXT) libtests_a-tail_alloc.$(OBJEXT) \
+	libtests_a-tprintf.$(OBJEXT)
 libtests_a_OBJECTS = $(am_libtests_a_OBJECTS)
+am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
+	access$(EXEEXT) acct$(EXEEXT) add_key$(EXEEXT) \
+	adjtimex$(EXEEXT) aio$(EXEEXT) alarm$(EXEEXT) bpf$(EXEEXT) \
+	brk$(EXEEXT) btrfs$(EXEEXT) caps$(EXEEXT) chmod$(EXEEXT) \
+	chown$(EXEEXT) chown32$(EXEEXT) chroot$(EXEEXT) \
+	clock_adjtime$(EXEEXT) clock_nanosleep$(EXEEXT) \
+	clock_xettime$(EXEEXT) copy_file_range$(EXEEXT) creat$(EXEEXT) \
+	delete_module$(EXEEXT) dup$(EXEEXT) dup2$(EXEEXT) \
+	dup3$(EXEEXT) epoll_create$(EXEEXT) epoll_create1$(EXEEXT) \
+	epoll_ctl$(EXEEXT) epoll_pwait$(EXEEXT) epoll_wait$(EXEEXT) \
+	erestartsys$(EXEEXT) eventfd$(EXEEXT) execve$(EXEEXT) \
+	execveat$(EXEEXT) faccessat$(EXEEXT) fadvise64$(EXEEXT) \
+	fadvise64_64$(EXEEXT) fallocate$(EXEEXT) \
+	fanotify_init$(EXEEXT) fanotify_mark$(EXEEXT) fchdir$(EXEEXT) \
+	fchmod$(EXEEXT) fchmodat$(EXEEXT) fchown$(EXEEXT) \
+	fchown32$(EXEEXT) fchownat$(EXEEXT) fcntl$(EXEEXT) \
+	fcntl64$(EXEEXT) fdatasync$(EXEEXT) file_handle$(EXEEXT) \
+	file_ioctl$(EXEEXT) finit_module$(EXEEXT) flock$(EXEEXT) \
+	fstat$(EXEEXT) fstat64$(EXEEXT) fstatat64$(EXEEXT) \
+	fstatfs$(EXEEXT) fstatfs64$(EXEEXT) fsync$(EXEEXT) \
+	ftruncate$(EXEEXT) ftruncate64$(EXEEXT) futex$(EXEEXT) \
+	futimesat$(EXEEXT) get_mempolicy$(EXEEXT) getcpu$(EXEEXT) \
+	getcwd$(EXEEXT) getdents$(EXEEXT) getdents64$(EXEEXT) \
+	getegid$(EXEEXT) getegid32$(EXEEXT) geteuid$(EXEEXT) \
+	geteuid32$(EXEEXT) getgid$(EXEEXT) getgid32$(EXEEXT) \
+	getgroups$(EXEEXT) getgroups32$(EXEEXT) getpeername$(EXEEXT) \
+	getpgrp$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
+	getrandom$(EXEEXT) getresgid$(EXEEXT) getresgid32$(EXEEXT) \
+	getresuid$(EXEEXT) getresuid32$(EXEEXT) getrlimit$(EXEEXT) \
+	getrusage$(EXEEXT) getsid$(EXEEXT) getsockname$(EXEEXT) \
+	getuid$(EXEEXT) getuid32$(EXEEXT) getxxid$(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_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) ipc_msg$(EXEEXT) \
+	ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) ipc_shm$(EXEEXT) \
+	kcmp$(EXEEXT) kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) \
+	keyctl$(EXEEXT) kill$(EXEEXT) lchown$(EXEEXT) \
+	lchown32$(EXEEXT) link$(EXEEXT) linkat$(EXEEXT) \
+	llseek$(EXEEXT) lookup_dcookie$(EXEEXT) lseek$(EXEEXT) \
+	lstat$(EXEEXT) lstat64$(EXEEXT) madvise$(EXEEXT) \
+	mbind$(EXEEXT) membarrier$(EXEEXT) memfd_create$(EXEEXT) \
+	migrate_pages$(EXEEXT) mincore$(EXEEXT) 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) \
+	net-yy-netlink$(EXEEXT) net-yy-unix$(EXEEXT) \
+	netlink_protocol$(EXEEXT) newfstatat$(EXEEXT) \
+	old_mmap$(EXEEXT) oldfstat$(EXEEXT) oldlstat$(EXEEXT) \
+	oldselect$(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) \
+	preadv-pwritev$(EXEEXT) preadv2-pwritev2$(EXEEXT) \
+	printstr$(EXEEXT) prlimit64$(EXEEXT) process_vm_readv$(EXEEXT) \
+	process_vm_writev$(EXEEXT) pselect6$(EXEEXT) ptrace$(EXEEXT) \
+	pwritev$(EXEEXT) quotactl$(EXEEXT) quotactl-xfs$(EXEEXT) \
+	read-write$(EXEEXT) readahead$(EXEEXT) readdir$(EXEEXT) \
+	readlink$(EXEEXT) 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) rt_sigpending$(EXEEXT) rt_sigprocmask$(EXEEXT) \
+	rt_sigqueueinfo$(EXEEXT) rt_sigreturn$(EXEEXT) \
+	rt_sigsuspend$(EXEEXT) rt_sigtimedwait$(EXEEXT) \
+	rt_tgsigqueueinfo$(EXEEXT) sched_get_priority_mxx$(EXEEXT) \
+	sched_rr_get_interval$(EXEEXT) sched_xetaffinity$(EXEEXT) \
+	sched_xetattr$(EXEEXT) sched_xetparam$(EXEEXT) \
+	sched_xetscheduler$(EXEEXT) sched_yield$(EXEEXT) \
+	seccomp-filter$(EXEEXT) select$(EXEEXT) semop$(EXEEXT) \
+	sendfile$(EXEEXT) sendfile64$(EXEEXT) set_mempolicy$(EXEEXT) \
+	setdomainname$(EXEEXT) setfsgid$(EXEEXT) setfsgid32$(EXEEXT) \
+	setfsuid$(EXEEXT) setfsuid32$(EXEEXT) setgid$(EXEEXT) \
+	setgid32$(EXEEXT) setgroups$(EXEEXT) setgroups32$(EXEEXT) \
+	sethostname$(EXEEXT) setns$(EXEEXT) setregid$(EXEEXT) \
+	setregid32$(EXEEXT) setresgid$(EXEEXT) setresgid32$(EXEEXT) \
+	setresuid$(EXEEXT) setresuid32$(EXEEXT) setreuid$(EXEEXT) \
+	setreuid32$(EXEEXT) setrlimit$(EXEEXT) setuid$(EXEEXT) \
+	setuid32$(EXEEXT) shmxt$(EXEEXT) shutdown$(EXEEXT) \
+	sigaction$(EXEEXT) sigaltstack$(EXEEXT) siginfo$(EXEEXT) \
+	signalfd4$(EXEEXT) sigreturn$(EXEEXT) sigsuspend$(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) \
+	xattr-strings$(EXEEXT) xet_robust_list$(EXEEXT) \
+	xetitimer$(EXEEXT) xetpgid$(EXEEXT) xetpriority$(EXEEXT) \
+	xettimeofday$(EXEEXT)
 _newselect_SOURCES = _newselect.c
 _newselect_OBJECTS = _newselect.$(OBJEXT)
 _newselect_LDADD = $(LDADD)
@@ -668,6 +680,14 @@
 getpgrp_OBJECTS = getpgrp.$(OBJEXT)
 getpgrp_LDADD = $(LDADD)
 getpgrp_DEPENDENCIES = libtests.a
+getpid_SOURCES = getpid.c
+getpid_OBJECTS = getpid.$(OBJEXT)
+getpid_LDADD = $(LDADD)
+getpid_DEPENDENCIES = libtests.a
+getppid_SOURCES = getppid.c
+getppid_OBJECTS = getppid.$(OBJEXT)
+getppid_LDADD = $(LDADD)
+getppid_DEPENDENCIES = libtests.a
 getrandom_SOURCES = getrandom.c
 getrandom_OBJECTS = getrandom.$(OBJEXT)
 getrandom_LDADD = $(LDADD)
@@ -704,6 +724,10 @@
 getsockname_OBJECTS = getsockname.$(OBJEXT)
 getsockname_LDADD = $(LDADD)
 getsockname_DEPENDENCIES = libtests.a
+gettid_SOURCES = gettid.c
+gettid_OBJECTS = gettid.$(OBJEXT)
+gettid_LDADD = $(LDADD)
+gettid_DEPENDENCIES = libtests.a
 getuid_SOURCES = getuid.c
 getuid_OBJECTS = getuid.$(OBJEXT)
 getuid_LDADD = $(LDADD)
@@ -732,6 +756,10 @@
 inotify_init1_OBJECTS = inotify_init1.$(OBJEXT)
 inotify_init1_LDADD = $(LDADD)
 inotify_init1_DEPENDENCIES = libtests.a
+int_0x80_SOURCES = int_0x80.c
+int_0x80_OBJECTS = int_0x80.$(OBJEXT)
+int_0x80_LDADD = $(LDADD)
+int_0x80_DEPENDENCIES = libtests.a
 ioctl_SOURCES = ioctl.c
 ioctl_OBJECTS = ioctl.$(OBJEXT)
 ioctl_LDADD = $(LDADD)
@@ -772,6 +800,10 @@
 ioctl_mtd_OBJECTS = ioctl_mtd.$(OBJEXT)
 ioctl_mtd_LDADD = $(LDADD)
 ioctl_mtd_DEPENDENCIES = libtests.a
+ioctl_nsfs_SOURCES = ioctl_nsfs.c
+ioctl_nsfs_OBJECTS = ioctl_nsfs.$(OBJEXT)
+ioctl_nsfs_LDADD = $(LDADD)
+ioctl_nsfs_DEPENDENCIES = libtests.a
 ioctl_rtc_SOURCES = ioctl_rtc.c
 ioctl_rtc_OBJECTS = ioctl_rtc.$(OBJEXT)
 ioctl_rtc_LDADD = $(LDADD)
@@ -900,6 +932,10 @@
 lstat64_OBJECTS = lstat64-lstat64.$(OBJEXT)
 lstat64_LDADD = $(LDADD)
 lstat64_DEPENDENCIES = libtests.a
+madvise_SOURCES = madvise.c
+madvise_OBJECTS = madvise.$(OBJEXT)
+madvise_LDADD = $(LDADD)
+madvise_DEPENDENCIES = libtests.a
 mbind_SOURCES = mbind.c
 mbind_OBJECTS = mbind.$(OBJEXT)
 mbind_LDADD = $(LDADD)
@@ -1092,6 +1128,10 @@
 openat_OBJECTS = openat.$(OBJEXT)
 openat_LDADD = $(LDADD)
 openat_DEPENDENCIES = libtests.a
+osf_utimes_SOURCES = osf_utimes.c
+osf_utimes_OBJECTS = osf_utimes.$(OBJEXT)
+osf_utimes_LDADD = $(LDADD)
+osf_utimes_DEPENDENCIES = libtests.a
 pause_SOURCES = pause.c
 pause_OBJECTS = pause.$(OBJEXT)
 pause_LDADD = $(LDADD)
@@ -1145,6 +1185,10 @@
 ppoll_OBJECTS = ppoll.$(OBJEXT)
 ppoll_LDADD = $(LDADD)
 ppoll_DEPENDENCIES = libtests.a
+ppoll_v_SOURCES = ppoll-v.c
+ppoll_v_OBJECTS = ppoll-v.$(OBJEXT)
+ppoll_v_LDADD = $(LDADD)
+ppoll_v_DEPENDENCIES = libtests.a
 prctl_arg2_intptr_SOURCES = prctl-arg2-intptr.c
 prctl_arg2_intptr_OBJECTS = prctl-arg2-intptr.$(OBJEXT)
 prctl_arg2_intptr_LDADD = $(LDADD)
@@ -1354,6 +1398,10 @@
 rt_sigqueueinfo_OBJECTS = rt_sigqueueinfo.$(OBJEXT)
 rt_sigqueueinfo_LDADD = $(LDADD)
 rt_sigqueueinfo_DEPENDENCIES = libtests.a
+rt_sigreturn_SOURCES = rt_sigreturn.c
+rt_sigreturn_OBJECTS = rt_sigreturn.$(OBJEXT)
+rt_sigreturn_LDADD = $(LDADD)
+rt_sigreturn_DEPENDENCIES = libtests.a
 rt_sigsuspend_SOURCES = rt_sigsuspend.c
 rt_sigsuspend_OBJECTS = rt_sigsuspend.$(OBJEXT)
 rt_sigsuspend_LDADD = $(LDADD)
@@ -1554,6 +1602,10 @@
 sigreturn_OBJECTS = sigreturn.$(OBJEXT)
 sigreturn_LDADD = $(LDADD)
 sigreturn_DEPENDENCIES = libtests.a
+sigsuspend_SOURCES = sigsuspend.c
+sigsuspend_OBJECTS = sigsuspend.$(OBJEXT)
+sigsuspend_LDADD = $(LDADD)
+sigsuspend_DEPENDENCIES = libtests.a
 sleep_SOURCES = sleep.c
 sleep_OBJECTS = sleep.$(OBJEXT)
 sleep_LDADD = $(LDADD)
@@ -1588,10 +1640,18 @@
 statfs64_OBJECTS = statfs64.$(OBJEXT)
 statfs64_LDADD = $(LDADD)
 statfs64_DEPENDENCIES = libtests.a
+statx_SOURCES = statx.c
+statx_OBJECTS = statx.$(OBJEXT)
+statx_LDADD = $(LDADD)
+statx_DEPENDENCIES = libtests.a
 swap_SOURCES = swap.c
 swap_OBJECTS = swap.$(OBJEXT)
 swap_LDADD = $(LDADD)
 swap_DEPENDENCIES = libtests.a
+sxetmask_SOURCES = sxetmask.c
+sxetmask_OBJECTS = sxetmask.$(OBJEXT)
+sxetmask_LDADD = $(LDADD)
+sxetmask_DEPENDENCIES = libtests.a
 symlink_SOURCES = symlink.c
 symlink_OBJECTS = symlink.$(OBJEXT)
 symlink_LDADD = $(LDADD)
@@ -1853,35 +1913,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1894,21 +1955,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -1938,35 +2000,36 @@
 	futex.c futimesat.c get_mempolicy.c getcpu.c getcwd.c \
 	getdents.c getdents64.c getegid.c getegid32.c geteuid.c \
 	geteuid32.c getgid.c getgid32.c getgroups.c getgroups32.c \
-	getpeername.c getpgrp.c getrandom.c getresgid.c getresgid32.c \
-	getresuid.c getresuid32.c getrlimit.c getrusage.c getsid.c \
-	getsockname.c getuid.c getuid32.c getxxid.c inet-cmsg.c \
-	init_module.c inotify.c inotify_init1.c ioctl.c ioctl_block.c \
+	getpeername.c getpgrp.c getpid.c getppid.c getrandom.c \
+	getresgid.c getresgid32.c getresuid.c getresuid32.c \
+	getrlimit.c getrusage.c getsid.c getsockname.c gettid.c \
+	getuid.c getuid32.c getxxid.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_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 kcmp.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 kcmp.c \
 	kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
 	lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
-	lseek.c lstat.c lstat64.c 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_inet_diag.c netlink_netlink_diag.c \
-	netlink_protocol.c netlink_unix_diag.c newfstatat.c \
-	nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
-	oldstat.c open.c openat.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 prctl-arg2-intptr.c \
-	prctl-dumpable.c prctl-name.c prctl-no-args.c \
-	prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+	lseek.c lstat.c lstat64.c madvise.c 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_inet_diag.c \
+	netlink_netlink_diag.c netlink_protocol.c netlink_unix_diag.c \
+	newfstatat.c nsyscalls.c old_mmap.c oldfstat.c oldlstat.c \
+	oldselect.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 \
 	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 printstr.c prlimit64.c \
@@ -1979,21 +2042,22 @@
 	redirect-fds.c remap_file_pages.c rename.c renameat.c \
 	renameat2.c request_key.c restart_syscall.c rmdir.c \
 	rt_sigpending.c rt_sigprocmask.c rt_sigqueueinfo.c \
-	rt_sigsuspend.c rt_sigtimedwait.c rt_tgsigqueueinfo.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 select.c \
-	semop.c sendfile.c sendfile64.c set_mempolicy.c \
-	set_ptracer_any.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_receive.c signalfd4.c sigreturn.c sleep.c socketcall.c \
-	splice.c $(stack_fcall_SOURCES) stat.c stat64.c statfs.c \
-	statfs64.c swap.c symlink.c symlinkat.c sync.c \
+	rt_sigreturn.c rt_sigsuspend.c rt_sigtimedwait.c \
+	rt_tgsigqueueinfo.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 select.c semop.c sendfile.c sendfile64.c \
+	set_mempolicy.c set_ptracer_any.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_receive.c signalfd4.c sigreturn.c \
+	sigsuspend.c sleep.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 \
 	timerfd_xettime.c times.c times-fail.c truncate.c truncate64.c \
@@ -2214,7 +2278,7 @@
   bases=`echo $$bases`
 RECHECK_LOGS = $(TEST_LOGS)
 AM_RECURSIVE_TARGETS = check recheck
-@USE_LIBUNWIND_TRUE@am__EXEEXT_1 = strace-k.test
+@USE_LIBUNWIND_TRUE@am__EXEEXT_2 = strace-k.test
 TEST_SUITE_LOG = test-suite.log
 TEST_EXTENSIONS = @EXEEXT@ .test
 am__test_logs1 = $(TESTS:=.log)
@@ -2253,6 +2317,7 @@
 CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@
 CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
 CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+COPYRIGHT_YEAR = @COPYRIGHT_YEAR@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@
@@ -2389,6 +2454,7 @@
 	error_msg.c \
 	fill_memory.c \
 	get_page_size.c \
+	get_sigset_size.c \
 	hexdump_strdup.c \
 	hexquote_strndup.c \
 	inode_of_sockfd.c \
@@ -2397,9 +2463,11 @@
 	overflowuid.c \
 	pipe_maxfd.c \
 	print_quoted_string.c \
+	print_time.c \
 	printflags.c \
 	printxval.c \
 	signal2name.c \
+	skip_unavailable.c \
 	sprintrc.c \
 	tail_alloc.c \
 	tests.h \
@@ -2409,6 +2477,340 @@
 libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
 check_LIBRARIES = libtests.a
 LDADD = libtests.a
+
+# Generated by ./tests/gen_pure_executables.sh from ./tests/pure_executables.list; do not edit.
+PURE_EXECUTABLES = \
+  _newselect \
+  accept \
+  accept4 \
+  access \
+  acct \
+  add_key \
+  adjtimex \
+  aio \
+  alarm \
+  bpf \
+  brk \
+  btrfs \
+  caps \
+  chmod \
+  chown \
+  chown32 \
+  chroot \
+  clock_adjtime \
+  clock_nanosleep \
+  clock_xettime \
+  copy_file_range \
+  creat \
+  delete_module \
+  dup \
+  dup2 \
+  dup3 \
+  epoll_create \
+  epoll_create1 \
+  epoll_ctl \
+  epoll_pwait \
+  epoll_wait \
+  erestartsys \
+  eventfd \
+  execve \
+  execveat \
+  faccessat \
+  fadvise64 \
+  fadvise64_64 \
+  fallocate \
+  fanotify_init \
+  fanotify_mark \
+  fchdir \
+  fchmod \
+  fchmodat \
+  fchown \
+  fchown32 \
+  fchownat \
+  fcntl \
+  fcntl64 \
+  fdatasync \
+  file_handle \
+  file_ioctl \
+  finit_module \
+  flock \
+  fstat \
+  fstat64 \
+  fstatat64 \
+  fstatfs \
+  fstatfs64 \
+  fsync \
+  ftruncate \
+  ftruncate64 \
+  futex \
+  futimesat \
+  get_mempolicy \
+  getcpu \
+  getcwd \
+  getdents \
+  getdents64 \
+  getegid \
+  getegid32 \
+  geteuid \
+  geteuid32 \
+  getgid \
+  getgid32 \
+  getgroups \
+  getgroups32 \
+  getpeername \
+  getpgrp \
+  getpid \
+  getppid \
+  getrandom \
+  getresgid \
+  getresgid32 \
+  getresuid \
+  getresuid32 \
+  getrlimit \
+  getrusage \
+  getsid \
+  getsockname \
+  getuid \
+  getuid32 \
+  getxxid \
+  inet-cmsg \
+  init_module \
+  inotify \
+  inotify_init1 \
+  ioctl \
+  ioctl_block \
+  ioctl_dm \
+  ioctl_evdev \
+  ioctl_loop \
+  ioctl_mtd \
+  ioctl_rtc \
+  ioctl_scsi \
+  ioctl_sg_io_v3 \
+  ioctl_sg_io_v4 \
+  ioctl_sock_gifconf \
+  ioctl_uffdio \
+  ioctl_v4l2 \
+  ioperm \
+  iopl \
+  ioprio \
+  ip_mreq \
+  ipc \
+  ipc_msg \
+  ipc_msgbuf \
+  ipc_sem \
+  ipc_shm \
+  kcmp \
+  kexec_file_load \
+  kexec_load \
+  keyctl \
+  kill \
+  lchown \
+  lchown32 \
+  link \
+  linkat \
+  llseek \
+  lookup_dcookie \
+  lseek \
+  lstat \
+  lstat64 \
+  madvise \
+  mbind \
+  membarrier \
+  memfd_create \
+  migrate_pages \
+  mincore \
+  mkdir \
+  mkdirat \
+  mknod \
+  mknodat \
+  mlock \
+  mlock2 \
+  mlockall \
+  mmap \
+  mmap64 \
+  mmsg \
+  mmsg_name \
+  mount \
+  move_pages \
+  mq \
+  mq_sendrecv \
+  mq_sendrecv-read \
+  mq_sendrecv-write \
+  msg_control \
+  msg_name \
+  munlockall \
+  nanosleep \
+  net-icmp_filter \
+  net-sockaddr \
+  net-y-unix \
+  net-yy-inet \
+  net-yy-netlink \
+  net-yy-unix \
+  netlink_protocol \
+  newfstatat \
+  old_mmap \
+  oldfstat \
+  oldlstat \
+  oldselect \
+  oldstat \
+  open \
+  openat \
+  osf_utimes \
+  pause \
+  perf_event_open \
+  personality \
+  pipe \
+  pipe2 \
+  pkey_alloc \
+  pkey_free \
+  pkey_mprotect \
+  poll \
+  ppoll \
+  prctl-arg2-intptr \
+  prctl-dumpable \
+  prctl-name \
+  prctl-no-args \
+  prctl-pdeathsig \
+  prctl-securebits \
+  prctl-tid_address \
+  prctl-tsc \
+  pread64-pwrite64 \
+  preadv \
+  preadv-pwritev \
+  preadv2-pwritev2 \
+  printstr \
+  prlimit64 \
+  process_vm_readv \
+  process_vm_writev \
+  pselect6 \
+  ptrace \
+  pwritev \
+  quotactl \
+  quotactl-xfs \
+  read-write \
+  readahead \
+  readdir \
+  readlink \
+  readlinkat \
+  readv \
+  reboot \
+  recvfrom \
+  recvmmsg-timeout \
+  recvmsg \
+  remap_file_pages \
+  rename \
+  renameat \
+  renameat2 \
+  request_key \
+  rmdir \
+  rt_sigpending \
+  rt_sigprocmask \
+  rt_sigqueueinfo \
+  rt_sigreturn \
+  rt_sigsuspend \
+  rt_sigtimedwait \
+  rt_tgsigqueueinfo \
+  sched_get_priority_mxx \
+  sched_rr_get_interval \
+  sched_xetaffinity \
+  sched_xetattr \
+  sched_xetparam \
+  sched_xetscheduler \
+  sched_yield \
+  seccomp-filter \
+  select \
+  semop \
+  sendfile \
+  sendfile64 \
+  set_mempolicy \
+  setdomainname \
+  setfsgid \
+  setfsgid32 \
+  setfsuid \
+  setfsuid32 \
+  setgid \
+  setgid32 \
+  setgroups \
+  setgroups32 \
+  sethostname \
+  setns \
+  setregid \
+  setregid32 \
+  setresgid \
+  setresgid32 \
+  setresuid \
+  setresuid32 \
+  setreuid \
+  setreuid32 \
+  setrlimit \
+  setuid \
+  setuid32 \
+  shmxt \
+  shutdown \
+  sigaction \
+  sigaltstack \
+  siginfo \
+  signalfd4 \
+  sigreturn \
+  sigsuspend \
+  socketcall \
+  splice \
+  stat \
+  stat64 \
+  statfs \
+  statfs64 \
+  statx \
+  swap \
+  sxetmask \
+  symlink \
+  symlinkat \
+  sync \
+  sync_file_range \
+  sync_file_range2 \
+  sysinfo \
+  syslog \
+  tee \
+  time \
+  timer_create \
+  timer_xettime \
+  timerfd_xettime \
+  times \
+  times-fail \
+  truncate \
+  truncate64 \
+  ugetrlimit \
+  uio \
+  umask \
+  umount \
+  umount2 \
+  umoven-illptr \
+  umovestr \
+  umovestr-illptr \
+  umovestr2 \
+  umovestr3 \
+  uname \
+  unlink \
+  unlinkat \
+  unshare \
+  userfaultfd \
+  ustat \
+  utime \
+  utimensat \
+  utimes \
+  vhangup \
+  vmsplice \
+  wait4 \
+  waitid \
+  waitpid \
+  xattr \
+  xattr-strings \
+  xet_robust_list \
+  xetitimer \
+  xetpgid \
+  xetpriority \
+  xettimeofday \
+  #
+
 attach_f_p_LDADD = -lrt -lpthread $(LDADD)
 clock_xettime_LDADD = -lrt $(LDADD)
 count_f_LDADD = -lpthread $(LDADD)
@@ -2437,209 +2839,159 @@
 stack_fcall_SOURCES = stack-fcall.c \
 	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-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 \
+	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 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 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_protocol.gen.test \
+	newfstatat.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 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 \
+	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 \
+	siginfo.gen.test signal_receive.gen.test signalfd4.gen.test \
+	sigreturn.gen.test sigsuspend.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
 @USE_LIBUNWIND_FALSE@LIBUNWIND_TESTS = 
 @USE_LIBUNWIND_TRUE@LIBUNWIND_TESTS = strace-k.test
 DECODER_TESTS = \
-	_newselect.test \
-	accept.test \
-	accept4.test \
-	access.test \
-	acct.test \
-	add_key.test \
-	adjtimex.test \
-	aio.test \
-	alarm.test \
-	bpf.test \
 	brk.test \
 	btrfs-v.test \
 	btrfs-vw.test \
 	btrfs-w.test \
-	btrfs.test \
 	caps-abbrev.test \
 	caps.test \
-	chmod.test \
-	chown.test \
-	chown32.test \
-	chroot.test \
-	clock_adjtime.test \
-	clock_nanosleep.test \
-	clock_xettime.test \
-	copy_file_range.test \
-	creat.test \
-	delete_module.test \
-	dup.test \
-	dup2.test \
-	dup3.test \
-	epoll_create.test \
-	epoll_create1.test \
-	epoll_ctl.test \
-	epoll_pwait.test \
-	epoll_wait.test \
-	erestartsys.test \
 	eventfd.test \
 	execve-v.test \
 	execve.test \
-	execveat-v.test \
-	execveat.test \
-	faccessat.test \
 	fadvise64.test \
-	fadvise64_64.test \
-	fallocate.test \
-	fanotify_init.test \
-	fanotify_mark.test \
-	fchdir.test \
-	fchmod.test \
-	fchmodat.test \
-	fchown.test \
-	fchown32.test \
-	fchownat.test \
-	fcntl.test \
-	fcntl64.test \
-	fdatasync.test \
-	file_handle.test \
-	file_ioctl.test \
-	finit_module.test \
-	flock.test \
-	fstat.test \
-	fstat64.test \
-	fstatat64.test \
-	fstatfs.test \
-	fstatfs64.test \
-	fsync.test \
-	ftruncate.test \
-	ftruncate64.test \
 	futex.test \
-	futimesat.test \
-	get_mempolicy.test \
-	getcpu.test \
-	getcwd.test \
-	getdents.test \
-	getdents64.test \
-	getegid.test \
-	getegid32.test \
-	geteuid.test \
-	geteuid32.test \
-	getgid.test \
-	getgid32.test \
-	getgroups.test \
-	getgroups32.test \
-	getpeername.test \
-	getpgrp.test \
-	getrandom.test \
-	getresgid.test \
-	getresgid32.test \
-	getresuid.test \
-	getresuid32.test \
-	getrlimit.test \
-	getrusage.test \
-	getsid.test \
-	getsockname.test \
 	getuid.test \
-	getuid32.test \
-	getxxid.test \
-	inet-cmsg.test \
-	init_module.test \
-	inotify.test \
-	inotify_init1.test \
 	ioctl.test \
-	ioctl_block.test \
 	ioctl_dm-v.test \
 	ioctl_dm.test \
-	ioctl_evdev-v.test \
-	ioctl_evdev.test \
 	ioctl_loop-nv.test \
-	ioctl_loop-v.test \
-	ioctl_loop.test \
-	ioctl_mtd.test \
-	ioctl_rtc-v.test \
-	ioctl_rtc.test \
-	ioctl_scsi.test \
-	ioctl_sg_io_v3.test \
-	ioctl_sg_io_v4.test \
+	ioctl_nsfs.test \
 	ioctl_sock_gifconf.test \
-	ioctl_uffdio.test \
-	ioctl_v4l2.test \
-	ioperm.test \
-	iopl.test \
-	ioprio.test \
-	ip_mreq.test \
-	ipc.test \
-	ipc_msg.test \
 	ipc_msgbuf.test \
-	ipc_sem.test \
-	ipc_shm.test \
-	kcmp.test \
-	kexec_file_load.test \
-	kexec_load.test \
-	keyctl.test \
-	kill.test \
-	lchown.test \
-	lchown32.test \
-	link.test \
-	linkat.test \
 	llseek.test \
-	lookup_dcookie.test \
 	lseek.test \
-	lstat.test \
-	lstat64.test \
-	mbind.test \
-	membarrier.test \
-	memfd_create.test \
-	migrate_pages.test \
-	mincore.test \
-	mkdir.test \
-	mkdirat.test \
-	mknod.test \
-	mknodat.test \
-	mlock.test \
-	mlock2.test \
-	mlockall.test \
 	mmap.test \
-	mmap64.test \
-	mmsg-silent.test \
-	mmsg.test \
-	mmsg_name-v.test \
-	mmsg_name.test \
-	mount.test \
-	move_pages.test \
-	mq.test \
-	mq_sendrecv-read.test \
-	mq_sendrecv-write.test \
-	mq_sendrecv.test \
-	msg_control-v.test \
-	msg_control.test \
-	msg_name.test \
-	munlockall.test \
-	nanosleep.test \
-	net-icmp_filter.test \
-	net-sockaddr.test \
 	net-y-unix.test \
 	net-yy-inet.test \
 	net-yy-netlink.test \
 	net-yy-unix.test \
 	net.test \
-	netlink_protocol.test \
-	newfstatat.test \
 	nsyscalls.test \
-	old_mmap.test \
-	oldfstat.test \
-	oldlstat.test \
 	oldselect.test \
-	oldstat.test \
-	open.test \
-	openat.test \
-	pause.test \
-	perf_event_open.test \
-	perf_event_open_nonverbose.test \
-	perf_event_open_unabbrev.test \
 	personality.test \
 	pipe.test \
-	pipe2.test \
-	pkey_alloc.test \
-	pkey_free.test \
-	pkey_mprotect.test \
 	poll.test \
-	ppoll.test \
 	prctl-arg2-intptr.test \
 	prctl-dumpable.test \
 	prctl-name.test \
@@ -2650,148 +3002,21 @@
 	prctl-securebits.test \
 	prctl-tid_address.test \
 	prctl-tsc.test \
-	pread64-pwrite64.test \
-	preadv-pwritev.test \
-	preadv.test \
-	preadv2-pwritev2.test \
-	printstr.test \
-	prlimit64.test \
-	process_vm_readv.test \
-	process_vm_writev.test \
-	pselect6.test \
-	ptrace.test \
-	pwritev.test \
 	qual_fault-exit_group.test \
-	quotactl-v.test \
-	quotactl-xfs-v.test \
-	quotactl-xfs.test \
-	quotactl.test \
-	read-write.test \
-	readahead.test \
-	readdir.test \
-	readlink.test \
-	readlinkat.test \
 	readv.test \
-	reboot.test \
-	recvfrom.test \
-	recvmmsg-timeout.test \
-	recvmsg.test \
-	remap_file_pages.test \
-	rename.test \
-	renameat.test \
-	renameat2.test \
-	request_key.test \
-	rmdir.test \
-	rt_sigpending.test \
-	rt_sigprocmask.test \
-	rt_sigqueueinfo.test \
-	rt_sigsuspend.test \
-	rt_sigtimedwait.test \
-	rt_tgsigqueueinfo.test \
-	sched_get_priority_mxx.test \
-	sched_rr_get_interval.test \
-	sched_xetaffinity.test \
-	sched_xetattr.test \
-	sched_xetparam.test \
-	sched_xetscheduler.test \
-	sched_yield.test \
 	scm_rights-fd.test \
-	seccomp-filter-v.test \
-	seccomp-filter.test \
 	seccomp-strict.test \
-	select.test \
-	semop.test \
-	sendfile.test \
-	sendfile64.test \
-	set_mempolicy.test \
-	setdomainname.test \
-	setfsgid.test \
-	setfsgid32.test \
-	setfsuid.test \
-	setfsuid32.test \
-	setgid.test \
-	setgid32.test \
-	setgroups.test \
-	setgroups32.test \
-	sethostname.test \
-	setns.test \
-	setregid.test \
-	setregid32.test \
-	setresgid.test \
-	setresgid32.test \
-	setresuid.test \
-	setresuid32.test \
-	setreuid.test \
-	setreuid32.test \
-	setrlimit.test \
-	setuid.test \
-	setuid32.test \
-	shmxt.test \
-	shutdown.test \
 	sigaction.test \
 	sigaltstack.test \
-	siginfo.test \
-	signalfd4.test \
-	sigreturn.test \
-	socketcall.test \
-	splice.test \
-	stat.test \
-	stat64.test \
-	statfs.test \
-	statfs64.test \
 	sun_path.test \
-	swap.test \
-	symlink.test \
-	symlinkat.test \
-	sync.test \
-	sync_file_range.test \
-	sync_file_range2.test \
-	sysinfo.test \
-	syslog.test \
-	tee.test \
-	time.test \
-	timer_create.test \
-	timer_xettime.test \
-	timerfd_xettime.test \
-	times-fail.test \
-	times.test \
-	truncate.test \
-	truncate64.test \
-	ugetrlimit.test \
 	uio.test \
-	umask.test \
 	umount.test \
 	umount2.test \
-	umoven-illptr.test \
-	umovestr-illptr.test \
 	umovestr.test \
 	umovestr2.test \
-	umovestr3.test \
 	uname.test \
 	unix-pair-send-recv.test \
 	unix-pair-sendto-recvfrom.test \
-	unlink.test \
-	unlinkat.test \
-	unshare.test \
-	userfaultfd.test \
-	ustat.test \
-	utime.test \
-	utimensat.test \
-	utimes.test \
-	vhangup.test \
-	vmsplice.test \
-	wait4-v.test \
-	wait4.test \
-	waitid-v.test \
-	waitid.test \
-	waitpid.test \
-	xattr-strings.test \
-	xattr.test \
-	xet_robust_list.test \
-	xetitimer.test \
-	xetpgid.test \
-	xetpriority.test \
-	xettimeofday.test \
 	# end of DECODER_TESTS
 
 MISC_TESTS = \
@@ -2804,7 +3029,7 @@
 	detach-sleeping.test \
 	detach-stopped.test \
 	filter-unavailable.test \
-	fork-f.test \
+	get_regs.test \
 	ksysent.test \
 	opipe.test \
 	options-syntax.test \
@@ -2820,7 +3045,6 @@
 	redirect-fds.test \
 	redirect.test \
 	restart_syscall.test \
-	signal_receive.test \
 	strace-C.test \
 	strace-E.test \
 	strace-S.test \
@@ -2832,77 +3056,94 @@
 	strace-tt.test \
 	strace-ttt.test \
 	threads-execve.test \
-	vfork-f.test \
 	# end of MISC_TESTS
 
 XFAIL_TESTS_ = 
 XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
 XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
-XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))
+XFAIL_TESTS_x86_64 = int_0x80.gen.test
+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
 VALGRIND_FLAGS = --quiet
 VALGRIND_SUPPRESSIONS_FILES = $(srcdir)/strace.supp
-EXTRA_DIST = init.sh run.sh match.awk \
-	     caps-abbrev.awk \
-	     caps.awk \
-	     count-f.expected \
-	     eventfd.expected \
-	     fadvise.h \
-	     filter-unavailable.expected \
-	     fstatat.c \
-	     fstatx.c \
-	     getresugid.c \
-	     init_delete_module.h \
-	     ipc.sh \
-	     ipc_msgbuf.expected \
-	     ksysent.sed \
-	     lstatx.c \
-	     net.expected \
-	     oldselect.expected \
-	     pipe.expected \
-	     ppoll-v.expected \
-	     ppoll.expected \
-	     process_vm_readv_writev.c \
-	     qual_fault-exit_group.expected \
-	     qual_inject-error-signal.expected \
-	     qual_inject-signal.expected \
-	     quotactl.h \
-	     scno_tampering.sh \
-	     setfsugid.c \
-	     setresugid.c \
-	     setreugid.c \
-	     setugid.c \
-	     sigaction.awk \
-	     sigaltstack.expected \
-	     sockname.c \
-	     statfs.expected \
-	     statx.sh \
-	     strace-C.expected \
-	     strace-E.expected \
-	     strace-T.expected \
-	     strace-ff.expected \
-	     strace-k.test \
-	     strace-r.expected \
-	     strace.supp \
-	     struct_flock.c \
-	     sun_path.expected \
-	     uio.expected \
-	     umode_t.c \
-	     umovestr.expected \
-	     unix-pair-send-recv.expected \
-	     unix-pair-sendto-recvfrom.expected \
-	     xchownx.c \
-	     xgetrlimit.c \
-	     xselect.c \
-	     xstatfs.c \
-	     xstatfs64.c \
-	     xstatfsx.c \
-	     xstatx.c \
-	     $(TESTS)
+EXTRA_DIST = \
+	caps-abbrev.awk \
+	caps.awk \
+	clock.in \
+	count-f.expected \
+	eventfd.expected \
+	fadvise.h \
+	filter-unavailable.expected \
+	fstatat.c \
+	fstatx.c \
+	gen_pure_executables.sh \
+	gen_tests.in \
+	gen_tests.sh \
+	getresugid.c \
+	init.sh \
+	init_delete_module.h \
+	ioctl-v.sh \
+	ipc.sh \
+	ipc_msgbuf.expected \
+	ksysent.sed \
+	lstatx.c \
+	match.awk \
+	net.expected \
+	oldselect.expected \
+	pipe.expected \
+	process_vm_readv_writev.c \
+	pure_executables.list \
+	qual_fault-exit_group.expected \
+	qual_inject-error-signal.expected \
+	qual_inject-signal.expected \
+	quotactl.h \
+	regex.in \
+	run.sh \
+	sched.in \
+	scno_tampering.sh \
+	setfsugid.c \
+	setresugid.c \
+	setreugid.c \
+	setugid.c \
+	sigaction.awk \
+	sigaltstack.expected \
+	sockname.c \
+	strace-C.expected \
+	strace-E.expected \
+	strace-T.expected \
+	strace-ff.expected \
+	strace-k.test \
+	strace-r.expected \
+	strace.supp \
+	struct_flock.c \
+	sun_path.expected \
+	trace_fstat.in \
+	trace_fstatfs.in \
+	trace_lstat.in \
+	trace_question.in \
+	trace_stat.in \
+	trace_stat_like.in \
+	trace_statfs.in \
+	trace_statfs_like.in \
+	uio.expected \
+	umode_t.c \
+	umovestr.expected \
+	unix-pair-send-recv.expected \
+	unix-pair-sendto-recvfrom.expected \
+	xchownx.c \
+	xgetrlimit.c \
+	xselect.c \
+	xstatfs.c \
+	xstatfs64.c \
+	xstatfsx.c \
+	xstatx.c \
+	xutimes.c \
+	$(TESTS)
 
 objects = $(filter %.$(OBJEXT),$(SOURCES:.c=.$(OBJEXT)))
-CLEANFILES = ksysent.h $(TESTS:=.tmp) syscallent.i scno.h
+CLEANFILES = ksysent.h syscallent.i scno.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
 
@@ -2913,7 +3154,7 @@
 
 .SUFFIXES:
 .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/../scno.am $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -2934,7 +3175,7 @@
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
 	esac;
-$(srcdir)/../scno.am:
+$(srcdir)/pure_executables.am $(srcdir)/gen_tests.am $(srcdir)/../scno.am:
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
@@ -3316,6 +3557,14 @@
 	@rm -f getpgrp$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getpgrp_OBJECTS) $(getpgrp_LDADD) $(LIBS)
 
+getpid$(EXEEXT): $(getpid_OBJECTS) $(getpid_DEPENDENCIES) $(EXTRA_getpid_DEPENDENCIES) 
+	@rm -f getpid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getpid_OBJECTS) $(getpid_LDADD) $(LIBS)
+
+getppid$(EXEEXT): $(getppid_OBJECTS) $(getppid_DEPENDENCIES) $(EXTRA_getppid_DEPENDENCIES) 
+	@rm -f getppid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(getppid_OBJECTS) $(getppid_LDADD) $(LIBS)
+
 getrandom$(EXEEXT): $(getrandom_OBJECTS) $(getrandom_DEPENDENCIES) $(EXTRA_getrandom_DEPENDENCIES) 
 	@rm -f getrandom$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getrandom_OBJECTS) $(getrandom_LDADD) $(LIBS)
@@ -3352,6 +3601,10 @@
 	@rm -f getsockname$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getsockname_OBJECTS) $(getsockname_LDADD) $(LIBS)
 
+gettid$(EXEEXT): $(gettid_OBJECTS) $(gettid_DEPENDENCIES) $(EXTRA_gettid_DEPENDENCIES) 
+	@rm -f gettid$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(gettid_OBJECTS) $(gettid_LDADD) $(LIBS)
+
 getuid$(EXEEXT): $(getuid_OBJECTS) $(getuid_DEPENDENCIES) $(EXTRA_getuid_DEPENDENCIES) 
 	@rm -f getuid$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(getuid_OBJECTS) $(getuid_LDADD) $(LIBS)
@@ -3380,6 +3633,10 @@
 	@rm -f inotify_init1$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(inotify_init1_OBJECTS) $(inotify_init1_LDADD) $(LIBS)
 
+int_0x80$(EXEEXT): $(int_0x80_OBJECTS) $(int_0x80_DEPENDENCIES) $(EXTRA_int_0x80_DEPENDENCIES) 
+	@rm -f int_0x80$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(int_0x80_OBJECTS) $(int_0x80_LDADD) $(LIBS)
+
 ioctl$(EXEEXT): $(ioctl_OBJECTS) $(ioctl_DEPENDENCIES) $(EXTRA_ioctl_DEPENDENCIES) 
 	@rm -f ioctl$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_OBJECTS) $(ioctl_LDADD) $(LIBS)
@@ -3420,6 +3677,10 @@
 	@rm -f ioctl_mtd$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_mtd_OBJECTS) $(ioctl_mtd_LDADD) $(LIBS)
 
+ioctl_nsfs$(EXEEXT): $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_DEPENDENCIES) $(EXTRA_ioctl_nsfs_DEPENDENCIES) 
+	@rm -f ioctl_nsfs$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(ioctl_nsfs_OBJECTS) $(ioctl_nsfs_LDADD) $(LIBS)
+
 ioctl_rtc$(EXEEXT): $(ioctl_rtc_OBJECTS) $(ioctl_rtc_DEPENDENCIES) $(EXTRA_ioctl_rtc_DEPENDENCIES) 
 	@rm -f ioctl_rtc$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ioctl_rtc_OBJECTS) $(ioctl_rtc_LDADD) $(LIBS)
@@ -3548,6 +3809,10 @@
 	@rm -f lstat64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(lstat64_OBJECTS) $(lstat64_LDADD) $(LIBS)
 
+madvise$(EXEEXT): $(madvise_OBJECTS) $(madvise_DEPENDENCIES) $(EXTRA_madvise_DEPENDENCIES) 
+	@rm -f madvise$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(madvise_OBJECTS) $(madvise_LDADD) $(LIBS)
+
 mbind$(EXEEXT): $(mbind_OBJECTS) $(mbind_DEPENDENCIES) $(EXTRA_mbind_DEPENDENCIES) 
 	@rm -f mbind$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(mbind_OBJECTS) $(mbind_LDADD) $(LIBS)
@@ -3744,6 +4009,10 @@
 	@rm -f openat$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(openat_OBJECTS) $(openat_LDADD) $(LIBS)
 
+osf_utimes$(EXEEXT): $(osf_utimes_OBJECTS) $(osf_utimes_DEPENDENCIES) $(EXTRA_osf_utimes_DEPENDENCIES) 
+	@rm -f osf_utimes$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(osf_utimes_OBJECTS) $(osf_utimes_LDADD) $(LIBS)
+
 pause$(EXEEXT): $(pause_OBJECTS) $(pause_DEPENDENCIES) $(EXTRA_pause_DEPENDENCIES) 
 	@rm -f pause$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(pause_OBJECTS) $(pause_LDADD) $(LIBS)
@@ -3796,6 +4065,10 @@
 	@rm -f ppoll$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(ppoll_OBJECTS) $(ppoll_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)
+
 prctl-arg2-intptr$(EXEEXT): $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_DEPENDENCIES) $(EXTRA_prctl_arg2_intptr_DEPENDENCIES) 
 	@rm -f prctl-arg2-intptr$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(prctl_arg2_intptr_OBJECTS) $(prctl_arg2_intptr_LDADD) $(LIBS)
@@ -4004,6 +4277,10 @@
 	@rm -f rt_sigqueueinfo$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigqueueinfo_OBJECTS) $(rt_sigqueueinfo_LDADD) $(LIBS)
 
+rt_sigreturn$(EXEEXT): $(rt_sigreturn_OBJECTS) $(rt_sigreturn_DEPENDENCIES) $(EXTRA_rt_sigreturn_DEPENDENCIES) 
+	@rm -f rt_sigreturn$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(rt_sigreturn_OBJECTS) $(rt_sigreturn_LDADD) $(LIBS)
+
 rt_sigsuspend$(EXEEXT): $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_DEPENDENCIES) $(EXTRA_rt_sigsuspend_DEPENDENCIES) 
 	@rm -f rt_sigsuspend$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(rt_sigsuspend_OBJECTS) $(rt_sigsuspend_LDADD) $(LIBS)
@@ -4204,6 +4481,10 @@
 	@rm -f sigreturn$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sigreturn_OBJECTS) $(sigreturn_LDADD) $(LIBS)
 
+sigsuspend$(EXEEXT): $(sigsuspend_OBJECTS) $(sigsuspend_DEPENDENCIES) $(EXTRA_sigsuspend_DEPENDENCIES) 
+	@rm -f sigsuspend$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sigsuspend_OBJECTS) $(sigsuspend_LDADD) $(LIBS)
+
 sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) $(EXTRA_sleep_DEPENDENCIES) 
 	@rm -f sleep$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS)
@@ -4236,10 +4517,18 @@
 	@rm -f statfs64$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(statfs64_OBJECTS) $(statfs64_LDADD) $(LIBS)
 
+statx$(EXEEXT): $(statx_OBJECTS) $(statx_DEPENDENCIES) $(EXTRA_statx_DEPENDENCIES) 
+	@rm -f statx$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(statx_OBJECTS) $(statx_LDADD) $(LIBS)
+
 swap$(EXEEXT): $(swap_OBJECTS) $(swap_DEPENDENCIES) $(EXTRA_swap_DEPENDENCIES) 
 	@rm -f swap$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(swap_OBJECTS) $(swap_LDADD) $(LIBS)
 
+sxetmask$(EXEEXT): $(sxetmask_OBJECTS) $(sxetmask_DEPENDENCIES) $(EXTRA_sxetmask_DEPENDENCIES) 
+	@rm -f sxetmask$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(sxetmask_OBJECTS) $(sxetmask_LDADD) $(LIBS)
+
 symlink$(EXEEXT): $(symlink_OBJECTS) $(symlink_DEPENDENCIES) $(EXTRA_symlink_DEPENDENCIES) 
 	@rm -f symlink$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(symlink_OBJECTS) $(symlink_LDADD) $(LIBS)
@@ -4548,6 +4837,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgroups32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpeername.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpgrp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getppid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getresgid32.Po@am__quote@
@@ -4557,6 +4848,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrusage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsockname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getuid32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getxxid.Po@am__quote@
@@ -4564,6 +4856,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init_module.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inotify_init1.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/int_0x80.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_block.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_dm-v.Po@am__quote@
@@ -4574,6 +4867,7 @@
 @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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_mtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_nsfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc-v.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_rtc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioctl_scsi.Po@am__quote@
@@ -4603,6 +4897,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-error_msg.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-fill_memory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-get_page_size.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-get_sigset_size.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexdump_strdup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-hexquote_strndup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-inode_of_sockfd.Po@am__quote@
@@ -4611,9 +4906,11 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-overflowuid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-pipe_maxfd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_quoted_string.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-print_time.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printflags.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-printxval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-signal2name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-skip_unavailable.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-sprintrc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tail_alloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@
@@ -4624,6 +4921,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat64-lstat64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/madvise.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbind.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/membarrier.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memfd_create.Po@am__quote@
@@ -4673,6 +4971,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/openat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf_utimes.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pause.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perf_event_open.Po@am__quote@
@@ -4685,6 +4984,7 @@
 @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.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@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prctl-dumpable.Po@am__quote@
@@ -4738,6 +5038,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigpending.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigprocmask.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigqueueinfo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigreturn.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigsuspend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_sigtimedwait.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rt_tgsigqueueinfo.Po@am__quote@
@@ -4788,6 +5089,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal_receive.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signalfd4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigreturn.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigsuspend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socketcall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splice.Po@am__quote@
@@ -4800,7 +5102,9 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat64-stat64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs-statfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statfs64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/statx.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/swap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sxetmask.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/symlinkat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@
@@ -4925,6 +5229,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_page_size.obj `if test -f 'get_page_size.c'; then $(CYGPATH_W) 'get_page_size.c'; else $(CYGPATH_W) '$(srcdir)/get_page_size.c'; fi`
 
+libtests_a-get_sigset_size.o: get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.o -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.o `test -f 'get_sigset_size.c' || echo '$(srcdir)/'`get_sigset_size.c
+
+libtests_a-get_sigset_size.obj: get_sigset_size.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-get_sigset_size.obj -MD -MP -MF $(DEPDIR)/libtests_a-get_sigset_size.Tpo -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-get_sigset_size.Tpo $(DEPDIR)/libtests_a-get_sigset_size.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='get_sigset_size.c' object='libtests_a-get_sigset_size.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-get_sigset_size.obj `if test -f 'get_sigset_size.c'; then $(CYGPATH_W) 'get_sigset_size.c'; else $(CYGPATH_W) '$(srcdir)/get_sigset_size.c'; fi`
+
 libtests_a-hexdump_strdup.o: hexdump_strdup.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-hexdump_strdup.o -MD -MP -MF $(DEPDIR)/libtests_a-hexdump_strdup.Tpo -c -o libtests_a-hexdump_strdup.o `test -f 'hexdump_strdup.c' || echo '$(srcdir)/'`hexdump_strdup.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-hexdump_strdup.Tpo $(DEPDIR)/libtests_a-hexdump_strdup.Po
@@ -5037,6 +5355,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_quoted_string.obj `if test -f 'print_quoted_string.c'; then $(CYGPATH_W) 'print_quoted_string.c'; else $(CYGPATH_W) '$(srcdir)/print_quoted_string.c'; fi`
 
+libtests_a-print_time.o: print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.o -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.o `test -f 'print_time.c' || echo '$(srcdir)/'`print_time.c
+
+libtests_a-print_time.obj: print_time.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-print_time.obj -MD -MP -MF $(DEPDIR)/libtests_a-print_time.Tpo -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-print_time.Tpo $(DEPDIR)/libtests_a-print_time.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_time.c' object='libtests_a-print_time.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-print_time.obj `if test -f 'print_time.c'; then $(CYGPATH_W) 'print_time.c'; else $(CYGPATH_W) '$(srcdir)/print_time.c'; fi`
+
 libtests_a-printflags.o: printflags.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-printflags.o -MD -MP -MF $(DEPDIR)/libtests_a-printflags.Tpo -c -o libtests_a-printflags.o `test -f 'printflags.c' || echo '$(srcdir)/'`printflags.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-printflags.Tpo $(DEPDIR)/libtests_a-printflags.Po
@@ -5079,6 +5411,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-signal2name.obj `if test -f 'signal2name.c'; then $(CYGPATH_W) 'signal2name.c'; else $(CYGPATH_W) '$(srcdir)/signal2name.c'; fi`
 
+libtests_a-skip_unavailable.o: skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.o -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.o `test -f 'skip_unavailable.c' || echo '$(srcdir)/'`skip_unavailable.c
+
+libtests_a-skip_unavailable.obj: skip_unavailable.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-skip_unavailable.obj -MD -MP -MF $(DEPDIR)/libtests_a-skip_unavailable.Tpo -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-skip_unavailable.Tpo $(DEPDIR)/libtests_a-skip_unavailable.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='skip_unavailable.c' object='libtests_a-skip_unavailable.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) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libtests_a-skip_unavailable.obj `if test -f 'skip_unavailable.c'; then $(CYGPATH_W) 'skip_unavailable.c'; else $(CYGPATH_W) '$(srcdir)/skip_unavailable.c'; fi`
+
 libtests_a-sprintrc.o: sprintrc.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libtests_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libtests_a-sprintrc.o -MD -MP -MF $(DEPDIR)/libtests_a-sprintrc.Tpo -c -o libtests_a-sprintrc.o `test -f 'sprintrc.c' || echo '$(srcdir)/'`sprintrc.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libtests_a-sprintrc.Tpo $(DEPDIR)/libtests_a-sprintrc.Po
@@ -5603,7 +5949,7 @@
 clean: clean-am
 
 clean-am: clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	mostlyclean-am
+	clean-local mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -5675,19 +6021,982 @@
 .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \
 	check-valgrind-am check-valgrind-local clean \
 	clean-checkLIBRARIES clean-checkPROGRAMS clean-generic \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 	mostlyclean-generic pdf pdf-am ps ps-am recheck tags tags-am \
 	uninstall uninstall-am
 
 
+$(srcdir)/_newselect.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) $^ $@
+
+$(srcdir)/accept4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/access.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/add_key.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/adjtimex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/aio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/alarm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/bpf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/btrfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/chroot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_adjtime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/clock_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/copy_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/creat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/delete_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/dup3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_create1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_ctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_pwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/epoll_wait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/erestartsys.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/execveat-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/faccessat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fadvise64_64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fallocate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_init.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fanotify_mark.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchmodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fchownat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fcntl64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fdatasync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_handle.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/file_ioctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/finit_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/flock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fstatfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/fsync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ftruncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/futimesat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/get_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcpu.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getcwd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getdents64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getegid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/geteuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpeername.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpgrp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getppid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrandom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getrusage.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getsockname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/gettid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/getxxid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inet-cmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/init_module.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/inotify_init1.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/int_0x80.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_block.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_loop.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_rtc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_rtc-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_scsi.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioctl_sg_io_v4.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) $^ $@
+
+$(srcdir)/ioctl_v4l2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioperm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/iopl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ioprio.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ip_mreq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_sem.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kexec_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/keyctl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/kill.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lchown32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/link.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/linkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lookup_dcookie.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/lstat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/madvise.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mbind.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/membarrier.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/memfd_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/migrate_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mincore.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mkdirat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknod.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mknodat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlock2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmap64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg-silent.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mmsg_name-v.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) $^ $@
+
+$(srcdir)/move_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-read.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/mq_sendrecv-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_control-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/msg_name.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/munlockall.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/nanosleep.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-icmp_filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/net-sockaddr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/netlink_protocol.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/old_mmap.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)/oldstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/openat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/osf_utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pause.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_nonverbose.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/perf_event_open_unabbrev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pipe2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_alloc.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_free.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pkey_mprotect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ppoll.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) $^ $@
+
+$(srcdir)/pread64-pwrite64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv-pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/preadv2-pwritev2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/printstr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/prlimit64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_readv.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/process_vm_writev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pselect6.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ptrace.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/pwritev.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/quotactl-xfs-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/read-write.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readahead.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readdir.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/readlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/reboot.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvfrom.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmmsg-timeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/recvmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/regex.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/remap_file_pages.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rename.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/renameat2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/request_key.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) $^ $@
+
+$(srcdir)/rt_sigpending.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigprocmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigqueueinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_sigtimedwait.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/rt_tgsigqueueinfo.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) $^ $@
+
+$(srcdir)/sched_get_priority_mxx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_rr_get_interval.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetaffinity.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetparam.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_xetscheduler.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sched_yield.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/select.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) $^ $@
+
+$(srcdir)/sendfile.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sendfile64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/set_mempolicy.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setdomainname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setfsuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setgroups32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sethostname.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setns.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setregid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresgid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setresuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setreuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/setuid32.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shmxt.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/shutdown.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/siginfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signal_receive.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/signalfd4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigreturn.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sigsuspend.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/socketcall.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) $^ $@
+
+$(srcdir)/stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/stat64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statfs64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/statx.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/swap.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sxetmask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/symlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sync_file_range2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/sysinfo.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/syslog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/tee.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/time.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_create.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timer_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/timerfd_xettime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/times-fail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_fstatfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_lstat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_question.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_stat_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/trace_statfs_like.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/truncate64.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ugetrlimit.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umask.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umoven-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr-illptr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/umovestr3.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unlinkat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/unshare.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/userfaultfd.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/ustat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utime.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimensat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/utimes.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vfork-f.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vhangup.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/vmsplice.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/wait4-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitid-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/waitpid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xattr-strings.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xet_robust_list.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetitimer.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpgid.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xetpriority.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
+$(srcdir)/xettimeofday.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+	$(AM_V_GEN) $^ $@
+
 @VALGRIND_CHECK_RULES@
 
 ksysent.h: $(srcdir)/ksysent.sed
@@ -5700,6 +7009,11 @@
 ksysent.$(OBJEXT): ksysent.h
 $(objects): scno.h
 
+clean-local: clean-local-check
+.PHONY: clean-local-check
+clean-local-check:
+	-rm -rf -- $(TESTS:.test=.dir) $(GEN_TESTS:.gen.test=.dir)
+
 syscallent.i: $(top_srcdir)/$(OS)/$(ARCH)/syscallent.h
 	$(CPP) -P $(SCNO_CPPFLAGS) $^ -o $@
 
diff --git a/tests/_newselect.gen.test b/tests/_newselect.gen.test
new file mode 100755
index 0000000..490abe4
--- /dev/null
+++ b/tests/_newselect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (_newselect ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/_newselect.test b/tests/_newselect.test
deleted file mode 100755
index 3371d4d..0000000
--- a/tests/_newselect.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check _newselect syscall decoding.
-
-. "${srcdir=.}/select.test"
diff --git a/tests/accept.gen.test b/tests/accept.gen.test
new file mode 100755
index 0000000..3ebba3b
--- /dev/null
+++ b/tests/accept.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/accept.test b/tests/accept.test
deleted file mode 100755
index b5e0790..0000000
--- a/tests/accept.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/accept4.gen.test b/tests/accept4.gen.test
new file mode 100755
index 0000000..5bd7fe6
--- /dev/null
+++ b/tests/accept4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (accept4 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a37
diff --git a/tests/accept4.test b/tests/accept4.test
deleted file mode 100755
index 722f25a..0000000
--- a/tests/accept4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of accept4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests/access.c b/tests/access.c
index e6f169b..4420ba3 100644
--- a/tests/access.c
+++ b/tests/access.c
@@ -19,6 +19,7 @@
 	printf("access(\"%s\", R_OK|W_OK|X_OK) = %ld %s (%m)\n",
 	       sample, rc, errno2name());
 
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests/access.gen.test b/tests/access.gen.test
new file mode 100755
index 0000000..7d80e6f
--- /dev/null
+++ b/tests/access.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (access -a30 -P access_sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P access_sample
diff --git a/tests/access.test b/tests/access.test
deleted file mode 100755
index 3ab2eb4..0000000
--- a/tests/access.test
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-# Check access syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-check_prog grep
-run_prog > /dev/null
-run_strace -eaccess -a30 $args > "$EXP"
-
-# Filter out access() calls made by libc.
-grep -F access_sample < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/acct.gen.test b/tests/acct.gen.test
new file mode 100755
index 0000000..fa14e85
--- /dev/null
+++ b/tests/acct.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (acct -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/acct.test b/tests/acct.test
deleted file mode 100755
index b9bca75..0000000
--- a/tests/acct.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check acct syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/add_key.gen.test b/tests/add_key.gen.test
new file mode 100755
index 0000000..d6ffbc8
--- /dev/null
+++ b/tests/add_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (add_key -a30 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -s12
diff --git a/tests/add_key.test b/tests/add_key.test
deleted file mode 100755
index eadd8c2..0000000
--- a/tests/add_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of add_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -s12
diff --git a/tests/adjtimex.c b/tests/adjtimex.c
index 1638b53..4d68ea1 100644
--- a/tests/adjtimex.c
+++ b/tests/adjtimex.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of adjtimex strace test.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,38 +33,46 @@
 #include <string.h>
 #include <sys/timex.h>
 
+#include "xlat.h"
+#include "xlat/adjtimex_state.h"
+#include "xlat/adjtimex_status.h"
+
 int
 main(void)
 {
-	adjtimex(NULL);
-	printf("adjtimex\\(NULL\\) = -1 EFAULT \\(%m\\)\n");
+	int state = adjtimex(NULL);
+	printf("adjtimex(NULL) = %s\n", sprintrc(state));
 
-	struct timex * const tx = tail_alloc(sizeof(*tx));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timex, tx);
 	memset(tx, 0, sizeof(*tx));
 
-	int state = adjtimex(tx);
+	state = adjtimex(tx);
 	if (state < 0)
 		perror_msg_and_skip("adjtimex");
 
-	printf("adjtimex\\(\\{modes=0, offset=%jd, freq=%jd, maxerror=%jd"
-	       ", esterror=%jd, status=%s, constant=%jd, precision=%jd"
-	       ", tolerance=%jd, time=\\{tv_sec=%jd, tv_usec=%jd\\}, tick=%jd, "
-	       "ppsfreq=%jd, jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd, "
-	       "calcnt=%jd, errcnt=%jd, stbcnt=%jd"
-#ifdef HAVE_STRUCT_TIMEX_TAI
-	       ", tai=%d"
-#endif
-	       "\\}\\) = %d \\(TIME_[A-Z]+\\)\n",
+	printf("adjtimex({modes=0, offset=%jd, freq=%jd, maxerror=%jd"
+	       ", esterror=%jd, status=",
 	       (intmax_t) tx->offset,
 	       (intmax_t) tx->freq,
 	       (intmax_t) tx->maxerror,
-	       (intmax_t) tx->esterror,
-	       tx->status ? "STA_[A-Z]+(\\|STA_[A-Z]+)*" : "0",
+	       (intmax_t) tx->esterror);
+	if (tx->status)
+		printflags(adjtimex_status, (unsigned int) tx->status, NULL);
+	else
+		putchar('0');
+	printf(", constant=%jd, precision=%jd"
+	       ", tolerance=%jd, time={tv_sec=%lld, tv_usec=%llu}, tick=%jd"
+	       ", ppsfreq=%jd, jitter=%jd, shift=%d, stabil=%jd, jitcnt=%jd"
+	       ", calcnt=%jd, errcnt=%jd, stbcnt=%jd"
+#ifdef HAVE_STRUCT_TIMEX_TAI
+	       ", tai=%d"
+#endif
+	       "}) = %d (",
 	       (intmax_t) tx->constant,
 	       (intmax_t) tx->precision,
 	       (intmax_t) tx->tolerance,
-	       (intmax_t) tx->time.tv_sec,
-	       (intmax_t) tx->time.tv_usec,
+	       (long long) tx->time.tv_sec,
+	       zero_extend_signed_to_ull(tx->time.tv_usec),
 	       (intmax_t) tx->tick,
 	       (intmax_t) tx->ppsfreq,
 	       (intmax_t) tx->jitter,
@@ -78,6 +86,9 @@
 	       tx->tai,
 #endif
 	       state);
+	printxval(adjtimex_state, (unsigned int) state, NULL);
+	puts(")");
 
+	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests/adjtimex.gen.test b/tests/adjtimex.gen.test
new file mode 100755
index 0000000..8db59f2
--- /dev/null
+++ b/tests/adjtimex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (adjtimex -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/adjtimex.test b/tests/adjtimex.test
deleted file mode 100755
index 0140550..0000000
--- a/tests/adjtimex.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check adjtimex syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a 15 -e adjtimex $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/aio.c b/tests/aio.c
index 0766d23..677a02b 100644
--- a/tests/aio.c
+++ b/tests/aio.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -198,15 +199,14 @@
 	};
 	const long *cbvs2 = tail_memdup(proto_cbvs2, sizeof(proto_cbvs2));
 
-	unsigned long *ctx = tail_alloc(sizeof(unsigned long));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned long, ctx);
 	*ctx = 0;
 
 	const unsigned int nr = ARRAY_SIZE(proto_cb);
 	const unsigned long lnr = (unsigned long) (0xdeadbeef00000000ULL | nr);
 
 	const struct io_event *ev = tail_alloc(nr * sizeof(struct io_event));
-	const struct timespec proto_ts = { .tv_nsec = 123456789 };
-	const struct timespec *ts = tail_memdup(&proto_ts, sizeof(proto_ts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
 
 	(void) close(0);
 	if (open("/dev/zero", O_RDONLY))
@@ -263,6 +263,24 @@
 	       bogus_ctx, (long) 0xca7faceddeadf00dLL,
 	       (long) 0xba5e1e505ca571e0LL, ts + 1, sprintrc(rc));
 
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+	printf("io_getevents(%#lx, 0, 0, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       bogus_ctx, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	rc = syscall(__NR_io_getevents, bogus_ctx, 0, 0, 0, ts);
+	printf("io_getevents(%#lx, 0, 0, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       bogus_ctx, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = 0;
+	ts->tv_nsec = 123456789;
 	rc = syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts);
 	printf("io_getevents(%#lx, %ld, %ld, ["
 	       "{data=%#" PRI__x64 ", obj=%p, res=%u, res2=0}, "
diff --git a/tests/aio.gen.test b/tests/aio.gen.test
new file mode 100755
index 0000000..8c8cbd5
--- /dev/null
+++ b/tests/aio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (aio -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
diff --git a/tests/aio.test b/tests/aio.test
deleted file mode 100755
index 2ba90da..0000000
--- a/tests/aio.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check io_* syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=io_setup,io_submit,io_getevents,io_cancel,io_destroy
-run_strace_match_diff -a14 -e trace=$syscalls
diff --git a/tests/alarm.gen.test b/tests/alarm.gen.test
new file mode 100755
index 0000000..ba1dea8
--- /dev/null
+++ b/tests/alarm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (alarm -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/alarm.test b/tests/alarm.test
deleted file mode 100755
index 267b223..0000000
--- a/tests/alarm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check alarm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/attach-f-p-cmd.c b/tests/attach-f-p-cmd.c
index 77594be..1e9ed99 100644
--- a/tests/attach-f-p-cmd.c
+++ b/tests/attach-f-p-cmd.c
@@ -2,6 +2,7 @@
  * This file is part of attach-f-p strace test.
  *
  * 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
@@ -34,6 +35,8 @@
 int
 main(void)
 {
+	skip_if_unavailable("/proc/self/task/");
+
 	static const char dir[] = "attach-f-p.test cmd";
 	pid_t pid = getpid();
 	int rc = chdir(dir);
diff --git a/tests/attach-f-p.test b/tests/attach-f-p.test
index f417074..368c775 100755
--- a/tests/attach-f-p.test
+++ b/tests/attach-f-p.test
@@ -3,6 +3,7 @@
 # Check that -f -p attaches to threads properly.
 #
 # 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,22 +30,17 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -f -p is implemented using /proc/$pid/task/
-[ -d /proc/self/task/ ] ||
-	framework_skip_ '/proc/self/task/ is not available'
 run_prog_skip_if_failed \
 	kill -0 $$
-run_prog ./attach-f-p-cmd > /dev/null
+run_prog ../attach-f-p-cmd > /dev/null
 
-rm -f "$OUT"
-./set_ptracer_any sh -c "exec ./attach-f-p >> $OUT" > /dev/null &
+../set_ptracer_any sh -c "exec ../attach-f-p >> $EXP" > /dev/null &
 tracee_pid=$!
 
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
 	kill -0 $tracee_pid 2> /dev/null ||
 		fail_ 'set_ptracer_any sh failed'
 done
 
-run_strace -a32 -f -echdir -p $tracee_pid ./attach-f-p-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a32 -f -echdir -p $tracee_pid ../attach-f-p-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests/attach-p-cmd.test b/tests/attach-p-cmd.test
index 2068cf1..e7c1bfa 100755
--- a/tests/attach-p-cmd.test
+++ b/tests/attach-p-cmd.test
@@ -3,6 +3,7 @@
 # Check that simultaneous use of -p option and tracing of a command works.
 #
 # 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
@@ -32,16 +33,13 @@
 run_prog_skip_if_failed \
 	kill -0 $$
 
-rm -rf attach-p-cmd.test-lock
-rm -f "$OUT"
-./set_ptracer_any ./attach-p-cmd-p >> "$OUT" &
+../set_ptracer_any ../attach-p-cmd-p >> "$EXP" &
 tracee_pid=$!
 
-while ! [ -s "$OUT" ]; do
+while ! [ -s "$EXP" ]; do
 	kill -0 $tracee_pid 2> /dev/null ||
-		fail_ 'set_ptracer_any ./attach-p-cmd-p failed'
+		fail_ 'set_ptracer_any ../attach-p-cmd-p failed'
 done
 
-run_strace -a30 -echdir -p $tracee_pid ./attach-p-cmd-cmd > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
+run_strace -a30 -echdir -p $tracee_pid ../attach-p-cmd-cmd > "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests/bexecve.test b/tests/bexecve.test
index f1ab04f..325330e 100755
--- a/tests/bexecve.test
+++ b/tests/bexecve.test
@@ -3,6 +3,7 @@
 # Check -bexecve behavior.
 #
 # Copyright (c) 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
@@ -35,14 +36,14 @@
 	$STRACE "$@" 2> "$LOG"
 }
 
-run_strace_redir -enone ./set_ptracer_any true ||
+run_strace_redir -enone ../set_ptracer_any true ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -enone ./set_ptracer_any false
+run_strace_redir -enone ../set_ptracer_any false
 [ $? -eq 1 ] ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
-run_strace_redir -bexecve -enone ./set_ptracer_any false ||
+run_strace_redir -bexecve -enone ../set_ptracer_any false ||
 	dump_log_and_fail_with "$STRACE $args: unexpected exit status"
 
 pattern_detached='[^:]*strace: Process [1-9][0-9]* detached'
diff --git a/tests/bpf.c b/tests/bpf.c
index 7ef16c9..40f96a7 100644
--- a/tests/bpf.c
+++ b/tests/bpf.c
@@ -109,14 +109,15 @@
 # endif
 
 /* BPF_PROG_ATTACH and BPF_PROG_DETACH commands appear in kernel 4.10. */
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 static int
 prog_cgroup(int cmd)
 {
 	union bpf_attr attr = {
 		.target_fd = -1,
 		.attach_bpf_fd = -1,
-		.attach_type = 0
+		.attach_type = 0,
+		.attach_flags = 1
 	};
 	void *const t_attr = tail_memdup(&attr, sizeof(attr));
 	return sys_bpf(cmd, (unsigned long) t_attr, sizeof(attr));
@@ -205,11 +206,12 @@
 	BOGUS_BPF(BPF_OBJ_GET);
 # endif
 
-# ifdef HAVE_UNION_BPF_ATTR_ATTACH_TYPE
+# ifdef HAVE_UNION_BPF_ATTR_ATTACH_FLAGS
 	prog_cgroup(BPF_PROG_ATTACH);
 	printf("bpf(BPF_PROG_ATTACH"
 	       ", {target_fd=-1, attach_bpf_fd=-1"
-	       ", attach_type=BPF_CGROUP_INET_INGRESS}, %u) = %s\n",
+	       ", attach_type=BPF_CGROUP_INET_INGRESS"
+	       ", attach_flags=BPF_F_ALLOW_OVERRIDE}, %u) = %s\n",
 	       (unsigned) sizeof(union bpf_attr), errstr);
 	BOGUS_BPF(BPF_PROG_ATTACH);
 
diff --git a/tests/bpf.gen.test b/tests/bpf.gen.test
new file mode 100755
index 0000000..7ee9e7f
--- /dev/null
+++ b/tests/bpf.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (bpf -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/bpf.test b/tests/bpf.test
deleted file mode 100755
index adf0d57..0000000
--- a/tests/bpf.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check bpf syscall decoding.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a20
diff --git a/tests/brk.test b/tests/brk.test
index 8c0e2e4..3781220 100755
--- a/tests/brk.test
+++ b/tests/brk.test
@@ -7,4 +7,3 @@
 run_prog > /dev/null
 run_strace -a10 -ebrk $args > "$EXP"
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/btrfs-v.test b/tests/btrfs-v.test
index 1ee17b4..8cc2724 100755
--- a/tests/btrfs-v.test
+++ b/tests/btrfs-v.test
@@ -4,12 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./btrfs -v > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -v > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/btrfs-vw.test b/tests/btrfs-vw.test
index c7e40ad..913fba1 100755
--- a/tests/btrfs-vw.test
+++ b/tests/btrfs-vw.test
@@ -18,12 +18,8 @@
     skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
 fi
 
-run_prog ./btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -v -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -veioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/btrfs-w.test b/tests/btrfs-w.test
index 6238dca..031f0b8 100755
--- a/tests/btrfs-w.test
+++ b/tests/btrfs-w.test
@@ -18,12 +18,8 @@
     skip_ "\$BTRFS_MOUNTPOINT does not point to a directory"
 fi
 
-run_prog ./btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
-run_strace -a16 -eioctl $args > "$EXP"
 check_prog grep
+run_prog ../btrfs -w "${BTRFS_MOUNTPOINT}" > /dev/null
+run_strace -a16 -eioctl $args > "$EXP"
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/btrfs.c b/tests/btrfs.c
index b3e23f8..7e5ccff 100644
--- a/tests/btrfs.c
+++ b/tests/btrfs.c
@@ -1548,9 +1548,9 @@
 			const char *name = xlookup(btrfs_dev_stats_values, i);
 			if (i)
 				printf(", ");
-			if (name)
-				printf("/* %s */ ", name);
 			printf("%" PRI__u64, args.values[i]);
+			if (name)
+				printf(" /* %s */", name);
 		}
 		printf("]}) = 0\n");
 	}
@@ -1799,13 +1799,13 @@
 		      &supported_features);
 		printf("ioctl(%d, BTRFS_IOC_GET_SUPPORTED_FEATURES, ",
 		       btrfs_test_dir_fd);
-		printf("[ /* supported */ ");
+		printf("[");
 		btrfs_print_features(&supported_features[0]);
-		printf(", /* safe to set */ ");
+		printf(" /* supported */, ");
 		btrfs_print_features(&supported_features[1]);
-		printf(", /* safe to clear */ ");
+		printf(" /* safe to set */, ");
 		btrfs_print_features(&supported_features[2]);
-		printf("]) = 0\n");
+		printf(" /* safe to clear */]) = 0\n");
 	}
 }
 
diff --git a/tests/btrfs.gen.test b/tests/btrfs.gen.test
new file mode 100755
index 0000000..a7118ef
--- /dev/null
+++ b/tests/btrfs.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (btrfs +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/btrfs.test b/tests/btrfs.test
deleted file mode 100755
index 2121b5b..0000000
--- a/tests/btrfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic btrfs ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/chmod.gen.test b/tests/chmod.gen.test
new file mode 100755
index 0000000..438665a
--- /dev/null
+++ b/tests/chmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chmod -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/chmod.test b/tests/chmod.test
deleted file mode 100755
index 70e561a..0000000
--- a/tests/chmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/chown.gen.test b/tests/chown.gen.test
new file mode 100755
index 0000000..46889a1
--- /dev/null
+++ b/tests/chown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/chown.test b/tests/chown.test
deleted file mode 100755
index eb356ce..0000000
--- a/tests/chown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/chown32.gen.test b/tests/chown32.gen.test
new file mode 100755
index 0000000..f0f603e
--- /dev/null
+++ b/tests/chown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chown32 -a31); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31
diff --git a/tests/chown32.test b/tests/chown32.test
deleted file mode 100755
index 0fa04c2..0000000
--- a/tests/chown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests/chroot.gen.test b/tests/chroot.gen.test
new file mode 100755
index 0000000..6ea81dd
--- /dev/null
+++ b/tests/chroot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (chroot -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/chroot.test b/tests/chroot.test
deleted file mode 100755
index 3b384f5..0000000
--- a/tests/chroot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check chroot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/clock.gen.test b/tests/clock.gen.test
new file mode 100755
index 0000000..b76eaf5
--- /dev/null
+++ b/tests/clock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock test_trace_expr 'times|fcntl.*' -e/clock); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr 'times|fcntl.*' -e/clock
diff --git a/tests/clock.in b/tests/clock.in
new file mode 100755
index 0000000..864de29
--- /dev/null
+++ b/tests/clock.in
@@ -0,0 +1,3 @@
+clock_adjtime	-a37
+clock_nanosleep
+clock_xettime	-a36
diff --git a/tests/clock_adjtime.gen.test b/tests/clock_adjtime.gen.test
new file mode 100755
index 0000000..735e3af
--- /dev/null
+++ b/tests/clock_adjtime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/clock_adjtime.test b/tests/clock_adjtime.test
deleted file mode 100755
index df2c060..0000000
--- a/tests/clock_adjtime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_adjtime syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests/clock_nanosleep.c b/tests/clock_nanosleep.c
index 98407d7..72ac2e4 100644
--- a/tests/clock_nanosleep.c
+++ b/tests/clock_nanosleep.c
@@ -1,5 +1,8 @@
 /*
+ * Check decoding of clock_nanosleep and clock_gettime syscalls.
+ *
  * 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
@@ -62,9 +65,10 @@
 
 	if (syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0, &req.ts, NULL))
 		perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "NULL) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       NULL, &rem.ts) == -1);
@@ -73,52 +77,71 @@
 
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       &req.ts, &rem.ts) == 0);
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "%p) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	req.ts.tv_nsec = 999999999 + 1;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
 		       &req.ts, &rem.ts) == -1);
 	printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
-	       ", {tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = 0xdeadbeefU;
+	req.ts.tv_nsec = 0xfacefeedU;
+	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
+		       &req.ts, &rem.ts) == -1);
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(syscall(__NR_clock_nanosleep, CLOCK_MONOTONIC, 0,
+		       &req.ts, &rem.ts) == -1);
+	printf("clock_nanosleep(CLOCK_MONOTONIC, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
 
 	if (setitimer(ITIMER_REAL, &itv, NULL))
 		perror_msg_and_skip("setitimer");
-	printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
-	       (intmax_t) itv.it_interval.tv_sec,
-	       (intmax_t) itv.it_interval.tv_usec,
-	       (intmax_t) itv.it_value.tv_sec,
-	       (intmax_t) itv.it_value.tv_usec);
 
-	--req.ts.tv_nsec;
+	req.ts.tv_sec = 0;
+	req.ts.tv_nsec = 999999999;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, 0,
 		       &req.ts, &rem.ts) == -1);
-	printf("clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=%jd, tv_nsec=%jd}, "
-	       "{tv_sec=%jd, tv_nsec=%jd})"
+	printf("clock_nanosleep(CLOCK_REALTIME, 0"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {tv_sec=%lld, tv_nsec=%llu})"
 	       " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
-	       (intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec),
+	       (long long) rem.ts.tv_sec,
+	       zero_extend_signed_to_ull(rem.ts.tv_nsec));
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	assert(syscall(__NR_clock_gettime, CLOCK_REALTIME, &req.ts) == 0);
-	printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("clock_gettime(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	++req.ts.tv_sec;
 	rem.ts.tv_sec = 0xc0de4;
 	rem.ts.tv_nsec = 0xc0de5;
 	assert(syscall(__NR_clock_nanosleep, CLOCK_REALTIME, TIMER_ABSTIME,
 		       &req.ts, &rem.ts) == -1);
-	printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, {tv_sec=%jd, "
-	       "tv_nsec=%jd}, %p)"
+	printf("clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p)"
 	       " = ? ERESTARTNOHAND (To be restarted if no handler)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/clock_nanosleep.gen.test b/tests/clock_nanosleep.gen.test
new file mode 100755
index 0000000..7a6025b
--- /dev/null
+++ b/tests/clock_nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_nanosleep -e trace=clock_nanosleep,clock_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=clock_nanosleep,clock_gettime
diff --git a/tests/clock_nanosleep.test b/tests/clock_nanosleep.test
deleted file mode 100755
index ec434a6..0000000
--- a/tests/clock_nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_nanosleep, clock_gettime, and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=clock_nanosleep,clock_gettime,setitimer
diff --git a/tests/clock_xettime.c b/tests/clock_xettime.c
index 3ef5695..e3ec1b5 100644
--- a/tests/clock_xettime.c
+++ b/tests/clock_xettime.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -48,26 +49,41 @@
 
 	if (syscall(__NR_clock_getres, CLOCK_REALTIME, &t.ts))
 		perror_msg_and_skip("clock_getres CLOCK_REALTIME");
-	printf("clock_getres(CLOCK_REALTIME, {tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	printf("clock_getres(CLOCK_REALTIME, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = 0\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	if (syscall(__NR_clock_gettime, CLOCK_PROCESS_CPUTIME_ID, &t.ts))
 		perror_msg_and_skip("clock_gettime CLOCK_PROCESS_CPUTIME_ID");
-	printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID, "
-	       "{tv_sec=%jd, tv_nsec=%jd}) = 0\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	printf("clock_gettime(CLOCK_PROCESS_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	t.ts.tv_sec = 0xdeface1;
 	t.ts.tv_nsec = 0xdeface2;
-	if (!syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts))
-		error_msg_and_skip("clock_settime CLOCK_THREAD_CPUTIME_ID:"
-				   " EINVAL expected");
-	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID, {tv_sec=%jd, "
-	       "tv_nsec=%jd}) = -1 EINVAL (%m)\n",
-	       (intmax_t) t.ts.tv_sec,
-	       (intmax_t) t.ts.tv_nsec);
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+	t.ts.tv_sec = 0xdeadbeefU;
+	t.ts.tv_nsec = 0xfacefeedU;
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
+
+	t.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	t.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	syscall(__NR_clock_settime, CLOCK_THREAD_CPUTIME_ID, &t.ts);
+	printf("clock_settime(CLOCK_THREAD_CPUTIME_ID"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = -1 EINVAL (%m)\n",
+	       (long long) t.ts.tv_sec,
+	       zero_extend_signed_to_ull(t.ts.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/clock_xettime.gen.test b/tests/clock_xettime.gen.test
new file mode 100755
index 0000000..590f058
--- /dev/null
+++ b/tests/clock_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (clock_xettime -a36 -e trace=clock_getres,clock_gettime,clock_settime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests/clock_xettime.test b/tests/clock_xettime.test
deleted file mode 100755
index f045a66..0000000
--- a/tests/clock_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check clock_getres, clock_gettime, and clock_settime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36 -e trace=clock_getres,clock_gettime,clock_settime
diff --git a/tests/copy_file_range.c b/tests/copy_file_range.c
index 085010a..6bb989d 100644
--- a/tests/copy_file_range.c
+++ b/tests/copy_file_range.c
@@ -2,6 +2,7 @@
  * This file is part of copy_file_range strace test.
  *
  * 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
@@ -41,8 +42,8 @@
 {
 	const long int fd_in = (long int) 0xdeadbeefffffffff;
 	const long int fd_out = (long int) 0xdeadbeeffffffffe;
-	long long int *const off_in = tail_alloc(sizeof(*off_in));
-	long long int *const off_out = tail_alloc(sizeof(*off_out));
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
 	*off_in = 0xdeadbef1facefed1;
 	*off_out = 0xdeadbef2facefed2;
 	const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests/copy_file_range.gen.test b/tests/copy_file_range.gen.test
new file mode 100755
index 0000000..4f3063b
--- /dev/null
+++ b/tests/copy_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (copy_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/copy_file_range.test b/tests/copy_file_range.test
deleted file mode 100755
index c39f6ac..0000000
--- a/tests/copy_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check copy_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/count.test b/tests/count.test
index e75dc6b..a9752c0 100755
--- a/tests/count.test
+++ b/tests/count.test
@@ -3,6 +3,7 @@
 # Check whether -c and -w options work.
 #
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -29,14 +30,14 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
+run_prog ../sleep 0
 check_prog grep
 
 grep_log()
 {
 	local pattern="$1"; shift
 
-	run_strace "$@" ./sleep 1
+	run_strace "$@" ../sleep 1
 
 	grep nanosleep "$LOG" > /dev/null ||
 		framework_skip_ 'sleep does not use nanosleep'
diff --git a/tests/creat.gen.test b/tests/creat.gen.test
new file mode 100755
index 0000000..d2e47d3
--- /dev/null
+++ b/tests/creat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (creat -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/creat.test b/tests/creat.test
deleted file mode 100755
index 069648f..0000000
--- a/tests/creat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check creat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/delete_module.c b/tests/delete_module.c
index 5a31760..0de35fe 100644
--- a/tests/delete_module.c
+++ b/tests/delete_module.c
@@ -2,6 +2,7 @@
  * Check decoding of delete_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -48,8 +49,7 @@
 		unsigned int val_prefix, val_suffix;
 	} flags[] = {
 		{ ARG_STR(0), 0, 0 },
-		{ (kernel_ulong_t) 0xffffffff00000000ULL | O_NONBLOCK,
-			"O_NONBLOCK", 0, 0 },
+		{ F8ILL_KULONG_MASK | O_NONBLOCK, "O_NONBLOCK", 0, 0 },
 		{ (kernel_ulong_t) 0xbadc0dedfacef157ULL & ~(O_NONBLOCK | O_TRUNC),
 			" /* O_??? */", 0xfacef157U & ~(O_NONBLOCK | O_TRUNC), 0},
 		{ (kernel_ulong_t) (0xfacef157deade71cULL & ~O_NONBLOCK) | O_TRUNC,
@@ -65,7 +65,7 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_delete_module, NULL, bogus_zero);
+	rc = syscall(__NR_delete_module, NULL, F8ILL_KULONG_MASK);
 	printf("delete_module(NULL, 0) = %s\n", sprintrc(rc));
 
 	rc = syscall(__NR_delete_module, bogus_param1, flags[0].val);
diff --git a/tests/delete_module.gen.test b/tests/delete_module.gen.test
new file mode 100755
index 0000000..4e4c671
--- /dev/null
+++ b/tests/delete_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/delete_module.test b/tests/delete_module.test
deleted file mode 100755
index fb86ec9..0000000
--- a/tests/delete_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of delete_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23
diff --git a/tests/detach-running.test b/tests/detach-running.test
index 006efb8..ba5ffbf 100755
--- a/tests/detach-running.test
+++ b/tests/detach-running.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from running processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -36,7 +37,7 @@
 
 set -e
 
-./set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
+../set_ptracer_any sh -c "echo > $LOG; while :; do :; done" > /dev/null &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -54,7 +55,6 @@
 	return 0
 }
 
-rm -f "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests/detach-sleeping.test b/tests/detach-sleeping.test
index 54304f3..a0975e3 100755
--- a/tests/detach-sleeping.test
+++ b/tests/detach-sleeping.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from sleeping processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -36,8 +37,7 @@
 
 set -e
 
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -55,7 +55,6 @@
 	return 0
 }
 
-rm -f "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests/detach-stopped.test b/tests/detach-stopped.test
index 8f480e7..a9f9c72 100755
--- a/tests/detach-stopped.test
+++ b/tests/detach-stopped.test
@@ -3,6 +3,7 @@
 # Ensure that strace can detach from stopped processes.
 #
 # Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -41,8 +42,8 @@
 
 set -e
 
-rm -f "$LOG"
-./set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
+> "$LOG"
+../set_ptracer_any sleep $((2*$TIMEOUT_DURATION)) > "$LOG" &
 
 while ! [ -s "$LOG" ]; do
 	kill -0 $! 2> /dev/null ||
@@ -62,7 +63,7 @@
 	return 0
 }
 
-rm -f "$LOG"
+> "$LOG"
 $STRACE -p $tracee_pid 2> "$LOG" &
 
 while ! grep -F "Process $tracee_pid attached" "$LOG" > /dev/null; do
diff --git a/tests/dup.gen.test b/tests/dup.gen.test
new file mode 100755
index 0000000..e5729c0
--- /dev/null
+++ b/tests/dup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/dup.test b/tests/dup.test
deleted file mode 100755
index 1dc1919..0000000
--- a/tests/dup.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests/dup2.gen.test b/tests/dup2.gen.test
new file mode 100755
index 0000000..fd1f5c9
--- /dev/null
+++ b/tests/dup2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup2 -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests/dup2.test b/tests/dup2.test
deleted file mode 100755
index 509c5db..0000000
--- a/tests/dup2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests/dup3.gen.test b/tests/dup3.gen.test
new file mode 100755
index 0000000..d6ff7d7
--- /dev/null
+++ b/tests/dup3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (dup3 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/dup3.test b/tests/dup3.test
deleted file mode 100755
index 293f78f..0000000
--- a/tests/dup3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check dup3 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/epoll_create.gen.test b/tests/epoll_create.gen.test
new file mode 100755
index 0000000..841da6d
--- /dev/null
+++ b/tests/epoll_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/epoll_create.test b/tests/epoll_create.test
deleted file mode 100755
index 472a9bd..0000000
--- a/tests/epoll_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/epoll_create1.gen.test b/tests/epoll_create1.gen.test
new file mode 100755
index 0000000..c5e62a0
--- /dev/null
+++ b/tests/epoll_create1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/epoll_create1.test b/tests/epoll_create1.test
deleted file mode 100755
index 7a926a9..0000000
--- a/tests/epoll_create1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_create1 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/epoll_ctl.c b/tests/epoll_ctl.c
index e666055..2251b35 100644
--- a/tests/epoll_ctl.c
+++ b/tests/epoll_ctl.c
@@ -11,14 +11,14 @@
 static long
 invoke_syscall(unsigned long epfd, unsigned long op, unsigned long fd, void *ev)
 {
-	op |= (unsigned long) 0xffffffff00000000ULL;
-	return syscall(__NR_epoll_ctl, epfd, op, fd, (unsigned long) ev);
+	return syscall(__NR_epoll_ctl, epfd, F8ILL_KULONG_MASK | op,
+		       fd, (unsigned long) ev);
 }
 
 int
 main(void)
 {
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 	ev->events = EPOLLIN;
 
 	long rc = invoke_syscall(-1U, EPOLL_CTL_ADD, -2U, ev);
diff --git a/tests/epoll_ctl.gen.test b/tests/epoll_ctl.gen.test
new file mode 100755
index 0000000..68c96eb
--- /dev/null
+++ b/tests/epoll_ctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_ctl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/epoll_ctl.test b/tests/epoll_ctl.test
deleted file mode 100755
index 1aded54..0000000
--- a/tests/epoll_ctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_ctl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/epoll_pwait.c b/tests/epoll_pwait.c
index eaaa34d..841e722 100644
--- a/tests/epoll_pwait.c
+++ b/tests/epoll_pwait.c
@@ -12,7 +12,7 @@
 main(void)
 {
 	sigset_t set[2];
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 
 	long rc = syscall(__NR_epoll_pwait, -1, ev, 1, -2,
 			  set, (kernel_ulong_t) sizeof(set));
diff --git a/tests/epoll_pwait.gen.test b/tests/epoll_pwait.gen.test
new file mode 100755
index 0000000..c558efc
--- /dev/null
+++ b/tests/epoll_pwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (epoll_pwait ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/epoll_pwait.test b/tests/epoll_pwait.test
deleted file mode 100755
index c7aeeac..0000000
--- a/tests/epoll_pwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of epoll_pwait syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/epoll_wait.c b/tests/epoll_wait.c
index 038bf1f..caa3027 100644
--- a/tests/epoll_wait.c
+++ b/tests/epoll_wait.c
@@ -10,7 +10,7 @@
 int
 main(void)
 {
-	struct epoll_event *const ev = tail_alloc(sizeof(*ev));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct epoll_event, ev);
 
 	long rc = syscall(__NR_epoll_wait, -1, ev, 1, -2);
 	printf("epoll_wait(-1, %p, 1, -2) = %ld %s (%m)\n",
diff --git a/tests/epoll_wait.gen.test b/tests/epoll_wait.gen.test
new file mode 100755
index 0000000..024cc0f
--- /dev/null
+++ b/tests/epoll_wait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/epoll_wait.test b/tests/epoll_wait.test
deleted file mode 100755
index 83ae161..0000000
--- a/tests/epoll_wait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check epoll_wait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26
diff --git a/tests/erestartsys.gen.test b/tests/erestartsys.gen.test
new file mode 100755
index 0000000..0fc3215
--- /dev/null
+++ b/tests/erestartsys.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (erestartsys -a34 -e signal=none -e trace=recvfrom); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests/erestartsys.test b/tests/erestartsys.test
deleted file mode 100755
index 91f711f..0000000
--- a/tests/erestartsys.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ERESTARTSYS error code.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a34 -e signal=none -e trace=recvfrom
diff --git a/tests/execve-v.test b/tests/execve-v.test
index cce5860..52ff0d7 100755
--- a/tests/execve-v.test
+++ b/tests/execve-v.test
@@ -11,5 +11,3 @@
 # Filter out execve() call made by strace.
 grep -F test.execve < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/execve.c b/tests/execve.c
index 74749e7..c558dd3 100644
--- a/tests/execve.c
+++ b/tests/execve.c
@@ -2,6 +2,7 @@
  * This file is part of execve strace test.
  *
  * 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
@@ -62,13 +63,15 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
-	       ", [/* 5 vars, unterminated */]"
+	       ", %p /* 5 vars, unterminated */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5]
 #if VERBOSE
 	       , q_envp[0], q_envp[1], envp[2], envp[3], envp[4]
+#else
+	       , tail_envp
 #endif
 	       );
 
@@ -80,12 +83,14 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
-	       ", [/* 2 vars */]"
+	       ", %p /* 2 vars */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2]
 #if VERBOSE
 	       , q_envp[0], q_envp[1]
+#else
+	       , tail_envp
 #endif
 	       );
 
@@ -94,16 +99,18 @@
 #if VERBOSE
 	       ", [\"%s\"]"
 #else
-	       ", [/* 1 var */]"
+	       ", %p /* 1 var */"
 #endif
 	       ") = -1 ENOENT (%m)\n",
 	       Q_FILENAME, q_argv[2]
 #if VERBOSE
 	       , q_envp[1]
+#else
+	       , tail_envp + 1
 #endif
 	       );
 
-	char **const empty = tail_alloc(sizeof(*empty));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
 	char **const efault = empty + 1;
 	*empty = NULL;
 
@@ -112,9 +119,13 @@
 #if VERBOSE
 	       ", []"
 #else
-	       ", [/* 0 vars */]"
+	       ", %p /* 0 vars */"
 #endif
-	       ") = -1 ENOENT (%m)\n", Q_FILENAME);
+	       ") = -1 ENOENT (%m)\n", Q_FILENAME
+#if !VERBOSE
+	       , empty
+#endif
+	       );
 
 	char str_a[] = "012345678901234567890123456789012";
 	char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -141,10 +152,11 @@
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+	printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
 #endif
-	printf("]) = -1 ENOENT (%m)\n");
+	printf(") = -1 ENOENT (%m)\n");
 
 	execve(FILENAME, a + 1, b + 1);
 	printf("execve(\"%s\", [\"%s\"", Q_FILENAME, a[1]);
@@ -154,10 +166,11 @@
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %d vars */", DEFAULT_STRLEN);
+	printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
 #endif
-	printf("]) = -1 ENOENT (%m)\n");
+	printf(") = -1 ENOENT (%m)\n");
 
 	execve(FILENAME, (char **) tail_argv[ARRAY_SIZE(q_argv)], efault);
 	printf("execve(\"%s\", NULL, %p) = -1 ENOENT (%m)\n",
diff --git a/tests/execve.test b/tests/execve.test
index 263b6fc..5635a94 100755
--- a/tests/execve.test
+++ b/tests/execve.test
@@ -11,5 +11,3 @@
 # Filter out execve() call made by strace.
 grep -F test.execve < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/execveat-v.gen.test b/tests/execveat-v.gen.test
new file mode 100755
index 0000000..f7d572f
--- /dev/null
+++ b/tests/execveat-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat-v -v -e trace=execveat); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=execveat
diff --git a/tests/execveat-v.test b/tests/execveat-v.test
deleted file mode 100755
index a905224..0000000
--- a/tests/execveat-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of execveat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=execveat
diff --git a/tests/execveat.c b/tests/execveat.c
index 9083830..8ffc4d5 100644
--- a/tests/execveat.c
+++ b/tests/execveat.c
@@ -2,6 +2,7 @@
  * This file is part of execveat strace test.
  *
  * 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
@@ -67,13 +68,15 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\", %p, %p, %p, ???]"
 #else
-	       ", [/* 5 vars, unterminated */]"
+	       ", %p /* 5 vars, unterminated */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 	       argv[3], argv[4], argv[5],
 #if VERBOSE
 	       q_envp[0], q_envp[1], envp[2], envp[3], envp[4],
+#else
+	       tail_envp,
 #endif
 	       errno2name());
 
@@ -85,12 +88,14 @@
 #if VERBOSE
 	       ", [\"%s\", \"%s\"]"
 #else
-	       ", [/* 2 vars */]"
+	       ", %p /* 2 vars */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[0], q_argv[1], q_argv[2],
 #if VERBOSE
 	       q_envp[0], q_envp[1],
+#else
+	       tail_envp,
 #endif
 	       errno2name());
 
@@ -99,16 +104,18 @@
 #if VERBOSE
 	       ", [\"%s\"]"
 #else
-	       ", [/* 1 var */]"
+	       ", %p /* 1 var */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       Q_FILENAME, q_argv[2],
 #if VERBOSE
 	       q_envp[1],
+#else
+	       tail_envp + 1,
 #endif
 	       errno2name());
 
-	char **const empty = tail_alloc(sizeof(*empty));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char *, empty);
 	char **const efault = empty + 1;
 	*empty = NULL;
 
@@ -117,10 +124,14 @@
 #if VERBOSE
 	       ", []"
 #else
-	       ", [/* 0 vars */]"
+	       ", %p /* 0 vars */"
 #endif
 	       ", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
-	       Q_FILENAME, errno2name());
+	       Q_FILENAME,
+#if !VERBOSE
+	       empty,
+#endif
+	       errno2name());
 
 	char str_a[] = "012345678901234567890123456789012";
 	char str_b[] = "_abcdefghijklmnopqrstuvwxyz()[]{}";
@@ -147,10 +158,11 @@
 	printf("], [\"%.*s\"...", DEFAULT_STRLEN, b[0]);
 	for (i = 1; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %u vars */", DEFAULT_STRLEN + 1);
+	printf("], %p /* %u vars */", b, DEFAULT_STRLEN + 1);
 #endif
-	printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+	printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       errno2name());
 
 	syscall(__NR_execveat, -100, FILENAME, a + 1, b + 1, 0x1100);
@@ -161,10 +173,11 @@
 	printf("], [\"%s\"", b[1]);
 	for (i = 2; i <= DEFAULT_STRLEN; ++i)
 		printf(", \"%s\"", b[i]);
+	printf("]");
 #else
-	printf("], [/* %d vars */", DEFAULT_STRLEN);
+	printf("], %p /* %d vars */", b + 1, DEFAULT_STRLEN);
 #endif
-	printf("], AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
+	printf(", AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) = -1 %s (%m)\n",
 	       errno2name());
 
 	syscall(__NR_execveat, -100, FILENAME, NULL, efault, 0x1100);
diff --git a/tests/execveat.gen.test b/tests/execveat.gen.test
new file mode 100755
index 0000000..c92e4d6
--- /dev/null
+++ b/tests/execveat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (execveat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/execveat.test b/tests/execveat.test
deleted file mode 100755
index 879e03e..0000000
--- a/tests/execveat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check execveat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/faccessat.gen.test b/tests/faccessat.gen.test
new file mode 100755
index 0000000..4ccec2a
--- /dev/null
+++ b/tests/faccessat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (faccessat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests/faccessat.test b/tests/faccessat.test
deleted file mode 100755
index 61e7e2f..0000000
--- a/tests/faccessat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check faccessat syscall decoding.
-
-. "${srcdir=.}/openat.test"
diff --git a/tests/fadvise64.test b/tests/fadvise64.test
index 9f74672..161b28f 100755
--- a/tests/fadvise64.test
+++ b/tests/fadvise64.test
@@ -9,4 +9,3 @@
 check_prog grep
 grep -v "^$NAME([0123]," < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/fadvise64_64.gen.test b/tests/fadvise64_64.gen.test
new file mode 100755
index 0000000..5f95b3c
--- /dev/null
+++ b/tests/fadvise64_64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fadvise64_64 +fadvise64.test); do not edit.
+. "${srcdir=.}/fadvise64.test"
diff --git a/tests/fadvise64_64.test b/tests/fadvise64_64.test
deleted file mode 100755
index a50fe2b..0000000
--- a/tests/fadvise64_64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fadvise64_64 syscall.
-
-. "${srcdir=.}/fadvise64.test"
diff --git a/tests/fallocate.gen.test b/tests/fallocate.gen.test
new file mode 100755
index 0000000..c6cfdb7
--- /dev/null
+++ b/tests/fallocate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fallocate -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/fallocate.test b/tests/fallocate.test
deleted file mode 100755
index 405187e..0000000
--- a/tests/fallocate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/fanotify_init.c b/tests/fanotify_init.c
index c14b413..15e09ee 100644
--- a/tests/fanotify_init.c
+++ b/tests/fanotify_init.c
@@ -2,6 +2,7 @@
  * Check decoding of fanotify_init syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -60,7 +61,7 @@
 main(void)
 {
 	static const struct strval flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "FAN_CLASS_NOTIF" },
+		{ F8ILL_KULONG_MASK, "FAN_CLASS_NOTIF" },
 		{ (kernel_ulong_t) 0xffffffff0000000cULL,
 			"0xc /* FAN_CLASS_??? */" },
 		{ (kernel_ulong_t) 0xdec0deddefaced04ULL,
@@ -70,7 +71,7 @@
 			"FAN_UNLIMITED_QUEUE|FAN_UNLIMITED_MARKS|0xffffffc0" },
 	};
 	static const struct strval event_f_flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+		{ F8ILL_KULONG_MASK, "O_RDONLY" },
 		{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
 			"O_WRONLY|0x80000000" }
 	};
diff --git a/tests/fanotify_init.gen.test b/tests/fanotify_init.gen.test
new file mode 100755
index 0000000..ee519e6
--- /dev/null
+++ b/tests/fanotify_init.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fanotify_init ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/fanotify_init.test b/tests/fanotify_init.test
deleted file mode 100755
index 8d26af4..0000000
--- a/tests/fanotify_init.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fanotify_init syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/fanotify_mark.c b/tests/fanotify_mark.c
index 43f285d..11cf7d0 100644
--- a/tests/fanotify_mark.c
+++ b/tests/fanotify_mark.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -90,11 +91,11 @@
 
 	static const kernel_ulong_t fds[] = {
 		(kernel_ulong_t) 0xdeadfeed12345678ULL,
-		(kernel_ulong_t) 0xffffffff00000000ULL,
+		F8ILL_KULONG_MASK,
 		(kernel_ulong_t) 0xdeb0d1edffffffffULL,
 	};
 	static const struct strval flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "0" },
+		{ F8ILL_KULONG_MASK, "0" },
 		{ (kernel_ulong_t) 0xdec0deddefaced00ULL,
 			"0xefaced00 /* FAN_MARK_??? */" },
 		{ (kernel_ulong_t) 0xda7a105700000040ULL,
diff --git a/tests/fanotify_mark.gen.test b/tests/fanotify_mark.gen.test
new file mode 100755
index 0000000..ce16a55
--- /dev/null
+++ b/tests/fanotify_mark.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/fanotify_mark.test b/tests/fanotify_mark.test
deleted file mode 100755
index fd67138..0000000
--- a/tests/fanotify_mark.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fanotify_mark syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests/fchdir.gen.test b/tests/fchdir.gen.test
new file mode 100755
index 0000000..c80e141
--- /dev/null
+++ b/tests/fchdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchdir -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests/fchdir.test b/tests/fchdir.test
deleted file mode 100755
index 3a4296e..0000000
--- a/tests/fchdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests/fchmod.gen.test b/tests/fchmod.gen.test
new file mode 100755
index 0000000..f327fb7
--- /dev/null
+++ b/tests/fchmod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmod -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/fchmod.test b/tests/fchmod.test
deleted file mode 100755
index 4cb1263..0000000
--- a/tests/fchmod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchmod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests/fchmodat.gen.test b/tests/fchmodat.gen.test
new file mode 100755
index 0000000..9ee1f01
--- /dev/null
+++ b/tests/fchmodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchmodat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/fchmodat.test b/tests/fchmodat.test
deleted file mode 100755
index 13cbe80..0000000
--- a/tests/fchmodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchmodat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/fchown.gen.test b/tests/fchown.gen.test
new file mode 100755
index 0000000..63ee545
--- /dev/null
+++ b/tests/fchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests/fchown.test b/tests/fchown.test
deleted file mode 100755
index 63a0f2e..0000000
--- a/tests/fchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16
diff --git a/tests/fchown32.gen.test b/tests/fchown32.gen.test
new file mode 100755
index 0000000..d8167dd
--- /dev/null
+++ b/tests/fchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchown32 -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/fchown32.test b/tests/fchown32.test
deleted file mode 100755
index e837f54..0000000
--- a/tests/fchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/fchownat.gen.test b/tests/fchownat.gen.test
new file mode 100755
index 0000000..2ec9e32
--- /dev/null
+++ b/tests/fchownat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fchownat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/fchownat.test b/tests/fchownat.test
deleted file mode 100755
index e5d0f28..0000000
--- a/tests/fchownat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of fchownat syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/fcntl.c b/tests/fcntl.c
index f060cdf..4f62ca2 100644
--- a/tests/fcntl.c
+++ b/tests/fcntl.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,9 +45,9 @@
 		.l_start = 0xdefaced1facefeedULL,
 		.l_len = 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, %p) = %s\n",
-	       TEST_SYSCALL_STR, name, &fl, EINVAL_STR);
+	       TEST_SYSCALL_STR, name, &fl, sprintrc(rc));
 }
 
 static void
diff --git a/tests/fcntl.gen.test b/tests/fcntl.gen.test
new file mode 100755
index 0000000..83a1af4
--- /dev/null
+++ b/tests/fcntl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/fcntl.test b/tests/fcntl.test
deleted file mode 100755
index 9aea122..0000000
--- a/tests/fcntl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fcntl decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests/fcntl64.c b/tests/fcntl64.c
index 5ecd6eb..068956e 100644
--- a/tests/fcntl64.c
+++ b/tests/fcntl64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,10 +45,10 @@
 		.l_start = 0xdefaced1facefeedULL,
 		.l_len = 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
-	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
 }
 
 static void
@@ -67,7 +68,7 @@
 	long rc = invoke_test_syscall(F_SETLK64, &fl);
 	printf("%s(0, F_SETLK64, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=0, l_len=%d}) = %s\n",
-	       TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+	       TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
 
 	if (rc)
 		return;
diff --git a/tests/fcntl64.gen.test b/tests/fcntl64.gen.test
new file mode 100755
index 0000000..9d3b98a
--- /dev/null
+++ b/tests/fcntl64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fcntl64 -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/fcntl64.test b/tests/fcntl64.test
deleted file mode 100755
index 00ba671..0000000
--- a/tests/fcntl64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fcntl64 syscall decoding.
-
-. "${srcdir=.}/fcntl.test"
diff --git a/tests/fdatasync.gen.test b/tests/fdatasync.gen.test
new file mode 100755
index 0000000..0dbea8a
--- /dev/null
+++ b/tests/fdatasync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fdatasync -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/fdatasync.test b/tests/fdatasync.test
deleted file mode 100755
index ff59749..0000000
--- a/tests/fdatasync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fdatasync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/file_handle.c b/tests/file_handle.c
index a5ad6c7..bbdf48b 100644
--- a/tests/file_handle.c
+++ b/tests/file_handle.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -187,7 +188,7 @@
 		(kernel_ulong_t) 0x12345678ffffff9cULL,
 	};
 	static const struct strval open_flags[] = {
-		{ (kernel_ulong_t) 0xffffffff00000000ULL, "O_RDONLY" },
+		{ F8ILL_KULONG_MASK, "O_RDONLY" },
 		{ (kernel_ulong_t) 0xdeadbeef80000001ULL,
 			"O_WRONLY|0x80000000" }
 	};
@@ -208,7 +209,7 @@
 		tail_alloc(sizeof(struct file_handle) + 128);
 	struct file_handle *handle_256 =
 		tail_alloc(sizeof(struct file_handle) + 256);
-	int *bogus_mount_id = tail_alloc(sizeof(*bogus_mount_id));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, bogus_mount_id);
 
 	char handle_0_addr[sizeof("0x") + sizeof(void *) * 2];
 
diff --git a/tests/file_handle.gen.test b/tests/file_handle.gen.test
new file mode 100755
index 0000000..8280f9f
--- /dev/null
+++ b/tests/file_handle.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_handle -e trace=name_to_handle_at,open_by_handle_at); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests/file_handle.test b/tests/file_handle.test
deleted file mode 100755
index 1ccc9d4..0000000
--- a/tests/file_handle.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check name_to_handle_at and open_by_handle_at syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=name_to_handle_at,open_by_handle_at
diff --git a/tests/file_ioctl.c b/tests/file_ioctl.c
index 0fe17b1..ded67a9 100644
--- a/tests/file_ioctl.c
+++ b/tests/file_ioctl.c
@@ -13,7 +13,7 @@
 test_fiemap(void)
 {
 	(void) tail_alloc(1);
-	struct fiemap *const args = tail_alloc(sizeof(*args));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fiemap, args);
 
 	printf("ioctl(-1, FS_IOC_FIEMAP, {fm_start=%" PRI__u64
 	       ", fm_length=%" PRI__u64", fm_flags=",
diff --git a/tests/file_ioctl.gen.test b/tests/file_ioctl.gen.test
new file mode 100755
index 0000000..f7e58f5
--- /dev/null
+++ b/tests/file_ioctl.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (file_ioctl +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/file_ioctl.test b/tests/file_ioctl.test
deleted file mode 100755
index 7b8b8ce..0000000
--- a/tests/file_ioctl.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check FS_IOC_FIEMAP ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/finit_module.c b/tests/finit_module.c
index 3f0178f..c97471a 100644
--- a/tests/finit_module.c
+++ b/tests/finit_module.c
@@ -2,6 +2,7 @@
  * Check decoding of finit_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -68,7 +69,8 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_finit_module, bogus_zero, NULL, bogus_zero);
+	rc = syscall(__NR_finit_module, F8ILL_KULONG_MASK, NULL,
+		     F8ILL_KULONG_MASK);
 	printf("finit_module(0, NULL, 0) = %s\n", sprintrc(rc));
 
 	rc = syscall(__NR_finit_module, bogus_fd, bogus_param1, flags[0].val);
diff --git a/tests/finit_module.gen.test b/tests/finit_module.gen.test
new file mode 100755
index 0000000..f2e56af
--- /dev/null
+++ b/tests/finit_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/finit_module.test b/tests/finit_module.test
deleted file mode 100755
index bd644f3..0000000
--- a/tests/finit_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of finit_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/flock.gen.test b/tests/flock.gen.test
new file mode 100755
index 0000000..dff2bac
--- /dev/null
+++ b/tests/flock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (flock -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/flock.test b/tests/flock.test
deleted file mode 100755
index 24fcd74..0000000
--- a/tests/flock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check flock syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/fork-f.gen.test b/tests/fork-f.gen.test
new file mode 100755
index 0000000..b534e13
--- /dev/null
+++ b/tests/fork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests/fork-f.test b/tests/fork-f.test
deleted file mode 100755
index d8ca1e3..0000000
--- a/tests/fork-f.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows fork syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a26 -qq -f -e trace=chdir -e signal=none
diff --git a/tests/fstat.c b/tests/fstat.c
index 12df3e1..1482bb1 100644
--- a/tests/fstat.c
+++ b/tests/fstat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/fstat.gen.test b/tests/fstat.gen.test
new file mode 100755
index 0000000..8686ec8
--- /dev/null
+++ b/tests/fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat -a15 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -v -P stat.sample
diff --git a/tests/fstat.test b/tests/fstat.test
deleted file mode 100755
index 2ba0fba..0000000
--- a/tests/fstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Check fstat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-syscall=$NAME
-run_prog > /dev/null
-sample=$syscall.sample
-> "$sample"
-run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/fstat64.c b/tests/fstat64.c
index a9c2e07..c63be60 100644
--- a/tests/fstat64.c
+++ b/tests/fstat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/fstat64.gen.test b/tests/fstat64.gen.test
new file mode 100755
index 0000000..a452b84
--- /dev/null
+++ b/tests/fstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstat64 -a17 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17 -v -P stat.sample
diff --git a/tests/fstat64.test b/tests/fstat64.test
deleted file mode 100755
index 8b4f5ef..0000000
--- a/tests/fstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstat64 syscall decoding.
-
-. "${srcdir=.}/fstat.test"
diff --git a/tests/fstatat.c b/tests/fstatat.c
index 66138c2..ea331b4 100644
--- a/tests/fstatat.c
+++ b/tests/fstatat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/fstatat64.c b/tests/fstatat64.c
index 03082a8..8de7ba6 100644
--- a/tests/fstatat64.c
+++ b/tests/fstatat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/fstatat64.gen.test b/tests/fstatat64.gen.test
new file mode 100755
index 0000000..8da5c7f
--- /dev/null
+++ b/tests/fstatat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/fstatat64.test b/tests/fstatat64.test
deleted file mode 100755
index 484008a..0000000
--- a/tests/fstatat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/fstatfs.gen.test b/tests/fstatfs.gen.test
new file mode 100755
index 0000000..3dd04d8
--- /dev/null
+++ b/tests/fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/fstatfs.test b/tests/fstatfs.test
deleted file mode 100755
index 646e66f..0000000
--- a/tests/fstatfs.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests/fstatfs64.gen.test b/tests/fstatfs64.gen.test
new file mode 100755
index 0000000..b9527be
--- /dev/null
+++ b/tests/fstatfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fstatfs64 -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/fstatfs64.test b/tests/fstatfs64.test
deleted file mode 100755
index 179ff1b..0000000
--- a/tests/fstatfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check fstatfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests/fstatx.c b/tests/fstatx.c
index f88d9a9..70804af 100644
--- a/tests/fstatx.c
+++ b/tests/fstatx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/tests/fsync.gen.test b/tests/fsync.gen.test
new file mode 100755
index 0000000..921e804
--- /dev/null
+++ b/tests/fsync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (fsync -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/fsync.test b/tests/fsync.test
deleted file mode 100755
index a58b67b..0000000
--- a/tests/fsync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check fsync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/ftruncate.gen.test b/tests/ftruncate.gen.test
new file mode 100755
index 0000000..709a851
--- /dev/null
+++ b/tests/ftruncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/ftruncate.test b/tests/ftruncate.test
deleted file mode 100755
index ec8a1e0..0000000
--- a/tests/ftruncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/ftruncate64.gen.test b/tests/ftruncate64.gen.test
new file mode 100755
index 0000000..4cb1fe7
--- /dev/null
+++ b/tests/ftruncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ftruncate64 -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/ftruncate64.test b/tests/ftruncate64.test
deleted file mode 100755
index 9068210..0000000
--- a/tests/ftruncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ftruncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/futex.c b/tests/futex.c
index 586b95d..9a9ab66 100644
--- a/tests/futex.c
+++ b/tests/futex.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,8 +56,6 @@
 # include "xlat/futexwakeops.h"
 # include "xlat/futexwakecmps.h"
 
-static struct timespec *tmout;
-
 void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
 	int *uaddr2, unsigned long val3, int rc)
 {
@@ -163,8 +162,8 @@
 int
 main(int argc, char *argv[])
 {
-	int *uaddr = tail_alloc(sizeof(*uaddr));
-	int *uaddr2 = tail_alloc(sizeof(*uaddr2));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, uaddr2);
 	int rc;
 	unsigned i;
 	unsigned j;
@@ -172,7 +171,7 @@
 	uaddr[0] = 0x1deadead;
 	uaddr2[0] = 0xbadf00d;
 
-	tmout = tail_alloc(sizeof(*tmout));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tmout);
 	tmout->tv_sec = 123;
 	tmout->tv_nsec = 0xbadc0de;
 
@@ -189,37 +188,59 @@
 	/* uaddr is NULL */
 	CHECK_FUTEX(NULL, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
-	printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		VAL_PR, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(NULL, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* uaddr is faulty */
 	CHECK_FUTEX(uaddr + 1, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr + 1, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr + 1, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* timeout is faulty */
 	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout + 1, uaddr2, VAL3,
 		(rc == -1) && (errno == EFAULT));
 	printf("futex(%p, FUTEX_WAIT, %u, %p) = %s\n",
-		uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+	       uaddr, 0xfacefeed, tmout + 1, sprintrc(rc));
+
+	/* timeout is invalid */
+	tmout->tv_sec = 0xdeadbeefU;
+	tmout->tv_nsec = 0xfacefeedU;
+
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+	tmout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tmout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2, VAL3,
+		(rc == -1) && (errno == EINVAL));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
+
+	tmout->tv_sec = 123;
+	tmout->tv_nsec = 0xbadc0de;
 
 	/* uaddr is not as provided; uaddr2 is faulty but ignored */
 	CHECK_FUTEX(uaddr, FUTEX_WAIT, VAL, tmout, uaddr2 + 1, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* uaddr is not as provided; uaddr2 is faulty but ignored */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT, VAL, tmout,
 		uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
-		"%s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE, %u, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* Next 2 tests are with CLOCKRT bit set */
 
@@ -227,18 +248,18 @@
 	CHECK_FUTEX_ENOSYS(uaddr,
 		FUTEX_CLOCK_REALTIME | FUTEX_WAIT,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr,
 		FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG | FUTEX_WAIT ,
 		VAL, tmout, uaddr2, 0, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* FUTEX_WAIT_BITSET - FUTEX_WAIT which provides additional bitmask
 	 *                     which should be matched at least in one bit with
@@ -254,50 +275,54 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1,
 		VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
-		"%#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+	       ", %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* val3 of 0 is invalid  */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, 0,
 		(rc == -1) && (errno == EINVAL));
-	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%jd, tv_nsec=%jd}, "
-		"%#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, 0, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET, %u, {tv_sec=%lld, tv_nsec=%llu}"
+	       ", %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), 0, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, VAL3_PR, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* Next 3 tests are with CLOCKRT bit set */
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* val3 of 0 is invalid  */
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_BITSET, VAL,
 		tmout, uaddr2 + 1, 0, (rc == -1) && (errno == EINVAL));
-	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, 0,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), 0, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
 		FUTEX_WAIT_BITSET, VAL, tmout, uaddr2 + 1, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %#x) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, VAL3_PR,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %#x) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), VAL3_PR,
+	       sprintrc(rc));
 
 	/* FUTEX_WAKE - wake val processes waiting for uaddr
 	 * Possible flags: PRIVATE
@@ -522,9 +547,9 @@
 			CHECK_FUTEX_ENOSYS(uaddr,
 				j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
 				VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
-			printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s) = "
-				"%s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR, i,
-				uaddr2, wake_ops[i].str, sprintrc(rc));
+			printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)"
+			       " = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR,
+			       i, uaddr2, wake_ops[i].str, sprintrc(rc));
 		}
 	}
 
@@ -552,16 +577,16 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_LOCK_PI, VAL, tmout, uaddr2 + 1,
 		VAL3, (rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
-		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_LOCK_PI, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       uaddr + 1, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr + 1, FUTEX_PRIVATE_FLAG | FUTEX_LOCK_PI, VAL,
 		tmout, uaddr2 + 1, VAL3, (rc == -1) && (errno == EFAULT));
-	printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%jd, tv_nsec=%jd}) = "
-		"%s\n",
-		uaddr + 1, (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_LOCK_PI_PRIVATE, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
+	       uaddr + 1, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 
 	/* NULL is passed by invalid_op() in cases valid timeout address is
 	 * needed */
@@ -633,32 +658,32 @@
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2,
 		VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n",
-		uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_PRIVATE_FLAG | FUTEX_WAIT_REQUEUE_PI,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) "
-		"= %s\n", uaddr, VAL_PR, (intmax_t) tmout->tv_sec,
-		(intmax_t) tmout->tv_nsec, uaddr2, sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_WAIT_REQUEUE_PI,
 		VAL, tmout, uaddr2, VAL3, (rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI|FUTEX_CLOCK_REALTIME, %u"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	CHECK_FUTEX_ENOSYS(uaddr, FUTEX_CLOCK_REALTIME | FUTEX_PRIVATE_FLAG |
 		FUTEX_WAIT_REQUEUE_PI, VAL, tmout, uaddr2, VAL3,
 		(rc == -1) && (errno == EAGAIN));
-	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME, "
-		"%u, {tv_sec=%jd, tv_nsec=%jd}, %p) = %s\n", uaddr, VAL_PR,
-		(intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec, uaddr2,
-		sprintrc(rc));
+	printf("futex(%p, FUTEX_WAIT_REQUEUE_PI_PRIVATE|FUTEX_CLOCK_REALTIME"
+	       ", %u, {tv_sec=%lld, tv_nsec=%llu}, %p) = %s\n",
+	       uaddr, VAL_PR, (long long) tmout->tv_sec,
+	       zero_extend_signed_to_ull(tmout->tv_nsec), uaddr2, sprintrc(rc));
 
 	/* FUTEX_CMP_REQUEUE_PI - version of FUTEX_CMP_REQUEUE which re-queues
 	 *                        on PI-aware futex.
diff --git a/tests/futimesat.c b/tests/futimesat.c
index c356629..733fd09 100644
--- a/tests/futimesat.c
+++ b/tests/futimesat.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of futimesat syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,46 +37,123 @@
 # include <sys/time.h>
 # include <unistd.h>
 
+static void
+print_tv(const struct timeval *tv)
+{
+	printf("{tv_sec=%lld, tv_usec=%llu}",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
+	print_time_t_usec(tv->tv_sec,
+			  zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_futimesat(const kernel_ulong_t dirfd,
+	    const kernel_ulong_t pathname,
+	    const kernel_ulong_t times)
+{
+	long rc = syscall(__NR_futimesat, dirfd, pathname, times);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	struct timeval tv;
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_fail("gettimeofday");
+	static const kernel_ulong_t bogus_fd =
+		(kernel_ulong_t) 0xbadfaceddeadbeaf;
+	static const kernel_ulong_t kfdcwd =
+		(kernel_ulong_t) 0xdefaced00000000 | -100U;
+	static const char proto_fname[] = "futimesat_sample";
+	static const char qname[] = "\"futimesat_sample\"";
 
-	static const char sample[] = "futimesat_sample";
-	unsigned long dirfd = (unsigned long) 0xdeadbeef00000000ULL | -100U;
-
-	long rc = syscall(__NR_futimesat, dirfd, sample, 0);
-	printf("futimesat(AT_FDCWD, \"%s\", NULL) = %ld %s (%m)\n",
-	       sample, rc, errno2name());
-
-	struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
-	dirfd = (unsigned long) 0xdeadbeefffffffffULL;
-
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_usec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_usec = tv.tv_usec + 1;
-
-	rc = syscall(__NR_futimesat, dirfd, 0, ts + 2);
-	printf("futimesat(%d, NULL, %p) = %ld %s (%m)\n",
-	       (int) dirfd, ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_futimesat, dirfd, 0, ts + 1);
-	printf("futimesat(%d, NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
-	       "%ld %s (%m)\n", (int) dirfd,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       ts + 2, rc, errno2name());
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	struct timeval *const tv = tail_alloc(sizeof(*tv) * 2);
 
 	(void) close(0);
-	rc = syscall(__NR_futimesat, 0, "", ts);
-	printf("futimesat(0, \"\", [{tv_sec=%jd, tv_usec=%jd}, "
-	       "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
-	       (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       rc, errno2name());
+
+	/* dirfd */
+	k_futimesat(0, kfname, 0);
+	printf("futimesat(0, %s, NULL) = %s\n", qname, errstr);
+
+	k_futimesat(bogus_fd, kfname, 0);
+	printf("futimesat(%d, %s, NULL) = %s\n", (int) bogus_fd, qname, errstr);
+
+	k_futimesat(-100U, kfname, 0);
+	printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+	k_futimesat(kfdcwd, kfname, 0);
+	printf("futimesat(AT_FDCWD, %s, NULL) = %s\n", qname, errstr);
+
+	/* pathname */
+	k_futimesat(kfdcwd, 0, 0);
+	printf("futimesat(AT_FDCWD, NULL, NULL) = %s\n", errstr);
+
+	k_futimesat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0);
+	printf("futimesat(AT_FDCWD, \"\", NULL) = %s\n", errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_futimesat(kfdcwd, kfname, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("futimesat(AT_FDCWD, %p, NULL) = %s\n", fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_futimesat(kfdcwd, f8ill_ptr_to_kulong(fname), 0);
+		printf("futimesat(AT_FDCWD, %#jx, NULL) = %s\n",
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 1));
+	printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+	       qname, tv + 1, errstr);
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) (tv + 2));
+	printf("futimesat(AT_FDCWD, %s, %p) = %s\n",
+	       qname, tv + 2, errstr);
+
+	tv[0].tv_sec = 0xdeadbeefU;
+	tv[0].tv_usec = 0xfacefeedU;
+	tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_sec = 1492356708;
+	tv[0].tv_usec = 567891234;
+	tv[1].tv_sec = 1492357086;
+	tv[1].tv_usec = 678902345;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_usec = 567891;
+	tv[1].tv_usec = 678902;
+
+	k_futimesat(kfdcwd, kfname, (uintptr_t) tv);
+	printf("futimesat(AT_FDCWD, %s, [", qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_futimesat(kfdcwd, kfname, f8ill_ptr_to_kulong(tv));
+		printf("futimesat(AT_FDCWD, %s, %#jx) = %s\n",
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/futimesat.gen.test b/tests/futimesat.gen.test
new file mode 100755
index 0000000..c3add8c
--- /dev/null
+++ b/tests/futimesat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (futimesat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/futimesat.test b/tests/futimesat.test
deleted file mode 100755
index 3a67c04..0000000
--- a/tests/futimesat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check futimesat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/gen_pure_executables.sh b/tests/gen_pure_executables.sh
new file mode 100755
index 0000000..c0e2152
--- /dev/null
+++ b/tests/gen_pure_executables.sh
@@ -0,0 +1,50 @@
+#!/bin/sh -efu
+#
+# 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.
+
+usage()
+{
+	cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
+
+Generate pure_executables.am from <input> list.
+Deduce output file from <input> unless an <output> is specified.
+EOF
+	exit 1
+}
+
+input="${0%/*}/pure_executables.list"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output="$(dirname "$input")/pure_executables.am"
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
+
+exec > "$output"
+
+echo "# Generated by $0 from $input; do not edit."
+echo 'PURE_EXECUTABLES = \'
+sed -n 's/^[^#].*/  & \\/p' < "$input"
+echo '  #'
diff --git a/tests/gen_tests.in b/tests/gen_tests.in
new file mode 100644
index 0000000..be0a3a2
--- /dev/null
+++ b/tests/gen_tests.in
@@ -0,0 +1,348 @@
+# Input for gen_tests.sh
+#
+# 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.
+
+_newselect
+accept	-a22
+accept4	-a37
+access	-a30 -P access_sample
+acct	-a20
+add_key	-a30 -s12
+adjtimex	-a15
+aio	-a14 -e trace=io_setup,io_submit,io_getevents,io_cancel,io_destroy
+alarm	-a10
+bpf	-a20
+btrfs	+ioctl.test
+chmod	-a28
+chown	-a28
+chown32	-a31
+chroot	-a24
+clock	test_trace_expr 'times|fcntl.*' -e/clock
+clock_adjtime	-a37
+clock_nanosleep	-e trace=clock_nanosleep,clock_gettime
+clock_xettime	-a36 -e trace=clock_getres,clock_gettime,clock_settime
+copy_file_range
+creat	-a20
+delete_module	-a23
+dup	-a8
+dup2	-a13
+dup3	-a24
+epoll_create	-a17
+epoll_create1	-a28
+epoll_ctl
+epoll_pwait
+epoll_wait	-a26
+erestartsys	-a34 -e signal=none -e trace=recvfrom
+execveat
+execveat-v	-v -e trace=execveat
+faccessat	-P $NAME.sample
+fadvise64_64	+fadvise64.test
+fallocate	-a18
+fanotify_init
+fanotify_mark	-a32
+fchdir	-a11
+fchmod	-a15
+fchmodat
+fchown	-a16
+fchown32	-a18
+fchownat
+fcntl	-a8
+fcntl64	-a8
+fdatasync	-a14
+file_handle	-e trace=name_to_handle_at,open_by_handle_at
+file_ioctl	+ioctl.test
+finit_module	-a25
+flock	-a19
+fork-f	-a26 -qq -f -e signal=none -e trace=chdir
+fstat	-a15 -v -P stat.sample
+fstat64	-a17 -v -P stat.sample
+fstatat64	-a32 -v -P stat.sample -P /dev/full
+fstatfs	-a18
+fstatfs64	-a24
+fsync	-a10
+ftruncate	-a24
+ftruncate64	-a36
+futimesat	-a28
+get_mempolicy	-s3 -a38
+getcpu	-a25
+getcwd	-a18
+getdents	-a22 -v
+getdents64	-a24 -v
+getegid	+getuid.test
+getegid32	+getuid.test
+geteuid	+getuid.test
+geteuid32	+getuid.test
+getgid	+getuid.test
+getgid32	+getuid.test
+getgroups	-a17
+getgroups32	-a19
+getpeername	-a27
+getpgrp	-a10
+getpid	-a9
+getppid	-a10
+getrandom	-a32 -s3
+getresgid	-a25
+getresgid32	-a27
+getresuid	-a25
+getresuid32	-a27
+getrlimit	-a27
+getrusage	-v
+getsid	-a10
+getsockname	-a27
+gettid	-a9
+getuid32	+getuid.test
+getxxid	-a10 -e trace=getxpid,getxuid,getxgid
+inet-cmsg	-e trace=recvmsg
+init_module	-a27
+inotify	-a23 -e trace=inotify_add_watch,inotify_rm_watch
+inotify_init1	-a27
+int_0x80	-a11 -e trace=getgid32
+ioctl_block	+ioctl.test
+ioctl_evdev	+ioctl.test
+ioctl_evdev-v	+ioctl-v.sh
+ioctl_loop	+ioctl.test
+ioctl_loop-v	+ioctl-v.sh
+ioctl_mtd	+ioctl.test
+ioctl_rtc	+ioctl.test
+ioctl_rtc-v	+ioctl-v.sh
+ioctl_scsi	+ioctl.test
+ioctl_sg_io_v3	+ioctl.test
+ioctl_sg_io_v4	+ioctl.test
+ioctl_uffdio	+ioctl.test
+ioctl_v4l2	+ioctl.test
+ioperm	-a27
+iopl	-a8
+ioprio	-a18 -e trace=ioprio_get,ioprio_set
+ip_mreq	-e trace=setsockopt
+ipc	-a19
+ipc_msg	+ipc.sh
+ipc_sem	+ipc.sh
+ipc_shm	+ipc.sh
+kcmp	-a27
+kexec_file_load	-s9
+kexec_load	-s9
+keyctl	-a31 -s10
+kill	-a12 -esignal=none
+lchown	-a30
+lchown32	-a32
+link
+linkat
+lookup_dcookie	-a27
+lstat	-a32 -v -P stat.sample -P /dev/full
+lstat64	-a32 -v -P stat.sample -P /dev/full
+madvise	-a33
+mbind
+membarrier	-a36
+memfd_create
+migrate_pages	-a33
+mincore	-a22
+mkdir	-a20
+mkdirat	-a28
+mknod	-a18
+mknodat	-a35
+mlock	-a20 -e trace=mlock,munlock
+mlock2
+mlockall	-a12
+mmap64	+mmap.test
+mmsg	-e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
+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
+mount
+move_pages	-s3
+mq	-a32 -e trace=mq_getsetattr,mq_open,mq_unlink
+mq_sendrecv	-a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-read	-eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+mq_sendrecv-write	-ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
+msg_control	-a21 -e trace=sendmsg
+msg_control-v	-v -a21 -e trace=sendmsg
+msg_name	-a20 -e trace=recvmsg
+munlockall	-a13
+nanosleep	-a20
+net-icmp_filter	-e trace=getsockopt,setsockopt
+net-sockaddr	-a24 -e trace=connect
+netlink_protocol	-e trace=%network
+newfstatat	-a32 -v -P stat.sample -P /dev/full
+old_mmap	-a11 -e trace=mmap
+oldfstat	-a18 -v -P stat.sample
+oldlstat	-a32 -v -P stat.sample -P /dev/full
+oldstat	-a32 -v -P stat.sample -P /dev/full
+open	-a30 -P $NAME.sample
+openat	-P $NAME.sample
+osf_utimes	-a21
+pause	-a8 -esignal=none
+perf_event_open	-a1
+perf_event_open_nonverbose	-a34 -e verbose=none -e trace=perf_event_open
+perf_event_open_unabbrev	-a1 -v -e trace=perf_event_open
+pipe2	-a15
+pkey_alloc	-a17
+pkey_free	-a13
+pkey_mprotect	-a37
+ppoll	-s2
+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
+preadv-pwritev	-a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
+preadv2-pwritev2	-a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
+printstr	-e trace=writev
+prlimit64
+process_vm_readv	-s5 -a37
+process_vm_writev	-s5 -a38
+pselect6
+ptrace	-a23 -e signal=none
+pwritev	-a22 -s7
+quotactl
+quotactl-v	-v -e trace=quotactl
+quotactl-xfs	-e trace=quotactl
+quotactl-xfs-v	-v -e trace=quotactl
+read-write	-a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
+readahead	-a1
+readdir	-a16
+readlink	-xx
+readlinkat	-xx
+reboot
+recvfrom	-a35
+recvmmsg-timeout	-a25 -e trace=recvmmsg
+recvmsg	-eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
+regex	test_trace_expr '' -etrace='/^(.*_)?statv?fs'
+remap_file_pages
+rename	-a35
+renameat
+renameat2
+request_key	-a33 -s12
+rmdir	-a22
+rt_sigpending	-a20
+rt_sigprocmask
+rt_sigqueueinfo	-esignal=none
+rt_sigreturn	-esignal='!USR1'
+rt_sigsuspend	-a20 -esignal=none
+rt_sigtimedwait	-a38
+rt_tgsigqueueinfo	-esignal=none
+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
+sched_xetaffinity	-a28 -e trace=sched_getaffinity,sched_setaffinity
+sched_xetattr	-a29 -e trace=sched_getattr,sched_setattr
+sched_xetparam	-a23 -e trace=sched_getparam,sched_setparam
+sched_xetscheduler	-a22 -e trace=sched_getscheduler,sched_setscheduler
+sched_yield	-a14
+seccomp-filter	-e trace=seccomp
+seccomp-filter-v	-v -e trace=seccomp
+select	-a36
+semop	-a32 -e trace=semop,semtimedop
+sendfile	-a27
+sendfile64	-a29
+set_mempolicy	-s3 -a35
+setdomainname	-a24
+setfsgid	-a12
+setfsgid32	-a14
+setfsuid	-a12
+setfsuid32	-a14
+setgid	-a10
+setgid32	-a12
+setgroups	-s2 -a17
+setgroups32	-s2 -a19
+sethostname	-a22
+setns	-a21
+setregid	-a15
+setregid32	-a17
+setresgid	-a19
+setresgid32	-a21
+setresuid	-a19
+setresuid32	-a21
+setreuid	-a15
+setreuid32	-a17
+setrlimit	-a27
+setuid	-a10
+setuid32	-a12
+shmxt	-a11 -e trace='/(osf_)?shmat,shmdt'
+shutdown	-a24
+siginfo	-e trace=none
+signal_receive	-a16 -e trace=kill
+signalfd4
+sigreturn	-esignal='!USR1'
+sigsuspend	-a19 -esignal=none
+socketcall	-a20
+splice
+stat	-a32 -v -P stat.sample -P /dev/full
+stat64	-a32 -v -P stat.sample -P /dev/full
+statfs	-a17
+statfs64	-a23
+statx	-a32 -v -P stat.sample -P /dev/full
+swap	-a23 -e trace=swapon,swapoff
+sxetmask	-a11 -e trace=sgetmask,ssetmask
+symlink	-a34
+symlinkat
+sync	-a7
+sync_file_range
+sync_file_range2
+sysinfo	-a14
+syslog	-a36
+tee
+time	-a10
+timer_create
+timer_xettime	-e trace=timer_create,timer_settime,timer_gettime
+timerfd_xettime	-e trace=timerfd_create,timerfd_settime,timerfd_gettime
+times	-esignal=none
+times-fail	-a12 -e trace=times
+trace_fstat	test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
+trace_fstatfs	test_trace_expr '' -e%fstatfs
+trace_lstat	test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
+trace_question	test_trace_expr '' -e?osf_utimes,?/^pkey_.*
+trace_stat	test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
+trace_stat_like	test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
+trace_statfs	test_trace_expr '' -e%statfs
+trace_statfs_like	test_trace_expr '' -e%%statfs
+truncate
+truncate64
+ugetrlimit	-a28
+umask	-a11
+umoven-illptr	-a36 -e trace=nanosleep
+umovestr-illptr	-a11 -e trace=chdir
+umovestr3	-a14 -e trace=chdir
+unlink	-a24
+unlinkat	-a35
+unshare	-a11
+userfaultfd	-a38
+ustat	-a33
+utime	-a16
+utimensat	-a33
+utimes	-a17
+vfork-f	-a26 -qq -f -e signal=none -e trace=chdir
+vhangup	-a10
+vmsplice	-ewrite=1
+wait4	-esignal=none
+wait4-v	-v -e signal=none -e trace=wait4
+waitid	-esignal=none
+waitid-v	-v -e signal=none -e trace=waitid
+waitpid	-a28
+xattr	-a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
+xattr-strings	-a22 -s 4 -e trace=fsetxattr
+xet_robust_list	-a24 -e trace=get_robust_list,set_robust_list
+xetitimer	-a29 -e trace=setitimer,getitimer
+xetpgid	-a11 -e trace=getpgid,setpgid
+xetpriority	-a29 -e trace=getpriority,setpriority
+xettimeofday	-a20 -e trace=gettimeofday,settimeofday
diff --git a/tests/gen_tests.sh b/tests/gen_tests.sh
new file mode 100755
index 0000000..b062436
--- /dev/null
+++ b/tests/gen_tests.sh
@@ -0,0 +1,110 @@
+#!/bin/sh -efu
+#
+# 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.
+
+usage()
+{
+	cat >&2 <<EOF
+Usage: $0 [<input> [<output>]]
+
+Generate test script(s) from <input> table.
+If a <output> is specified, generate the script for this test only,
+otherwise generate scripts for all tests specified in <input> table.
+EOF
+	exit 1
+}
+
+input="${0%/*}/gen_tests.in"
+[ $# -eq 0 ] || { input="$1"; shift; }
+output=
+[ $# -eq 0 ] || { output="$1"; shift; }
+[ $# -eq 0 ] || usage
+
+if [ -n "$output" ]; then
+	match="${output##*/}"
+	match="${match%.gen.test}"
+	[ -n "$match" ] || usage
+else
+	match=
+	dir="$(dirname "$input")"
+fi
+
+names=
+
+while read -r name args; do {
+	[ -n "${name###*}" ] || continue
+	if [ -z "$match" ]; then
+		names="$names $name"
+		output="$dir/$name.gen.test"
+	else
+		[ "$match" = "$name" ] || continue
+	fi
+
+	hdr="\
+#!/bin/sh -efu
+# Generated by $0 from $input ($name $args); do not edit."
+
+	case "$args" in
+		+*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/${args#+}"
+		EOF
+		;;
+
+		''|-*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/init.sh"
+		run_strace_match_diff $args
+		EOF
+		;;
+
+		*)
+		cat <<-EOF
+		$hdr
+		. "\${srcdir=.}/init.sh"
+		$args
+		EOF
+		;;
+	esac > "$output"
+
+	chmod a+x "$output"
+} < /dev/null; done < "$input"
+
+if [ -n "$names" ]; then
+	{
+		printf '# Generated by %s from %s; do not edit.\n' "$0" "$input"
+		printf 'GEN_TESTS ='
+		printf ' %s.gen.test' $names
+		echo
+		target='$(srcdir)/%s.gen.test'
+		dep1='$(abs_srcdir)/gen_tests.sh'
+		dep2='$(srcdir)/gen_tests.in'
+		recipe='$(AM_V_GEN) $^ $@'
+		printf "\\n$target: $dep1 $dep2\\n\\t$recipe\\n" $names
+	} > "$dir/gen_tests.am"
+fi
diff --git a/tests/get_mempolicy.gen.test b/tests/get_mempolicy.gen.test
new file mode 100755
index 0000000..ec6efb3
--- /dev/null
+++ b/tests/get_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (get_mempolicy -s3 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a38
diff --git a/tests/get_mempolicy.test b/tests/get_mempolicy.test
deleted file mode 100755
index 9227097..0000000
--- a/tests/get_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a38
diff --git a/tests/get_regs.test b/tests/get_regs.test
new file mode 100755
index 0000000..c673fe9
--- /dev/null
+++ b/tests/get_regs.test
@@ -0,0 +1,53 @@
+#!/bin/sh
+#
+# Check that get_regs is skipped for filtered syscalls.
+#
+# 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.
+
+. "${srcdir=.}/init.sh"
+
+check_prog env
+check_prog grep
+run_prog ../gettid > /dev/null
+
+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
+
+[ "$(cat less)" -gt 0 ] ||
+	fail_ "$STRACE $args failed to catch any ptrace syscalls"
+
+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
+
+[ "$(cat more)" -gt 0 ] ||
+	fail_ "$STRACE $args failed to catch any ptrace syscalls"
+
+[ "$(cat more)" -gt "$(cat less)" ] ||
+	fail_ "$STRACE failed to skip get_regs for filtered syscalls"
diff --git a/tests/get_sigset_size.c b/tests/get_sigset_size.c
new file mode 100644
index 0000000..357829d
--- /dev/null
+++ b/tests/get_sigset_size.c
@@ -0,0 +1,66 @@
+/*
+ * Find out the size of kernel's sigset_t.
+ *
+ * Copyright (c) 2016-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 <signal.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+/*
+ * If the sigset size specified to rt_sigprocmask is not equal to the size
+ * of kernel's sigset_t, the kernel does not look at anything else and fails
+ * with EINVAL.
+ *
+ * Otherwise, if both pointers specified to rt_sigprocmask are NULL,
+ * the kernel just returns 0.
+ *
+ * This vaguely documented kernel feature can be used to probe
+ * the kernel and find out the size of kernel's sigset_t.
+ */
+
+unsigned int
+get_sigset_size(void)
+{
+	static unsigned int set_size;
+
+	if (!set_size) {
+		static const unsigned int big_size = 1024 / 8;
+
+		for (set_size = big_size; set_size; set_size >>= 1) {
+			if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
+				     NULL, NULL, set_size))
+				break;
+		}
+
+		if (!set_size)
+			perror_msg_and_fail("rt_sigprocmask");
+	}
+
+	return set_size;
+}
diff --git a/tests/getcpu.c b/tests/getcpu.c
index ec671f1..3cb49cb 100644
--- a/tests/getcpu.c
+++ b/tests/getcpu.c
@@ -2,6 +2,7 @@
  * Check decoding of getcpu syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -47,8 +48,8 @@
 		(unsigned *) tail_alloc(sizeof(* bogus_tcache)) + 1;
 
 	long res;
-	unsigned *cpu = tail_alloc(sizeof(*cpu));
-	unsigned *node = tail_alloc(sizeof(*node));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, cpu);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, node);
 	long * tcache = tail_alloc(128);
 
 	res = syscall(__NR_getcpu, NULL, NULL, NULL);
diff --git a/tests/getcpu.gen.test b/tests/getcpu.gen.test
new file mode 100755
index 0000000..44d9a4b
--- /dev/null
+++ b/tests/getcpu.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcpu -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/getcpu.test b/tests/getcpu.test
deleted file mode 100755
index fe21265..0000000
--- a/tests/getcpu.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getcpu syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/getcwd.gen.test b/tests/getcwd.gen.test
new file mode 100755
index 0000000..af2ff08
--- /dev/null
+++ b/tests/getcwd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getcwd -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/getcwd.test b/tests/getcwd.test
deleted file mode 100755
index 405187e..0000000
--- a/tests/getcwd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getcwd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/getdents.c b/tests/getdents.c
index b787c83..338eab0 100644
--- a/tests/getdents.c
+++ b/tests/getdents.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -92,12 +93,10 @@
 }
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "getdents.test.tmp.dir";
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests/getdents.gen.test b/tests/getdents.gen.test
new file mode 100755
index 0000000..0db5f20
--- /dev/null
+++ b/tests/getdents.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents -a22 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -v
diff --git a/tests/getdents.test b/tests/getdents.test
deleted file mode 100755
index 23c4ac3..0000000
--- a/tests/getdents.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a22 -v
diff --git a/tests/getdents64.c b/tests/getdents64.c
index 9da2a23..1f6b47e 100644
--- a/tests/getdents64.c
+++ b/tests/getdents64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -98,12 +99,10 @@
 }
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "getdents64.test.tmp.dir";
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests/getdents64.gen.test b/tests/getdents64.gen.test
new file mode 100755
index 0000000..6e24d40
--- /dev/null
+++ b/tests/getdents64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getdents64 -a24 -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -v
diff --git a/tests/getdents64.test b/tests/getdents64.test
deleted file mode 100755
index 401cfc7..0000000
--- a/tests/getdents64.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check getdents64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a24 -v
diff --git a/tests/getegid.gen.test b/tests/getegid.gen.test
new file mode 100755
index 0000000..d6fecc2
--- /dev/null
+++ b/tests/getegid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getegid.test b/tests/getegid.test
deleted file mode 100755
index 4354158..0000000
--- a/tests/getegid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getegid32.gen.test b/tests/getegid32.gen.test
new file mode 100755
index 0000000..38c4a4b
--- /dev/null
+++ b/tests/getegid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getegid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getegid32.test b/tests/getegid32.test
deleted file mode 100755
index a266620..0000000
--- a/tests/getegid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getegid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid.gen.test b/tests/geteuid.gen.test
new file mode 100755
index 0000000..9e8c12f
--- /dev/null
+++ b/tests/geteuid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid.test b/tests/geteuid.test
deleted file mode 100755
index 14ff6a6..0000000
--- a/tests/geteuid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid32.gen.test b/tests/geteuid32.gen.test
new file mode 100755
index 0000000..5b78331
--- /dev/null
+++ b/tests/geteuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (geteuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/geteuid32.test b/tests/geteuid32.test
deleted file mode 100755
index 9dd173d..0000000
--- a/tests/geteuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check geteuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid.gen.test b/tests/getgid.gen.test
new file mode 100755
index 0000000..5a87aee
--- /dev/null
+++ b/tests/getgid.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid.test b/tests/getgid.test
deleted file mode 100755
index f4f0c2e..0000000
--- a/tests/getgid.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid32.gen.test b/tests/getgid32.gen.test
new file mode 100755
index 0000000..05e2d70
--- /dev/null
+++ b/tests/getgid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getgid32.test b/tests/getgid32.test
deleted file mode 100755
index 3bc98d1..0000000
--- a/tests/getgid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getgid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getgroups.c b/tests/getgroups.c
index 2617303..c7cd874 100644
--- a/tests/getgroups.c
+++ b/tests/getgroups.c
@@ -2,6 +2,7 @@
  * Check decoding of getgroups/getgroups32 syscalls.
  *
  * 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
@@ -91,7 +92,7 @@
 	if (ngroups < 0)
 		perror_msg_and_fail(SYSCALL_NAME);
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
 	printf("%s(0, NULL) = %ld\n", SYSCALL_NAME, rc);
 
 	rc = syscall(SYSCALL_NR, -1U, 0);
@@ -105,7 +106,7 @@
 	rc = syscall(SYSCALL_NR, ngroups_max, 0);
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL | ngroups_max, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, 0);
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, ngroups_max, sprintrc(rc));
 
 	/* check how the second argument is decoded */
diff --git a/tests/getgroups.gen.test b/tests/getgroups.gen.test
new file mode 100755
index 0000000..48b09be
--- /dev/null
+++ b/tests/getgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/getgroups.test b/tests/getgroups.test
deleted file mode 100755
index 2eb3056..0000000
--- a/tests/getgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/getgroups32.gen.test b/tests/getgroups32.gen.test
new file mode 100755
index 0000000..74637d0
--- /dev/null
+++ b/tests/getgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getgroups32 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/getgroups32.test b/tests/getgroups32.test
deleted file mode 100755
index 12a8bcc..0000000
--- a/tests/getgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/getpeername.gen.test b/tests/getpeername.gen.test
new file mode 100755
index 0000000..66fb0a9
--- /dev/null
+++ b/tests/getpeername.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpeername -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getpeername.test b/tests/getpeername.test
deleted file mode 100755
index 81f01bb..0000000
--- a/tests/getpeername.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getpeername syscall.
-
-. "${srcdir=.}/getsockname.test"
diff --git a/tests/getpgrp.gen.test b/tests/getpgrp.gen.test
new file mode 100755
index 0000000..1ec48e9
--- /dev/null
+++ b/tests/getpgrp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpgrp -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/getpgrp.test b/tests/getpgrp.test
deleted file mode 100755
index e116bb5..0000000
--- a/tests/getpgrp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgrp syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/getpid.c b/tests/getpid.c
new file mode 100644
index 0000000..96f2d15
--- /dev/null
+++ b/tests/getpid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getpid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	printf("getpid() = %ld\n", syscall(__NR_getpid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getpid")
+
+#endif
diff --git a/tests/getpid.gen.test b/tests/getpid.gen.test
new file mode 100755
index 0000000..4691774
--- /dev/null
+++ b/tests/getpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getpid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests/getppid.c b/tests/getppid.c
new file mode 100644
index 0000000..58901fc
--- /dev/null
+++ b/tests/getppid.c
@@ -0,0 +1,21 @@
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_getppid
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	printf("getppid() = %ld\n", syscall(__NR_getppid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_getppid")
+
+#endif
diff --git a/tests/getppid.gen.test b/tests/getppid.gen.test
new file mode 100755
index 0000000..52116a0
--- /dev/null
+++ b/tests/getppid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getppid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/getrandom.gen.test b/tests/getrandom.gen.test
new file mode 100755
index 0000000..2f5b989
--- /dev/null
+++ b/tests/getrandom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrandom -a32 -s3); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -s3
diff --git a/tests/getrandom.test b/tests/getrandom.test
deleted file mode 100755
index ad34048..0000000
--- a/tests/getrandom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrandom syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -s3
diff --git a/tests/getresgid.gen.test b/tests/getresgid.gen.test
new file mode 100755
index 0000000..f53bccc
--- /dev/null
+++ b/tests/getresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/getresgid.test b/tests/getresgid.test
deleted file mode 100755
index 9f5186e..0000000
--- a/tests/getresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/getresgid32.gen.test b/tests/getresgid32.gen.test
new file mode 100755
index 0000000..5f00506
--- /dev/null
+++ b/tests/getresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresgid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getresgid32.test b/tests/getresgid32.test
deleted file mode 100755
index a979891..0000000
--- a/tests/getresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/getresugid.c b/tests/getresugid.c
index 0ee721c..af9f015 100644
--- a/tests/getresugid.c
+++ b/tests/getresugid.c
@@ -2,6 +2,7 @@
  * Check decoding of getresuid/getresgid/getresuid32/getresgid32 syscalls.
  *
  * 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
@@ -34,9 +35,9 @@
 int
 main(void)
 {
-	unsigned UGID_TYPE *const r = tail_alloc(sizeof(*r));
-	unsigned UGID_TYPE *const e = tail_alloc(sizeof(*e));
-	unsigned UGID_TYPE *const s = tail_alloc(sizeof(*s));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, r);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, e);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned UGID_TYPE, s);
 
 	if (syscall(SYSCALL_NR, r, e, s))
 		perror_msg_and_fail(SYSCALL_NAME);
diff --git a/tests/getresuid.gen.test b/tests/getresuid.gen.test
new file mode 100755
index 0000000..e947a94
--- /dev/null
+++ b/tests/getresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid -a25); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25
diff --git a/tests/getresuid.test b/tests/getresuid.test
deleted file mode 100755
index eee1ac0..0000000
--- a/tests/getresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25
diff --git a/tests/getresuid32.gen.test b/tests/getresuid32.gen.test
new file mode 100755
index 0000000..b088a22
--- /dev/null
+++ b/tests/getresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getresuid32 -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getresuid32.test b/tests/getresuid32.test
deleted file mode 100755
index fdc76a3..0000000
--- a/tests/getresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/getrlimit.gen.test b/tests/getrlimit.gen.test
new file mode 100755
index 0000000..b97c176
--- /dev/null
+++ b/tests/getrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getrlimit.test b/tests/getrlimit.test
deleted file mode 100755
index 6fd88ae..0000000
--- a/tests/getrlimit.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit syscall.
-
-. "${srcdir=.}/setrlimit.test"
diff --git a/tests/getrusage.c b/tests/getrusage.c
index 8b76eff..bb52dd9 100644
--- a/tests/getrusage.c
+++ b/tests/getrusage.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2016 Fei Jie <feij.fnst@cn.fujitsu.com>
  * 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
@@ -35,27 +36,46 @@
 # include <stdint.h>
 # include <sys/resource.h>
 # include <unistd.h>
+# include <errno.h>
+
+# include "xlat.h"
+# include "xlat/usagewho.h"
 
 int
-main(void)
+invoke_print(int who, const char *who_str, struct rusage *usage)
 {
-	struct rusage *const usage = tail_alloc(sizeof(struct rusage));
-	int rc = syscall(__NR_getrusage, RUSAGE_SELF, usage);
-	printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%jd, tv_usec=%jd}"
-	       ", ru_stime={tv_sec=%jd, tv_usec=%jd}, ru_maxrss=%lu"
+	int rc = syscall(__NR_getrusage, who, usage);
+	int saved_errno = errno;
+	printf("getrusage(%s, {ru_utime={tv_sec=%lld, tv_usec=%llu}"
+	       ", ru_stime={tv_sec=%lld, tv_usec=%llu}, ru_maxrss=%lu"
 	       ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu"
 	       ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu"
 	       ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu"
-	       ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %d\n",
-	       (intmax_t) usage->ru_utime.tv_sec,
-	       (intmax_t) usage->ru_utime.tv_usec,
-	       (intmax_t) usage->ru_stime.tv_sec,
-	       (intmax_t) usage->ru_stime.tv_usec,
+	       ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %s\n",
+	       who_str,
+	       (long long) usage->ru_utime.tv_sec,
+	       zero_extend_signed_to_ull(usage->ru_utime.tv_usec),
+	       (long long) usage->ru_stime.tv_sec,
+	       zero_extend_signed_to_ull(usage->ru_stime.tv_usec),
 	       usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss,
 	       usage->ru_isrss, usage->ru_minflt, usage->ru_majflt,
 	       usage->ru_nswap, usage->ru_inblock, usage->ru_oublock,
 	       usage->ru_msgsnd, usage->ru_msgrcv, usage->ru_nsignals,
-	       usage->ru_nvcsw, usage->ru_nivcsw, rc);
+	       usage->ru_nvcsw, usage->ru_nivcsw, sprintrc(rc));
+	errno = saved_errno;
+	return rc;
+}
+
+int
+main(void)
+{
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, usage);
+	if (invoke_print(ARG_STR(RUSAGE_SELF), usage)) {
+		perror_msg_and_fail("RUSAGE_SELF");
+	}
+	if (invoke_print(ARG_STR(RUSAGE_THREAD), usage) && errno != EINVAL) {
+		perror_msg_and_fail("RUSAGE_THREAD");
+	}
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/getrusage.gen.test b/tests/getrusage.gen.test
new file mode 100755
index 0000000..c4fb182
--- /dev/null
+++ b/tests/getrusage.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getrusage -v); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v
diff --git a/tests/getrusage.test b/tests/getrusage.test
deleted file mode 100755
index 4a3e8ed..0000000
--- a/tests/getrusage.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getrusage syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v
diff --git a/tests/getsid.gen.test b/tests/getsid.gen.test
new file mode 100755
index 0000000..123f177
--- /dev/null
+++ b/tests/getsid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/getsid.test b/tests/getsid.test
deleted file mode 100755
index 3fcf979..0000000
--- a/tests/getsid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getsid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/getsockname.gen.test b/tests/getsockname.gen.test
new file mode 100755
index 0000000..cd40d3e
--- /dev/null
+++ b/tests/getsockname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getsockname -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/getsockname.test b/tests/getsockname.test
deleted file mode 100755
index 99b2850..0000000
--- a/tests/getsockname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getsockname syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/gettid.c b/tests/gettid.c
new file mode 100644
index 0000000..9b13eb8
--- /dev/null
+++ b/tests/gettid.c
@@ -0,0 +1,12 @@
+#include "tests.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+int
+main(void)
+{
+	printf("gettid() = %ld\n", syscall(__NR_gettid));
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests/gettid.gen.test b/tests/gettid.gen.test
new file mode 100755
index 0000000..1ceaa53
--- /dev/null
+++ b/tests/gettid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (gettid -a9); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a9
diff --git a/tests/getuid.test b/tests/getuid.test
index 9aaf74b..0bad1ff 100755
--- a/tests/getuid.test
+++ b/tests/getuid.test
@@ -9,4 +9,3 @@
 run_strace -qq -a9 -e$NAME $args > "$EXP"
 uniq < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests/getuid32.gen.test b/tests/getuid32.gen.test
new file mode 100755
index 0000000..ac0d0ad
--- /dev/null
+++ b/tests/getuid32.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getuid32 +getuid.test); do not edit.
+. "${srcdir=.}/getuid.test"
diff --git a/tests/getuid32.test b/tests/getuid32.test
deleted file mode 100755
index ae0c557..0000000
--- a/tests/getuid32.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check getuid32 syscall decoding.
-
-. "${srcdir=.}/getuid.test"
diff --git a/tests/getxxid.gen.test b/tests/getxxid.gen.test
new file mode 100755
index 0000000..5aa89f6
--- /dev/null
+++ b/tests/getxxid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (getxxid -a10 -e trace=getxpid,getxuid,getxgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests/getxxid.test b/tests/getxxid.test
deleted file mode 100755
index 9b89d7c..0000000
--- a/tests/getxxid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getxpid, getxuid, and getxgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10 -e trace=getxpid,getxuid,getxgid
diff --git a/tests/inet-cmsg.gen.test b/tests/inet-cmsg.gen.test
new file mode 100755
index 0000000..8eeb7c9
--- /dev/null
+++ b/tests/inet-cmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inet-cmsg -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=recvmsg
diff --git a/tests/inet-cmsg.test b/tests/inet-cmsg.test
deleted file mode 100755
index 52ff5f5..0000000
--- a/tests/inet-cmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check IPPROTO_IP control messages decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmsg
diff --git a/tests/init.sh b/tests/init.sh
index f368b98..2844765 100644
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -1,6 +1,7 @@
 #!/bin/sh
 #
 # Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2011-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -26,10 +27,9 @@
 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ME_="${0##*/}"
-LOG="$ME_.tmp"
-OUT="$LOG.out"
-EXP="$LOG.exp"
-NAME="${ME_%.test}"
+LOG="log"
+OUT="out"
+EXP="exp"
 
 warn_() { printf >&2 '%s\n' "$*"; }
 fail_() { warn_ "$ME_: failed test: $*"; exit 1; }
@@ -52,7 +52,7 @@
 run_prog()
 {
 	if [ $# -eq 0 ]; then
-		set -- "./$NAME"
+		set -- "../$NAME"
 	fi
 	args="$*"
 	"$@" || {
@@ -72,6 +72,20 @@
 	"$@" || framework_skip_ "$args failed with code $?"
 }
 
+try_run_prog()
+{
+	local rc
+
+	"$@" > /dev/null || {
+		rc=$?
+		if [ $rc -eq 77 ]; then
+			return 1
+		else
+			fail_ "$* failed with code $rc"
+		fi
+	}
+}
+
 run_strace()
 {
 	> "$LOG" || fail_ "failed to write $LOG"
@@ -213,7 +227,6 @@
 	run_prog > /dev/null
 	run_strace "$@" $args > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 # Print kernel version code.
@@ -250,22 +263,110 @@
 	cat < "/proc/$pid/status" | grep "$@"
 }
 
+# Subtracts one program set from another.
+# If an optional regular expression is specified, the lines in the minuend file
+# that match this regular expression are elso excluded from the output.
+#
+# Usage: prog_set_subtract minuend_file subtrahend_file [subtrahend_regexp]
+prog_set_subtract()
+{
+	local min sub re pat
+	min="$1"; shift
+	sub="$1"; shift
+	re="${1-}"
+	pat="$re|$(sed 's/[[:space:]].*//' < "$sub" | tr -s '\n' '|')"
+	grep -E -v -x -e "$pat" < "$min"
+}
+
+# Usage: test_pure_prog_set [--expfile FILE] COMMON_ARGS < tests_file
+# stdin should consist of lines in "test_name strace_args..." format.
+test_pure_prog_set()
+{
+	local expfile
+
+	expfile="$EXP"
+
+	while [ -n "$1" ]; do
+		case "$1" in
+		--expfile)
+			shift
+			expfile="$1"
+			shift
+			;;
+		*)
+			break
+			;;
+		esac
+	done
+
+	while read -r t prog_args; do {
+		# skip lines beginning with "#" symbol
+		[ "${t###}" = "$t" ] || continue
+
+		try_run_prog "../$t" || continue
+		run_strace $prog_args "$@" "../$t" > "$expfile"
+		match_diff "$LOG" "$expfile"
+	} < /dev/null; done
+}
+
+# Run strace against list of programs put in "$NAME.in" and then against the
+# rest of pure_executables.list with the expectation of empty output in the
+# latter case.
+#
+# Usage: source this file after init.sh and call:
+#   test_trace_expr subtrahend_regexp strace_args
+# Environment:
+#   $NAME:	test name, used for "$NAME.in" file containing list of tests
+#		for positive trace expression match;
+#   $srcdir:	used to find pure_executables.list and "$NAME.in" files.
+# Files created:
+#   negative.list: File containing list of tests for negative match.
+test_trace_expr()
+{
+	local subtrahend_regexp
+	subtrahend_regexp="$1"; shift
+	test_pure_prog_set "$@" < "$srcdir/$NAME.in"
+	prog_set_subtract "$srcdir/pure_executables.list" "$srcdir/$NAME.in" \
+		"$subtrahend_regexp" > negative.list
+	test_pure_prog_set --expfile /dev/null -qq -esignal=none "$@" \
+		< negative.list
+}
+
 check_prog cat
 check_prog rm
 
-rm -f "$LOG"
+case "$ME_" in
+	*.gen.test) NAME="${ME_%.gen.test}" ;;
+	*.test) NAME="${ME_%.test}" ;;
+	*) NAME=
+esac
 
-[ -n "${STRACE-}" ] || {
-	STRACE=../strace
-	case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
-		*--suppressions=*--error-exitcode=*--tool=*)
+if [ -n "$NAME" ]; then
+	TESTDIR="$NAME.dir"
+	rm -rf -- "$TESTDIR"
+	mkdir -- "$TESTDIR"
+	cd "$TESTDIR"
+
+	case "$srcdir" in
+		/*) ;;
+		*) srcdir="../$srcdir" ;;
+	esac
+
+	[ -n "${STRACE-}" ] || {
+		STRACE=../../strace
+		case "${LOG_COMPILER-} ${LOG_FLAGS-}" in
+			*--suppressions=*--error-exitcode=*--tool=*)
 			# add valgrind command prefix
 			STRACE="${LOG_COMPILER-} ${LOG_FLAGS-} $STRACE"
 			;;
-	esac
-}
+		esac
+	}
+else
+	[ -n "${STRACE-}" ] ||
+		STRACE=../strace
+fi
 
-: "${TIMEOUT_DURATION:=60}"
+: "${TIMEOUT_DURATION:=120}"
 : "${SLEEP_A_BIT:=sleep 1}"
 
 [ -z "${VERBOSE-}" ] ||
diff --git a/tests/init_delete_module.h b/tests/init_delete_module.h
index db550c3..cabf26f 100644
--- a/tests/init_delete_module.h
+++ b/tests/init_delete_module.h
@@ -3,6 +3,7 @@
  * and delete_module tests.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,9 +43,6 @@
 	MAX_STRLEN = 32,
 };
 
-static const kernel_ulong_t bogus_zero =
-	(kernel_ulong_t) 0xffffffff00000000ULL;
-
 static void
 print_str(unsigned int base, unsigned int len, bool escape)
 {
diff --git a/tests/init_module.c b/tests/init_module.c
index 88ef9ec..8fbb263 100644
--- a/tests/init_module.c
+++ b/tests/init_module.c
@@ -2,6 +2,7 @@
  * Check decoding of init_module syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -55,9 +56,9 @@
 	fill_memory_ex(bogus_param1, PARAM1_LEN, PARAM1_BASE, PARAM1_LEN);
 	fill_memory_ex(bogus_param2, PARAM2_LEN, PARAM2_BASE, PARAM2_LEN);
 
-	rc = syscall(__NR_init_module, NULL, bogus_zero, NULL);
+	rc = syscall(__NR_init_module, NULL, F8ILL_KULONG_MASK, NULL);
 	printf("init_module(NULL, %llu, NULL) = %s\n",
-	       (unsigned long long) bogus_zero, sprintrc(rc));
+	       (unsigned long long) F8ILL_KULONG_MASK, sprintrc(rc));
 
 	rc = syscall(__NR_init_module, bogus_addr, 0, bogus_param1);
 	errstr = sprintrc(rc);
diff --git a/tests/init_module.gen.test b/tests/init_module.gen.test
new file mode 100755
index 0000000..8948e2e
--- /dev/null
+++ b/tests/init_module.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/init_module.test b/tests/init_module.test
deleted file mode 100755
index ef7c732..0000000
--- a/tests/init_module.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of init_module syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/inotify.gen.test b/tests/inotify.gen.test
new file mode 100755
index 0000000..7010206
--- /dev/null
+++ b/tests/inotify.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (inotify -a23 -e trace=inotify_add_watch,inotify_rm_watch); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=inotify_add_watch,inotify_rm_watch
diff --git a/tests/inotify.test b/tests/inotify.test
deleted file mode 100755
index 436f3bc..0000000
--- a/tests/inotify.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of inotify_add_watch and inotify_rm_watch syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=inotify_add_watch,inotify_rm_watch -a23
diff --git a/tests/inotify_init1.gen.test b/tests/inotify_init1.gen.test
new file mode 100755
index 0000000..d847b50
--- /dev/null
+++ b/tests/inotify_init1.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/inotify_init1.test b/tests/inotify_init1.test
deleted file mode 100755
index 1a7c926..0000000
--- a/tests/inotify_init1.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of inotify_init1 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/int_0x80.c b/tests/int_0x80.c
new file mode 100644
index 0000000..012694f
--- /dev/null
+++ b/tests/int_0x80.c
@@ -0,0 +1,52 @@
+/*
+ * Check decoding of int 0x80 on x86_64, x32, and x86.
+ *
+ * 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"
+
+#if defined __x86_64__ || defined __i386__
+
+# include <stdio.h>
+# include <unistd.h>
+
+int
+main(void)
+{
+	/* 200 is __NR_getgid32 on x86 and __NR_tkill on x86_64. */
+	__asm__("movl $200, %eax; int $0x80");
+	printf("getgid32() = %d\n", getegid());
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__x86_64__ || __i386__")
+
+#endif
diff --git a/tests/int_0x80.gen.test b/tests/int_0x80.gen.test
new file mode 100755
index 0000000..2ab4f2f
--- /dev/null
+++ b/tests/int_0x80.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (int_0x80 -a11 -e trace=getgid32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getgid32
diff --git a/tests/ioctl-v.sh b/tests/ioctl-v.sh
new file mode 100755
index 0000000..be89671
--- /dev/null
+++ b/tests/ioctl-v.sh
@@ -0,0 +1,11 @@
+#!/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 92a3191..5dc0864 100644
--- a/tests/ioctl.c
+++ b/tests/ioctl.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/ioctl.test b/tests/ioctl.test
index 94bc5d4..1eb469e 100755
--- a/tests/ioctl.test
+++ b/tests/ioctl.test
@@ -4,12 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/ioctl_block.c b/tests/ioctl_block.c
index f62b0b3..8e883d4 100644
--- a/tests/ioctl_block.c
+++ b/tests/ioctl_block.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_block strace test.
  *
  * 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
@@ -113,7 +114,7 @@
 	ioctl(-1, BLKFRASET, lmagic);
 	printf("ioctl(-1, BLKFRASET, %lu) = -1 EBADF (%m)\n", lmagic);
 
-	int *const val_int = tail_alloc(sizeof(*val_int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
 	*val_int = magic;
 
 	ioctl(-1, BLKROSET, val_int);
@@ -144,7 +145,7 @@
 	       " = -1 EBADF (%m)\n", pair_int64[0], pair_int64[1]);
 #endif
 
-	struct blkpg_ioctl_arg *const blkpg = tail_alloc(sizeof(*blkpg));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_ioctl_arg, blkpg);
 	blkpg->op = 3;
 	blkpg->flags = 0xdeadbeef;
 	blkpg->datalen = 0xbadc0ded;
@@ -156,7 +157,7 @@
 	       "BLKPG_RESIZE_PARTITION", blkpg->flags, blkpg->datalen,
 	       (unsigned long) blkpg->data);
 
-	struct blkpg_partition *const bp = tail_alloc(sizeof(*bp));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blkpg_partition, bp);
 	bp->start = 0xfac1fed2dad3bef4ULL;
 	bp->length = 0xfac5fed6dad7bef8ULL;
 	bp->pno = magic;
@@ -177,7 +178,7 @@
 	       (int) sizeof(bp->volname) - 1, bp->volname);
 
 #if defined BLKTRACESETUP && defined HAVE_STRUCT_BLK_USER_TRACE_SETUP
-	struct blk_user_trace_setup *const buts = tail_alloc(sizeof(*buts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct blk_user_trace_setup, buts);
 	fill_memory(buts, sizeof(*buts));
 
 	ioctl(-1, BLKTRACESETUP, buts);
diff --git a/tests/ioctl_block.gen.test b/tests/ioctl_block.gen.test
new file mode 100755
index 0000000..0ffec6f
--- /dev/null
+++ b/tests/ioctl_block.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_block +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_block.test b/tests/ioctl_block.test
deleted file mode 100755
index 0bf2500..0000000
--- a/tests/ioctl_block.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of BLK* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_dm-v.test b/tests/ioctl_dm-v.test
index ade3b9e..eed37c2 100755
--- a/tests/ioctl_dm-v.test
+++ b/tests/ioctl_dm-v.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -s9 -veioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_dm.c b/tests/ioctl_dm.c
index 08f036c..544d70b 100644
--- a/tests/ioctl_dm.c
+++ b/tests/ioctl_dm.c
@@ -3,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -234,15 +235,15 @@
 	dm_arg->version[1] = 0xbadc0dee;
 	dm_arg->version[2] = 0xbadc0def;
 	ioctl(-1, DM_VERSION, dm_arg);
-	printf("ioctl(-1, DM_VERSION, {version=%u.%u.%u, "
-	       "/* Unsupported device mapper ABI version */ ...}) = "
+	printf("ioctl(-1, DM_VERSION, {version=%u.%u.%u"
+	       " /* unsupported device mapper ABI version */}) = "
 	       "-1 EBADF (%m)\n", 0xbadc0ded, 0xbadc0dee, 0xbadc0def);
 
 	/* Incorrect data_size */
 	init_s(dm_arg, 14, 64);
 	ioctl(-1, DM_VERSION, dm_arg);
-	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14, "
-	       "/* Incorrect data_size */ ...}) = -1 EBADF (%m)\n");
+	printf("ioctl(-1, DM_VERSION, {version=4.1.2, data_size=14"
+	       " /* data_size too small */}) = -1 EBADF (%m)\n");
 
 	/* Unterminated name/uuid */
 	init_s(dm_arg, min_sizeof_dm_ioctl, 0);
@@ -395,8 +396,8 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
 	       "target_count=1234, flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_spec */ ..."
-# else /* !VERBOSE */
+	       "??? /* misplaced struct dm_target_spec */"
+# else
 	       "..."
 # endif /* VERBOSE */
 	       "}) = -1 EBADF (%m)\n", sizeof(*dm_arg), 0xfffffff8);
@@ -491,7 +492,7 @@
 	print_dm_target_spec(&dm_arg_open3->target1, 15);
 	printf("\"\\377\"}, ");
 	print_dm_target_spec(&dm_arg_open3->target1, 42);
-	printf("\"\\1\\2\"}, /* misplaced struct dm_target_spec */ ...");
+	printf("\"\\1\\2\"}, ??? /* misplaced struct dm_target_spec */");
 # else /* !VERBOSE */
 	printf("...");
 # endif /* VERBOSE */
@@ -575,7 +576,7 @@
 	       "{version=4.1.2, data_size=%zu, data_start=%zu, "
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_msg */"
+	       "??? /* misplaced struct dm_target_msg */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -590,7 +591,7 @@
 	       "{version=4.1.2, data_size=%zu, data_start=%u, "
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", flags=0, "
 # if VERBOSE
-	       "/* misplaced struct dm_target_msg */"
+	       "??? /* misplaced struct dm_target_msg */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -706,7 +707,7 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", event_nr=0, "
 	       "flags=0, "
 # if VERBOSE
-	       "/* misplaced string */"
+	       "??? /* misplaced string */"
 # else /* !VERBOSE */
 	       "..."
 # endif /* VERBOSE */
@@ -757,10 +758,12 @@
 	       "dev=makedev(18, 52), name=\"nnn\", uuid=\"uuu\", "
 	       "target_count=4294967295, flags=0, "
 # if VERBOSE
-	       "{sector_start=0, length=0, target_type=\"\", string=\"\"}, "
-	       "/* misplaced struct dm_target_spec */ "
+	       "{sector_start=0, length=0, target_type=\"\", string=\"\"}"
+	       ", ??? /* misplaced struct dm_target_spec */"
+# else
+	       "..."
 # endif /* VERBOSE */
-	       "...}) = -1 EBADF (%m)\n",
+	       "}) = -1 EBADF (%m)\n",
 	       s.ioc.data_size, s.ioc.data_start);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/ioctl_dm.test b/tests/ioctl_dm.test
index 6485205..e9cca03 100755
--- a/tests/ioctl_dm.test
+++ b/tests/ioctl_dm.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a16 -s9 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_evdev-v.gen.test b/tests/ioctl_evdev-v.gen.test
new file mode 100755
index 0000000..fc7e2f0
--- /dev/null
+++ b/tests/ioctl_evdev-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests/ioctl_evdev-v.test b/tests/ioctl_evdev-v.test
deleted file mode 100755
index 8794101..0000000
--- a/tests/ioctl_evdev-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding EVIOC* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_evdev.c b/tests/ioctl_evdev.c
index d12323e..6cbc09f 100644
--- a/tests/ioctl_evdev.c
+++ b/tests/ioctl_evdev.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_evdev strace test.
  *
  * 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
@@ -148,7 +149,7 @@
 	void *const page = tail_alloc(size);
 	fill_memory(page, size);
 
-	int *const val_int = tail_alloc(sizeof(*val_int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, val_int);
 	*val_int = magic;
 
 # ifdef EVIOCSCLOCKID
@@ -172,7 +173,7 @@
 	       pair_int[0], "KEY_ESC");
 
 # ifdef EVIOCSKEYCODE_V2
-	struct input_keymap_entry *const ike = tail_alloc(sizeof(*ike));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct input_keymap_entry, ike);
 	fill_memory(ike, sizeof(*ike));
 	ike->keycode = 2;
 
@@ -196,7 +197,7 @@
 	printf("}) = -1 EBADF (%m)\n");
 # endif
 
-	struct ff_effect *const ffe = tail_alloc(sizeof(*ffe));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ff_effect, ffe);
 	fill_memory(ffe, sizeof(*ffe));
 
 	ffe->type = FF_CONSTANT;
diff --git a/tests/ioctl_evdev.gen.test b/tests/ioctl_evdev.gen.test
new file mode 100755
index 0000000..26f0a28
--- /dev/null
+++ b/tests/ioctl_evdev.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_evdev +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_evdev.test b/tests/ioctl_evdev.test
deleted file mode 100755
index 7ed2e98..0000000
--- a/tests/ioctl_evdev.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of EVIOC* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_loop-nv.test b/tests/ioctl_loop-nv.test
index dcc27e1..7d59cc2 100755
--- a/tests/ioctl_loop-nv.test
+++ b/tests/ioctl_loop-nv.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a22 -eioctl -e verbose=none $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_loop-v.gen.test b/tests/ioctl_loop-v.gen.test
new file mode 100755
index 0000000..7fd9f66
--- /dev/null
+++ b/tests/ioctl_loop-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests/ioctl_loop-v.test b/tests/ioctl_loop-v.test
deleted file mode 100755
index ff3995d..0000000
--- a/tests/ioctl_loop-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a22 -v -eioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_loop.c b/tests/ioctl_loop.c
index a95e775..4dcbf9a 100644
--- a/tests/ioctl_loop.c
+++ b/tests/ioctl_loop.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@gmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -175,8 +176,8 @@
 	static const kernel_ulong_t kernel_mask =
 		((kernel_ulong_t) -1) - ((unsigned long) -1L);
 
-	struct loop_info * const info = tail_alloc(sizeof(*info));
-	struct loop_info64 * const info64 = tail_alloc(sizeof(*info64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info, info);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct loop_info64, info64);
 
 	/* Unknown loop commands */
 	ioctl(-1, unknown_loop_cmd, magic);
diff --git a/tests/ioctl_loop.gen.test b/tests/ioctl_loop.gen.test
new file mode 100755
index 0000000..f7aee8e
--- /dev/null
+++ b/tests/ioctl_loop.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_loop +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_loop.test b/tests/ioctl_loop.test
deleted file mode 100755
index 112cd63..0000000
--- a/tests/ioctl_loop.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check decoding of LOOP_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a22 -eioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_mtd.c b/tests/ioctl_mtd.c
index a37d5d0..71d0c0d 100644
--- a/tests/ioctl_mtd.c
+++ b/tests/ioctl_mtd.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_mtd strace test.
  *
  * 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
@@ -95,13 +96,13 @@
 	ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL);
 	printf("ioctl(-1, MTDFILEMODE, MTD_FILE_MODE_NORMAL) = -1 EBADF (%m)\n");
 
-	int *const opt = tail_alloc(sizeof(*opt));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, opt);
 	*opt = MTD_OTP_OFF;
 	ioctl(-1, OTPSELECT, opt);
 	printf("ioctl(-1, MIXER_READ(%u) or OTPSELECT, [MTD_OTP_OFF])"
 	       " = -1 EBADF (%m)\n", (unsigned int) _IOC_NR(OTPSELECT));
 
-	uint64_t *const v64 = tail_alloc(sizeof(*v64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, v64);
 	fill_memory(v64, sizeof(*v64));
 
 	ioctl(-1, MEMGETBADBLOCK, v64);
@@ -114,7 +115,7 @@
 	       " = -1 EBADF (%m)\n",
 	       (unsigned int) _IOC_NR(MEMSETBADBLOCK), *v64);
 
-	struct region_info_user *const riu = tail_alloc(sizeof(*riu));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct region_info_user, riu);
 	fill_memory(riu, sizeof(*riu));
 	ioctl(-1, MEMGETREGIONINFO, riu);
 	printf("ioctl(-1, %s, {regionindex=%#x}) = -1 EBADF (%m)\n",
@@ -124,7 +125,7 @@
 #endif
 	       , riu->regionindex);
 
-	struct erase_info_user *const eiu = tail_alloc(sizeof(*eiu));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user, eiu);
 	fill_memory(eiu, sizeof(*eiu));
 
 	TEST_erase_info_user(MEMERASE, eiu);
@@ -132,7 +133,7 @@
 	TEST_erase_info_user(MEMUNLOCK, eiu);
 	TEST_erase_info_user(MEMISLOCKED, eiu);
 
-	struct erase_info_user64 *const eiu64 = tail_alloc(sizeof(*eiu64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct erase_info_user64, eiu64);
 	fill_memory(eiu64, sizeof(*eiu64));
 	ioctl(-1, MEMERASE64, eiu64);
 	printf("ioctl(-1, MIXER_WRITE(%u) or %s, {start=%#llx, length=%#llx})"
@@ -141,7 +142,7 @@
 	       (unsigned long long) eiu64->start,
 	       (unsigned long long) eiu64->length);
 
-	struct mtd_oob_buf *const oob = tail_alloc(sizeof(*oob));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf, oob);
 	fill_memory(oob, sizeof(*oob));
 
 	ioctl(-1, MEMWRITEOOB, oob);
@@ -152,7 +153,7 @@
 	printf("ioctl(-1, MEMREADOOB, {start=%#x, length=%#x, ptr=%p})"
 	       " = -1 EBADF (%m)\n", oob->start, oob->length, oob->ptr);
 
-	struct mtd_oob_buf64 *const oob64 = tail_alloc(sizeof(*oob64));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_oob_buf64, oob64);
 	fill_memory(oob64, sizeof(*oob64));
 
 	ioctl(-1, MEMWRITEOOB64, oob64);
@@ -168,14 +169,14 @@
 	       (unsigned long long) oob64->usr_ptr);
 
 
-	struct otp_info *const oi = tail_alloc(sizeof(*oi));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct otp_info, oi);
 	fill_memory(oi, sizeof(*oi));
 	ioctl(-1, OTPLOCK, oi);
 	printf("ioctl(-1, MIXER_READ(%u) or OTPLOCK"
 	       ", {start=%#x, length=%#x, locked=%u}) = -1 EBADF (%m)\n",
 	       (unsigned int) _IOC_NR(OTPLOCK),  oi->start, oi->length, oi->locked);
 
-	struct mtd_write_req *const wr = tail_alloc(sizeof(*wr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct mtd_write_req, wr);
 	fill_memory(wr, sizeof(*wr));
 	wr->mode = MTD_OPS_PLACE_OOB;
 	ioctl(-1, MEMWRITE, wr);
diff --git a/tests/ioctl_mtd.gen.test b/tests/ioctl_mtd.gen.test
new file mode 100755
index 0000000..cbc3104
--- /dev/null
+++ b/tests/ioctl_mtd.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_mtd +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_mtd.test b/tests/ioctl_mtd.test
deleted file mode 100755
index 0842807..0000000
--- a/tests/ioctl_mtd.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of 'M' type ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_nsfs.c b/tests/ioctl_nsfs.c
new file mode 100644
index 0000000..b2dbd1b
--- /dev/null
+++ b/tests/ioctl_nsfs.c
@@ -0,0 +1,145 @@
+/*
+ * Check decoding of NS_* commands of ioctl syscall.
+ *
+ * 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.
+ */
+
+#include "tests.h"
+
+#include <fcntl.h>
+#include <sched.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include "nsfs.h"
+
+#ifndef CLONE_NEWUSER
+# define CLONE_NEWUSER 0x10000000
+#endif
+
+static void
+test_no_namespace(void)
+{
+	ioctl(-1, NS_GET_USERNS);
+	printf("ioctl(-1, NS_GET_USERNS) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_PARENT);
+	printf("ioctl(-1, NS_GET_PARENT) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_NSTYPE);
+	printf("ioctl(-1, NS_GET_NSTYPE) = -1 EBADF (%m)\n");
+	ioctl(-1, NS_GET_OWNER_UID, NULL);
+	printf("ioctl(-1, NS_GET_OWNER_UID, NULL) = -1 EBADF (%m)\n");
+}
+
+static void
+test_clone(pid_t pid)
+{
+	char path[sizeof("/proc/%d/ns/user") + sizeof(int)*3];
+	snprintf(path, sizeof(path), "/proc/%d/ns/user", pid);
+
+	int ns_fd = open(path, O_RDONLY);
+	if (ns_fd == -1)
+		perror_msg_and_skip("open: %s", path);
+
+	int userns_fd = ioctl(ns_fd, NS_GET_USERNS);
+	printf("ioctl(%d, NS_GET_USERNS) = %s\n", ns_fd, sprintrc(userns_fd));
+
+	int parent_ns_fd = ioctl(userns_fd, NS_GET_PARENT);
+	printf("ioctl(%d, NS_GET_PARENT) = %s\n",
+	       userns_fd, sprintrc(parent_ns_fd));
+
+	int nstype = ioctl(userns_fd, NS_GET_NSTYPE);
+	if (nstype == -1) {
+		printf("ioctl(%d, NS_GET_NSTYPE) = %s\n",
+		       userns_fd, sprintrc(nstype));
+	} else {
+		printf("ioctl(%d, NS_GET_NSTYPE) = %d (CLONE_NEWUSER)\n",
+		       userns_fd, nstype);
+	}
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, uid);
+	int rc = ioctl(userns_fd, NS_GET_OWNER_UID, uid);
+	if (rc == -1) {
+		printf("ioctl(%d, NS_GET_OWNER_UID, %p) = %s\n",
+		       userns_fd, uid, sprintrc(rc));
+	} else {
+		printf("ioctl(%d, NS_GET_OWNER_UID, [%u]) = %d\n",
+		       userns_fd, *uid, rc);
+	}
+}
+
+static int
+child(void *arg)
+{
+	int *pipefd = (int *) arg;
+	close(pipefd[1]);
+	/* Wait for EOF from pipe. */
+	if (read(pipefd[0], &pipefd[1], 1))
+		perror_msg_and_fail("read");
+	return 0;
+}
+
+#ifdef IA64
+extern int __clone2(int (*)(void *), void *, size_t, int, void *, ...);
+# define clone(fn, child_stack, flags, arg)	\
+		__clone2(fn, child_stack, get_page_size() / 2, flags, arg)
+#endif
+
+static void
+test_user_namespace(void)
+{
+	pid_t pid;
+	int pipefd[2];
+	int status;
+
+	if (pipe(pipefd))
+		perror_msg_and_fail("pipe");
+
+	pid = clone(child, tail_alloc(get_page_size() / 2),
+		    CLONE_NEWUSER | CLONE_UNTRACED | SIGCHLD, pipefd);
+	if (pid == -1) {
+		perror("clone");
+		return;
+	}
+	close(pipefd[0]);
+	test_clone(pid);
+	close(pipefd[1]);
+	if (wait(&status) != pid) {
+		perror_msg_and_fail("wait");
+	} else if (status != 0) {
+		error_msg_and_fail("unexpected child exit status %d", status);
+	}
+}
+
+int
+main(void)
+{
+	test_no_namespace();
+	test_user_namespace();
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests/ioctl_nsfs.test b/tests/ioctl_nsfs.test
new file mode 100755
index 0000000..acdfb61
--- /dev/null
+++ b/tests/ioctl_nsfs.test
@@ -0,0 +1,11 @@
+#!/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
new file mode 100755
index 0000000..b534a02
--- /dev/null
+++ b/tests/ioctl_rtc-v.gen.test
@@ -0,0 +1,3 @@
+#!/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"
diff --git a/tests/ioctl_rtc-v.test b/tests/ioctl_rtc-v.test
deleted file mode 100755
index a255322..0000000
--- a/tests/ioctl_rtc-v.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of RTC_* ioctls.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -a16 -veioctl $args > "$EXP"
-check_prog grep
-grep -v '^ioctl([012],' < "$LOG" > "$OUT"
-match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_rtc.c b/tests/ioctl_rtc.c
index 49d7ec7..466a1d3 100644
--- a/tests/ioctl_rtc.c
+++ b/tests/ioctl_rtc.c
@@ -2,6 +2,7 @@
  * This file is part of ioctl_rtc strace test.
  *
  * 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
@@ -73,13 +74,13 @@
 	void *const page = tail_alloc(size);
 	fill_memory(page, size);
 
-	struct rtc_time *rt = tail_alloc(sizeof(*rt));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_time, rt);
 	fill_memory(rt, sizeof(*rt));
 
-	struct rtc_wkalrm *wk = tail_alloc(sizeof(*wk));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_wkalrm, wk);
 	fill_memory(wk, sizeof(*wk));
 
-	struct rtc_pll_info *pll = tail_alloc(sizeof(*pll));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rtc_pll_info, pll);
 	fill_memory(pll, sizeof(*pll));
 
 	/* RTC_ALM_READ */
diff --git a/tests/ioctl_rtc.gen.test b/tests/ioctl_rtc.gen.test
new file mode 100755
index 0000000..e430a82
--- /dev/null
+++ b/tests/ioctl_rtc.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_rtc +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_rtc.test b/tests/ioctl_rtc.test
deleted file mode 100755
index 4545f2a..0000000
--- a/tests/ioctl_rtc.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic decoding of RTC_* ioctls.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_scsi.c b/tests/ioctl_scsi.c
index 0db94d8..a9ecf28 100644
--- a/tests/ioctl_scsi.c
+++ b/tests/ioctl_scsi.c
@@ -69,7 +69,7 @@
 int
 main(void)
 {
-	int *const pint = tail_alloc(sizeof(*pint));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, pint);
 	*pint = (int) 0xfacefeed;
 
 	TEST_NO_ARG(SG_GET_TIMEOUT);
diff --git a/tests/ioctl_scsi.gen.test b/tests/ioctl_scsi.gen.test
new file mode 100755
index 0000000..23ac307
--- /dev/null
+++ b/tests/ioctl_scsi.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_scsi +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_scsi.test b/tests/ioctl_scsi.test
deleted file mode 100755
index 2710f12..0000000
--- a/tests/ioctl_scsi.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of SCSI ioctl commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v3.c b/tests/ioctl_sg_io_v3.c
index ef25795..3808b20 100644
--- a/tests/ioctl_sg_io_v3.c
+++ b/tests/ioctl_sg_io_v3.c
@@ -43,7 +43,7 @@
 	ioctl(-1, SG_IO, 0);
 	printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
 
-	struct sg_io_hdr *const sg_io = tail_alloc(sizeof(*sg_io));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_hdr, sg_io);
 	fill_memory(sg_io, sizeof(*sg_io));
 
 	const void *const efault = sg_io + 1;
@@ -53,7 +53,7 @@
 	ioctl(-1, SG_IO, sg_io);
 	printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->interface_id);
 
-	unsigned int *const piid = tail_alloc(sizeof(*piid));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, piid);
 	*piid = (unsigned char) 'S';
 	ioctl(-1, SG_IO, piid);
 	printf("ioctl(-1, SG_IO, {interface_id='S', %p}) = -1 EBADF (%m)\n", piid + 1);
diff --git a/tests/ioctl_sg_io_v3.gen.test b/tests/ioctl_sg_io_v3.gen.test
new file mode 100755
index 0000000..e7e5ea5
--- /dev/null
+++ b/tests/ioctl_sg_io_v3.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v3 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v3.test b/tests/ioctl_sg_io_v3.test
deleted file mode 100755
index dacacdf..0000000
--- a/tests/ioctl_sg_io_v3.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ioctl SG_IO v3 commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v4.c b/tests/ioctl_sg_io_v4.c
index 5f899ee..9c1e9fa 100644
--- a/tests/ioctl_sg_io_v4.c
+++ b/tests/ioctl_sg_io_v4.c
@@ -45,7 +45,7 @@
 	ioctl(-1, SG_IO, 0);
 	printf("ioctl(-1, SG_IO, NULL) = -1 EBADF (%m)\n");
 
-	struct sg_io_v4 *const sg_io = tail_alloc(sizeof(*sg_io));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sg_io_v4, sg_io);
 	fill_memory(sg_io, sizeof(*sg_io));
 
 	const void *const efault = sg_io + 1;
@@ -55,7 +55,7 @@
 	ioctl(-1, SG_IO, sg_io);
 	printf("ioctl(-1, SG_IO, [%u]) = -1 EBADF (%m)\n", sg_io->guard);
 
-	unsigned int *const pguard = tail_alloc(sizeof(*pguard));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, pguard);
 	*pguard = (unsigned char) 'Q';
 	ioctl(-1, SG_IO, pguard);
 	printf("ioctl(-1, SG_IO, {guard='Q', %p}) = -1 EBADF (%m)\n", pguard + 1);
diff --git a/tests/ioctl_sg_io_v4.gen.test b/tests/ioctl_sg_io_v4.gen.test
new file mode 100755
index 0000000..575ad96
--- /dev/null
+++ b/tests/ioctl_sg_io_v4.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_sg_io_v4 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sg_io_v4.test b/tests/ioctl_sg_io_v4.test
deleted file mode 100755
index 2556722..0000000
--- a/tests/ioctl_sg_io_v4.test
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ioctl SG_IO v4 commands.
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_sock_gifconf.c b/tests/ioctl_sock_gifconf.c
index ae0bea4..f81faef 100644
--- a/tests/ioctl_sock_gifconf.c
+++ b/tests/ioctl_sock_gifconf.c
@@ -2,6 +2,7 @@
  * Check decoding of SIOCGIFCONF command of ioctl syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -134,7 +135,7 @@
 main(int argc, char *argv[])
 {
 	struct ifreq *ifr = tail_alloc(2 * sizeof(*ifr));
-	struct ifconf *ifc = tail_alloc(sizeof(*ifc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ifconf, ifc);
 
 	struct sockaddr_in addr;
 	int fd;
diff --git a/tests/ioctl_sock_gifconf.test b/tests/ioctl_sock_gifconf.test
index 2e2fc01..22d7ea4 100755
--- a/tests/ioctl_sock_gifconf.test
+++ b/tests/ioctl_sock_gifconf.test
@@ -4,9 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
+check_prog grep
 run_prog > /dev/null
 run_strace -a28 -s1 -eioctl $args > "$EXP"
-check_prog grep
 grep -v '^ioctl([012],' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/ioctl_uffdio.c b/tests/ioctl_uffdio.c
index 10b8b84..c98e4a0 100644
--- a/tests/ioctl_uffdio.c
+++ b/tests/ioctl_uffdio.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c)      2016 Red Hat, Inc.
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -54,7 +55,7 @@
 		perror_msg_and_skip("userfaultfd");
 
 	/* ---- API ---- */
-	struct uffdio_api *api_struct = tail_alloc(sizeof(*api_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_api, api_struct);
 
 	/* With a bad fd */
 	memset(api_struct, 0, sizeof(*api_struct));
@@ -127,7 +128,7 @@
 	 * userfaultfd will cause us to stall.
 	 */
 	/* ---- COPY ---- */
-	struct uffdio_copy *copy_struct = tail_alloc(sizeof(*copy_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_copy, copy_struct);
 
 	memset(copy_struct, 0, sizeof(*copy_struct));
 	rc = ioctl(-1, UFFDIO_COPY, copy_struct);
@@ -148,7 +149,7 @@
 	       fd, area2, area1, pagesize, pagesize, rc);
 
 	/* ---- ZEROPAGE ---- */
-	struct uffdio_zeropage *zero_struct = tail_alloc(sizeof(*zero_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_zeropage, zero_struct);
 	madvise(area2, pagesize, MADV_DONTNEED);
 
 	memset(zero_struct, 0, sizeof(*zero_struct));
@@ -169,7 +170,7 @@
 	       fd, area2, pagesize, pagesize, rc);
 
 	/* ---- WAKE ---- */
-	struct uffdio_range *range_struct = tail_alloc(sizeof(*range_struct));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct uffdio_range, range_struct);
 	memset(range_struct, 0, sizeof(*range_struct));
 
 	rc = ioctl(-1, UFFDIO_WAKE, range_struct);
diff --git a/tests/ioctl_uffdio.gen.test b/tests/ioctl_uffdio.gen.test
new file mode 100755
index 0000000..80fd2a6
--- /dev/null
+++ b/tests/ioctl_uffdio.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_uffdio +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_uffdio.test b/tests/ioctl_uffdio.test
deleted file mode 100755
index fae9b55..0000000
--- a/tests/ioctl_uffdio.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2.c b/tests/ioctl_v4l2.c
index af8c341..921e7a8 100644
--- a/tests/ioctl_v4l2.c
+++ b/tests/ioctl_v4l2.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
@@ -56,6 +57,272 @@
 
 static const unsigned int magic = 0xdeadbeef;
 
+static void
+init_v4l2_format(struct v4l2_format *const f,
+		 const unsigned int buf_type)
+{
+	memset(f, -1, sizeof(*f));
+	f->type = buf_type;
+	switch (buf_type) {
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+		f->fmt.pix.width = 0x657b8160;
+		f->fmt.pix.height = 0x951c0047;
+		f->fmt.pix.pixelformat = magic;
+		f->fmt.pix.field = V4L2_FIELD_NONE;
+		f->fmt.pix.bytesperline = 0xdf20d185;
+		f->fmt.pix.sizeimage = 0x0cf7be41;
+		f->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+		unsigned int i;
+
+		f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+		f->fmt.pix_mp.width = 0x1f3b774b;
+		f->fmt.pix_mp.height = 0xab96a8d6;
+		f->fmt.pix_mp.pixelformat = magic;
+		f->fmt.pix_mp.field = V4L2_FIELD_NONE;
+		f->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
+		struct v4l2_plane_pix_format* cur_pix =
+		       f->fmt.pix_mp.plane_fmt;
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+		     i++) {
+			cur_pix[i].sizeimage = 0x1e3c531c | i;
+			cur_pix[i].bytesperline = 0xa983d721 | i;
+		}
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+		f->fmt.win.w.left = 0xe8373662;
+		f->fmt.win.w.top = 0x0336d283;
+		f->fmt.win.w.width = 0x9235fe72;
+		f->fmt.win.w.height = 0xbbd886c8;
+		f->fmt.win.field = V4L2_FIELD_ANY;
+		f->fmt.win.chromakey = 0xdb1f991f;
+		f->fmt.win.clipcount = 2;
+		f->fmt.win.clips =
+			tail_alloc(sizeof(*f->fmt.win.clips) *
+			f->fmt.win.clipcount);
+		f->fmt.win.clips[0].c.left = 0x3313d36e;
+		f->fmt.win.clips[0].c.top = 0xcdffe510;
+		f->fmt.win.clips[0].c.width = 0x2064f3a8;
+		f->fmt.win.clips[0].c.height = 0xd06d314a;
+		f->fmt.win.clips[1].c.left = 0xd8c8a83f;
+		f->fmt.win.clips[1].c.top = 0x336e87ba;
+		f->fmt.win.clips[1].c.width = 0x9e3a6fb3;
+		f->fmt.win.clips[1].c.height = 0x05617b76;
+
+		f->fmt.win.bitmap = (void*) -2UL;
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		f->fmt.win.global_alpha = 0xce;
+#endif
+		break;
+	case V4L2_BUF_TYPE_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_VBI_OUTPUT:
+		f->fmt.vbi.sampling_rate = 0x3d9b5b79;
+		f->fmt.vbi.offset = 0x055b3a09;
+		f->fmt.vbi.samples_per_line = 0xf176d436;
+		f->fmt.vbi.sample_format = magic;
+		f->fmt.vbi.start[0] = 0x9858e2eb;
+		f->fmt.vbi.start[1] = 0x8a4dc8c1;
+		f->fmt.vbi.count[0] = 0x4bcf36a3;
+		f->fmt.vbi.count[1] = 0x97dff65f;
+		f->fmt.vbi.flags = V4L2_VBI_INTERLACED;
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+		unsigned int i;
+
+		f->fmt.sliced.service_set = V4L2_SLICED_VPS;
+		f->fmt.sliced.io_size = 0xd897925a;
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+		     i++) {
+			f->fmt.sliced.service_lines[0][i] = 0xc38e | i;
+			f->fmt.sliced.service_lines[1][i] = 0x3abb | i;
+		}
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	case V4L2_BUF_TYPE_SDR_CAPTURE:
+		f->fmt.sdr.pixelformat = magic;
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		f->fmt.sdr.buffersize = 0x25afabfb;
+#endif
+		break;
+#endif
+	}
+}
+
+static void
+dprint_ioctl_v4l2(struct v4l2_format *const f,
+		  const char* request, const unsigned int buf_type,
+		  const char* buf_type_string)
+{
+	switch (buf_type) {
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.pix={width=%u, height=%u, pixelformat="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
+		       ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.pix.width, f->fmt.pix.height,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+		       f->fmt.pix.bytesperline,
+		       f->fmt.pix.sizeimage);
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE: {
+		unsigned int i;
+
+		printf("ioctl(-1, %s"
+		       ", {type=%s"
+		       ", fmt.pix_mp={width=%u, height=%u, pixelformat="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", field=V4L2_FIELD_NONE, colorspace="
+		       "V4L2_COLORSPACE_JPEG, plane_fmt=[",
+		       request,
+		       buf_type_string,
+		       f->fmt.pix_mp.width, f->fmt.pix_mp.height,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic));
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.pix_mp.plane_fmt);
+		     ++i) {
+			if (i)
+				printf(", ");
+			printf("{sizeimage=%u, bytesperline=%u}",
+			f->fmt.pix_mp.plane_fmt[i].sizeimage,
+			f->fmt.pix_mp.plane_fmt[i].bytesperline);
+		}
+		printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
+		f->fmt.pix_mp.num_planes);
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
+#endif
+	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.win={left=%d, top=%d, width=%u, height=%u"
+		       ", field=V4L2_FIELD_ANY, chromakey=%#x, clips="
+		       "[{left=%d, top=%d, width=%u, height=%u}, "
+		       "{left=%d, top=%d, width=%u, height=%u}]"
+		       ", clipcount=%u, bitmap=%p"
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		       ", global_alpha=%#x"
+#endif
+		       "}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.win.w.left, f->fmt.win.w.top,
+		       f->fmt.win.w.width, f->fmt.win.w.height,
+		       f->fmt.win.chromakey,
+		       f->fmt.win.clips[0].c.left,
+		       f->fmt.win.clips[0].c.top,
+		       f->fmt.win.clips[0].c.width,
+		       f->fmt.win.clips[0].c.height,
+		       f->fmt.win.clips[1].c.left,
+		       f->fmt.win.clips[1].c.top,
+		       f->fmt.win.clips[1].c.width,
+		       f->fmt.win.clips[1].c.height,
+		       f->fmt.win.clipcount, f->fmt.win.bitmap
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		       , f->fmt.win.global_alpha
+#endif
+		       );
+		break;
+	case V4L2_BUF_TYPE_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_VBI_OUTPUT:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.vbi={sampling_rate=%u, offset=%u"
+		       ", samples_per_line=%u, sample_format="
+		       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
+		       ", start=[%u, %u], count=[%u, %u]"
+		       ", flags=V4L2_VBI_INTERLACED}})"
+		       " = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
+		       f->fmt.vbi.samples_per_line,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
+		       f->fmt.vbi.start[0], f->fmt.vbi.start[1],
+		       f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+		break;
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
+	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+		unsigned int i, j;
+
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.sliced={service_set=V4L2_SLICED_VPS"
+		       ", io_size=%u, service_lines=[",
+		       request,
+		       buf_type_string,
+		       f->fmt.sliced.io_size);
+		for (i = 0;
+		     i < ARRAY_SIZE(f->fmt.sliced.service_lines);
+		     i++) {
+			if (i > 0)
+				printf(", ");
+			printf("[");
+			for (j = 0;
+			     j < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+			     j++) {
+				if (j > 0)
+					printf(", ");
+				printf("%#x",
+				       f->fmt.sliced.service_lines[i][j]);
+			}
+			printf("]");
+		}
+		printf("]}}) = -1 EBADF (%m)\n");
+		break;
+	}
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	case V4L2_BUF_TYPE_SDR_CAPTURE:
+		printf("ioctl(-1, %s, {type=%s"
+		       ", fmt.sdr={pixelformat=v4l2_fourcc('\\x%x', '\\x%x',"
+		       " '\\x%x', '\\x%x')"
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		       ", buffersize=%u"
+#endif
+		       "}}) = -1 EBADF (%m)\n",
+		       request,
+		       buf_type_string,
+		       cc0(magic), cc1(magic), cc2(magic), cc3(magic)
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		       , f->fmt.sdr.buffersize
+#endif
+		       );
+		break;
+#endif
+	}
+}
+#define print_ioctl_v4l2(v4l2_format, request, buf_type) do { \
+	dprint_ioctl_v4l2((v4l2_format), (request), (buf_type), #buf_type); \
+} while (0)
+
 int
 main(void )
 {
@@ -76,7 +343,7 @@
 	ioctl(-1, VIDIOC_ENUM_FMT, 0);
 	printf("ioctl(-1, VIDIOC_ENUM_FMT, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_fmtdesc *const p_fmtdesc = tail_alloc(sizeof(*p_fmtdesc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_fmtdesc, p_fmtdesc);
 	p_fmtdesc->index = magic;
 	p_fmtdesc->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	ioctl(-1, VIDIOC_ENUM_FMT, p_fmtdesc);
@@ -88,78 +355,146 @@
 	ioctl(-1, VIDIOC_G_FMT, 0);
 	printf("ioctl(-1, VIDIOC_G_FMT, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_format *const p_format = tail_alloc(sizeof(*p_format));
-	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_format, p_format);
 
+	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	ioctl(-1, VIDIOC_G_FMT, p_format);
 	printf("ioctl(-1, VIDIOC_G_FMT"
 	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE}) ="
+	       " -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY}) ="
+	       " -1 EBADF (%m)\n");
+#endif
+	p_format->type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VIDEO_OVERLAY}) ="
+	       " -1 EBADF (%m)\n");
 
+	p_format->type = V4L2_BUF_TYPE_VBI_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	p_format->type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SLICED_VBI_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	p_format->type = V4L2_BUF_TYPE_SDR_CAPTURE;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SDR_CAPTURE}) = -1 EBADF (%m)\n");
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	p_format->type = V4L2_BUF_TYPE_SDR_OUTPUT;
+	ioctl(-1, VIDIOC_G_FMT, p_format);
+	printf("ioctl(-1, VIDIOC_G_FMT"
+	       ", {type=V4L2_BUF_TYPE_SDR_OUTPUT}) = -1 EBADF (%m)\n");
+#endif
 	/* VIDIOC_S_FMT */
 	ioctl(-1, VIDIOC_S_FMT, 0);
 	printf("ioctl(-1, VIDIOC_S_FMT, NULL) = -1 EBADF (%m)\n");
 
-	p_format->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
-	p_format->fmt.pix.width = 0xdad1beaf;
-	p_format->fmt.pix.height = 0xdad2beaf;
-	p_format->fmt.pix.pixelformat = magic;
-	p_format->fmt.pix.field = V4L2_FIELD_NONE;
-	p_format->fmt.pix.bytesperline = 0xdad3beaf;
-	p_format->fmt.pix.sizeimage = 0xdad4beaf;
-	p_format->fmt.pix.colorspace = V4L2_COLORSPACE_JPEG;
-
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
 	ioctl(-1, VIDIOC_S_FMT, p_format);
-	printf("ioctl(-1, VIDIOC_S_FMT, {type=V4L2_BUF_TYPE_VIDEO_OUTPUT"
-	       ", fmt.pix={width=%u, height=%u, pixelformat="
-	       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
-	       ", field=V4L2_FIELD_NONE, bytesperline=%u, sizeimage=%u"
-	       ", colorspace=V4L2_COLORSPACE_JPEG}}) = -1 EBADF (%m)\n",
-	       p_format->fmt.pix.width, p_format->fmt.pix.height,
-	       cc0(magic), cc1(magic), cc2(magic), cc3(magic),
-	       p_format->fmt.pix.bytesperline, p_format->fmt.pix.sizeimage);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OVERLAY);
 
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT",
+			 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+	ioctl(-1, VIDIOC_S_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_S_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
 	/* VIDIOC_TRY_FMT */
 	ioctl(-1, VIDIOC_TRY_FMT, 0);
 	printf("ioctl(-1, VIDIOC_TRY_FMT, NULL) = -1 EBADF (%m)\n");
 
-#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
-	memset(p_format, -1, sizeof(*p_format));
-	p_format->type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
-	p_format->fmt.pix_mp.width = 0xdad1beaf;
-	p_format->fmt.pix_mp.height = 0xdad2beaf;
-	p_format->fmt.pix_mp.pixelformat = magic;
-	p_format->fmt.pix_mp.field = V4L2_FIELD_NONE;
-	p_format->fmt.pix_mp.colorspace = V4L2_COLORSPACE_JPEG;
-	unsigned int i;
-	for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
-		p_format->fmt.pix_mp.plane_fmt[i].sizeimage = 0xbadc0de0 | i;
-		p_format->fmt.pix_mp.plane_fmt[i].bytesperline = 0xdadbeaf0 | i;
-	}
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT);
 	ioctl(-1, VIDIOC_TRY_FMT, p_format);
-	printf("ioctl(-1, VIDIOC_TRY_FMT"
-	       ", {type=V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE"
-	       ", fmt.pix_mp={width=%u, height=%u, pixelformat="
-	       "v4l2_fourcc('\\x%x', '\\x%x', '\\x%x', '\\x%x')"
-	       ", field=V4L2_FIELD_NONE, colorspace=V4L2_COLORSPACE_JPEG"
-	       ", plane_fmt=[",
-	       p_format->fmt.pix_mp.width, p_format->fmt.pix_mp.height,
-	       cc0(magic), cc1(magic), cc2(magic), cc3(magic));
-	for (i = 0; i < ARRAY_SIZE(p_format->fmt.pix_mp.plane_fmt); ++i) {
-		if (i)
-			printf(", ");
-		printf("{sizeimage=%u, bytesperline=%u}",
-		       p_format->fmt.pix_mp.plane_fmt[i].sizeimage,
-		       p_format->fmt.pix_mp.plane_fmt[i].bytesperline);
-	}
-	printf("], num_planes=%u}}) = -1 EBADF (%m)\n",
-	       p_format->fmt.pix_mp.num_planes);
-#else
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT);
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY);
+#endif
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VIDEO_OVERLAY);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_VIDEO_OVERLAY);
+
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_VBI_CAPTURE);
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT",
+			 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_CAPTURE);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_CAPTURE);
+#endif
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	init_v4l2_format(p_format, V4L2_BUF_TYPE_SDR_OUTPUT);
+	ioctl(-1, VIDIOC_TRY_FMT, p_format);
+	print_ioctl_v4l2(p_format, "VIDIOC_TRY_FMT", V4L2_BUF_TYPE_SDR_OUTPUT);
+#endif
 	struct v4l2_format *const p_v4l2_format =
 		page + size - sizeof(*p_v4l2_format);
 	ioctl(-1, VIDIOC_TRY_FMT, p_v4l2_format);
 	printf("ioctl(-1, VIDIOC_TRY_FMT, {type=%#x /* V4L2_BUF_TYPE_??? */})"
 	       " = -1 EBADF (%m)\n", p_v4l2_format->type);
-#endif
 
 	/* VIDIOC_REQBUFS */
 	ioctl(-1, VIDIOC_REQBUFS, 0);
@@ -259,8 +594,7 @@
 	printf("ioctl(-1, VIDIOC_S_PARM, {type=%#x /* V4L2_BUF_TYPE_??? */})"
 	       " = -1 EBADF (%m)\n", p_v4l2_streamparm->type);
 
-	struct v4l2_streamparm *const p_streamparm =
-		tail_alloc(sizeof(*p_streamparm));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_streamparm, p_streamparm);
 	p_streamparm->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
 	p_streamparm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
 	p_streamparm->parm.capture.capturemode = V4L2_MODE_HIGHQUALITY;
@@ -339,6 +673,42 @@
 	       ", value=%d}) = -1 EBADF (%m)\n",
 	       p_v4l2_control->id, p_v4l2_control->value);
 
+	/* VIDIOC_G_TUNER */
+	ioctl(-1, VIDIOC_G_TUNER, 0);
+	printf("ioctl(-1, VIDIOC_G_TUNER, NULL) = -1 EBADF (%m)\n");
+
+	struct v4l2_tuner *const p_v4l2_tuner =
+		page + size - sizeof(*p_v4l2_tuner);
+	ioctl(-1, VIDIOC_G_TUNER, p_v4l2_tuner);
+	printf("ioctl(-1, VIDIOC_G_TUNER, {index=%u})"
+	       " = -1 EBADF (%m)\n", p_v4l2_tuner->index);
+
+	/* VIDIOC_S_TUNER */
+	ioctl(-1, VIDIOC_S_TUNER, 0);
+	printf("ioctl(-1, VIDIOC_S_TUNER, NULL) = -1 EBADF (%m)\n");
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_tuner, p_tuner);
+	p_tuner->index = 0x4fb6df39;
+	strcpy((char*)p_tuner->name, "cum tacent clamant");
+	p_tuner->type = V4L2_TUNER_RADIO;
+	p_tuner->capability = V4L2_TUNER_CAP_LOW;
+	p_tuner->rangelow = 0xa673bc29;
+	p_tuner->rangehigh = 0xbaf16d12;
+	p_tuner->rxsubchans = V4L2_TUNER_SUB_MONO;
+	p_tuner->audmode = V4L2_TUNER_MODE_MONO;
+	p_tuner->signal = 0x10bf92c8;
+	p_tuner->afc = 0x3bf7e18b;
+	ioctl(-1, VIDIOC_S_TUNER, p_tuner);
+	printf("ioctl(-1, VIDIOC_S_TUNER, {index=%u"
+	       ", name=\"cum tacent clamant\""
+	       ", type=V4L2_TUNER_RADIO, capability=V4L2_TUNER_CAP_LOW"
+	       ", rangelow=%u, rangehigh=%u"
+	       ", rxsubchans=V4L2_TUNER_SUB_MONO"
+	       ", audmode=V4L2_TUNER_MODE_MONO, signal=%d, afc=%d"
+	       "}) = -1 EBADF (%m)\n",
+	       p_tuner->index, p_tuner->rangelow,
+	       p_tuner->rangehigh, p_tuner->signal, p_tuner->afc);
+
 	/* VIDIOC_QUERYCTRL */
 	ioctl(-1, VIDIOC_QUERYCTRL, 0);
 	printf("ioctl(-1, VIDIOC_QUERYCTRL, NULL) = -1 EBADF (%m)\n");
@@ -355,8 +725,7 @@
 	       " = -1 EBADF (%m)\n", p_v4l2_queryctrl->id);
 # endif
 
-	struct v4l2_queryctrl *const p_queryctrl =
-		tail_alloc(sizeof(*p_queryctrl));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_queryctrl, p_queryctrl);
 	p_queryctrl->id = V4L2_CID_SATURATION;
 	ioctl(-1, VIDIOC_QUERYCTRL, p_queryctrl);
 	printf("ioctl(-1, VIDIOC_QUERYCTRL, {id=V4L2_CID_SATURATION})"
@@ -414,8 +783,7 @@
 	ioctl(-1, VIDIOC_S_EXT_CTRLS, 0);
 	printf("ioctl(-1, VIDIOC_S_EXT_CTRLS, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_ext_controls *const p_ext_controls =
-		tail_alloc(sizeof(*p_ext_controls));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_ext_controls, p_ext_controls);
 	p_ext_controls->ctrl_class = V4L2_CTRL_CLASS_USER;
 	p_ext_controls->count = 0;
 	p_ext_controls->controls = (void *) -2UL;
@@ -500,8 +868,7 @@
 	ioctl(-1, VIDIOC_ENUM_FRAMESIZES, 0);
 	printf("ioctl(-1, VIDIOC_ENUM_FRAMESIZES, NULL) = -1 EBADF (%m)\n");
 
-	struct v4l2_frmsizeenum *const p_frmsizeenum =
-		tail_alloc(sizeof(*p_frmsizeenum));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct v4l2_frmsizeenum, p_frmsizeenum);
 	p_frmsizeenum->index = magic;
 	p_frmsizeenum->pixel_format = fourcc(cc[0], cc[1], cc[2], cc[3]);
 
diff --git a/tests/ioctl_v4l2.gen.test b/tests/ioctl_v4l2.gen.test
new file mode 100755
index 0000000..cbd36ba
--- /dev/null
+++ b/tests/ioctl_v4l2.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioctl_v4l2 +ioctl.test); do not edit.
+. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioctl_v4l2.test b/tests/ioctl_v4l2.test
deleted file mode 100755
index a092a3c..0000000
--- a/tests/ioctl_v4l2.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check basic VIDIOC_* ioctl decoding.
-
-. "${srcdir=.}/ioctl.test"
diff --git a/tests/ioperm.gen.test b/tests/ioperm.gen.test
new file mode 100755
index 0000000..154d60a
--- /dev/null
+++ b/tests/ioperm.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioperm -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/ioperm.test b/tests/ioperm.test
deleted file mode 100755
index 8c1c1cc..0000000
--- a/tests/ioperm.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ioperm syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/iopl.gen.test b/tests/iopl.gen.test
new file mode 100755
index 0000000..3d9704c
--- /dev/null
+++ b/tests/iopl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (iopl -a8); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8
diff --git a/tests/iopl.test b/tests/iopl.test
deleted file mode 100755
index d0b5b11..0000000
--- a/tests/iopl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check iopl syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8
diff --git a/tests/ioprio.gen.test b/tests/ioprio.gen.test
new file mode 100755
index 0000000..f43f78e
--- /dev/null
+++ b/tests/ioprio.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ioprio -a18 -e trace=ioprio_get,ioprio_set); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests/ioprio.test b/tests/ioprio.test
deleted file mode 100755
index e79310b..0000000
--- a/tests/ioprio.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check iprio_get and iprio_set syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18 -e trace=ioprio_get,ioprio_set
diff --git a/tests/ip_mreq.c b/tests/ip_mreq.c
index fa0c504..4bcda09 100644
--- a/tests/ip_mreq.c
+++ b/tests/ip_mreq.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -44,8 +45,8 @@
 	static const char multi6addr[] = "ff01::c";
 	static const char interface[] = "127.0.0.1";
 
-	struct ip_mreq *const m4 = tail_alloc(sizeof(*m4));
-	struct ipv6_mreq *const m6 = tail_alloc(sizeof(*m6));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ip_mreq, m4);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ipv6_mreq, m6);
 	unsigned int i;
 	int rc;
 
diff --git a/tests/ip_mreq.gen.test b/tests/ip_mreq.gen.test
new file mode 100755
index 0000000..990387a
--- /dev/null
+++ b/tests/ip_mreq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ip_mreq -e trace=setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=setsockopt
diff --git a/tests/ip_mreq.test b/tests/ip_mreq.test
deleted file mode 100755
index d0a9e0f..0000000
--- a/tests/ip_mreq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check {IP,IPV6}_{ADD,DROP}_MEMBERSHIP setsockopt decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setsockopt
diff --git a/tests/ipc.gen.test b/tests/ipc.gen.test
new file mode 100755
index 0000000..5ed1f0d
--- /dev/null
+++ b/tests/ipc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/ipc.sh b/tests/ipc.sh
index 752d4bb..5943c1a 100644
--- a/tests/ipc.sh
+++ b/tests/ipc.sh
@@ -5,9 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -eipc $args > "$OUT"
-match_grep "$LOG" "$OUT"
-
-rm -f "$OUT"
+run_strace -eipc $args > "$EXP"
+match_grep "$LOG" "$EXP"
 
 exit 0
diff --git a/tests/ipc.test b/tests/ipc.test
deleted file mode 100755
index aa33fa6..0000000
--- a/tests/ipc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/ipc_msg.gen.test b/tests/ipc_msg.gen.test
new file mode 100755
index 0000000..f4fec80
--- /dev/null
+++ b/tests/ipc_msg.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_msg +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_msg.test b/tests/ipc_msg.test
deleted file mode 100755
index 177495b..0000000
--- a/tests/ipc_msg.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc msgget/msgctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_sem.c b/tests/ipc_sem.c
index 8f6382c..0b730c1 100644
--- a/tests/ipc_sem.c
+++ b/tests/ipc_sem.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Andreas Schwab <schwab@suse.de>
  * 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
diff --git a/tests/ipc_sem.gen.test b/tests/ipc_sem.gen.test
new file mode 100755
index 0000000..54159a6
--- /dev/null
+++ b/tests/ipc_sem.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_sem +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_sem.test b/tests/ipc_sem.test
deleted file mode 100755
index cc93d07..0000000
--- a/tests/ipc_sem.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc semget/semctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_shm.gen.test b/tests/ipc_shm.gen.test
new file mode 100755
index 0000000..505eaba
--- /dev/null
+++ b/tests/ipc_shm.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ipc_shm +ipc.sh); do not edit.
+. "${srcdir=.}/ipc.sh"
diff --git a/tests/ipc_shm.test b/tests/ipc_shm.test
deleted file mode 100755
index a67ea29..0000000
--- a/tests/ipc_shm.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ipc shmget/shmctl syscalls
-
-. "${srcdir=.}/ipc.sh"
diff --git a/tests/kcmp.gen.test b/tests/kcmp.gen.test
new file mode 100755
index 0000000..da79d7c
--- /dev/null
+++ b/tests/kcmp.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/kcmp.test b/tests/kcmp.test
deleted file mode 100755
index d022aeb..0000000
--- a/tests/kcmp.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kcmp syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/kexec_file_load.c b/tests/kexec_file_load.c
index be90a37..c939e4f 100644
--- a/tests/kexec_file_load.c
+++ b/tests/kexec_file_load.c
@@ -2,6 +2,7 @@
  * Check decoding of kexec_file_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests/kexec_file_load.gen.test b/tests/kexec_file_load.gen.test
new file mode 100755
index 0000000..aefaab3
--- /dev/null
+++ b/tests/kexec_file_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/kexec_file_load.test b/tests/kexec_file_load.test
deleted file mode 100755
index c95e123..0000000
--- a/tests/kexec_file_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kexec_file_load syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
diff --git a/tests/kexec_load.c b/tests/kexec_load.c
index 330238d..2a6b441 100644
--- a/tests/kexec_load.c
+++ b/tests/kexec_load.c
@@ -2,6 +2,7 @@
  * Check decoding of kexec_load syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,8 +63,7 @@
 	};
 
 	static const kernel_ulong_t bogus_zero =
-		sizeof(long) < sizeof(kernel_long_t) ?
-			(kernel_ulong_t) 0xffffffff00000000ULL : 0;
+		sizeof(long) < sizeof(kernel_long_t) ? F8ILL_KULONG_MASK : 0;
 	static const kernel_ulong_t bogus_entry =
 		(kernel_ulong_t) 0xdeadca57badda7a1ULL;
 	static const kernel_ulong_t bogus_nsegs =
diff --git a/tests/kexec_load.gen.test b/tests/kexec_load.gen.test
new file mode 100755
index 0000000..0af9527
--- /dev/null
+++ b/tests/kexec_load.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/kexec_load.test b/tests/kexec_load.test
deleted file mode 100755
index 4b1511e..0000000
--- a/tests/kexec_load.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kexec_load syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s9
diff --git a/tests/keyctl.gen.test b/tests/keyctl.gen.test
new file mode 100755
index 0000000..82afad9
--- /dev/null
+++ b/tests/keyctl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (keyctl -a31 -s10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a31 -s10
diff --git a/tests/keyctl.test b/tests/keyctl.test
deleted file mode 100755
index 875a82d..0000000
--- a/tests/keyctl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of keyctl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31 -s10
diff --git a/tests/kill.gen.test b/tests/kill.gen.test
new file mode 100755
index 0000000..08a004e
--- /dev/null
+++ b/tests/kill.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kill -a12 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -esignal=none
diff --git a/tests/kill.test b/tests/kill.test
deleted file mode 100755
index 7a3a51a..0000000
--- a/tests/kill.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of kill syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -esignal=none
diff --git a/tests/ksysent.c b/tests/ksysent.c
index 8cac93c..f598664 100644
--- a/tests/ksysent.c
+++ b/tests/ksysent.c
@@ -2,6 +2,7 @@
  * Validate syscallent.h file.
  *
  * 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
@@ -40,6 +41,13 @@
 #define TP 0
 #define TS 0
 #define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests/lchown.gen.test b/tests/lchown.gen.test
new file mode 100755
index 0000000..b31e29d
--- /dev/null
+++ b/tests/lchown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown -a30); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30
diff --git a/tests/lchown.test b/tests/lchown.test
deleted file mode 100755
index ceeaa85..0000000
--- a/tests/lchown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30
diff --git a/tests/lchown32.gen.test b/tests/lchown32.gen.test
new file mode 100755
index 0000000..83be4bc
--- /dev/null
+++ b/tests/lchown32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lchown32 -a32); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32
diff --git a/tests/lchown32.test b/tests/lchown32.test
deleted file mode 100755
index 6ee1ac9..0000000
--- a/tests/lchown32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check lchown32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32
diff --git a/tests/link.gen.test b/tests/link.gen.test
new file mode 100755
index 0000000..b6db34d
--- /dev/null
+++ b/tests/link.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (link ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/link.test b/tests/link.test
deleted file mode 100755
index cfa2b0c..0000000
--- a/tests/link.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check link syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/linkat.gen.test b/tests/linkat.gen.test
new file mode 100755
index 0000000..54b12b9
--- /dev/null
+++ b/tests/linkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (linkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/linkat.test b/tests/linkat.test
deleted file mode 100755
index 5627de7..0000000
--- a/tests/linkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check linkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/llseek.test b/tests/llseek.test
index cf1607e..8dcd65d 100755
--- a/tests/llseek.test
+++ b/tests/llseek.test
@@ -9,7 +9,3 @@
 run_strace -e_llseek $args > "$EXP"
 grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/lookup_dcookie.gen.test b/tests/lookup_dcookie.gen.test
new file mode 100755
index 0000000..6357e19
--- /dev/null
+++ b/tests/lookup_dcookie.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/lookup_dcookie.test b/tests/lookup_dcookie.test
deleted file mode 100755
index 47e1c2d..0000000
--- a/tests/lookup_dcookie.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of lookup_cookie syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/lseek.test b/tests/lseek.test
index f96a91d..5b20a7f 100755
--- a/tests/lseek.test
+++ b/tests/lseek.test
@@ -9,7 +9,3 @@
 run_strace -a30 -elseek $args > "$EXP"
 grep -v '^lseek([0-9]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/lstat.c b/tests/lstat.c
index 3754f76..8441bf8 100644
--- a/tests/lstat.c
+++ b/tests/lstat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/lstat.gen.test b/tests/lstat.gen.test
new file mode 100755
index 0000000..7231c49
--- /dev/null
+++ b/tests/lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/lstat.test b/tests/lstat.test
deleted file mode 100755
index f513bb4..0000000
--- a/tests/lstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/lstat64.c b/tests/lstat64.c
index da06609..500b60f 100644
--- a/tests/lstat64.c
+++ b/tests/lstat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/lstat64.gen.test b/tests/lstat64.gen.test
new file mode 100755
index 0000000..124cce4
--- /dev/null
+++ b/tests/lstat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (lstat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/lstat64.test b/tests/lstat64.test
deleted file mode 100755
index fcafe79..0000000
--- a/tests/lstat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check lstat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/lstatx.c b/tests/lstatx.c
index cdd1124..8049bea 100644
--- a/tests/lstatx.c
+++ b/tests/lstatx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/tests/madvise.c b/tests/madvise.c
new file mode 100644
index 0000000..bf9cd78
--- /dev/null
+++ b/tests/madvise.c
@@ -0,0 +1,79 @@
+/*
+ * 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.
+ */
+
+#include "tests.h"
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <asm/unistd.h>
+
+static const char *errstr;
+
+static long
+k_madvise(const kernel_ulong_t addr,
+	  const kernel_ulong_t length,
+	  const kernel_ulong_t advice)
+{
+	long rc = syscall(__NR_madvise, addr, length, advice);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	const unsigned long length = get_page_size();
+	void *const addr = tail_alloc(length);
+	long rc;
+
+	rc = madvise(addr, length, MADV_NORMAL);
+	printf("madvise(%p, %lu, MADV_NORMAL) = %s\n",
+	       addr, length, sprintrc(rc));
+
+	static const kernel_ulong_t advice =
+		(kernel_ulong_t) 0xfacefeed00000000ULL | MADV_RANDOM;
+	rc = k_madvise((uintptr_t) addr, length, advice);
+	printf("madvise(%p, %lu, MADV_RANDOM) = %s\n",
+	       addr, length, sprintrc(rc));
+
+	static const kernel_ulong_t bogus_length =
+		(kernel_ulong_t) 0xfffffffffffffaceULL;
+	rc = k_madvise(0, bogus_length, MADV_SEQUENTIAL);
+	printf("madvise(NULL, %llu, MADV_SEQUENTIAL) = %s\n",
+	       (unsigned long long) bogus_length, sprintrc(rc));
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		rc = k_madvise(f8ill_ptr_to_kulong(addr), length, MADV_NORMAL);
+		printf("madvise(%#llx, %lu, MADV_NORMAL) = %s\n",
+		       (unsigned long long) f8ill_ptr_to_kulong(addr),
+		       length, sprintrc(rc));
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests/madvise.gen.test b/tests/madvise.gen.test
new file mode 100755
index 0000000..bd36dad
--- /dev/null
+++ b/tests/madvise.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (madvise -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/mbind.gen.test b/tests/mbind.gen.test
new file mode 100755
index 0000000..a0d144d
--- /dev/null
+++ b/tests/mbind.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mbind ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/mbind.test b/tests/mbind.test
deleted file mode 100755
index 2a07cac..0000000
--- a/tests/mbind.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mbind syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/membarrier.gen.test b/tests/membarrier.gen.test
new file mode 100755
index 0000000..7a6ea10
--- /dev/null
+++ b/tests/membarrier.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (membarrier -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/membarrier.test b/tests/membarrier.test
deleted file mode 100755
index ad1f713..0000000
--- a/tests/membarrier.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check membarrier syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/memfd_create.gen.test b/tests/memfd_create.gen.test
new file mode 100755
index 0000000..11762be
--- /dev/null
+++ b/tests/memfd_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (memfd_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/memfd_create.test b/tests/memfd_create.test
deleted file mode 100755
index 4361dae..0000000
--- a/tests/memfd_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of memfd_create syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/migrate_pages.gen.test b/tests/migrate_pages.gen.test
new file mode 100755
index 0000000..20b7cad
--- /dev/null
+++ b/tests/migrate_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/migrate_pages.test b/tests/migrate_pages.test
deleted file mode 100755
index fad53b7..0000000
--- a/tests/migrate_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check migrate_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
diff --git a/tests/mincore.gen.test b/tests/mincore.gen.test
new file mode 100755
index 0000000..dc40726
--- /dev/null
+++ b/tests/mincore.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mincore -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/mincore.test b/tests/mincore.test
deleted file mode 100755
index 6af9f49..0000000
--- a/tests/mincore.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mincore syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/mkdir.gen.test b/tests/mkdir.gen.test
new file mode 100755
index 0000000..80b4995
--- /dev/null
+++ b/tests/mkdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdir -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/mkdir.test b/tests/mkdir.test
deleted file mode 100755
index 38ed692..0000000
--- a/tests/mkdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/mkdirat.gen.test b/tests/mkdirat.gen.test
new file mode 100755
index 0000000..0f3fdae
--- /dev/null
+++ b/tests/mkdirat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mkdirat -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/mkdirat.test b/tests/mkdirat.test
deleted file mode 100755
index 0fcb841..0000000
--- a/tests/mkdirat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mkdirat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/mknod.c b/tests/mknod.c
index 4cc1c5c..b387149 100644
--- a/tests/mknod.c
+++ b/tests/mknod.c
@@ -8,7 +8,7 @@
 # include <sys/sysmacros.h>
 # include <unistd.h>
 
-static const char sample[] = "mknod";
+static const char *sample;
 
 static long
 call_mknod(unsigned short mode, unsigned long dev)
@@ -18,9 +18,10 @@
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
 	unsigned long dev = (unsigned long) 0xdeadbeefbadc0dedULL;
+	sample = av[0];
 
 	long rc = call_mknod(0, dev);
 	printf("mknod(\"%s\", 000) = %ld %s (%m)\n",
diff --git a/tests/mknod.gen.test b/tests/mknod.gen.test
new file mode 100755
index 0000000..870c88b
--- /dev/null
+++ b/tests/mknod.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknod -a18); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18
diff --git a/tests/mknod.test b/tests/mknod.test
deleted file mode 100755
index 195f1e3..0000000
--- a/tests/mknod.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknod syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a18
diff --git a/tests/mknodat.gen.test b/tests/mknodat.gen.test
new file mode 100755
index 0000000..747fcbe
--- /dev/null
+++ b/tests/mknodat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mknodat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/mknodat.test b/tests/mknodat.test
deleted file mode 100755
index 1701a36..0000000
--- a/tests/mknodat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mknodat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/mlock.gen.test b/tests/mlock.gen.test
new file mode 100755
index 0000000..2c8ea5e
--- /dev/null
+++ b/tests/mlock.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock -a20 -e trace=mlock,munlock); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=mlock,munlock
diff --git a/tests/mlock.test b/tests/mlock.test
deleted file mode 100755
index 9a73a30..0000000
--- a/tests/mlock.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock and munlock syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mlock,munlock -a20
diff --git a/tests/mlock2.gen.test b/tests/mlock2.gen.test
new file mode 100755
index 0000000..aa1818e
--- /dev/null
+++ b/tests/mlock2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlock2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/mlock2.test b/tests/mlock2.test
deleted file mode 100755
index bc412e9..0000000
--- a/tests/mlock2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mlock2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/mlockall.gen.test b/tests/mlockall.gen.test
new file mode 100755
index 0000000..06d8ca4
--- /dev/null
+++ b/tests/mlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mlockall -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/mlockall.test b/tests/mlockall.test
deleted file mode 100755
index d7a6182..0000000
--- a/tests/mlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mlockall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/mmap.c b/tests/mmap.c
index f726f63..0321bf5 100644
--- a/tests/mmap.c
+++ b/tests/mmap.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -89,10 +90,6 @@
 	printf("mremap(%p, %lu, %lu, MREMAP_MAYMOVE|MREMAP_FIXED"
 	       ", %p) = %p\n", addr, length2, length3, addr + length2, p);
 
-	if (madvise(p, length3, MADV_NORMAL))
-		perror_msg_and_fail("madvise");
-	printf("madvise(%p, %lu, MADV_NORMAL) = 0\n", p, length3);
-
 	if (munmap(p, length3))
 		perror_msg_and_fail("munmap");
 	printf("munmap(%p, %lu) = 0\n", p, length3);
diff --git a/tests/mmap.test b/tests/mmap.test
index 0b87114..7ba664e 100755
--- a/tests/mmap.test
+++ b/tests/mmap.test
@@ -4,6 +4,7 @@
 # syscalls decoding.
 #
 # 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
@@ -50,9 +51,7 @@
 
 syscall=$mmap,madvise,mlockall,mprotect,mremap,msync,munmap
 
-run_prog "./$NAME" $mmap > /dev/null
+run_prog "../$NAME" $mmap > /dev/null
 run_strace -a20 -e$syscall $args > "$EXP"
 sed -n "/^$mmap(NULL, 0, PROT_NONE,/,\$p" < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/mmap64.gen.test b/tests/mmap64.gen.test
new file mode 100755
index 0000000..5e747b0
--- /dev/null
+++ b/tests/mmap64.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmap64 +mmap.test); do not edit.
+. "${srcdir=.}/mmap.test"
diff --git a/tests/mmap64.test b/tests/mmap64.test
deleted file mode 100755
index 51f1896..0000000
--- a/tests/mmap64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check mmap/mprotect/munmap syscalls decoding.
-# Target executable was compiled with -D_FILE_OFFSET_BITS=64.
-
-. "${srcdir=.}/mmap.test"
diff --git a/tests/mmsg-silent.gen.test b/tests/mmsg-silent.gen.test
new file mode 100755
index 0000000..47863f2
--- /dev/null
+++ b/tests/mmsg-silent.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg-silent -a25 -e verbose=none -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg-silent.test b/tests/mmsg-silent.test
deleted file mode 100755
index 775e0ad..0000000
--- a/tests/mmsg-silent.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check silent decoding of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e verbose=none -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg.gen.test b/tests/mmsg.gen.test
new file mode 100755
index 0000000..4d90e3d
--- /dev/null
+++ b/tests/mmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e read=0 -e write=1 -e trace=recvmmsg,sendmmsg
diff --git a/tests/mmsg.test b/tests/mmsg.test
deleted file mode 100755
index a8148ba..0000000
--- a/tests/mmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check how iovecs in struct mmsghdr are decoded.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=recvmmsg,sendmmsg -e read=0 -e write=1
diff --git a/tests/mmsg_name-v.gen.test b/tests/mmsg_name-v.gen.test
new file mode 100755
index 0000000..e34946f
--- /dev/null
+++ b/tests/mmsg_name-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name-v -v -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg_name-v.test b/tests/mmsg_name-v.test
deleted file mode 100755
index ab8dfba..0000000
--- a/tests/mmsg_name-v.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg_name.gen.test b/tests/mmsg_name.gen.test
new file mode 100755
index 0000000..ac54294
--- /dev/null
+++ b/tests/mmsg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mmsg_name -a25 -e trace=sendmmsg,recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mmsg_name.test b/tests/mmsg_name.test
deleted file mode 100755
index e18c972..0000000
--- a/tests/mmsg_name.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check decoding of msg_name* fields of struct msghdr array argument
-# of sendmmsg and recvmmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=sendmmsg,recvmmsg
diff --git a/tests/mount.gen.test b/tests/mount.gen.test
new file mode 100755
index 0000000..0b124bc
--- /dev/null
+++ b/tests/mount.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mount ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/mount.test b/tests/mount.test
deleted file mode 100755
index 40fdca9..0000000
--- a/tests/mount.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mount syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/move_pages.c b/tests/move_pages.c
index f4ccafa..5ec25aa 100644
--- a/tests/move_pages.c
+++ b/tests/move_pages.c
@@ -2,6 +2,7 @@
  * Check decoding of move_pages syscall.
  *
  * 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
@@ -126,7 +127,7 @@
 			printf("%d", status[i]);
 		} else {
 			errno = -status[i];
-			printf("%s", errno2name());
+			printf("-%s", errno2name());
 		}
 	}
 	printf("]");
@@ -190,9 +191,9 @@
 	const unsigned page_size = get_page_size();
 	const void *const page = tail_alloc(page_size);
 	const void *const efault = page + page_size;
-	const void **pages = tail_alloc(sizeof(*pages));
-	int *nodes = tail_alloc(sizeof(*nodes));
-	int *status = tail_alloc(sizeof(*status));
+	TAIL_ALLOC_OBJECT_VAR_PTR(const void *, pages);
+	TAIL_ALLOC_OBJECT_VAR_PTR(int, nodes);
+	TAIL_ALLOC_OBJECT_VAR_PTR(int, status);
 
 	print_stat_pages(pid, 0, pages, status);
 	print_move_pages(pid, 0, 0, pages, nodes, status);
diff --git a/tests/move_pages.gen.test b/tests/move_pages.gen.test
new file mode 100755
index 0000000..2f060fa
--- /dev/null
+++ b/tests/move_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/move_pages.test b/tests/move_pages.test
deleted file mode 100755
index f957717..0000000
--- a/tests/move_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of move_pages syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3
diff --git a/tests/mq.c b/tests/mq.c
index 9c2ffc8..ee2d059 100644
--- a/tests/mq.c
+++ b/tests/mq.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
@@ -37,17 +38,19 @@
 # include <unistd.h>
 # include <sys/stat.h>
 
-# define NAME "strace-mq.test"
-
 int
 main (void)
 {
 	struct mq_attr attr;
 	(void) close(0);
 
-	if (mq_open("/" NAME, O_CREAT, 0700, NULL))
+	char *name;
+	if (asprintf(&name, "/strace-mq-%u.sample", getpid()) < 0)
+		perror_msg_and_fail("asprintf");
+
+	if (mq_open(name, O_CREAT, 0700, NULL))
 		perror_msg_and_skip("mq_open");
-	printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", NAME);
+	printf("mq_open(\"%s\", O_RDONLY|O_CREAT, 0700, NULL) = 0\n", name + 1);
 
 	if (mq_getattr(0, &attr))
 		perror_msg_and_skip("mq_getattr");
@@ -63,9 +66,9 @@
 	       (long long) attr.mq_maxmsg,
 	       (long long) attr.mq_msgsize);
 
-	if (mq_unlink("/" NAME))
+	if (mq_unlink(name))
 		perror_msg_and_skip("mq_unlink");
-	printf("mq_unlink(\"%s\") = 0\n", NAME);
+	printf("mq_unlink(\"%s\") = 0\n", name + 1);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/mq.gen.test b/tests/mq.gen.test
new file mode 100755
index 0000000..8be520d
--- /dev/null
+++ b/tests/mq.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq -a32 -e trace=mq_getsetattr,mq_open,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests/mq.test b/tests/mq.test
deleted file mode 100755
index 746b07b..0000000
--- a/tests/mq.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_getsetattr, and mq_unlink syscalls.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a28 -e trace=mq_getsetattr,mq_open,mq_unlink
diff --git a/tests/mq_sendrecv-read.gen.test b/tests/mq_sendrecv-read.gen.test
new file mode 100755
index 0000000..278e9b7
--- /dev/null
+++ b/tests/mq_sendrecv-read.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-read -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests/mq_sendrecv-read.test b/tests/mq_sendrecv-read.test
deleted file mode 100755
index eb4ad75..0000000
--- a/tests/mq_sendrecv-read.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -eread=0 -a14
diff --git a/tests/mq_sendrecv-write.gen.test b/tests/mq_sendrecv-write.gen.test
new file mode 100755
index 0000000..5963eb4
--- /dev/null
+++ b/tests/mq_sendrecv-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv-write -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -ewrite=0 -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests/mq_sendrecv-write.test b/tests/mq_sendrecv-write.test
deleted file mode 100755
index 38277ec..0000000
--- a/tests/mq_sendrecv-write.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -ewrite=0 -a14
diff --git a/tests/mq_sendrecv.c b/tests/mq_sendrecv.c
index c151542..e3ad0d5 100644
--- a/tests/mq_sendrecv.c
+++ b/tests/mq_sendrecv.c
@@ -3,6 +3,7 @@
  * mq_unlink syscalls.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -49,10 +50,6 @@
 
 # include "sigevent.h"
 
-# ifndef MQ_NAME
-#  define MQ_NAME "mq_sendrecv.sample"
-# endif
-
 # ifndef DUMPIO_READ
 #  define DUMPIO_READ 0
 # endif
@@ -61,6 +58,7 @@
 #  define DUMPIO_WRITE 0
 # endif
 
+static char *mq_name;
 
 enum {
 	NUM_ATTRS = 8,
@@ -124,8 +122,8 @@
 {
 	long rc;
 
-	rc = syscall(__NR_mq_unlink, MQ_NAME);
-	printf("mq_unlink(\"" MQ_NAME "\") = %s\n", sprintrc(rc));
+	rc = syscall(__NR_mq_unlink, mq_name);
+	printf("mq_unlink(\"%s\") = %s\n", mq_name, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 }
@@ -147,9 +145,9 @@
 		if (cropped)
 			printf("...");
 		errno = saved_errno;
-		printf(", %u, 42, {tv_sec=%jd, tv_nsec=%jd}) = %s\n", msg_size,
-		       (intmax_t) tmout->tv_sec, (intmax_t) tmout->tv_nsec,
-		       sprintrc(rc));
+		printf(", %u, 42, {tv_sec=%lld, tv_nsec=%llu}) = %s\n", msg_size,
+		       (long long) tmout->tv_sec,
+		       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 		errno = saved_errno;
 
 		if (rc == -1) {
@@ -185,9 +183,9 @@
 			printf("%p", msg);
 		}
 		errno = saved_errno;
-		printf(", %u, [42], {tv_sec=%jd, tv_nsec=%jd}) = %s\n", MSG_SIZE,
-		       (intmax_t) tmout->tv_sec,
-		       (intmax_t) tmout->tv_nsec, sprintrc(rc));
+		printf(", %u, [42], {tv_sec=%lld, tv_nsec=%llu}) = %s\n", MSG_SIZE,
+		       (long long) tmout->tv_sec,
+		       zero_extend_signed_to_ull(tmout->tv_nsec), sprintrc(rc));
 		errno = saved_errno;
 
 		if (rc == -1) {
@@ -242,7 +240,7 @@
 	kernel_long_t *bogus_attrs = tail_alloc(sizeof(*bogus_attrs) *
 		NUM_ATTRS);
 	char *msg = tail_alloc(MSG_SIZE);
-	unsigned *bogus_prio_ptr = tail_alloc(sizeof(*bogus_prio_ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned, bogus_prio_ptr);
 	struct timespec *bogus_tmout = tail_memdup(&bogus_tmout_data,
 		sizeof(*bogus_tmout));
 	struct timespec *future_tmout = tail_memdup(&future_tmout_data,
@@ -278,8 +276,8 @@
 	/* Valid attributes structure */
 	rc = syscall(__NR_mq_open, msg, O_CREAT | bogus_oflags, bogus_mode,
 		     bogus_attrs);
-	printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, {mq_flags=%#llx, "
-	       "mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}) = %s\n",
+	printf("mq_open(%p, O_ACCMODE|O_CREAT, %#o, {mq_flags=%#llx"
+	       ", mq_maxmsg=%lld, mq_msgsize=%lld, mq_curmsgs=%lld}) = %s\n",
 	       msg, (unsigned short) bogus_mode,
 	       (unsigned long long) (kernel_ulong_t) bogus_attrs[0],
 	       (long long) bogus_attrs[1],
@@ -304,12 +302,12 @@
 	/* Partially invalid message (memory only partially available) */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
 		     MSG_SIZE, bogus_prio, bogus_tmout);
-	printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = "
-	       "%s\n",
+	printf("mq_timedsend(%d, %p, %llu, %u, {tv_sec=%lld, tv_nsec=%llu})"
+	       " = %s\n",
 	       (int) bogus_fd, msg + MSG_SIZE - MSG_CUT,
 	       (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       sprintrc(rc));
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
 
 	/* Fully valid message, uncut */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_SIZE - MSG_CUT,
@@ -317,10 +315,10 @@
 	errstr = sprintrc(rc);
 	printf("mq_timedsend(%d, ", (int) bogus_fd);
 	printstr(MSG_START + MSG_SIZE - MSG_CUT, MSG_CUT);
-	printf(", %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf(", %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 	       (unsigned long long) MSG_CUT, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       errstr);
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
 
 	/* Partially invalid message, cut at maxstrlen */
 	rc = syscall(__NR_mq_timedsend, bogus_fd, msg + MSG_CUT, MSG_SIZE,
@@ -328,10 +326,10 @@
 	errstr = sprintrc(rc);
 	printf("mq_timedsend(%d, ", (int) bogus_fd);
 	printstr(MSG_START + MSG_CUT, MSG_MAX_UNCUT);
-	printf("..., %llu, %u, {tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf("..., %llu, %u, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 	       (unsigned long long) MSG_SIZE, (unsigned) bogus_prio,
-	       (intmax_t) bogus_tmout->tv_sec, (intmax_t) bogus_tmout->tv_nsec,
-	       errstr);
+	       (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), errstr);
 
 
 	/* mq_timedreceive */
@@ -351,11 +349,11 @@
 	/* Invalid fd, valid msg pointer */
 	rc = syscall(__NR_mq_timedreceive, bogus_fd, msg, bogus_size,
 		     bogus_prio_ptr, bogus_tmout);
-	printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%jd, tv_nsec=%jd}) = "
-	       "%s\n",
+	printf("mq_timedreceive(%d, %p, %llu, %p, {tv_sec=%lld, tv_nsec=%llu}) "
+	       "= %s\n",
 	       (int) bogus_fd, msg, (unsigned long long) bogus_size,
-	       bogus_prio_ptr, (intmax_t) bogus_tmout->tv_sec,
-	       (intmax_t) bogus_tmout->tv_nsec, sprintrc(rc));
+	       bogus_prio_ptr, (long long) bogus_tmout->tv_sec,
+	       zero_extend_signed_to_ull(bogus_tmout->tv_nsec), sprintrc(rc));
 
 
 	/* mq_notify */
@@ -381,8 +379,8 @@
 	/* SIGEV_NONE */
 	bogus_sev->sigev_notify = SIGEV_NONE;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=%u, sigev_notify=SIGEV_NONE}) = %s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=%u, sigev_notify=SIGEV_NONE}) = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr,
 	       bogus_sev->sigev_signo, sprintrc(rc));
@@ -391,8 +389,8 @@
 	bogus_sev->sigev_notify = SIGEV_SIGNAL;
 	bogus_sev->sigev_signo = SIGALRM;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}) = %s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=SIGALRM, sigev_notify=SIGEV_SIGNAL}) = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr, sprintrc(rc));
 
@@ -403,10 +401,10 @@
 	bogus_sev->sigev_un.sigev_thread.attribute =
 		(unsigned long) 0xcafef00dfacefeedULL;
 	rc = syscall(__NR_mq_notify, bogus_fd, bogus_sev);
-	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}, "
-	       "sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD, "
-	       "sigev_notify_function=%#lx, sigev_notify_attributes=%#lx}) = "
-	       "%s\n",
+	printf("mq_notify(%d, {sigev_value={sival_int=%d, sival_ptr=%#lx}"
+	       ", sigev_signo=SIGALRM, sigev_notify=SIGEV_THREAD"
+	       ", sigev_notify_function=%#lx, sigev_notify_attributes=%#lx})"
+	       " = %s\n",
 	       (int) bogus_fd, bogus_sev->sigev_value.sival_int,
 	       bogus_sev->sigev_value.sival_ptr,
 	       bogus_sev->sigev_un.sigev_thread.function,
@@ -430,12 +428,15 @@
 
 	/* Sending and receiving test */
 
+	if (asprintf(&mq_name, "strace-mq_sendrecv-%u.sample", getpid()) < 0)
+		perror_msg_and_fail("asprintf");
+
 # if DUMPIO_READ || DUMPIO_WRITE
 	close(0);
 # endif
 	bogus_attrs[1] = 2;
 	bogus_attrs[2] = MSG_SIZE;
-	fd = rc = syscall(__NR_mq_open, MQ_NAME,
+	fd = rc = syscall(__NR_mq_open, mq_name,
 		          O_CREAT|O_RDWR|O_NONBLOCK, S_IRWXU, bogus_attrs);
 	errstr = sprintrc(rc);
 	if (rc < 0)
@@ -448,11 +449,11 @@
 # endif
 	fill_memory_ex(bogus_attrs, sizeof(*bogus_attrs) * NUM_ATTRS,
 		       0xbb, 0x70);
-	printf("mq_open(\"" MQ_NAME "\", O_RDWR|O_CREAT|O_NONBLOCK, "
-	       "0700, {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u, "
-	       "mq_curmsgs=%lld}) = %s\n",
-	       (unsigned long long) (kernel_ulong_t) bogus_attrs[0], MSG_SIZE,
-	       (long long) bogus_attrs[3], errstr);
+	printf("mq_open(\"%s\", O_RDWR|O_CREAT|O_NONBLOCK, 0700"
+	       ", {mq_flags=%#llx, mq_maxmsg=2, mq_msgsize=%u"
+	       ", mq_curmsgs=%lld}) = %s\n",
+	       mq_name, (unsigned long long) (kernel_ulong_t) bogus_attrs[0],
+	       MSG_SIZE, (long long) bogus_attrs[3], errstr);
 
 	rc = syscall(__NR_mq_getsetattr, fd, NULL, bogus_attrs);
 	if (rc < 0)
diff --git a/tests/mq_sendrecv.gen.test b/tests/mq_sendrecv.gen.test
new file mode 100755
index 0000000..d82576f
--- /dev/null
+++ b/tests/mq_sendrecv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (mq_sendrecv -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink
diff --git a/tests/mq_sendrecv.test b/tests/mq_sendrecv.test
deleted file mode 100755
index 67f4d63..0000000
--- a/tests/mq_sendrecv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of mq_open, mq_notify, mq_timedsend, mq_timedreceive syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=mq_open,mq_notify,mq_timedsend,mq_timedreceive,mq_unlink -a14
diff --git a/tests/msg_control-v.gen.test b/tests/msg_control-v.gen.test
new file mode 100755
index 0000000..0a0de15
--- /dev/null
+++ b/tests/msg_control-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control-v -v -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests/msg_control-v.test b/tests/msg_control-v.test
deleted file mode 100755
index 41f9842..0000000
--- a/tests/msg_control-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -a21 -e trace=sendmsg
diff --git a/tests/msg_control.c b/tests/msg_control.c
index 709a307..1e64f1a 100644
--- a/tests/msg_control.c
+++ b/tests/msg_control.c
@@ -2,6 +2,7 @@
  * Check decoding of struct msghdr ancillary data.
  *
  * 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
@@ -689,7 +690,7 @@
 	int rc = sendmsg(-1, 0, 0);
 	printf("sendmsg(-1, NULL, 0) = %d %s (%m)\n", rc, errno2name());
 
-	struct msghdr *mh = tail_alloc(sizeof(*mh));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
 	memset(mh, 0, sizeof(*mh));
 	test_big_len(mh);
 
diff --git a/tests/msg_control.gen.test b/tests/msg_control.gen.test
new file mode 100755
index 0000000..446ebcb
--- /dev/null
+++ b/tests/msg_control.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_control -a21 -e trace=sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests/msg_control.test b/tests/msg_control.test
deleted file mode 100755
index 809ec7b..0000000
--- a/tests/msg_control.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr ancillary data.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21 -e trace=sendmsg
diff --git a/tests/msg_name.c b/tests/msg_name.c
index c2ddda2..9e98e4e 100644
--- a/tests/msg_name.c
+++ b/tests/msg_name.c
@@ -2,6 +2,7 @@
  * Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
  *
  * 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
@@ -47,13 +48,13 @@
 static void
 test_msg_name(const int send_fd, const int recv_fd)
 {
-	char *const recv_buf = tail_alloc(sizeof(*recv_buf));
-	struct iovec *const iov = tail_alloc(sizeof(*iov));
+	TAIL_ALLOC_OBJECT_CONST_PTR(char, recv_buf);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = recv_buf;
 	iov->iov_len = sizeof(*recv_buf);
 
-	struct sockaddr_un *const addr = tail_alloc(sizeof(*addr));
-	struct msghdr *const msg = tail_alloc(sizeof(*msg));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sockaddr_un, addr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, msg);
 	msg->msg_name = addr;
 	msg->msg_namelen = sizeof(*addr);
 	msg->msg_iov = iov;
diff --git a/tests/msg_name.gen.test b/tests/msg_name.gen.test
new file mode 100755
index 0000000..2d0ae90
--- /dev/null
+++ b/tests/msg_name.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (msg_name -a20 -e trace=recvmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests/msg_name.test b/tests/msg_name.test
deleted file mode 100755
index ac06dd5..0000000
--- a/tests/msg_name.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of struct msghdr.msg_name* arguments of recvmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=recvmsg
diff --git a/tests/munlockall.gen.test b/tests/munlockall.gen.test
new file mode 100755
index 0000000..18343cb
--- /dev/null
+++ b/tests/munlockall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (munlockall -a13); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a13
diff --git a/tests/munlockall.test b/tests/munlockall.test
deleted file mode 100755
index e25d60a..0000000
--- a/tests/munlockall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check munlockall syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests/nanosleep.c b/tests/nanosleep.c
index 9f0e626..8f9724e 100644
--- a/tests/nanosleep.c
+++ b/tests/nanosleep.c
@@ -1,5 +1,8 @@
 /*
+ * Check decoding of nanosleep syscall.
+ *
  * 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
@@ -57,40 +60,62 @@
 
 	if (nanosleep(&req.ts, NULL))
 		perror_msg_and_fail("nanosleep");
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, NULL) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, NULL) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec));
 
 	assert(nanosleep(NULL, &rem.ts) == -1);
 	printf("nanosleep(NULL, %p) = -1 EFAULT (%m)\n", &rem.ts);
 
 	if (nanosleep(&req.ts, &rem.ts))
 		perror_msg_and_fail("nanosleep");
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = 0\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = 0\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	req.ts.tv_nsec = 1000000000;
 	assert(nanosleep(&req.ts, &rem.ts) == -1);
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, %p) = -1 EINVAL (%m)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec, &rem.ts);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = 0xdeadbeefU;
+	req.ts.tv_nsec = 0xfacefeedU;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	req.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
+
+	req.ts.tv_sec = -1;
+	req.ts.tv_nsec = -1;
+	assert(nanosleep(&req.ts, &rem.ts) == -1);
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}, %p) = -1 EINVAL (%m)\n",
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec), &rem.ts);
 
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(sigprocmask(SIG_SETMASK, &set, NULL) == 0);
 
 	if (setitimer(ITIMER_REAL, &itv, NULL))
 		perror_msg_and_skip("setitimer");
-	printf("setitimer(ITIMER_REAL, {it_interval={tv_sec=%jd, tv_usec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_usec=%jd}}, NULL) = 0\n",
-	       (intmax_t) itv.it_interval.tv_sec,
-	       (intmax_t) itv.it_interval.tv_usec,
-	       (intmax_t) itv.it_value.tv_sec,
-	       (intmax_t) itv.it_value.tv_usec);
 
+	req.ts.tv_sec = 0;
 	req.ts.tv_nsec = 999999999;
 	assert(nanosleep(&req.ts, &rem.ts) == -1);
-	printf("nanosleep({tv_sec=%jd, tv_nsec=%jd}, {tv_sec=%jd, tv_nsec=%jd})"
+	printf("nanosleep({tv_sec=%lld, tv_nsec=%llu}"
+	       ", {tv_sec=%lld, tv_nsec=%llu})"
 	       " = ? ERESTART_RESTARTBLOCK (Interrupted by signal)\n",
-	       (intmax_t) req.ts.tv_sec, (intmax_t) req.ts.tv_nsec,
-	       (intmax_t) rem.ts.tv_sec, (intmax_t) rem.ts.tv_nsec);
+	       (long long) req.ts.tv_sec,
+	       zero_extend_signed_to_ull(req.ts.tv_nsec),
+	       (long long) rem.ts.tv_sec,
+	       zero_extend_signed_to_ull(rem.ts.tv_nsec));
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/nanosleep.gen.test b/tests/nanosleep.gen.test
new file mode 100755
index 0000000..ea5b19a
--- /dev/null
+++ b/tests/nanosleep.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nanosleep -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/nanosleep.test b/tests/nanosleep.test
deleted file mode 100755
index 055a8dc..0000000
--- a/tests/nanosleep.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check nanosleep and setitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=nanosleep,setitimer
diff --git a/tests/net-icmp_filter.c b/tests/net-icmp_filter.c
index f3f99f1..71e530d 100644
--- a/tests/net-icmp_filter.c
+++ b/tests/net-icmp_filter.c
@@ -2,6 +2,7 @@
  * Check decoding of ICMP_FILTER.
  *
  * 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
@@ -43,9 +44,9 @@
 	printf("setsockopt(-1, SOL_RAW, ICMP_FILTER, NULL, 0) = -1 %s (%m)\n",
 	       errno2name());
 
-	socklen_t *const plen = tail_alloc(sizeof(*plen));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
 	void *const efault = plen + 1;
-	struct icmp_filter *const f = tail_alloc(sizeof(*f));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct icmp_filter, f);
 
 	getsockopt(-1, SOL_RAW, ICMP_FILTER, f, plen);
 	printf("getsockopt(-1, SOL_RAW, ICMP_FILTER, %p, %p) = -1 %s (%m)\n",
diff --git a/tests/net-icmp_filter.gen.test b/tests/net-icmp_filter.gen.test
new file mode 100755
index 0000000..bf6c765
--- /dev/null
+++ b/tests/net-icmp_filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-icmp_filter -e trace=getsockopt,setsockopt); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests/net-icmp_filter.test b/tests/net-icmp_filter.test
deleted file mode 100755
index c05a5e6..0000000
--- a/tests/net-icmp_filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ICMP_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=getsockopt,setsockopt
diff --git a/tests/net-sockaddr.c b/tests/net-sockaddr.c
index bf37779..9dc9ecf 100644
--- a/tests/net-sockaddr.c
+++ b/tests/net-sockaddr.c
@@ -2,6 +2,7 @@
  * Check decoding of sockaddr structures
  *
  * 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
@@ -57,7 +58,7 @@
 static void
 check_un(void)
 {
-	struct sockaddr_un *un = tail_alloc(sizeof(*un));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_un, un);
 	un->sun_family = AF_UNIX;
 	memset(un->sun_path, '0', sizeof(un->sun_path));
 	unsigned int len = sizeof(*un);
@@ -133,7 +134,7 @@
 	const unsigned short h_port = 12345;
 	static const char h_addr[] = "12.34.56.78";
 
-	struct sockaddr_in *in = tail_alloc(sizeof(*in));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in, in);
 	in->sin_family = AF_INET;
 	in->sin_port = htons(h_port);
 	in->sin_addr.s_addr = inet_addr(h_addr);
@@ -207,7 +208,7 @@
 	const unsigned int h_flowinfo = 1234567890;
 	static const char h_addr[] = "12:34:56:78:90:ab:cd:ef";
 
-	struct sockaddr_in6 *in6 = tail_alloc(sizeof(*in6));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_in6, in6);
 	in6->sin6_family = AF_INET6;
 	in6->sin6_port = htons(h_port);
 	in6->sin6_flowinfo = htonl(h_flowinfo);
@@ -298,7 +299,7 @@
 static void
 check_nl(void)
 {
-	struct sockaddr_nl *nl = tail_alloc(sizeof(*nl));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_nl, nl);
 	nl->nl_family = AF_NETLINK;
 	nl->nl_pid = 1234567890;
 	nl->nl_groups = 0xfacefeed;
@@ -390,7 +391,7 @@
 check_hci(void)
 {
 	const unsigned short h_port = 12345;
-	struct sockaddr_hci *hci = tail_alloc(sizeof(*hci));
+	TAIL_ALLOC_OBJECT_VAR_PTR(struct sockaddr_hci, hci);
 	hci->hci_family = AF_BLUETOOTH;
 	hci->hci_dev = htobs(h_port);
 	hci->hci_channel = HCI_CHANNEL_RAW;
diff --git a/tests/net-sockaddr.gen.test b/tests/net-sockaddr.gen.test
new file mode 100755
index 0000000..53c8335
--- /dev/null
+++ b/tests/net-sockaddr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (net-sockaddr -a24 -e trace=connect); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=connect
diff --git a/tests/net-sockaddr.test b/tests/net-sockaddr.test
deleted file mode 100755
index cdfe536..0000000
--- a/tests/net-sockaddr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr structures.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=connect
diff --git a/tests/net-y-unix.c b/tests/net-y-unix.c
index 3efc2f6..df56ad6 100644
--- a/tests/net-y-unix.c
+++ b/tests/net-y-unix.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-y-unix strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-int
-main(int ac, const char **av)
-{
-	assert(ac == 2);
+#define TEST_SOCKET "net-y-unix.socket"
 
-	struct sockaddr_un addr = { .sun_family = AF_UNIX };
-	unsigned int sun_path_len = strlen(av[1]);
-	assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const struct sockaddr_un addr = {
+		.sun_family = AF_UNIX,
+		.sun_path = TEST_SOCKET
+	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
 
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
-	*len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	*len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
 	if (*len > sizeof(addr))
 		*len = sizeof(addr);
 
@@ -61,17 +63,18 @@
 	printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<socket:[%lu]>\n",
 	       listen_fd, listen_inode);
 
-	(void) unlink(av[1]);
+	(void) unlink(TEST_SOCKET);
 	if (bind(listen_fd, listen_sa, *len))
 		perror_msg_and_skip("bind");
 	printf("bind(%d<socket:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
-	       ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+	       ", %u) = 0\n",
+	       listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
 
 	if (listen(listen_fd, 1))
 		perror_msg_and_skip("listen");
 	printf("listen(%d<socket:[%lu]>, 1) = 0\n", listen_fd, listen_inode);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
 		perror_msg_and_fail("getsockopt");
@@ -85,7 +88,7 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -98,7 +101,7 @@
 		perror_msg_and_fail("connect");
 	printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
@@ -119,7 +122,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
-	       av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	char text[] = "text";
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -163,14 +166,14 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
-	       listen_fd, listen_inode, av[1],
+	       listen_fd, listen_inode, TEST_SOCKET,
 	       (int) sizeof(addr), (int) *len);
 
 	if (connect(connect_fd, listen_sa, *len))
 		perror_msg_and_fail("connect");
 	printf("connect(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -192,7 +195,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<socket:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
-	       connect_fd, connect_inode, av[1],
+	       connect_fd, connect_inode, TEST_SOCKET,
 	       (int) sizeof(addr), (int) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
@@ -224,7 +227,7 @@
 	assert(close(accept_fd) == 0);
 	printf("close(%d<socket:[%lu]>) = 0\n", accept_fd, accept_inode);
 
-	assert(unlink(av[1]) == 0);
+	assert(unlink(TEST_SOCKET) == 0);
 
 	assert(close(listen_fd) == 0);
 	printf("close(%d<socket:[%lu]>) = 0\n",
diff --git a/tests/net-y-unix.test b/tests/net-y-unix.test
index aec8159..fd3fd68 100755
--- a/tests/net-y-unix.test
+++ b/tests/net-y-unix.test
@@ -2,7 +2,7 @@
 #
 # Check decoding of network syscalls in -y mode.
 #
-# 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
@@ -29,18 +29,11 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -y is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
 
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog > /dev/null
 run_strace -a20 -y -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net-yy-inet.c b/tests/net-yy-inet.c
index f76f941..af1262e 100644
--- a/tests/net-yy-inet.c
+++ b/tests/net-yy-inet.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,12 +42,14 @@
 int
 main(void)
 {
+	skip_if_unavailable("/proc/self/fd/");
+
 	const struct sockaddr_in addr = {
 		.sin_family = AF_INET,
 		.sin_addr.s_addr = htonl(INADDR_LOOPBACK)
 	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 	*len = sizeof(addr);
 
 	const int listen_fd = socket(AF_INET, SOCK_STREAM, 0);
@@ -77,7 +80,7 @@
 	       ", [%u]) = 0\n",
 	       listen_fd, listen_port, listen_port, (unsigned) *len);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_TCP, TCP_MAXSEG, optval, len))
 		perror_msg_and_fail("getsockopt");
diff --git a/tests/net-yy-inet.test b/tests/net-yy-inet.test
index 2ebf91f..6b527db 100755
--- a/tests/net-yy-inet.test
+++ b/tests/net-yy-inet.test
@@ -3,6 +3,7 @@
 # Check decoding of ip:port pairs associated with socket descriptors
 #
 # Copyright (c) 2014-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,18 +30,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_inet_diag
 
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_inet_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net-yy-netlink.c b/tests/net-yy-netlink.c
index 64d0efc..6539eda 100644
--- a/tests/net-yy-netlink.c
+++ b/tests/net-yy-netlink.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-yy-netlink strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * All rights reserved.
  *
@@ -47,13 +47,14 @@
 int
 main(void)
 {
-	unsigned magic = 1234;
+	skip_if_unavailable("/proc/self/fd/");
+
 	struct sockaddr_nl addr = {
 		.nl_family = AF_NETLINK,
-		.nl_pid = 1234
+		.nl_pid = getpid()
 	};
 	struct sockaddr *const sa = tail_memdup(&addr, sizeof(addr));
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
 	*len = sizeof(addr);
 
 	const int fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_SOCK_DIAG);
@@ -67,17 +68,17 @@
 		perror_msg_and_skip("bind");
 	printf("bind(%d<NETLINK:[%lu]>, {sa_family=AF_NETLINK"
 	       ", nl_pid=%u, nl_groups=00000000}, %u) = 0\n",
-	       fd, inode, magic, (unsigned) *len);
+	       fd, inode, addr.nl_pid, (unsigned) *len);
 
 	if (getsockname(fd, sa, len))
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<NETLINK:[SOCK_DIAG:%u]>, {sa_family=AF_NETLINK"
 	       ", nl_pid=%u, nl_groups=00000000}, [%u]) = 0\n",
-	       fd, magic, magic, (unsigned) *len);
+	       fd, addr.nl_pid, addr.nl_pid, (unsigned) *len);
 
 	if (close(fd))
 		perror_msg_and_fail("close");
-	printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, magic);
+	printf("close(%d<NETLINK:[SOCK_DIAG:%u]>) = 0\n", fd, addr.nl_pid);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/net-yy-netlink.test b/tests/net-yy-netlink.test
index bff1d86..3a07e45 100755
--- a/tests/net-yy-netlink.test
+++ b/tests/net-yy-netlink.test
@@ -6,6 +6,7 @@
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
 # Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
+# Copyright (c) 2016-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -32,18 +33,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_netlink_diag
 
-run_prog "./$NAME" > /dev/null
-
+run_prog ../netlink_netlink_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net-yy-unix.c b/tests/net-yy-unix.c
index 63637bd..f27cdc0 100644
--- a/tests/net-yy-unix.c
+++ b/tests/net-yy-unix.c
@@ -1,7 +1,7 @@
 /*
  * This file is part of net-yy-unix strace test.
  *
- * Copyright (c) 2013-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -38,19 +38,21 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
-int
-main(int ac, const char **av)
-{
-	assert(ac == 2);
+#define TEST_SOCKET "net-yy-unix.socket"
 
-	struct sockaddr_un addr = { .sun_family = AF_UNIX };
-	unsigned int sun_path_len = strlen(av[1]);
-	assert(sun_path_len > 0 && sun_path_len <= sizeof(addr.sun_path));
-	strncpy(addr.sun_path, av[1], sizeof(addr.sun_path));
+int
+main(void)
+{
+	skip_if_unavailable("/proc/self/fd/");
+
+	struct sockaddr_un addr = {
+		.sun_family = AF_UNIX,
+		.sun_path = TEST_SOCKET
+	};
 	struct sockaddr * const listen_sa = tail_memdup(&addr, sizeof(addr));
 
-	socklen_t * const len = tail_alloc(sizeof(socklen_t));
-	*len = offsetof(struct sockaddr_un, sun_path) + strlen(av[1]) + 1;
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, len);
+	*len = offsetof(struct sockaddr_un, sun_path) + strlen(TEST_SOCKET) + 1;
 	if (*len > sizeof(addr))
 		*len = sizeof(addr);
 
@@ -61,24 +63,25 @@
 	printf("socket(AF_UNIX, SOCK_STREAM, 0) = %d<UNIX:[%lu]>\n",
 	       listen_fd, listen_inode);
 
-	(void) unlink(av[1]);
+	(void) unlink(TEST_SOCKET);
 	if (bind(listen_fd, listen_sa, *len))
 		perror_msg_and_skip("bind");
 	printf("bind(%d<UNIX:[%lu]>, {sa_family=AF_UNIX, sun_path=\"%s\"}"
-	       ", %u) = 0\n", listen_fd, listen_inode, av[1], (unsigned) *len);
+	       ", %u) = 0\n",
+	       listen_fd, listen_inode, TEST_SOCKET, (unsigned) *len);
 
 	if (listen(listen_fd, 1))
 		perror_msg_and_skip("listen");
 	printf("listen(%d<UNIX:[%lu,\"%s\"]>, 1) = 0\n",
-	       listen_fd, listen_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET);
 
-	unsigned int * const optval = tail_alloc(sizeof(unsigned int));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, optval);
 	*len = sizeof(*optval);
 	if (getsockopt(listen_fd, SOL_SOCKET, SO_PASSCRED, optval, len))
 		perror_msg_and_fail("getsockopt");
 	printf("getsockopt(%d<UNIX:[%lu,\"%s\"]>, SOL_SOCKET, SO_PASSCRED"
 	       ", [%u], [%u]) = 0\n",
-	       listen_fd, listen_inode, av[1], *optval, (unsigned) *len);
+	       listen_fd, listen_inode, TEST_SOCKET, *optval, (unsigned) *len);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -86,7 +89,7 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	int connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -99,7 +102,7 @@
 		perror_msg_and_fail("connect");
 	printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	struct sockaddr * const accept_sa = tail_alloc(sizeof(addr));
 	memset(accept_sa, 0, sizeof(addr));
@@ -110,8 +113,9 @@
 	unsigned long accept_inode = inode_of_sockfd(accept_fd);
 	printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX}"
 	       ", [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
-	       listen_fd, listen_inode, av[1], (int) sizeof(addr), (int) *len,
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET,
+	       (int) sizeof(addr), (int) *len,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -120,7 +124,7 @@
 	printf("getpeername(%d<UNIX:[%lu->%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n",
 	       connect_fd, connect_inode,
-	       accept_inode, av[1], (int) sizeof(addr), (int) *len);
+	       accept_inode, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	char text[] = "text";
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
@@ -134,7 +138,7 @@
 	       == sizeof(text) - 1);
 	printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
 	       ", NULL, NULL) = %u\n",
-	       accept_fd, accept_inode, connect_inode, av[1], text,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
 	       (unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
 
 	assert(close(connect_fd) == 0);
@@ -143,7 +147,7 @@
 
 	assert(close(accept_fd) == 0);
 	printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	connect_fd = socket(AF_UNIX, SOCK_STREAM, 0);
 	if (connect_fd < 0)
@@ -166,13 +170,13 @@
 		perror_msg_and_fail("getsockname");
 	printf("getsockname(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", listen_fd, listen_inode,
-	       av[1], av[1], (int) sizeof(addr), (int) *len);
+	       TEST_SOCKET, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	if (connect(connect_fd, listen_sa, *len))
 		perror_msg_and_fail("connect");
 	printf("connect(%d<UNIX:[%lu]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, %u) = 0\n",
-	       connect_fd, connect_inode, av[1], (unsigned) *len);
+	       connect_fd, connect_inode, TEST_SOCKET, (unsigned) *len);
 
 	memset(accept_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -184,9 +188,9 @@
 		((struct sockaddr_un *) accept_sa) -> sun_path + 1;
 	printf("accept(%d<UNIX:[%lu,\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=@\"%s\"}, [%d->%d]) = %d<UNIX:[%lu->%lu,\"%s\"]>\n",
-	       listen_fd, listen_inode, av[1], sun_path1,
+	       listen_fd, listen_inode, TEST_SOCKET, sun_path1,
 	       (int) sizeof(addr), (int) *len,
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
 	memset(listen_sa, 0, sizeof(addr));
 	*len = sizeof(addr);
@@ -194,7 +198,7 @@
 		perror_msg_and_fail("getpeername");
 	printf("getpeername(%d<UNIX:[%lu->%lu,@\"%s\"]>, {sa_family=AF_UNIX"
 	       ", sun_path=\"%s\"}, [%d->%d]) = 0\n", connect_fd, connect_inode,
-	       accept_inode, sun_path1, av[1], (int) sizeof(addr), (int) *len);
+	       accept_inode, sun_path1, TEST_SOCKET, (int) sizeof(addr), (int) *len);
 
 	assert(sendto(connect_fd, text, sizeof(text) - 1, MSG_DONTWAIT, NULL, 0)
 	       == sizeof(text) - 1);
@@ -207,7 +211,7 @@
 	       == sizeof(text) - 1);
 	printf("recvfrom(%d<UNIX:[%lu->%lu,\"%s\"]>, \"%s\", %u, MSG_DONTWAIT"
 	       ", NULL, NULL) = %u\n",
-	       accept_fd, accept_inode, connect_inode, av[1], text,
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET, text,
 	       (unsigned) sizeof(text) - 1, (unsigned) sizeof(text) - 1);
 
 	assert(close(connect_fd) == 0);
@@ -216,13 +220,13 @@
 
 	assert(close(accept_fd) == 0);
 	printf("close(%d<UNIX:[%lu->%lu,\"%s\"]>) = 0\n",
-	       accept_fd, accept_inode, connect_inode, av[1]);
+	       accept_fd, accept_inode, connect_inode, TEST_SOCKET);
 
-	assert(unlink(av[1]) == 0);
+	assert(unlink(TEST_SOCKET) == 0);
 
 	assert(close(listen_fd) == 0);
 	printf("close(%d<UNIX:[%lu,\"%s\"]>) = 0\n",
-	       listen_fd, listen_inode, av[1]);
+	       listen_fd, listen_inode, TEST_SOCKET);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/net-yy-unix.test b/tests/net-yy-unix.test
index b82761c..59323a4 100755
--- a/tests/net-yy-unix.test
+++ b/tests/net-yy-unix.test
@@ -4,7 +4,7 @@
 # associated with unix domain socket descriptors.
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
-# Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -31,19 +31,12 @@
 
 . "${srcdir=.}/init.sh"
 
-# strace -yy is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
 check_prog sed
-run_prog ./netlink_unix_diag
 
-addr="$NAME-local-stream"
-run_prog "./$NAME" $addr > /dev/null
-
+run_prog ../netlink_unix_diag
+run_prog > /dev/null
 run_strace -a22 -yy -eclose,network $args > "$EXP"
+
 # Filter out close() calls made by ld.so and libc.
 sed -n '/socket/,$p' < "$LOG" > "$OUT"
-
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/net.test b/tests/net.test
index cf943ff..8320707 100755
--- a/tests/net.test
+++ b/tests/net.test
@@ -4,8 +4,8 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./net-accept-connect net-local-stream
-run_strace_merge -enetwork $args
+run_prog ../net-accept-connect net-local-stream
+run_strace_merge -e%network $args
 match_grep
 
 exit 0
diff --git a/tests/netlink_protocol.c b/tests/netlink_protocol.c
index 34e114b..35f954f 100644
--- a/tests/netlink_protocol.c
+++ b/tests/netlink_protocol.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of netlink protocol.
  *
- * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Fabien Siron <fabien.siron@epita.fr>
  * All rights reserved.
  *
@@ -199,6 +199,121 @@
 	printf(", ...], %u, MSG_DONTWAIT, NULL, 0) = %s\n", msg_len, errstr);
 }
 
+static void
+test_nlmsgerr(const int fd)
+{
+	struct nlmsgerr *err;
+	struct nlmsghdr *nlh;
+	void *const nlh0 = tail_alloc(NLMSG_HDRLEN);
+	long rc;
+
+	/* error message without enough room for the error code */
+	nlh = nlh0;
+	nlh->nlmsg_len = NLMSG_HDRLEN + 4;
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, %p}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	nlh->nlmsg_len = NLMSG_HDRLEN + 2;
+	nlh = nlh0 - 2;
+	memmove(nlh, nlh0, sizeof(*nlh));
+	memcpy(NLMSG_DATA(nlh), "42", 2);
+
+	rc = sendto(fd, nlh, NLMSG_HDRLEN + 2, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, \"42\"}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, NLMSG_HDRLEN + 2, NLMSG_HDRLEN + 2, sprintrc(rc));
+
+	/* error message with room for the error code only */
+	nlh = nlh0 - sizeof(err->error);
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(err->error);
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = 42;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=42}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+	err->error = -1;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EPERM}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n", fd, nlh->nlmsg_len, nlh->nlmsg_len, sprintrc(rc));
+
+	err->error = -32767;
+	nlh->nlmsg_len += sizeof(err->msg.nlmsg_len);
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-32767, msg=%p}}"
+	       ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, nlh0 + NLMSG_HDRLEN,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	/* error message with room for the error code and a header */
+	nlh = nlh0 - sizeof(*err);
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err);
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = -13;
+	err->msg.nlmsg_len = NLMSG_HDRLEN;
+	err->msg.nlmsg_type = NLMSG_NOOP;
+	err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+	err->msg.nlmsg_seq = 42;
+	err->msg.nlmsg_pid = 1234;
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EACCES"
+	       ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+	       ", seq=%u, pid=%u}}}}, %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+	       fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+	       err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+	       nlh->nlmsg_len, sprintrc(rc));
+
+	/* error message with room for the error code, a header, and some data */
+	nlh = nlh0 - sizeof(*err) - 4;
+	nlh->nlmsg_len = NLMSG_HDRLEN + sizeof(*err) + 4;
+	nlh->nlmsg_type = NLMSG_ERROR;
+	nlh->nlmsg_flags = NLM_F_REQUEST;
+	nlh->nlmsg_seq = 0;
+	nlh->nlmsg_pid = 0;
+	err = NLMSG_DATA(nlh);
+	err->error = -13;
+	err->msg.nlmsg_len = NLMSG_HDRLEN + 4;
+	err->msg.nlmsg_type = NLMSG_NOOP;
+	err->msg.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+	err->msg.nlmsg_seq = 421;
+	err->msg.nlmsg_pid = 12345;
+	memcpy(NLMSG_DATA(&err->msg), "abcd", 4);
+
+	rc = sendto(fd, nlh, nlh->nlmsg_len, MSG_DONTWAIT, NULL, 0);
+	printf("sendto(%d, {{len=%u, type=NLMSG_ERROR, flags=NLM_F_REQUEST"
+	       ", seq=0, pid=0}, {error=-EACCES"
+	       ", msg={{len=%u, type=NLMSG_NOOP, flags=NLM_F_REQUEST|0x%x"
+	       ", seq=%u, pid=%u}, \"abcd\"}}}, %u, MSG_DONTWAIT, NULL, 0)"
+	       " = %s\n",
+	       fd, nlh->nlmsg_len, err->msg.nlmsg_len, NLM_F_DUMP,
+	       err->msg.nlmsg_seq, err->msg.nlmsg_pid,
+	       nlh->nlmsg_len, sprintrc(rc));
+}
+
 int main(void)
 {
 	struct sockaddr_nl addr;
@@ -227,6 +342,7 @@
 	free(path);
 
 	send_query(fd);
+	test_nlmsgerr(fd);
 
 	printf("+++ exited with 0 +++\n");
 
diff --git a/tests/netlink_protocol.gen.test b/tests/netlink_protocol.gen.test
new file mode 100755
index 0000000..9a132fa
--- /dev/null
+++ b/tests/netlink_protocol.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (netlink_protocol -e trace=%network); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=%network
diff --git a/tests/netlink_protocol.test b/tests/netlink_protocol.test
deleted file mode 100755
index ab2bb1e..0000000
--- a/tests/netlink_protocol.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check decoding of netlink protocol.
-
-. "${srcdir=.}/init.sh"
-
-# getfdproto is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-    framework_skip_ '/proc/self/fd/ is not available'
-
-run_strace_match_diff -e trace=network
diff --git a/tests/newfstatat.gen.test b/tests/newfstatat.gen.test
new file mode 100755
index 0000000..40ec797
--- /dev/null
+++ b/tests/newfstatat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (newfstatat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/newfstatat.test b/tests/newfstatat.test
deleted file mode 100755
index 6d83ec0..0000000
--- a/tests/newfstatat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check newfstatat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/nsyscalls.c b/tests/nsyscalls.c
index aecf7aa..7fda5ba 100644
--- a/tests/nsyscalls.c
+++ b/tests/nsyscalls.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,6 +42,13 @@
 #define TP 0
 #define TS 0
 #define TM 0
+#define TST 0
+#define TLST 0
+#define TFST 0
+#define TSTA 0
+#define TSF 0
+#define TFSF 0
+#define TSFA 0
 #define NF 0
 #define MA 0
 #define SI 0
diff --git a/tests/old_mmap.gen.test b/tests/old_mmap.gen.test
new file mode 100755
index 0000000..1913eec
--- /dev/null
+++ b/tests/old_mmap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (old_mmap -a11 -e trace=mmap); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests/old_mmap.test b/tests/old_mmap.test
deleted file mode 100755
index af776ff..0000000
--- a/tests/old_mmap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of "old mmap" edition of mmap syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=mmap
diff --git a/tests/oldfstat.c b/tests/oldfstat.c
index f5a9441..353614c 100644
--- a/tests/oldfstat.c
+++ b/tests/oldfstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests/oldfstat.gen.test b/tests/oldfstat.gen.test
new file mode 100755
index 0000000..2b48b39
--- /dev/null
+++ b/tests/oldfstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldfstat -a18 -v -P stat.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a18 -v -P stat.sample
diff --git a/tests/oldfstat.test b/tests/oldfstat.test
deleted file mode 100755
index 66a1056..0000000
--- a/tests/oldfstat.test
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-# Check oldfstat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-syscall=$NAME
-run_prog > /dev/null
-sample=$syscall.sample
-> "$sample"
-run_strace -ve$syscall -P$sample -a21 $args > "$OUT"
-match_diff "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/oldlstat.c b/tests/oldlstat.c
index 6613237..6f07531 100644
--- a/tests/oldlstat.c
+++ b/tests/oldlstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests/oldlstat.gen.test b/tests/oldlstat.gen.test
new file mode 100755
index 0000000..3202b92
--- /dev/null
+++ b/tests/oldlstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldlstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/oldlstat.test b/tests/oldlstat.test
deleted file mode 100755
index a0f9ab9..0000000
--- a/tests/oldlstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldlstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/oldstat.c b/tests/oldstat.c
index d06e2bc..ddacd24 100644
--- a/tests/oldstat.c
+++ b/tests/oldstat.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests/oldstat.gen.test b/tests/oldstat.gen.test
new file mode 100755
index 0000000..f265ac5
--- /dev/null
+++ b/tests/oldstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (oldstat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/oldstat.test b/tests/oldstat.test
deleted file mode 100755
index 42d70f7..0000000
--- a/tests/oldstat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check oldstat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/open.gen.test b/tests/open.gen.test
new file mode 100755
index 0000000..eb931a3
--- /dev/null
+++ b/tests/open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (open -a30 -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests/open.test b/tests/open.test
deleted file mode 100755
index 6df19cb..0000000
--- a/tests/open.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a30 -P $NAME.sample
diff --git a/tests/openat.gen.test b/tests/openat.gen.test
new file mode 100755
index 0000000..fe29e1c
--- /dev/null
+++ b/tests/openat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (openat -P $NAME.sample); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -P $NAME.sample
diff --git a/tests/openat.test b/tests/openat.test
deleted file mode 100755
index 68c4cee..0000000
--- a/tests/openat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check openat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -P $NAME.sample
diff --git a/tests/opipe.test b/tests/opipe.test
index 90e6838..f622045 100755
--- a/tests/opipe.test
+++ b/tests/opipe.test
@@ -6,11 +6,9 @@
 
 check_prog grep
 run_prog grep chdir $srcdir/umovestr.expected > "$EXP"
-run_prog ./umovestr
+run_prog ../umovestr
 
-> "$LOG" || fail_ "failed to write $LOG"
 $STRACE -o "|cat > $LOG && $SLEEP_A_BIT && grep chdir < $LOG > $OUT" -e chdir $args ||
 	dump_log_and_fail_with "$STRACE $args failed"
 
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/options-syntax.test b/tests/options-syntax.test
index 592b0e0..4c778b3 100755
--- a/tests/options-syntax.test
+++ b/tests/options-syntax.test
@@ -3,6 +3,7 @@
 # Check strace options syntax.
 #
 # 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
@@ -39,6 +40,16 @@
 			"strace $* failed to print expected diagnostics"
 }
 
+check_exit_status_and_stderr_using_grep()
+{
+	$STRACE "$@" 2> "$LOG" &&
+		dump_log_and_fail_with \
+			"strace $* failed to handle the error properly"
+	match_grep "$LOG" "$EXP" ||
+		dump_log_and_fail_with \
+			"strace $* failed to print expected diagnostics"
+}
+
 strace_exp="${STRACE##* }"
 
 check_e()
@@ -50,6 +61,15 @@
 	check_exit_status_and_stderr "$@"
 }
 
+check_e_using_grep()
+{
+	local pattern="$1"; shift
+	cat > "$EXP" << __EOF__
+$strace_exp: $pattern
+__EOF__
+	check_exit_status_and_stderr_using_grep "$@"
+}
+
 check_h()
 {
 	local pattern="$1"; shift
@@ -72,6 +92,7 @@
 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
@@ -88,6 +109,12 @@
 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'
+
 check_h 'must have PROG [ARGS] or -p PID'
 check_h 'PROG [ARGS] must be specified with -D' -D -p $$
 check_h '-c and -C are mutually exclusive' -c -C true
@@ -144,5 +171,3 @@
 [ -z "$args" ] ||
 	dump_log_and_fail_with \
 		"strace $args failed to print expected diagnostics"
-
-rm -f "$EXP"
diff --git a/tests/osf_utimes.c b/tests/osf_utimes.c
new file mode 100644
index 0000000..7ac083e
--- /dev/null
+++ b/tests/osf_utimes.c
@@ -0,0 +1,45 @@
+/*
+ * Check decoding of osf_utimes 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>
+
+#ifdef __NR_osf_utimes
+
+# define TEST_SYSCALL_NR	__NR_osf_utimes
+# define TEST_SYSCALL_STR	"osf_utimes"
+# define TEST_STRUCT		struct timeval32
+struct timeval32 { int tv_sec, tv_usec; };
+# include "xutimes.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_osf_utimes")
+
+#endif
diff --git a/tests/osf_utimes.gen.test b/tests/osf_utimes.gen.test
new file mode 100755
index 0000000..b6be305
--- /dev/null
+++ b/tests/osf_utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/pause.gen.test b/tests/pause.gen.test
new file mode 100755
index 0000000..76492b6
--- /dev/null
+++ b/tests/pause.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pause -a8 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a8 -esignal=none
diff --git a/tests/pause.test b/tests/pause.test
deleted file mode 100755
index c5fdacd..0000000
--- a/tests/pause.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pause syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a8 -esignal=none
diff --git a/tests/pc.test b/tests/pc.test
index beadb7d..af09701 100755
--- a/tests/pc.test
+++ b/tests/pc.test
@@ -3,6 +3,7 @@
 # Check -i option.
 #
 # Copyright (c) 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
@@ -47,15 +48,11 @@
 [ -n "$addr" ] ||
 	dump_log_and_fail_with
 
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
 \\[[[:xdigit:]]{$len}\\] munmap\\(0x[[:xdigit:]]+, 0\\) += -1 .*
 \\[pid +$pid\\] \\[$ip\\] --- SIGSEGV \\{si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x$addr\\} ---
 \\[pid +$pid\\] \\[\\?{$len}\\] \\+\\+\\+ killed by SIGSEGV( \\(core dumped\\))? \\+\\+\\+
 \\[\\?{$len}\\] \\+\\+\\+ exited with 0 \\+\\+\\+
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests/perf_event_open.c b/tests/perf_event_open.c
index 0ffea29..3f544a6 100644
--- a/tests/perf_event_open.c
+++ b/tests/perf_event_open.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -681,7 +682,7 @@
 		ATTR_REC(attr_big_size),
 	};
 
-	struct perf_event_attr *small_attr = tail_alloc(sizeof(*small_attr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, small_attr);
 
 	struct {
 		struct perf_event_attr *attr;
diff --git a/tests/perf_event_open.gen.test b/tests/perf_event_open.gen.test
new file mode 100755
index 0000000..85336c3
--- /dev/null
+++ b/tests/perf_event_open.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/perf_event_open.test b/tests/perf_event_open.test
deleted file mode 100755
index 499134b..0000000
--- a/tests/perf_event_open.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check perf_event_open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a1
diff --git a/tests/perf_event_open_nonverbose.c b/tests/perf_event_open_nonverbose.c
index 45d7c8f..b67715c 100644
--- a/tests/perf_event_open_nonverbose.c
+++ b/tests/perf_event_open_nonverbose.c
@@ -2,6 +2,7 @@
  * Check decoding of perf_event_open syscall.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -62,7 +63,7 @@
 int
 main(void)
 {
-	struct perf_event_attr *attr = tail_alloc(sizeof(*attr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct perf_event_attr, attr);
 
 	attr->type = PERF_TYPE_HARDWARE;
 	attr->size = sizeof(*attr);
diff --git a/tests/perf_event_open_nonverbose.gen.test b/tests/perf_event_open_nonverbose.gen.test
new file mode 100755
index 0000000..f1ed333
--- /dev/null
+++ b/tests/perf_event_open_nonverbose.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_nonverbose -a34 -e verbose=none -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests/perf_event_open_nonverbose.test b/tests/perf_event_open_nonverbose.test
deleted file mode 100755
index 404827f..0000000
--- a/tests/perf_event_open_nonverbose.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of perf_event_open syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34 -e verbose=none -e trace=perf_event_open
diff --git a/tests/perf_event_open_unabbrev.gen.test b/tests/perf_event_open_unabbrev.gen.test
new file mode 100755
index 0000000..1d9bd85
--- /dev/null
+++ b/tests/perf_event_open_unabbrev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (perf_event_open_unabbrev -a1 -v -e trace=perf_event_open); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests/perf_event_open_unabbrev.test b/tests/perf_event_open_unabbrev.test
deleted file mode 100755
index f17fd17..0000000
--- a/tests/perf_event_open_unabbrev.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check perf_event_open syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a1 -v -e trace=perf_event_open
diff --git a/tests/personality.test b/tests/personality.test
index 8f8c0ad..ab2faf4 100755
--- a/tests/personality.test
+++ b/tests/personality.test
@@ -5,8 +5,5 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -a20 -epersonality $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -epersonality $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests/pipe.c b/tests/pipe.c
index 41c7f21..3df2094 100644
--- a/tests/pipe.c
+++ b/tests/pipe.c
@@ -2,6 +2,7 @@
  * Check decoding of pipe syscall.
  *
  * 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
diff --git a/tests/pipe2.c b/tests/pipe2.c
index 375ae74..3a0e046 100644
--- a/tests/pipe2.c
+++ b/tests/pipe2.c
@@ -39,18 +39,16 @@
 int
 main(void)
 {
-	static const kernel_ulong_t bogus_zero =
-		(kernel_ulong_t) 0xffffffff00000000ULL;
 	int *const fds = tail_alloc(sizeof(*fds) * 2);
 	int *const efault = fds + 1;
 	long rc;
 
-	rc = syscall(__NR_pipe2, fds, bogus_zero | O_NONBLOCK);
+	rc = syscall(__NR_pipe2, fds, F8ILL_KULONG_MASK | O_NONBLOCK);
 	if (rc)
 		perror_msg_and_skip("pipe2");
 	printf("pipe2([%d, %d], O_NONBLOCK) = 0\n", fds[0], fds[1]);
 
-	rc = syscall(__NR_pipe2, efault, bogus_zero);
+	rc = syscall(__NR_pipe2, efault, F8ILL_KULONG_MASK);
 	printf("pipe2(%p, 0) = %s\n", efault, sprintrc(rc));
 
 	if (F8ILL_KULONG_SUPPORTED) {
diff --git a/tests/pipe2.gen.test b/tests/pipe2.gen.test
new file mode 100755
index 0000000..5a06c03
--- /dev/null
+++ b/tests/pipe2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pipe2 -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/pipe2.test b/tests/pipe2.test
deleted file mode 100755
index aff6cd4..0000000
--- a/tests/pipe2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pipe2 syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a15
diff --git a/tests/pkey_alloc.gen.test b/tests/pkey_alloc.gen.test
new file mode 100755
index 0000000..b3e5869
--- /dev/null
+++ b/tests/pkey_alloc.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/pkey_alloc.test b/tests/pkey_alloc.test
deleted file mode 100755
index f168c21..0000000
--- a/tests/pkey_alloc.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_alloc syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/pkey_free.gen.test b/tests/pkey_free.gen.test
new file mode 100755
index 0000000..588d1aa
--- /dev/null
+++ b/tests/pkey_free.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/pkey_free.test b/tests/pkey_free.test
deleted file mode 100755
index 9c01c3e..0000000
--- a/tests/pkey_free.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_free syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a13
diff --git a/tests/pkey_mprotect.gen.test b/tests/pkey_mprotect.gen.test
new file mode 100755
index 0000000..14be231
--- /dev/null
+++ b/tests/pkey_mprotect.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/pkey_mprotect.test b/tests/pkey_mprotect.test
deleted file mode 100755
index 922d491..0000000
--- a/tests/pkey_mprotect.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of pkey_mprotect syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a37
diff --git a/tests/poll.test b/tests/poll.test
index b74be29..d09193d 100755
--- a/tests/poll.test
+++ b/tests/poll.test
@@ -5,13 +5,11 @@
 . "${srcdir=.}/init.sh"
 
 run_prog > /dev/null
-run_strace -a16 -vepoll $args > "$OUT"
-match_diff "$LOG" "$OUT"
+run_strace -a16 -vepoll $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 $args > "$OUT"
-	match_diff "$LOG" "$OUT"
+	run_prog "../$NAME" $abbrev > /dev/null
+	run_strace -a16 -epoll -s$abbrev $args > "$EXP"
+	match_diff "$LOG" "$EXP"
 done
-
-rm -f "$OUT"
diff --git a/tests/ppoll-v.c b/tests/ppoll-v.c
new file mode 100644
index 0000000..cf4fdea
--- /dev/null
+++ b/tests/ppoll-v.c
@@ -0,0 +1,3 @@
+/* This file is part of ppoll-v strace test. */
+#define VERBOSE 1
+#include "ppoll.c"
diff --git a/tests/ppoll-v.expected b/tests/ppoll-v.expected
deleted file mode 100644
index 31070ad..0000000
--- a/tests/ppoll-v.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \{fd=3, events=POLLIN\|POLLPRI\}, \{fd=4, events=POLLOUT\}\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
-ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests/ppoll-v.gen.test b/tests/ppoll-v.gen.test
new file mode 100755
index 0000000..cd1fcc6
--- /dev/null
+++ b/tests/ppoll-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll-v -v -s2 -e trace=ppoll); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -s2 -e trace=ppoll
diff --git a/tests/ppoll.c b/tests/ppoll.c
index 46d7e81..85a7e0c 100644
--- a/tests/ppoll.c
+++ b/tests/ppoll.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of ppoll 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
@@ -26,69 +28,165 @@
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <poll.h>
-#include <signal.h>
-#include <unistd.h>
+#include <asm/unistd.h>
 
-static void
-test1(void)
+#ifdef __NR_ppoll
+
+# include <errno.h>
+# include <poll.h>
+# include <signal.h>
+# include <stdio.h>
+# include <string.h>
+# include <unistd.h>
+
+static const char *errstr;
+
+static long
+sys_ppoll(const kernel_ulong_t ufds,
+	  const kernel_ulong_t nfds,
+	  const kernel_ulong_t tsp,
+	  const kernel_ulong_t sigmask,
+	  const kernel_ulong_t sigsetsize)
 {
-	const struct timespec timeout = { .tv_sec = 42, .tv_nsec = 999999999 };
-	struct pollfd fds[] = {
-		{ .fd = 0, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 1, .events = POLLOUT | POLLWRNORM | POLLWRBAND },
-		{ .fd = 3, .events = POLLIN | POLLPRI },
-		{ .fd = 4, .events = POLLOUT }
-	};
-
-	sigset_t mask;
-	sigemptyset(&mask);
-	sigaddset(&mask, SIGUSR2);
-	sigaddset(&mask, SIGCHLD);
-
-	int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
-	if (rc < 0)
-		perror_msg_and_skip("ppoll");
-	assert(rc == 2);
-}
-
-static void
-test2(void)
-{
-	const struct timespec timeout = { .tv_sec = 0, .tv_nsec = 999 };
-	struct pollfd fds[] = {
-		{ .fd = 1, .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
-		{ .fd = 0, .events = POLLOUT | POLLWRNORM | POLLWRBAND }
-	};
-
-	sigset_t mask;
-	sigfillset(&mask);
-	sigdelset(&mask, SIGHUP);
-	sigdelset(&mask, SIGKILL);
-	sigdelset(&mask, SIGSTOP);
-
-	int rc = ppoll(fds, sizeof(fds) / sizeof(*fds), &timeout, &mask);
-	if (rc < 0)
-		perror_msg_and_skip("ppoll");
-	assert(rc == 0);
+	long rc = syscall(__NR_ppoll, ufds, nfds, tsp, sigmask, sigsetsize);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 int
 main(void)
 {
-	int fds[2];
+	static const kernel_ulong_t bogus_nfds =
+		(kernel_ulong_t) 0xdeadbeeffacefeedULL;
+	static const kernel_ulong_t bogus_sigsetsize =
+		(kernel_ulong_t) 0xdeadbeefbadc0dedULL;
+	static const char *const POLLWRNORM_str =
+		(POLLWRNORM == POLLOUT) ? "" : "|POLLWRNORM";
+	static const char *const USR2_CHLD_str =
+		(SIGUSR2 < SIGCHLD) ? "USR2 CHLD" : "CHLD USR2";
+	void *const efault = tail_alloc(1024) + 1024;
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+	const unsigned int sigset_size = get_sigset_size();
+	void *const sigmask = tail_alloc(sigset_size);
+	struct pollfd *fds;
+	sigset_t mask;
+	int pipe_fd[4];
+	long rc;
 
-	(void) close(0);
-	(void) close(1);
-	(void) close(3);
-	(void) close(4);
-	if (pipe(fds) || pipe(fds))
+	sys_ppoll(0, bogus_nfds, 0, 0, bogus_sigsetsize);
+	if (ENOSYS == errno)
+		perror_msg_and_skip("ppoll");
+	printf("ppoll(NULL, %u, NULL, NULL, %llu) = %s\n",
+	       (unsigned) bogus_nfds, (unsigned long long) bogus_sigsetsize,
+	       errstr);
+
+	sys_ppoll((unsigned long) efault, 42, (unsigned long) efault + 8,
+		  (unsigned long) efault + 16, sigset_size);
+	printf("ppoll(%p, %u, %p, %p, %u) = %s\n",
+	       efault, 42, efault + 8, efault + 16, sigset_size, errstr);
+
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+	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);
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedL;
+	sys_ppoll(0, 0, (unsigned long) ts, 0, sigset_size);
+	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);
+
+	if (pipe(pipe_fd) || pipe(pipe_fd + 2))
 		perror_msg_and_fail("pipe");
 
-	test1();
-	test2();
+	ts->tv_sec = 42;
+	ts->tv_nsec = 999999999;
 
-	assert(ppoll(NULL, 42, NULL, NULL) < 0);
+	const struct pollfd fds1[] = {
+		{ .fd = pipe_fd[0], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = pipe_fd[1], .events = POLLOUT | POLLWRNORM | POLLWRBAND },
+		{ .fd = pipe_fd[2], .events = POLLIN | POLLPRI },
+		{ .fd = pipe_fd[3], .events = POLLOUT }
+	};
+	fds = efault - sizeof(fds1);
+	memcpy(fds, fds1, sizeof(fds1));
+
+	sigemptyset(&mask);
+	sigaddset(&mask, SIGUSR2);
+	sigaddset(&mask, SIGCHLD);
+	memcpy(sigmask, &mask, sigset_size);
+
+	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 1");
+	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=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
+	       pipe_fd[2], pipe_fd[3],
+#endif
+	       (unsigned) ARRAY_SIZE(fds1), USR2_CHLD_str,
+	       (unsigned) sigset_size, rc, pipe_fd[1], POLLWRNORM_str,
+	       pipe_fd[3], (unsigned ) ts->tv_sec, (unsigned) ts->tv_nsec);
+
+	ts->tv_sec = 0;
+	ts->tv_nsec = 999;
+	const struct pollfd fds2[] = {
+		{ .fd = pipe_fd[1], .events = POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND },
+		{ .fd = pipe_fd[0], .events = POLLOUT | POLLWRNORM | POLLWRBAND }
+	};
+	fds = efault - sizeof(fds2);
+	memcpy(fds, fds2, sizeof(fds2));
+
+	memset(&mask, -1, sizeof(mask));
+	sigdelset(&mask, SIGHUP);
+	sigdelset(&mask, SIGKILL);
+	sigdelset(&mask, SIGSTOP);
+	memcpy(sigmask, &mask, sigset_size);
+
+	rc = sys_ppoll((unsigned long) fds,
+		       F8ILL_KULONG_MASK | ARRAY_SIZE(fds2), (unsigned long) ts,
+		       (unsigned long) sigmask, sigset_size);
+	if (rc != 0)
+		perror_msg_and_fail("ppoll 2");
+	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);
+
+	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);
+		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);
+	}
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_ppoll")
+
+#endif
diff --git a/tests/ppoll.expected b/tests/ppoll.expected
deleted file mode 100644
index c38a206..0000000
--- a/tests/ppoll.expected
+++ /dev/null
@@ -1,3 +0,0 @@
-ppoll\(\[\{fd=0, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=1, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}, \.\.\.\], 4, \{tv_sec=42, tv_nsec=999999999\}, \[(USR2 CHLD|CHLD USR2)\], (4|8|16)\) = 2 \(\[\{fd=1, revents=POLLOUT(\|POLLWRNORM)?\}, \{fd=4, revents=POLLOUT\}\], left \{tv_sec=42, tv_nsec=9[0-9]{8}\}\)
-ppoll\(\[\{fd=1, events=POLLIN\|POLLPRI\|POLLRDNORM\|POLLRDBAND\}, \{fd=0, events=POLLOUT(\|POLLWRNORM)?\|POLLWRBAND\}\], 2, \{tv_sec=0, tv_nsec=999\}, ~\[HUP KILL STOP[^]]*\], (4|8|16)\) = 0 \(Timeout\)
-ppoll\(NULL, 42, NULL, NULL, (4|8|16)\) = -1 EFAULT .*
diff --git a/tests/ppoll.gen.test b/tests/ppoll.gen.test
new file mode 100755
index 0000000..4c07598
--- /dev/null
+++ b/tests/ppoll.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ppoll -s2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2
diff --git a/tests/ppoll.test b/tests/ppoll.test
deleted file mode 100755
index 98389ee..0000000
--- a/tests/ppoll.test
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-
-# Check ppoll syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -a30 -s2 -e ppoll $args
-match_grep
-run_strace -a30 -v -s2 -e ppoll $args
-match_grep "$LOG" "$srcdir/$NAME-v.expected"
-
-exit 0
diff --git a/tests/prctl-arg2-intptr.c b/tests/prctl-arg2-intptr.c
index ee000eb..9cc3308 100644
--- a/tests/prctl-arg2-intptr.c
+++ b/tests/prctl-arg2-intptr.c
@@ -4,6 +4,7 @@
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
  * 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
@@ -70,7 +71,7 @@
 		{ 11, "PR_GET_FPEXC" },
 	};
 
-	unsigned int *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
 	long rc;
 	unsigned int i;
 
diff --git a/tests/prctl-arg2-intptr.test b/tests/prctl-arg2-intptr.test
index bcef806..4f9e3a1 100755
--- a/tests/prctl-arg2-intptr.test
+++ b/tests/prctl-arg2-intptr.test
@@ -10,5 +10,3 @@
 LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^CEF]|.[^HNP]|..[^DEI])' \
 	< "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-dumpable.test b/tests/prctl-dumpable.test
index 08acb8b..05f1310 100755
--- a/tests/prctl-dumpable.test
+++ b/tests/prctl-dumpable.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^D][^U]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-name.test b/tests/prctl-name.test
index 071179c..95d34b6 100755
--- a/tests/prctl-name.test
+++ b/tests/prctl-name.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_GET_[^N][^A]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-no-args.c b/tests/prctl-no-args.c
index 57e1b73..496cd1a 100644
--- a/tests/prctl-no-args.c
+++ b/tests/prctl-no-args.c
@@ -4,6 +4,7 @@
  * PR_TASK_PERF_EVENTS_DISABLE, and PR_TASK_PERF_EVENTS_ENABLE.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -57,7 +58,7 @@
 		{ 32, "PR_TASK_PERF_EVENTS_ENABLE" },
 	};
 
-	unsigned int *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, ptr);
 	unsigned int i;
 
 	for (i = 0; i < ARRAY_SIZE(options); i++) {
diff --git a/tests/prctl-no-args.test b/tests/prctl-no-args.test
index ce8ca67..8ff300b 100755
--- a/tests/prctl-no-args.test
+++ b/tests/prctl-no-args.test
@@ -10,5 +10,3 @@
 run_strace -a21 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^KST][^EI][^CEM]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-pdeathsig.c b/tests/prctl-pdeathsig.c
index c176030..ef56374 100644
--- a/tests/prctl-pdeathsig.c
+++ b/tests/prctl-pdeathsig.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,7 +45,7 @@
 	static const kernel_ulong_t bogus_signal =
 		(kernel_ulong_t) 0xbadc0deddeadfeedULL;
 
-	int *pdeathsig = tail_alloc(sizeof(*pdeathsig));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, pdeathsig);
 	long rc;
 
 	rc = syscall(__NR_prctl, PR_SET_PDEATHSIG, bogus_signal);
diff --git a/tests/prctl-pdeathsig.test b/tests/prctl-pdeathsig.test
index 2777503..b6e0140 100755
--- a/tests/prctl-pdeathsig.test
+++ b/tests/prctl-pdeathsig.test
@@ -9,5 +9,3 @@
 run_strace -a30 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^P][^D]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-seccomp-filter-v.test b/tests/prctl-seccomp-filter-v.test
index 44e4a78..3663ad8 100755
--- a/tests/prctl-seccomp-filter-v.test
+++ b/tests/prctl-seccomp-filter-v.test
@@ -9,5 +9,3 @@
 run_strace -v -eprctl $args > "$EXP"
 grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-seccomp-strict.test b/tests/prctl-seccomp-strict.test
index 1f987df..bee85b8 100755
--- a/tests/prctl-seccomp-strict.test
+++ b/tests/prctl-seccomp-strict.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 check_prog grep
-set -- "./$NAME"
+set -- "../$NAME"
 "$@" > /dev/null || {
 	case $? in
 		77) skip_ "$* exited with code 77" ;;
@@ -16,4 +16,3 @@
 run_strace -eprctl "$@" > "$EXP"
 grep -v '^prctl(PR_GET_' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-securebits.test b/tests/prctl-securebits.test
index c91e62a..32b0f2a 100755
--- a/tests/prctl-securebits.test
+++ b/tests/prctl-securebits.test
@@ -8,5 +8,3 @@
 run_strace -a25 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^S][^E][^C][^U]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-tid_address.c b/tests/prctl-tid_address.c
index 24e4503..609e549 100644
--- a/tests/prctl-tid_address.c
+++ b/tests/prctl-tid_address.c
@@ -2,6 +2,7 @@
  * Check decoding of prctl PR_GET_TID_ADDRESS operation.
  *
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -59,7 +60,7 @@
 		(kernel_ulong_t) 0xfffffffffffffffdULL;
 
 	/* Note that kernel puts kernel-sized pointer even on x32 */
-	kernel_ulong_t *ptr = tail_alloc(sizeof(*ptr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(kernel_ulong_t, ptr);
 	long rc;
 	long set_ok;
 
diff --git a/tests/prctl-tid_address.test b/tests/prctl-tid_address.test
index dc7b7c3..62a39e5 100755
--- a/tests/prctl-tid_address.test
+++ b/tests/prctl-tid_address.test
@@ -8,5 +8,3 @@
 run_strace -a23 -eprctl $args > "$EXP"
 LC_ALL=C grep -Ev '^prctl\(PR_[GS]ET_([^T]|.[^I]|..[^D])' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/prctl-tsc.c b/tests/prctl-tsc.c
index fd9362d..0ddb380 100644
--- a/tests/prctl-tsc.c
+++ b/tests/prctl-tsc.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2016 JingPiao Chen <chenjingpiao@foxmail.com>
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,7 +44,7 @@
 	static const kernel_ulong_t bogus_tsc =
 		(kernel_ulong_t) 0xdeadc0defacebeefULL;
 
-	int *tsc = tail_alloc(sizeof(*tsc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, tsc);
 	long rc;
 
 	rc = syscall(__NR_prctl, PR_SET_TSC, 0);
diff --git a/tests/prctl-tsc.test b/tests/prctl-tsc.test
index a906ba8..439d9d5 100755
--- a/tests/prctl-tsc.test
+++ b/tests/prctl-tsc.test
@@ -9,5 +9,3 @@
 run_strace -a24 -eprctl $args > "$EXP"
 grep -v '^prctl(PR_[GS]ET_[^T][^S]' < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
diff --git a/tests/pread64-pwrite64.c b/tests/pread64-pwrite64.c
index 4a0932a..e9d7a64 100644
--- a/tests/pread64-pwrite64.c
+++ b/tests/pread64-pwrite64.c
@@ -2,6 +2,7 @@
  * Check decoding of pread64 and pwrite64 syscalls.
  *
  * 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
@@ -123,7 +124,9 @@
 {
 	tprintf("%s", "");
 
-	static char tmp[] = "pread64-pwrite64-tmpfile";
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const char tmp[] = "pread64-pwrite64-tmpfile";
 	if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
 		perror_msg_and_fail("creat: %s", tmp);
 	if (open(tmp, O_WRONLY) != 1)
diff --git a/tests/pread64-pwrite64.gen.test b/tests/pread64-pwrite64.gen.test
new file mode 100755
index 0000000..b53e069
--- /dev/null
+++ b/tests/pread64-pwrite64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pread64-pwrite64 -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 -P pread64-pwrite64-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests/pread64-pwrite64.test b/tests/pread64-pwrite64.test
deleted file mode 100755
index e585406..0000000
--- a/tests/pread64-pwrite64.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of pread64 and pwrite64 syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=pread64-pwrite64-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
-	-a21 -eread=0 -ewrite=1 -e trace=pread64,pwrite64 \
-	-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests/preadv-pwritev.gen.test b/tests/preadv-pwritev.gen.test
new file mode 100755
index 0000000..5ed8297
--- /dev/null
+++ b/tests/preadv-pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv-pwritev -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests/preadv-pwritev.test b/tests/preadv-pwritev.test
deleted file mode 100755
index cb2a077..0000000
--- a/tests/preadv-pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv and pwritev syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19 -eread=0 -ewrite=1 -e trace=preadv,pwritev
diff --git a/tests/preadv.c b/tests/preadv.c
index fb5d3ad..a55909b 100644
--- a/tests/preadv.c
+++ b/tests/preadv.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-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
@@ -66,7 +67,7 @@
 {
 	const off_t offset = 0xdefaceddeadbeefLL;
 	char *buf = tail_alloc(LEN);
-	struct iovec *iov = tail_alloc(sizeof(*iov));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = buf;
 	iov->iov_len = LEN;
 
diff --git a/tests/preadv.gen.test b/tests/preadv.gen.test
new file mode 100755
index 0000000..8fb7b54
--- /dev/null
+++ b/tests/preadv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/preadv.test b/tests/preadv.test
deleted file mode 100755
index d1abdb7..0000000
--- a/tests/preadv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check preadv syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/preadv2-pwritev2.c b/tests/preadv2-pwritev2.c
index f7c46c0..e31e046 100644
--- a/tests/preadv2-pwritev2.c
+++ b/tests/preadv2-pwritev2.c
@@ -2,6 +2,7 @@
  * Check decoding of preadv2 and pwritev2 syscalls.
  *
  * 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
@@ -181,26 +182,45 @@
 main(void)
 {
 	const kernel_ulong_t vlen = (kernel_ulong_t) 0xfac1fed2dad3bef4ULL;
-	const unsigned long long pos = 0xfac5fed6dad7bef8;
+	const unsigned long long pos = 0x7ac5fed6dad7bef8;
 	const kernel_ulong_t pos_l = (kernel_ulong_t) pos;
-	const kernel_ulong_t pos_h =
-		(sizeof(kernel_ulong_t) == sizeof(long long)) ?
-		(kernel_ulong_t) 0xbadc0deddeadbeefULL : 0xfac5fed6UL;
-	int test_dumpio = 1;
+	long rc;
+	int test_dumpio;
 
 	tprintf("%s", "");
 
-	syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
-	if (ENOSYS == errno)
-		test_dumpio = 0;
-	tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
-		(unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+	/*
+	 * x32 is the only architecture where preadv2 takes 5 arguments,
+	 * see preadv64v2 in kernel sources.
+	 */
+	rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, 1);
+#else
+	const kernel_ulong_t pos_h =
+		(sizeof(pos_l) == sizeof(pos)) ?
+		(kernel_ulong_t) 0xbadc0deddeadbeefULL :
+		(kernel_ulong_t) (pos >> 32);
+	rc = syscall(__NR_preadv2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+	if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+		perror_msg_and_fail("preadv2");
+	test_dumpio = EBADF == errno;
+	tprintf("preadv2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+		(unsigned long) vlen, pos, sprintrc(rc));
 
-	syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
-	if (ENOSYS == errno)
-		test_dumpio = 0;
-	tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = -1 %s (%m)\n",
-		(unsigned long) vlen, pos, errno2name());
+#if defined __x86_64__ && defined __ILP32__
+	/*
+	 * x32 is the only architecture where pwritev2 takes 5 arguments,
+	 * see pwritev64v2 in kernel sources.
+	 */
+	rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, 1);
+#else
+	rc = syscall(__NR_pwritev2, -1, NULL, vlen, pos_l, pos_h, 1);
+#endif
+	if (rc != -1 || (ENOSYS != errno && EBADF != errno))
+		perror_msg_and_fail("pwritev2");
+	tprintf("pwritev2(-1, NULL, %lu, %lld, RWF_HIPRI) = %s\n",
+		(unsigned long) vlen, pos, sprintrc(rc));
 
 	if (test_dumpio)
 		dumpio();
diff --git a/tests/preadv2-pwritev2.gen.test b/tests/preadv2-pwritev2.gen.test
new file mode 100755
index 0000000..2f89b41
--- /dev/null
+++ b/tests/preadv2-pwritev2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (preadv2-pwritev2 -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests/preadv2-pwritev2.test b/tests/preadv2-pwritev2.test
deleted file mode 100755
index 5641ef4..0000000
--- a/tests/preadv2-pwritev2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of preadv2 and pwritev2 syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -eread=0 -ewrite=1 -e trace=preadv2,pwritev2
diff --git a/tests/print_time.c b/tests/print_time.c
new file mode 100644
index 0000000..4292329
--- /dev/null
+++ b/tests/print_time.c
@@ -0,0 +1,75 @@
+/*
+ * Print time_t and nanoseconds in symbolic format.
+ *
+ * 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 <stdio.h>
+#include <time.h>
+
+static void
+print_time_t_ex(const time_t t, const unsigned long long part_sec,
+		const unsigned int max_part_sec, const int width,
+		const int comment)
+{
+
+	if ((!t && !part_sec) || part_sec > max_part_sec)
+		return;
+
+	const struct tm *const p = localtime(&t);
+	char buf[256];
+	if (!p || !strftime(buf, sizeof(buf), "%FT%T", p))
+		return;
+
+	if (comment)
+		fputs(" /* ", stdout);
+
+	fputs(buf, stdout);
+
+	if (part_sec)
+		printf(".%0*llu", width, part_sec);
+
+	if (strftime(buf, sizeof(buf), "%z", p))
+		fputs(buf, stdout);
+
+	if (comment)
+		fputs(" */", stdout);
+
+	return;
+}
+
+void
+print_time_t_nsec(const time_t t, const unsigned long long nsec, int comment)
+{
+	print_time_t_ex(t, nsec, 999999999, 9, comment);
+}
+
+void
+print_time_t_usec(const time_t t, const unsigned long long usec, int comment)
+{
+	print_time_t_ex(t, usec, 999999, 6, comment);
+}
diff --git a/tests/printstr.gen.test b/tests/printstr.gen.test
new file mode 100755
index 0000000..c3bd93a
--- /dev/null
+++ b/tests/printstr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (printstr -e trace=writev); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=writev
diff --git a/tests/printstr.test b/tests/printstr.test
deleted file mode 100755
index 5f164eb..0000000
--- a/tests/printstr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of non-NUL-terminated strings when len == -1.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -e trace=writev
diff --git a/tests/prlimit64.gen.test b/tests/prlimit64.gen.test
new file mode 100755
index 0000000..11964a5
--- /dev/null
+++ b/tests/prlimit64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (prlimit64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/prlimit64.test b/tests/prlimit64.test
deleted file mode 100755
index 2d2240d..0000000
--- a/tests/prlimit64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of prlimit64 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/process_vm_readv.gen.test b/tests/process_vm_readv.gen.test
new file mode 100755
index 0000000..3142588
--- /dev/null
+++ b/tests/process_vm_readv.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_readv -s5 -a37); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a37
diff --git a/tests/process_vm_readv.test b/tests/process_vm_readv.test
deleted file mode 100755
index c092f5a..0000000
--- a/tests/process_vm_readv.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of process_vm_readv syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s5 -a37
diff --git a/tests/process_vm_writev.gen.test b/tests/process_vm_writev.gen.test
new file mode 100755
index 0000000..0b912c0
--- /dev/null
+++ b/tests/process_vm_writev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (process_vm_writev -s5 -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s5 -a38
diff --git a/tests/process_vm_writev.test b/tests/process_vm_writev.test
deleted file mode 100755
index f690e6a..0000000
--- a/tests/process_vm_writev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of process_vm_writev syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s5 -a38
diff --git a/tests/pselect6.c b/tests/pselect6.c
index f264485..f5939f3 100644
--- a/tests/pselect6.c
+++ b/tests/pselect6.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -95,13 +96,13 @@
 	FD_SET(fds[0], set[1]);
 	FD_SET(fds[1], set[1]);
 	assert(syscall(__NR_pselect6, fds[1] + 1, NULL, set[1], NULL, &tm.ts, NULL) == 3);
-	printf("pselect6(%d, NULL, [1 2 %d %d], NULL, "
-	       "{tv_sec=%lld, tv_nsec=%lld}, NULL) = 3 (out [1 2 %d], left "
-	       "{tv_sec=%lld, tv_nsec=%lld})\n",
-	       fds[1] + 1, fds[0], fds[1],
-	       (long long) tm_in.ts.tv_sec, (long long) tm_in.ts.tv_nsec,
-	       fds[1],
-	       (long long) tm.ts.tv_sec, (long long) tm.ts.tv_nsec);
+	printf("pselect6(%d, NULL, [1 2 %d %d], NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, NULL) = 3 (out [1 2 %d]"
+	       ", left {tv_sec=%lld, tv_nsec=%llu})\n",
+	       fds[1] + 1, fds[0], fds[1], (long long) tm_in.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm_in.ts.tv_nsec),
+	       fds[1], (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec));
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
@@ -122,21 +123,40 @@
 	tm.ts.tv_sec = 0;
 	tm.ts.tv_nsec = 123;
 	assert(pselect(FD_SETSIZE + 1, set[0], set[1], NULL, &tm.ts, &mask) == 0);
-	printf("pselect6(%d, [%d], [], NULL, {tv_sec=0, tv_nsec=123}, "
-	       "{[HUP CHLD], %u}) = 0 (Timeout)\n",
+	printf("pselect6(%d, [%d], [], NULL, {tv_sec=0, tv_nsec=123}"
+	       ", {[HUP CHLD], %u}) = 0 (Timeout)\n",
 	       FD_SETSIZE + 1, fds[0], NSIG_BYTES);
 
 	/*
 	 * See how timeouts are decoded.
 	 */
+	tm.ts.tv_sec = 0xdeadbeefU;
+	tm.ts.tv_nsec = 0xfacefeedU;
+	assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+	printf("pselect6(0, NULL, NULL, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+	       (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec),
+	       NSIG_BYTES, sprintrc(-1));
+
+	tm.ts.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tm.ts.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(pselect(0, NULL, NULL, NULL, &tm.ts, NULL) == -1);
+	printf("pselect6(0, NULL, NULL, NULL"
+	       ", {tv_sec=%lld, tv_nsec=%llu}, {NULL, %u}) = %s\n",
+	       (long long) tm.ts.tv_sec,
+	       zero_extend_signed_to_ull(tm.ts.tv_nsec),
+	       NSIG_BYTES, sprintrc(-1));
+
 	assert(sigaction(SIGALRM, &act, NULL) == 0);
 	assert(setitimer(ITIMER_REAL, &itv, NULL) == 0);
 
+	tm.ts.tv_sec = 0;
 	tm.ts.tv_nsec = 222222222;
 	assert(pselect(0, NULL, NULL, NULL, &tm.ts, &mask) == -1);
-	printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}, "
-	       "{[HUP CHLD], %u}) = "
-	       "? ERESTARTNOHAND (To be restarted if no handler)\n",
+	printf("pselect6(0, NULL, NULL, NULL, {tv_sec=0, tv_nsec=222222222}"
+	       ", {[HUP CHLD], %u})"
+	       " = ? ERESTARTNOHAND (To be restarted if no handler)\n",
 	       NSIG_BYTES);
 	puts("--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---");
 
diff --git a/tests/pselect6.gen.test b/tests/pselect6.gen.test
new file mode 100755
index 0000000..c89e705
--- /dev/null
+++ b/tests/pselect6.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pselect6 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/pselect6.test b/tests/pselect6.test
deleted file mode 100755
index 203f8e2..0000000
--- a/tests/pselect6.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pselect6 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/ptrace.c b/tests/ptrace.c
index 80ce8cb..9e0ffdc 100644
--- a/tests/ptrace.c
+++ b/tests/ptrace.c
@@ -2,6 +2,7 @@
  * Check decoding of ptrace syscall.
  *
  * 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
@@ -30,16 +31,14 @@
 #include "tests.h"
 #include <asm/unistd.h>
 
-#ifdef __NR_rt_sigprocmask
-
-# include <errno.h>
-# include <signal.h>
-# include <stdio.h>
-# include <string.h>
-# include <sys/wait.h>
-# include <unistd.h>
-# include "ptrace.h"
-# include <linux/audit.h>
+#include <errno.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;
 
@@ -178,46 +177,38 @@
 	const unsigned long pid =
 		(unsigned long) 0xdefaced00000000ULL | (unsigned) getpid();
 
-	unsigned int sigset_size;
-
-	for (sigset_size = 1024 / 8; sigset_size; sigset_size >>= 1) {
-		if (!syscall(__NR_rt_sigprocmask,
-			     SIG_SETMASK, NULL, NULL, sigset_size))
-			break;
-	}
-	if (!sigset_size)
-		perror_msg_and_fail("rt_sigprocmask");
+	const unsigned int sigset_size = get_sigset_size();
 
 	void *const k_set = tail_alloc(sigset_size);
-	siginfo_t *const sip = tail_alloc(sizeof(*sip));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sip);
 
 	do_ptrace(bad_request, pid, 0, 0);
 	printf("ptrace(%#lx /* PTRACE_??? */, %u, NULL, NULL) = %s\n",
 	       bad_request, (unsigned) pid, errstr);
 
 	do_ptrace(PTRACE_PEEKDATA, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKDATA, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
 	do_ptrace(PTRACE_PEEKTEXT, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKTEXT, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
 
 	do_ptrace(PTRACE_PEEKUSER, pid, bad_request, bad_data);
-# ifdef IA64
+#ifdef IA64
 	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, errstr);
-# else
+#else
 	printf("ptrace(PTRACE_PEEKUSER, %u, %#lx, %#lx) = %s\n",
 	       (unsigned) pid, bad_request, bad_data, errstr);
 #endif
@@ -446,10 +437,3 @@
 	puts("+++ exited with 0 +++");
 	return 0;
 }
-
-
-#else
-
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask")
-
-#endif
diff --git a/tests/ptrace.gen.test b/tests/ptrace.gen.test
new file mode 100755
index 0000000..4b93250
--- /dev/null
+++ b/tests/ptrace.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ptrace -a23 -e signal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e signal=none
diff --git a/tests/ptrace.test b/tests/ptrace.test
deleted file mode 100755
index 5add9be..0000000
--- a/tests/ptrace.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ptrace syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e signal=none
diff --git a/tests/pure_executables.list b/tests/pure_executables.list
new file mode 100755
index 0000000..cc65614
--- /dev/null
+++ b/tests/pure_executables.list
@@ -0,0 +1,330 @@
+# executables without side effects
+_newselect
+accept
+accept4
+access
+acct
+add_key
+adjtimex
+aio
+alarm
+bpf
+brk
+btrfs
+caps
+chmod
+chown
+chown32
+chroot
+clock_adjtime
+clock_nanosleep
+clock_xettime
+copy_file_range
+creat
+delete_module
+dup
+dup2
+dup3
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_pwait
+epoll_wait
+erestartsys
+eventfd
+execve
+execveat
+faccessat
+fadvise64
+fadvise64_64
+fallocate
+fanotify_init
+fanotify_mark
+fchdir
+fchmod
+fchmodat
+fchown
+fchown32
+fchownat
+fcntl
+fcntl64
+fdatasync
+file_handle
+file_ioctl
+finit_module
+flock
+fstat
+fstat64
+fstatat64
+fstatfs
+fstatfs64
+fsync
+ftruncate
+ftruncate64
+futex
+futimesat
+get_mempolicy
+getcpu
+getcwd
+getdents
+getdents64
+getegid
+getegid32
+geteuid
+geteuid32
+getgid
+getgid32
+getgroups
+getgroups32
+getpeername
+getpgrp
+getpid
+getppid
+getrandom
+getresgid
+getresgid32
+getresuid
+getresuid32
+getrlimit
+getrusage
+getsid
+getsockname
+getuid
+getuid32
+getxxid
+inet-cmsg
+init_module
+inotify
+inotify_init1
+ioctl
+ioctl_block
+ioctl_dm
+ioctl_evdev
+ioctl_loop
+ioctl_mtd
+ioctl_rtc
+ioctl_scsi
+ioctl_sg_io_v3
+ioctl_sg_io_v4
+ioctl_sock_gifconf
+ioctl_uffdio
+ioctl_v4l2
+ioperm
+iopl
+ioprio
+ip_mreq
+ipc
+ipc_msg
+ipc_msgbuf
+ipc_sem
+ipc_shm
+kcmp
+kexec_file_load
+kexec_load
+keyctl
+kill
+lchown
+lchown32
+link
+linkat
+llseek
+lookup_dcookie
+lseek
+lstat
+lstat64
+madvise
+mbind
+membarrier
+memfd_create
+migrate_pages
+mincore
+mkdir
+mkdirat
+mknod
+mknodat
+mlock
+mlock2
+mlockall
+mmap
+mmap64
+mmsg
+mmsg_name
+mount
+move_pages
+mq
+mq_sendrecv
+mq_sendrecv-read
+mq_sendrecv-write
+msg_control
+msg_name
+munlockall
+nanosleep
+net-icmp_filter
+net-sockaddr
+net-y-unix
+net-yy-inet
+net-yy-netlink
+net-yy-unix
+netlink_protocol
+newfstatat
+old_mmap
+oldfstat
+oldlstat
+oldselect
+oldstat
+open
+openat
+osf_utimes
+pause
+perf_event_open
+personality
+pipe
+pipe2
+pkey_alloc
+pkey_free
+pkey_mprotect
+poll
+ppoll
+prctl-arg2-intptr
+prctl-dumpable
+prctl-name
+prctl-no-args
+prctl-pdeathsig
+prctl-securebits
+prctl-tid_address
+prctl-tsc
+pread64-pwrite64
+preadv
+preadv-pwritev
+preadv2-pwritev2
+printstr
+prlimit64
+process_vm_readv
+process_vm_writev
+pselect6
+ptrace
+pwritev
+quotactl
+quotactl-xfs
+read-write
+readahead
+readdir
+readlink
+readlinkat
+readv
+reboot
+recvfrom
+recvmmsg-timeout
+recvmsg
+remap_file_pages
+rename
+renameat
+renameat2
+request_key
+rmdir
+rt_sigpending
+rt_sigprocmask
+rt_sigqueueinfo
+rt_sigreturn
+rt_sigsuspend
+rt_sigtimedwait
+rt_tgsigqueueinfo
+sched_get_priority_mxx
+sched_rr_get_interval
+sched_xetaffinity
+sched_xetattr
+sched_xetparam
+sched_xetscheduler
+sched_yield
+seccomp-filter
+select
+semop
+sendfile
+sendfile64
+set_mempolicy
+setdomainname
+setfsgid
+setfsgid32
+setfsuid
+setfsuid32
+setgid
+setgid32
+setgroups
+setgroups32
+sethostname
+setns
+setregid
+setregid32
+setresgid
+setresgid32
+setresuid
+setresuid32
+setreuid
+setreuid32
+setrlimit
+setuid
+setuid32
+shmxt
+shutdown
+sigaction
+sigaltstack
+siginfo
+signalfd4
+sigreturn
+sigsuspend
+socketcall
+splice
+stat
+stat64
+statfs
+statfs64
+statx
+swap
+sxetmask
+symlink
+symlinkat
+sync
+sync_file_range
+sync_file_range2
+sysinfo
+syslog
+tee
+time
+timer_create
+timer_xettime
+timerfd_xettime
+times
+times-fail
+truncate
+truncate64
+ugetrlimit
+uio
+umask
+umount
+umount2
+umoven-illptr
+umovestr
+umovestr-illptr
+umovestr2
+umovestr3
+uname
+unlink
+unlinkat
+unshare
+userfaultfd
+ustat
+utime
+utimensat
+utimes
+vhangup
+vmsplice
+wait4
+waitid
+waitpid
+xattr
+xattr-strings
+xet_robust_list
+xetitimer
+xetpgid
+xetpriority
+xettimeofday
diff --git a/tests/pwritev.gen.test b/tests/pwritev.gen.test
new file mode 100755
index 0000000..e54fd15
--- /dev/null
+++ b/tests/pwritev.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (pwritev -a22 -s7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s7
diff --git a/tests/pwritev.test b/tests/pwritev.test
deleted file mode 100755
index 0aed683..0000000
--- a/tests/pwritev.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check pwritev syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -s7
diff --git a/tests/qual_fault-exit_group.test b/tests/qual_fault-exit_group.test
index c98ffc6..34a2da5 100755
--- a/tests/qual_fault-exit_group.test
+++ b/tests/qual_fault-exit_group.test
@@ -3,6 +3,7 @@
 # Check decoding of fault injected exit_group syscall.
 #
 # 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
@@ -41,13 +42,13 @@
 	match_diff
 }
 
-test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ./answer
+test_with -eexit,exit_group -efault=exit_group:error=ENOSYS ../answer
 
 test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
-	  -efault=\!process:error=1 ./answer
+	  -efault=\!process:error=1 ../answer
 
 test_with -eexit,exit_group -efault=all:error=ENOSYS \
-	  -efault=exit:error=1:when=2+ ./answer
+	  -efault=exit:error=1:when=2+ ../answer
 
 test_with -eexit,exit_group -efault=exit_group:error=ENOSYS \
-	  -efault=\!desc,file,memory,process,signal,network,ipc:error=1 ./answer
+	  -efault=\!%desc,%file,%memory,%process,%signal,%network,%ipc:error=1 ../answer
diff --git a/tests/qual_fault-syntax.test b/tests/qual_fault-syntax.test
index 85093fc..0cce539 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-2017 Dmitry V. Levin <ldv@altlinux.org>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
diff --git a/tests/qual_fault.c b/tests/qual_fault.c
index d26dc7c..ab692cb 100644
--- a/tests/qual_fault.c
+++ b/tests/qual_fault.c
@@ -2,6 +2,7 @@
  * Check that fault injection works properly.
  *
  * 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
diff --git a/tests/qual_fault.test b/tests/qual_fault.test
index e194a78..f8e57d2 100755
--- a/tests/qual_fault.test
+++ b/tests/qual_fault.test
@@ -3,6 +3,7 @@
 # Check that fault injection works properly.
 #
 # 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
@@ -76,12 +77,11 @@
 
 	run_strace -a11 -e trace=$trace \
 		"$@" -e fault=$fault$when$error $extra \
-		./$NAME $raw "$err" "$first" "$step" $N \
+		../$NAME $raw "$err" "$first" "$step" $N \
 		> "$EXP" 4> "$outexp" 5> "$outgot"
 
 	match_diff "$EXP" "$LOG"
 	match_diff "$outexp" "$outgot"
-	rm -f "$EXP" "$outexp" "$outgot"
 }
 
 for err in '' ENOSYS 22 einval; do
diff --git a/tests/qual_inject-error-signal.test b/tests/qual_inject-error-signal.test
index fcbcc39..1fe4612 100755
--- a/tests/qual_inject-error-signal.test
+++ b/tests/qual_inject-error-signal.test
@@ -4,5 +4,5 @@
 . "${srcdir=.}/scno_tampering.sh"
 
 run_strace -a12 -echdir,exit_group -einject=chdir:error=ENOENT:signal=USR1 \
-	"./$NAME"
+	"../$NAME"
 match_diff
diff --git a/tests/qual_inject-retval.test b/tests/qual_inject-retval.test
index 419030a..5a4efd1 100755
--- a/tests/qual_inject-retval.test
+++ b/tests/qual_inject-retval.test
@@ -12,9 +12,8 @@
 	rval="$1"; shift
 
 	run_strace -a12 -e$syscall -einject="$syscall:retval=$rval" "$@" \
-		./qual_inject-retval "$rval" > "$EXP"
+		../qual_inject-retval "$rval" > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 check_injection 0
diff --git a/tests/qual_inject-signal.test b/tests/qual_inject-signal.test
index 88002ce..f17e5a0 100755
--- a/tests/qual_inject-signal.test
+++ b/tests/qual_inject-signal.test
@@ -4,5 +4,5 @@
 . "${srcdir=.}/init.sh"
 
 run_strace -a12 -echdir,exit_group -einject=chdir:signal=USR1 \
-	./$NAME
+	../$NAME
 match_diff
diff --git a/tests/qual_signal.test b/tests/qual_signal.test
index 54a37a3..52812b7 100755
--- a/tests/qual_signal.test
+++ b/tests/qual_signal.test
@@ -3,6 +3,7 @@
 # Check how strace -e signal=set works.
 #
 # 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
@@ -34,10 +35,9 @@
 	local sigs
 	sigs="$1"; shift
 
-	run_prog "./$NAME" "$@" > /dev/null
-	run_strace -e trace=none -e signal="$sigs" "./$NAME" "$@" > "$EXP"
+	run_prog "../$NAME" "$@" > /dev/null
+	run_strace -e trace=none -e signal="$sigs" "../$NAME" "$@" > "$EXP"
 	match_diff "$LOG" "$EXP"
-	rm -f "$EXP"
 }
 
 test_sigs()
diff --git a/tests/qual_syscall.test b/tests/qual_syscall.test
index f7eb06d..1524405 100755
--- a/tests/qual_syscall.test
+++ b/tests/qual_syscall.test
@@ -5,17 +5,17 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./umovestr
-pattern_abbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[/\* [[:digit:]]* vars \*/\]) = 0'
-pattern_nonabbrev_verbose='execve("\./umovestr", \["\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
-pattern_nonverbose='execve("\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
+run_prog ../umovestr
+pattern_abbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/) = 0'
+pattern_nonabbrev_verbose='execve("\.\./umovestr", \["\.\./umovestr"\], \[".*\"\(\.\.\.\)\?\]) = 0'
+pattern_nonverbose='execve("\.\./umovestr", 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
 pattern_raw='execve(0x[[:xdigit:]]*, 0x[[:xdigit:]]*, 0x[[:xdigit:]]*) = 0'
 
 check_output_mismatch()
 {
 	local pattern
 	pattern="$1"; shift
-	run_strace "$@" ./umovestr
+	run_strace "$@" ../umovestr
 	LC_ALL=C grep -x "$pattern" "$LOG" > /dev/null || {
 		printf '%s\n%s\n' \
 			'Failed patterns of expected output:' "$pattern"
@@ -28,15 +28,19 @@
 LC_ALL=C grep '^[[:alnum:]_]*(' > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-check_output_mismatch "$pattern_abbrev_verbose" -e trace=process
+check_output_mismatch "$pattern_abbrev_verbose" -e trace=%process
 LC_ALL=C grep '^chdir' "$LOG" > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-run_strace -e 42 ./umovestr
+run_strace -e 42 ../umovestr
 LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
 	dump_log_and_fail_with "$STRACE $args unexpected output"
 
-for a in execve \!chdir all \!none \
+run_strace -e/ -e42 ../umovestr
+LC_ALL=C grep '^[[:alnum:]_]*(' "$LOG" > /dev/null &&
+	dump_log_and_fail_with "$STRACE $args unexpected output"
+
+for a in execve \!chdir /. all \!none \
 	 file process \!desc \!ipc \!memory \!network \!signal; do
 	check_output_mismatch \
 		"$pattern_abbrev_verbose" -e abbrev="$a" -e execve
diff --git a/tests/quotactl-v.gen.test b/tests/quotactl-v.gen.test
new file mode 100755
index 0000000..8659ed2
--- /dev/null
+++ b/tests/quotactl-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-v.test b/tests/quotactl-v.test
deleted file mode 100755
index 6adaf82..0000000
--- a/tests/quotactl-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs-v.gen.test b/tests/quotactl-xfs-v.gen.test
new file mode 100755
index 0000000..f1f7e0a
--- /dev/null
+++ b/tests/quotactl-xfs-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs-v -v -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs-v.test b/tests/quotactl-xfs-v.test
deleted file mode 100755
index d5ffc7d..0000000
--- a/tests/quotactl-xfs-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check non-abbreviated decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=quotactl
diff --git a/tests/quotactl-xfs.c b/tests/quotactl-xfs.c
index e420d1c..b2a884b 100644
--- a/tests/quotactl-xfs.c
+++ b/tests/quotactl-xfs.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-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -207,10 +208,10 @@
 	char unterminated_str[sizeof(void *) * 2 + sizeof("0x")];
 
 	long rc;
-	struct fs_disk_quota *xdq = tail_alloc(sizeof(*xdq));
-	struct fs_quota_stat *xqstat = tail_alloc(sizeof(*xqstat));
-	struct fs_quota_statv *xqstatv = tail_alloc(sizeof(*xqstatv));
-	uint32_t *flags = tail_alloc(sizeof(*flags));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_disk_quota, xdq);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_stat, xqstat);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct fs_quota_statv, xqstatv);
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, flags);
 	char *unterminated = tail_memdup(unterminated_data,
 		sizeof(unterminated_data));
 
diff --git a/tests/quotactl-xfs.gen.test b/tests/quotactl-xfs.gen.test
new file mode 100755
index 0000000..cd7d11c
--- /dev/null
+++ b/tests/quotactl-xfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl-xfs -e trace=quotactl); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=quotactl
diff --git a/tests/quotactl-xfs.test b/tests/quotactl-xfs.test
deleted file mode 100755
index 404a737..0000000
--- a/tests/quotactl-xfs.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl xfs subcommands.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=quotactl
diff --git a/tests/quotactl.c b/tests/quotactl.c
index 3a7c113..88c3fda 100644
--- a/tests/quotactl.c
+++ b/tests/quotactl.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-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -173,10 +174,10 @@
 	long rc;
 	char *unterminated = tail_memdup(unterminated_data,
 					 sizeof(unterminated_data));
-	struct if_dqblk *dqblk = tail_alloc(sizeof(*dqblk));
-	struct if_dqinfo *dqinfo = tail_alloc(sizeof(*dqinfo));
-	uint32_t *fmt = tail_alloc(sizeof(*fmt));
-	struct if_nextdqblk *nextdqblk = tail_alloc(sizeof(*nextdqblk));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqblk, dqblk);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_dqinfo, dqinfo);
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, fmt);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct if_nextdqblk, nextdqblk);
 
 
 	snprintf(bogus_special_str, sizeof(bogus_special_str), "%p",
diff --git a/tests/quotactl.gen.test b/tests/quotactl.gen.test
new file mode 100755
index 0000000..c6ad6e1
--- /dev/null
+++ b/tests/quotactl.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (quotactl ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/quotactl.test b/tests/quotactl.test
deleted file mode 100755
index d0101f4..0000000
--- a/tests/quotactl.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of quotactl syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/read-write.c b/tests/read-write.c
index 262e07b..ed4c64d 100644
--- a/tests/read-write.c
+++ b/tests/read-write.c
@@ -2,6 +2,7 @@
  * Check decoding and dumping of read and write syscalls.
  *
  * 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
@@ -137,7 +138,9 @@
 {
 	tprintf("%s", "");
 
-	static char tmp[] = "read-write-tmpfile";
+	skip_if_unavailable("/proc/self/fd/");
+
+	static const char tmp[] = "read-write-tmpfile";
 	if (open(tmp, O_CREAT|O_RDONLY|O_TRUNC, 0600) != 0)
 		perror_msg_and_fail("creat: %s", tmp);
 	if (open(tmp, O_WRONLY) != 1)
diff --git a/tests/read-write.gen.test b/tests/read-write.gen.test
new file mode 100755
index 0000000..df1b3fb
--- /dev/null
+++ b/tests/read-write.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (read-write -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15 -eread=0 -ewrite=1 -e trace=read,write -P read-write-tmpfile -P /dev/zero -P /dev/null
diff --git a/tests/read-write.test b/tests/read-write.test
deleted file mode 100755
index 3700541..0000000
--- a/tests/read-write.test
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check decoding and dumping of read and write syscalls.
-
-. "${srcdir=.}/init.sh"
-
-# strace -P is implemented using /proc/self/fd
-[ -d /proc/self/fd/ ] ||
-	framework_skip_ '/proc/self/fd/ is not available'
-
-tmpfile=read-write-tmpfile
-> $tmpfile
-
-run_strace_match_diff \
-	-a15 -eread=0 -ewrite=1 -e trace=read,write \
-	-P $tmpfile -P /dev/zero -P /dev/null
-
-rm -f $tmpfile
diff --git a/tests/readahead.c b/tests/readahead.c
index c11b577..c243ae4 100644
--- a/tests/readahead.c
+++ b/tests/readahead.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests/readahead.gen.test b/tests/readahead.gen.test
new file mode 100755
index 0000000..4e88efa
--- /dev/null
+++ b/tests/readahead.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readahead -a1); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a1
diff --git a/tests/readahead.test b/tests/readahead.test
deleted file mode 100755
index 397c690..0000000
--- a/tests/readahead.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readahead syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a1
diff --git a/tests/readdir.c b/tests/readdir.c
index 8c48362..a47856f 100644
--- a/tests/readdir.c
+++ b/tests/readdir.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -58,9 +59,9 @@
 	"A\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nA\\nZ";
 
 int
-main(int ac, const char **av)
+main(void)
 {
-	char *dname;
+	static const char dname[] = "readdir.test.tmp.dir";
 	struct {
 		unsigned long   d_ino;
 		unsigned long   d_off;
@@ -69,8 +70,6 @@
 	} e;
 	int rc;
 
-	assert(ac == 1);
-	assert(asprintf(&dname, "%s.test.tmp.dir", av[0]) > 0);
 	assert(!mkdir(dname, 0700));
 	assert(!chdir(dname));
 	(void) close(0);
diff --git a/tests/readdir.gen.test b/tests/readdir.gen.test
new file mode 100755
index 0000000..10da83b
--- /dev/null
+++ b/tests/readdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readdir -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests/readdir.test b/tests/readdir.test
deleted file mode 100755
index e313273..0000000
--- a/tests/readdir.test
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-# Check readdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-rm -rf -- "$LOG".dir
-run_strace_match_diff -a16
diff --git a/tests/readlink.gen.test b/tests/readlink.gen.test
new file mode 100755
index 0000000..755fc8b
--- /dev/null
+++ b/tests/readlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlink -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests/readlink.test b/tests/readlink.test
deleted file mode 100755
index c026ecb..0000000
--- a/tests/readlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check readlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -xx
diff --git a/tests/readlinkat.gen.test b/tests/readlinkat.gen.test
new file mode 100755
index 0000000..2a50299
--- /dev/null
+++ b/tests/readlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (readlinkat -xx); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -xx
diff --git a/tests/readlinkat.test b/tests/readlinkat.test
deleted file mode 100755
index 229c8e1..0000000
--- a/tests/readlinkat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check readlinkat syscall decoding.
-
-. "${srcdir=.}/readlink.test"
diff --git a/tests/readv.test b/tests/readv.test
index dc18799..d75e370 100755
--- a/tests/readv.test
+++ b/tests/readv.test
@@ -3,6 +3,7 @@
 # Check decoding and dumping of readv and writev syscalls.
 #
 # 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
@@ -38,7 +39,7 @@
 run_strace_match_diff -a16 -e trace=readv,writev \
 	-eread='!all' -ewrite=none -eread='!0,1,2' -ewrite='!0,1,2'
 
-wfd="$(./print_maxfd)"
+wfd="$(../print_maxfd)"
 rfd="$(($wfd - 1))"
 run_strace_match_diff -a16 -e trace=readv,writev \
 	-eread="$rfd" -ewrite="$wfd"
diff --git a/tests/reboot.gen.test b/tests/reboot.gen.test
new file mode 100755
index 0000000..0a48dea
--- /dev/null
+++ b/tests/reboot.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (reboot ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/reboot.test b/tests/reboot.test
deleted file mode 100755
index a97dd21..0000000
--- a/tests/reboot.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check reboot syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/recvfrom.gen.test b/tests/recvfrom.gen.test
new file mode 100755
index 0000000..c23780c
--- /dev/null
+++ b/tests/recvfrom.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvfrom -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/recvfrom.test b/tests/recvfrom.test
deleted file mode 100755
index 9dfbc89..0000000
--- a/tests/recvfrom.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sockaddr related arguments of recvfrom syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/recvmmsg-timeout.c b/tests/recvmmsg-timeout.c
index 7cf064d..64ce16a 100644
--- a/tests/recvmmsg-timeout.c
+++ b/tests/recvmmsg-timeout.c
@@ -2,6 +2,7 @@
  * Check decoding of timeout argument of recvmmsg syscall.
  *
  * 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
@@ -50,13 +51,15 @@
 			.msg_iovlen = 1
 		}
 	};
-	struct timespec t = { .tv_sec = 0, .tv_nsec = 12345678 };
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
+	ts->tv_sec = 0;
+	ts->tv_nsec = 12345678;
 
-	int rc = recv_mmsg(-1, &mh, 1, 0, &t);
+	int rc = recv_mmsg(-1, &mh, 1, 0, ts);
 	printf("recvmmsg(-1, %p, 1, 0, {tv_sec=0, tv_nsec=12345678})"
-	       " = %d %s (%m)\n", &mh, rc, errno2name());
+	       " = %s\n", &mh, sprintrc(rc));
 
-	rc = recv_mmsg(fds[0], &mh, 1, 0, &t);
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
 	if (rc < 0)
 		perror_msg_and_skip("recvmmsg");
 	printf("recvmmsg(%d, [{msg_hdr={msg_name=NULL, msg_namelen=0"
@@ -64,7 +67,23 @@
 	       ", msg_controllen=0, msg_flags=0}, msg_len=1}], 1, 0"
 	       ", {tv_sec=0, tv_nsec=12345678}) = "
 	       "%d (left {tv_sec=0, tv_nsec=%d})\n",
-	       fds[0], rc, (int) t.tv_nsec);
+	       fds[0], rc, (int) ts->tv_nsec);
+
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+	printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       fds[0], &mh, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = recv_mmsg(fds[0], &mh, 1, 0, ts);
+	printf("recvmmsg(%d, %p, 1, 0, {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       fds[0], &mh, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/recvmmsg-timeout.gen.test b/tests/recvmmsg-timeout.gen.test
new file mode 100755
index 0000000..6306de7
--- /dev/null
+++ b/tests/recvmmsg-timeout.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmmsg-timeout -a25 -e trace=recvmmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests/recvmmsg-timeout.test b/tests/recvmmsg-timeout.test
deleted file mode 100755
index 36a1222..0000000
--- a/tests/recvmmsg-timeout.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of timeout argument of recvmmsg syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a25 -e trace=recvmmsg
diff --git a/tests/recvmsg.gen.test b/tests/recvmsg.gen.test
new file mode 100755
index 0000000..fc8ef06
--- /dev/null
+++ b/tests/recvmsg.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (recvmsg -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests/recvmsg.test b/tests/recvmsg.test
deleted file mode 100755
index e373a20..0000000
--- a/tests/recvmsg.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of recvmsg and sendmsg syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -eread=0 -ewrite=1 -e trace=recvmsg,sendmsg
diff --git a/tests/redirect-fds.test b/tests/redirect-fds.test
index ddef8fa..3da6942 100755
--- a/tests/redirect-fds.test
+++ b/tests/redirect-fds.test
@@ -3,6 +3,7 @@
 # Check that strace does not leak placeholder descriptors.
 #
 # 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
@@ -47,18 +48,17 @@
 	a2="$2"
 	a3="$3"
 
+	rm -f "$LOG" "$fd0" "$fd1" "$fd2"
 	touch "$LOG" "$fd0" ||
 		framework_skip_ 'failed to create files'
 
-	set -- "\"./$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
+	set -- "\"../$NAME\"" "\"$1\"" "\"$2\"" "\"$3\""
 	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
 			fail_ "$* failed with code $rc"
 
 	set -- "$STRACE" -o"$LOG" -echdir "$@"
 	eval "$@" "<${a1:-&-}" ">${a2:-&-}" "2>${a3:-&-}" ||
 		dump_log_and_fail_with "$* failed with code $?"
-
-	rm -f "$LOG" "$fd0" "$fd1" "$fd2"
 }
 
 check_fd "$fd0" "$fd1" "$fd2"
diff --git a/tests/redirect.test b/tests/redirect.test
index fa0c536..d70754e 100755
--- a/tests/redirect.test
+++ b/tests/redirect.test
@@ -3,6 +3,7 @@
 # Ensure that strace does not retain stdin and stdout descriptors.
 #
 # 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
@@ -74,5 +75,3 @@
 if [ -s "$OUT" ]; then
 	fail_ "$STRACE failed to redirect standard output"
 fi
-
-rm -f -- "$OUT"
diff --git a/tests/regex.gen.test b/tests/regex.gen.test
new file mode 100755
index 0000000..71a02d6
--- /dev/null
+++ b/tests/regex.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (regex test_trace_expr '' -etrace='/^(.*_)?statv?fs'); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -etrace='/^(.*_)?statv?fs'
diff --git a/tests/regex.in b/tests/regex.in
new file mode 100755
index 0000000..7c4adfe
--- /dev/null
+++ b/tests/regex.in
@@ -0,0 +1,2 @@
+statfs	-a17
+statfs64	-a23
diff --git a/tests/remap_file_pages.gen.test b/tests/remap_file_pages.gen.test
new file mode 100755
index 0000000..e489473
--- /dev/null
+++ b/tests/remap_file_pages.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (remap_file_pages ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/remap_file_pages.test b/tests/remap_file_pages.test
deleted file mode 100755
index 9d51a9a..0000000
--- a/tests/remap_file_pages.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check remap_file_pages syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/rename.gen.test b/tests/rename.gen.test
new file mode 100755
index 0000000..07f0180
--- /dev/null
+++ b/tests/rename.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rename -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/rename.test b/tests/rename.test
deleted file mode 100755
index 9067e4c..0000000
--- a/tests/rename.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rename syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/renameat.gen.test b/tests/renameat.gen.test
new file mode 100755
index 0000000..f2879cd
--- /dev/null
+++ b/tests/renameat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/renameat.test b/tests/renameat.test
deleted file mode 100755
index 9b0a61d..0000000
--- a/tests/renameat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/renameat2.gen.test b/tests/renameat2.gen.test
new file mode 100755
index 0000000..cd7c34c
--- /dev/null
+++ b/tests/renameat2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (renameat2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/renameat2.test b/tests/renameat2.test
deleted file mode 100755
index 4c176bb..0000000
--- a/tests/renameat2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check renameat2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/request_key.gen.test b/tests/request_key.gen.test
new file mode 100755
index 0000000..aeac708
--- /dev/null
+++ b/tests/request_key.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (request_key -a33 -s12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -s12
diff --git a/tests/request_key.test b/tests/request_key.test
deleted file mode 100755
index 9812a18..0000000
--- a/tests/request_key.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of request_key syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -s12
diff --git a/tests/restart_syscall.c b/tests/restart_syscall.c
index e492e62..d06f9c2 100644
--- a/tests/restart_syscall.c
+++ b/tests/restart_syscall.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -55,11 +56,11 @@
 	if (nanosleep(&req, &rem))
 		perror_msg_and_fail("nanosleep");
 
-	printf("nanosleep\\(\\{tv_sec=%jd, tv_nsec=%jd\\}, "
-	       "\\{tv_sec=%jd, tv_nsec=%jd\\}\\)"
+	printf("nanosleep\\(\\{tv_sec=%lld, tv_nsec=%llu\\}"
+	       ", \\{tv_sec=%lld, tv_nsec=%llu\\}\\)"
 	       " = \\? ERESTART_RESTARTBLOCK \\(Interrupted by signal\\)\n",
-	       (intmax_t) req.tv_sec, (intmax_t) req.tv_nsec,
-	       (intmax_t) rem.tv_sec, (intmax_t) rem.tv_nsec);
+	       (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+	       (long long) rem.tv_sec, zero_extend_signed_to_ull(rem.tv_nsec));
 	puts("--- SIGALRM \\{si_signo=SIGALRM, si_code=SI_KERNEL\\} ---");
 #ifdef __arm__
 /* old kernels used to overwrite ARM_r0 with -EINTR */
@@ -67,11 +68,12 @@
 #else
 # define ALTERNATIVE_NANOSLEEP_REQ ""
 #endif
-	printf("(nanosleep\\((%s\\{tv_sec=%jd, tv_nsec=%jd\\}), "
-	       "%p|restart_syscall\\(<\\.\\.\\."
+	printf("(nanosleep\\((%s\\{tv_sec=%lld, tv_nsec=%llu\\})"
+	       ", %p|restart_syscall\\(<\\.\\.\\."
 	       " resuming interrupted nanosleep \\.\\.\\.>)\\) = 0\n",
 	       ALTERNATIVE_NANOSLEEP_REQ,
-	       (intmax_t) req.tv_sec, (intmax_t) req.tv_nsec, &rem);
+	       (long long) req.tv_sec, zero_extend_signed_to_ull(req.tv_nsec),
+	       &rem);
 
 	puts("\\+\\+\\+ exited with 0 \\+\\+\\+");
 	return 0;
diff --git a/tests/restart_syscall.test b/tests/restart_syscall.test
index 6dfda16..f7dfa04 100755
--- a/tests/restart_syscall.test
+++ b/tests/restart_syscall.test
@@ -6,8 +6,5 @@
 
 run_prog > /dev/null
 syscalls=nanosleep,restart_syscall
-run_strace -a20 -e trace=$syscalls $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
+run_strace -a20 -e trace=$syscalls $args > "$EXP"
+match_grep "$LOG" "$EXP"
diff --git a/tests/rmdir.gen.test b/tests/rmdir.gen.test
new file mode 100755
index 0000000..b511039
--- /dev/null
+++ b/tests/rmdir.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rmdir -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/rmdir.test b/tests/rmdir.test
deleted file mode 100755
index 81ee66b..0000000
--- a/tests/rmdir.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rmdir syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/rt_sigpending.c b/tests/rt_sigpending.c
index accf691..b57921f 100644
--- a/tests/rt_sigpending.c
+++ b/tests/rt_sigpending.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigpending strace test.
  *
  * 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
@@ -78,7 +79,7 @@
 
 	const unsigned int big_size = 1024 / 8;
 	void *k_set = tail_alloc(big_size);
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 
 	sigemptyset(libc_set);
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests/rt_sigpending.gen.test b/tests/rt_sigpending.gen.test
new file mode 100755
index 0000000..0458876
--- /dev/null
+++ b/tests/rt_sigpending.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/rt_sigpending.test b/tests/rt_sigpending.test
deleted file mode 100755
index 40c83a8..0000000
--- a/tests/rt_sigpending.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigpending syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/rt_sigprocmask.c b/tests/rt_sigprocmask.c
index 27e357f..c38ac94 100644
--- a/tests/rt_sigprocmask.c
+++ b/tests/rt_sigprocmask.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigprocmask strace test.
  *
  * 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
@@ -91,7 +92,7 @@
 
 	void *const k_set = tail_alloc(set_size);
 	void *const old_set = tail_alloc(set_size);
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 
 	memset(k_set, 0, set_size);
 	if (k_sigprocmask(SIG_SETMASK, k_set, NULL, set_size))
diff --git a/tests/rt_sigprocmask.gen.test b/tests/rt_sigprocmask.gen.test
new file mode 100755
index 0000000..a21c6db
--- /dev/null
+++ b/tests/rt_sigprocmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigprocmask ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/rt_sigprocmask.test b/tests/rt_sigprocmask.test
deleted file mode 100755
index 1e60ebd..0000000
--- a/tests/rt_sigprocmask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigprocmask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/rt_sigqueueinfo.c b/tests/rt_sigqueueinfo.c
index aba6776..f803d91 100644
--- a/tests/rt_sigqueueinfo.c
+++ b/tests/rt_sigqueueinfo.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
+ * Copyright (c) 2015-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests/rt_sigqueueinfo.gen.test b/tests/rt_sigqueueinfo.gen.test
new file mode 100755
index 0000000..7baf0e4
--- /dev/null
+++ b/tests/rt_sigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/rt_sigqueueinfo.test b/tests/rt_sigqueueinfo.test
deleted file mode 100755
index c03c76f..0000000
--- a/tests/rt_sigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_sigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/rt_sigreturn.c b/tests/rt_sigreturn.c
new file mode 100644
index 0000000..40d1589
--- /dev/null
+++ b/tests/rt_sigreturn.c
@@ -0,0 +1,79 @@
+/*
+ * 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 <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#ifdef ASM_SIGRTMIN
+# define RT_0 ASM_SIGRTMIN
+#else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+# define RT_0 32
+#endif
+
+static void
+handler(int no, siginfo_t *si, void *uc)
+{
+}
+
+int
+main(void)
+{
+	static sigset_t set;
+	sigemptyset(&set);
+	sigaddset(&set, SIGINT);
+	sigaddset(&set, SIGUSR2);
+	sigaddset(&set, SIGCHLD);
+	sigaddset(&set, RT_0 +  3);
+	sigaddset(&set, RT_0 +  4);
+	sigaddset(&set, RT_0 +  5);
+	sigaddset(&set, RT_0 + 26);
+	sigaddset(&set, RT_0 + 27);
+	if (sigprocmask(SIG_SETMASK, &set, NULL))
+		perror_msg_and_fail("sigprocmask");
+	sigemptyset(&set);
+
+	static const struct sigaction sa = {
+		.sa_sigaction = handler,
+		.sa_flags = SA_SIGINFO
+	};
+	if (sigaction(SIGUSR1, &sa, NULL))
+		perror_msg_and_fail("sigaction");
+
+	if (raise(SIGUSR1))
+		perror_msg_and_fail("raise");
+
+	static const char *const sigs =
+		(SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+	static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+	printf("rt_sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/tests/rt_sigreturn.gen.test b/tests/rt_sigreturn.gen.test
new file mode 100755
index 0000000..0672f11
--- /dev/null
+++ b/tests/rt_sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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'
diff --git a/tests/rt_sigsuspend.c b/tests/rt_sigsuspend.c
index 73e1336..422ec19 100644
--- a/tests/rt_sigsuspend.c
+++ b/tests/rt_sigsuspend.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigsuspend strace test.
  *
  * 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
@@ -88,7 +89,7 @@
 	void *k_set = tail_alloc(big_size);
 	memset(k_set, 0, big_size);
 
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 	sigemptyset(libc_set);
 	sigaddset(libc_set, SIGUSR1);
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
diff --git a/tests/rt_sigsuspend.gen.test b/tests/rt_sigsuspend.gen.test
new file mode 100755
index 0000000..d5d1d5f
--- /dev/null
+++ b/tests/rt_sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (rt_sigsuspend -a20 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -esignal=none
diff --git a/tests/rt_sigsuspend.test b/tests/rt_sigsuspend.test
deleted file mode 100755
index 2e30fd4..0000000
--- a/tests/rt_sigsuspend.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigsuspend syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -esignal=none
diff --git a/tests/rt_sigtimedwait.c b/tests/rt_sigtimedwait.c
index 10311e6..40544c7 100644
--- a/tests/rt_sigtimedwait.c
+++ b/tests/rt_sigtimedwait.c
@@ -2,6 +2,7 @@
  * This file is part of rt_sigtimedwait strace test.
  *
  * 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
@@ -54,25 +55,27 @@
 	for (;;) {
 		assert(k_sigtimedwait(set, NULL, timeout, size) == -1);
 		if (EINTR == errno) {
-			tprintf("rt_sigtimedwait(%s, NULL, "
-				"{tv_sec=%jd, tv_nsec=%jd}, %u)"
+			tprintf("rt_sigtimedwait(%s, NULL"
+				", {tv_sec=%lld, tv_nsec=%llu}, %u)"
 				" = -1 EAGAIN (%m)\n", text,
-				(intmax_t) timeout->tv_sec,
-				(intmax_t) timeout->tv_nsec,
+				(long long) timeout->tv_sec,
+				zero_extend_signed_to_ull(timeout->tv_nsec),
 				size);
 		} else {
 			if (size < sizeof(long))
-				tprintf("rt_sigtimedwait(%p, NULL, "
-					"{tv_sec=%jd, tv_nsec=%jd}"
+				tprintf("rt_sigtimedwait(%p, NULL"
+					", {tv_sec=%lld, tv_nsec=%llu}"
 					", %u) = -1 EINVAL (%m)\n",
-					set, (intmax_t) timeout->tv_sec,
-					(intmax_t) timeout->tv_nsec, size);
+					set, (long long) timeout->tv_sec,
+					zero_extend_signed_to_ull(timeout->tv_nsec),
+					size);
 			else
-				tprintf("rt_sigtimedwait(%s, NULL, "
-					"{tv_sec=%jd, tv_nsec=%jd}"
+				tprintf("rt_sigtimedwait(%s, NULL"
+					", {tv_sec=%lld, tv_nsec=%llu}"
 					", %u) = -1 EINVAL (%m)\n",
-					text, (intmax_t) timeout->tv_sec,
-					(intmax_t) timeout->tv_nsec, size);
+					text, (long long) timeout->tv_sec,
+					zero_extend_signed_to_ull(timeout->tv_nsec),
+					size);
 		}
 		if (!size)
 			break;
@@ -86,8 +89,8 @@
 {
 	tprintf("%s", "");
 
-	siginfo_t *const info = tail_alloc(sizeof(*info));
-	struct timespec *const timeout = tail_alloc(sizeof(*timeout));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, timeout);
 	timeout->tv_sec = 0;
 	timeout->tv_nsec = 42;
 
@@ -100,37 +103,58 @@
 		assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
 		if (EAGAIN == errno)
 			break;
-		tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%jd, tv_nsec=%jd}, %u)"
-			" = -1 EINVAL (%m)\n",
-			k_set, (intmax_t) timeout->tv_sec,
-			(intmax_t) timeout->tv_nsec, set_size);
+		tprintf("rt_sigtimedwait(%p, NULL, {tv_sec=%lld, tv_nsec=%llu}"
+			", %u) = -1 EINVAL (%m)\n",
+			k_set, (long long) timeout->tv_sec,
+			zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 	}
 	if (!set_size)
 		perror_msg_and_fail("rt_sigtimedwait");
-	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
-		set_size);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
-	sigset_t *const libc_set = tail_alloc(sizeof(sigset_t));
+	timeout->tv_sec = 0xdeadbeefU;
+	timeout->tv_nsec = 0xfacefeedU;
+	assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+		", %u) = -1 EINVAL (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+	timeout->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	timeout->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	assert(k_sigtimedwait(k_set, NULL, timeout, set_size) == -1);
+	tprintf("rt_sigtimedwait([], NULL, {tv_sec=%lld, tv_nsec=%llu}"
+		", %u) = -1 EINVAL (%m)\n",
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
+
+	timeout->tv_sec = 0;
+	timeout->tv_nsec = 42;
+
+	TAIL_ALLOC_OBJECT_CONST_PTR(sigset_t, libc_set);
 	sigemptyset(libc_set);
 	sigaddset(libc_set, SIGHUP);
 	memcpy(k_set, libc_set, set_size);
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+	tprintf("rt_sigtimedwait([HUP], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	sigaddset(libc_set, SIGINT);
 	memcpy(k_set, libc_set, set_size);
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%jd, tv_nsec=%jd}, %u)"
+	tprintf("rt_sigtimedwait([HUP INT], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
 		" = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	sigaddset(libc_set, SIGQUIT);
 	sigaddset(libc_set, SIGALRM);
@@ -139,17 +163,19 @@
 
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
+	tprintf("rt_sigtimedwait(%s, %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
 		"[HUP INT QUIT ALRM TERM]",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	memset(k_set - set_size, -1, set_size);
 	assert(k_sigtimedwait(k_set - set_size, info, timeout, set_size) == -1);
 	assert(EAGAIN == errno);
-	tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%jd, tv_nsec=%jd}, %u) = -1 EAGAIN (%m)\n",
-		info, (intmax_t) timeout->tv_sec,
-		(intmax_t) timeout->tv_nsec, set_size);
+	tprintf("rt_sigtimedwait(~[], %p, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = -1 EAGAIN (%m)\n",
+		info, (long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec), set_size);
 
 	if (sigprocmask(SIG_SETMASK, libc_set, NULL))
 		perror_msg_and_fail("sigprocmask");
@@ -164,9 +190,11 @@
 	raise(SIGALRM);
 	assert(k_sigtimedwait(k_set, info, timeout, set_size) == SIGALRM);
 	tprintf("rt_sigtimedwait(%s, {si_signo=%s, si_code=SI_TKILL"
-		", si_pid=%d, si_uid=%d}, {tv_sec=%jd, tv_nsec=%jd}, %u) = %d (%s)\n",
+		", si_pid=%d, si_uid=%d}, {tv_sec=%lld, tv_nsec=%llu}, %u)"
+		" = %d (%s)\n",
 		"[HUP INT QUIT ALRM TERM]", "SIGALRM", getpid(), getuid(),
-		(intmax_t) timeout->tv_sec, (intmax_t) timeout->tv_nsec,
+		(long long) timeout->tv_sec,
+		zero_extend_signed_to_ull(timeout->tv_nsec),
 		set_size, SIGALRM, "SIGALRM");
 
 	raise(SIGALRM);
diff --git a/tests/rt_sigtimedwait.gen.test b/tests/rt_sigtimedwait.gen.test
new file mode 100755
index 0000000..2b18e7a
--- /dev/null
+++ b/tests/rt_sigtimedwait.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/rt_sigtimedwait.test b/tests/rt_sigtimedwait.test
deleted file mode 100755
index e15fb77..0000000
--- a/tests/rt_sigtimedwait.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check rt_sigtimedwait syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests/rt_tgsigqueueinfo.c b/tests/rt_tgsigqueueinfo.c
index ec09348..3b2da2a 100644
--- a/tests/rt_tgsigqueueinfo.c
+++ b/tests/rt_tgsigqueueinfo.c
@@ -2,6 +2,7 @@
  * This file is part of rt_tgsigqueueinfo strace test.
  *
  * 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
@@ -42,9 +43,9 @@
 k_tgsigqueueinfo(const pid_t pid, const int sig, const void *const info)
 {
 	return syscall(__NR_rt_tgsigqueueinfo,
-		       (unsigned long) 0xffffffff00000000ULL | pid,
-		       (unsigned long) 0xffffffff00000000ULL | pid,
-		       (unsigned long) 0xffffffff00000000ULL | sig,
+		       F8ILL_KULONG_MASK | pid,
+		       F8ILL_KULONG_MASK | pid,
+		       F8ILL_KULONG_MASK | sig,
 		       info);
 }
 
@@ -57,7 +58,7 @@
 	if (sigaction(SIGUSR1, &sa, NULL))
 		perror_msg_and_fail("sigaction");
 
-	siginfo_t *const info = tail_alloc(sizeof(*info));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, info);
 	memset(info, 0, sizeof(*info));
 	info->si_signo = SIGUSR1;
 	info->si_errno = ENOENT;
diff --git a/tests/rt_tgsigqueueinfo.gen.test b/tests/rt_tgsigqueueinfo.gen.test
new file mode 100755
index 0000000..407bbff
--- /dev/null
+++ b/tests/rt_tgsigqueueinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/rt_tgsigqueueinfo.test b/tests/rt_tgsigqueueinfo.test
deleted file mode 100755
index ab24e2d..0000000
--- a/tests/rt_tgsigqueueinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of rt_tgsigqueueinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/sched.gen.test b/tests/sched.gen.test
new file mode 100755
index 0000000..6747117
--- /dev/null
+++ b/tests/sched.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched test_trace_expr times -e/sched); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr times -e/sched
diff --git a/tests/sched.in b/tests/sched.in
new file mode 100755
index 0000000..46031d6
--- /dev/null
+++ b/tests/sched.in
@@ -0,0 +1,7 @@
+sched_xetaffinity	-a28
+sched_xetparam	-a23
+sched_rr_get_interval	-a31
+sched_get_priority_mxx	-a33
+sched_xetattr	-a29
+sched_xetscheduler	-a22
+sched_yield	-a14
diff --git a/tests/sched_get_priority_mxx.gen.test b/tests/sched_get_priority_mxx.gen.test
new file mode 100755
index 0000000..a235997
--- /dev/null
+++ b/tests/sched_get_priority_mxx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_get_priority_mxx -a33 -e trace=sched_get_priority_min,sched_get_priority_max); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests/sched_get_priority_mxx.test b/tests/sched_get_priority_mxx.test
deleted file mode 100755
index 0d1a1a7..0000000
--- a/tests/sched_get_priority_mxx.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_get_priority_min and sched_get_priority_max syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33 -e trace=sched_get_priority_min,sched_get_priority_max
diff --git a/tests/sched_rr_get_interval.c b/tests/sched_rr_get_interval.c
index 0aacd2b..000a0be 100644
--- a/tests/sched_rr_get_interval.c
+++ b/tests/sched_rr_get_interval.c
@@ -11,7 +11,7 @@
 int
 main(void)
 {
-	struct timespec *const tp = tail_alloc(sizeof(struct timespec));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, tp);
 	long rc;
 
 	rc = syscall(__NR_sched_rr_get_interval, 0, NULL);
@@ -25,8 +25,10 @@
 
 	rc = syscall(__NR_sched_rr_get_interval, 0, tp);
 	if (rc == 0)
-		printf("sched_rr_get_interval(0, {tv_sec=%jd, tv_nsec=%jd}) = "
-		       "0\n", (intmax_t)tp->tv_sec, (intmax_t)tp->tv_nsec);
+		printf("sched_rr_get_interval(0, {tv_sec=%lld, tv_nsec=%llu})"
+		       " = 0\n",
+		       (long long) tp->tv_sec,
+		       zero_extend_signed_to_ull(tp->tv_nsec));
 	else
 		printf("sched_rr_get_interval(-1, %p) = %s\n", tp,
 			sprintrc(rc));
diff --git a/tests/sched_rr_get_interval.gen.test b/tests/sched_rr_get_interval.gen.test
new file mode 100755
index 0000000..493de64
--- /dev/null
+++ b/tests/sched_rr_get_interval.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/sched_rr_get_interval.test b/tests/sched_rr_get_interval.test
deleted file mode 100755
index 828ba5d..0000000
--- a/tests/sched_rr_get_interval.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_rr_get_interval syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a31
diff --git a/tests/sched_xetaffinity.gen.test b/tests/sched_xetaffinity.gen.test
new file mode 100755
index 0000000..7a1c75b
--- /dev/null
+++ b/tests/sched_xetaffinity.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetaffinity -a28 -e trace=sched_getaffinity,sched_setaffinity); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests/sched_xetaffinity.test b/tests/sched_xetaffinity.test
deleted file mode 100755
index 246ea21..0000000
--- a/tests/sched_xetaffinity.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getaffinity and sched_setaffinity syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28 -e trace=sched_getaffinity,sched_setaffinity
diff --git a/tests/sched_xetattr.c b/tests/sched_xetattr.c
index 1b48491..a9bd2ba 100644
--- a/tests/sched_xetattr.c
+++ b/tests/sched_xetattr.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,95 +32,214 @@
 
 # include <inttypes.h>
 # include <stdio.h>
+# include <sched.h>
 # include <unistd.h>
+# include "sched_attr.h"
+# include "xlat.h"
+# include "xlat/schedulers.h"
+
+static const char *errstr;
+
+static long
+sys_sched_getattr(kernel_ulong_t pid, kernel_ulong_t attr,
+		  kernel_ulong_t size, kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_sched_getattr, pid, attr, size, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+static long
+sys_sched_setattr(kernel_ulong_t pid, kernel_ulong_t attr, kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_sched_setattr, pid, attr, flags);
+	errstr = sprintrc(rc);
+	return rc;
+}
 
 int
 main(void)
 {
-	struct {
-		uint32_t size;
-		uint32_t sched_policy;
-		uint64_t sched_flags;
-		int32_t  sched_nice;
-		uint32_t sched_priority;
-		uint64_t sched_runtime;
-		uint64_t sched_deadline;
-		uint64_t sched_period;
-	} *sched_attr = tail_alloc(sizeof(*sched_attr));
+	static const kernel_ulong_t bogus_pid =
+		(kernel_ulong_t) 0xdefacedfacefeedULL;
+	static const kernel_ulong_t bogus_size =
+		(kernel_ulong_t) 0xdefacedcafef00dULL;
+	static const kernel_ulong_t bogus_flags =
+		(kernel_ulong_t) 0xdefaceddeadc0deULL;
 
-	long rc = syscall(__NR_sched_getattr, 0xdeadface, NULL, 0, 0);
-	printf("sched_getattr\\(%d, NULL, 0, 0\\) += %s\n",
-		0xdeadface, sprintrc_grep(rc));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_attr, attr);
+	TAIL_ALLOC_OBJECT_CONST_PTR(unsigned int, psize);
+	void *const efault = attr + 1;
 
-	rc = syscall(__NR_sched_getattr, -1,
-		     sched_attr, 0xbadfaced, 0xc0defeed);
-	printf("sched_getattr\\(-1, %p, %u, %u\\) += %s\n",
-		sched_attr, 0xbadfaced, 0xc0defeed, sprintrc_grep(rc));
+	sys_sched_getattr(0, 0, 0, 0);
+	printf("sched_getattr(0, NULL, 0, 0) = %s\n", errstr);
 
-	rc = syscall(__NR_sched_getattr, 0,
-		     sched_attr + 1, sizeof(*sched_attr), 0);
-	printf("sched_getattr\\(0, %p, %u, 0\\) += %s\n",
-		sched_attr + 1, (unsigned)sizeof(*sched_attr),
-		sprintrc_grep(rc));
+	sys_sched_getattr(0, (unsigned long) attr, 0, 0);
+	printf("sched_getattr(0, %p, 0, 0) = %s\n", attr, errstr);
 
-	if (syscall(__NR_sched_getattr, 0, sched_attr, sizeof(*sched_attr), 0))
+	sys_sched_getattr(bogus_pid, 0, 0, 0);
+	printf("sched_getattr(%d, NULL, 0, 0) = %s\n", (int) bogus_pid, errstr);
+
+	sys_sched_getattr(-1U, (unsigned long) attr, bogus_size, bogus_flags);
+	printf("sched_getattr(-1, %p, %s%u, %u) = %s\n",
+	       attr,
+# if defined __arm64__ || defined __aarch64__
+	       "0xdefaced<<32|",
+# else
+	       "",
+# endif
+	       (unsigned) bogus_size, (unsigned) bogus_flags, errstr);
+
+	sys_sched_getattr(0, (unsigned long) efault, sizeof(*attr), 0);
+	printf("sched_getattr(0, %p, %u, 0) = %s\n",
+	       efault, (unsigned) sizeof(*attr), errstr);
+
+	if (sys_sched_getattr(0, (unsigned long) attr, sizeof(*attr), 0))
 		perror_msg_and_skip("sched_getattr");
-
-	printf("sched_getattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
-	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
 	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-	       ", sched_period=%" PRIu64 "\\}, %u, 0\\) += 0\n",
-	       sched_attr->size,
-	       sched_attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
-	       sched_attr->sched_nice,
-	       sched_attr->sched_priority,
-	       sched_attr->sched_runtime,
-	       sched_attr->sched_deadline,
-	       sched_attr->sched_period,
-	       (unsigned) sizeof(*sched_attr));
+	       ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+	       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period,
+	       (unsigned) sizeof(*attr));
 
-	sched_attr->sched_flags |= 1;
-	if (syscall(__NR_sched_setattr, 0, sched_attr, 0))
+# if defined __arm64__ || defined __aarch64__
+	long rc =
+# endif
+	sys_sched_getattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+			  F8ILL_KULONG_MASK | sizeof(*attr), F8ILL_KULONG_MASK);
+# if defined __arm64__ || defined __aarch64__
+	if (rc) {
+		printf("sched_getattr(0, %p, 0xffffffff<<32|%u, 0) = %s\n",
+		       attr, (unsigned) sizeof(*attr), errstr);
+	} else
+# endif
+	{
+		printf("sched_getattr(0, {size=%u, sched_policy=", attr->size);
+		printxval(schedulers, attr->sched_policy, NULL);
+		printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+		       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+		       ", sched_period=%" PRIu64 "}, %u, 0) = 0\n",
+		       attr->sched_flags ? "SCHED_FLAG_RESET_ON_FORK" : "0",
+		       attr->sched_nice,
+		       attr->sched_priority,
+		       attr->sched_runtime,
+		       attr->sched_deadline,
+		       attr->sched_period,
+		       (unsigned) sizeof(*attr));
+	}
+
+	sys_sched_setattr(bogus_pid, 0, 0);
+	printf("sched_setattr(%d, NULL, 0) = %s\n", (int) bogus_pid, errstr);
+
+	attr->sched_flags |= 1;
+
+	if (sys_sched_setattr(0, (unsigned long) attr, 0))
 		perror_msg_and_skip("sched_setattr");
-
-	printf("sched_setattr\\(0, \\{size=%u, sched_policy=SCHED_[A-Z]+"
-	       ", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
 	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
-	       ", sched_period=%" PRIu64 "\\}, 0\\) += 0\n",
-	       sched_attr->size,
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
 	       "SCHED_FLAG_RESET_ON_FORK",
-	       sched_attr->sched_nice,
-	       sched_attr->sched_priority,
-	       sched_attr->sched_runtime,
-	       sched_attr->sched_deadline,
-	       sched_attr->sched_period);
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
 
-	sched_attr->size = 0x90807060;
-	sched_attr->sched_policy = 0xca7faced;
-	sched_attr->sched_flags = 0xbadc0ded1057da7aULL;
-	sched_attr->sched_nice = 0xafbfcfdf;
-	sched_attr->sched_priority = 0xb8c8d8e8;
-	sched_attr->sched_runtime = 0xbadcaffedeadf157ULL;
-	sched_attr->sched_deadline = 0xc0de70a57badac75ULL;
-	sched_attr->sched_period = 0xded1ca7edda7aca7ULL;
+	sys_sched_setattr(F8ILL_KULONG_MASK, (unsigned long) attr,
+			  F8ILL_KULONG_MASK);
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
+	       "SCHED_FLAG_RESET_ON_FORK",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
 
-	rc = syscall(__NR_sched_setattr, 0xfacec0de, sched_attr, 0xbeeff00d);
+	*psize = attr->size;
 
-	printf("sched_setattr\\(%d, \\{size=%u, "
-		"sched_policy=%#x /\\* SCHED_\\?\\?\\? \\*/, "
-		"sched_flags=%#" PRIx64 " /\\* SCHED_FLAG_\\?\\?\\? \\*/, "
-		"sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
-		"sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 "\\}, "
-		"%u\\) += %s\n",
-		0xfacec0de, sched_attr->size,
-		sched_attr->sched_policy,
-		sched_attr->sched_flags,
-		sched_attr->sched_nice,
-		sched_attr->sched_priority,
-		sched_attr->sched_runtime,
-		sched_attr->sched_deadline,
-		sched_attr->sched_period, 0xbeeff00d, sprintrc_grep(rc));
+	sys_sched_setattr(0, (unsigned long) psize, 0);
+	printf("sched_setattr(0, %p, 0) = %s\n", psize, errstr);
 
+	attr->size = 0;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u, sched_policy=", attr->size);
+	printxval(schedulers, attr->sched_policy, NULL);
+	printf(", sched_flags=%s, sched_nice=%d, sched_priority=%u"
+	       ", sched_runtime=%" PRIu64 ", sched_deadline=%" PRIu64
+	       ", sched_period=%" PRIu64 "}, 0) = 0\n",
+	       "SCHED_FLAG_RESET_ON_FORK",
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period);
+
+	attr->size = 1;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+	       1, attr->size, errstr);
+
+	attr->size = SCHED_ATTR_MIN_SIZE - 1;
+
+	sys_sched_setattr(0, (unsigned long) attr, 0);
+	printf("sched_setattr(0, {size=%u} => {size=%u}, 0) = %s\n",
+	       SCHED_ATTR_MIN_SIZE - 1, attr->size, errstr);
+
+	attr->size = 0x90807060;
+	attr->sched_policy = 0xca7faced;
+	attr->sched_flags = 0xbadc0ded1057da7aULL;
+	attr->sched_nice = 0xafbfcfdf;
+	attr->sched_priority = 0xb8c8d8e8;
+	attr->sched_runtime = 0xbadcaffedeadf157ULL;
+	attr->sched_deadline = 0xc0de70a57badac75ULL;
+	attr->sched_period = 0xded1ca7edda7aca7ULL;
+
+	sys_sched_setattr(bogus_pid, (unsigned long) attr, bogus_flags);
+	printf("sched_setattr(%d, {size=%u, sched_policy=%#x /* SCHED_??? */, "
+	       "sched_flags=%#" PRIx64 " /* SCHED_FLAG_??? */, "
+	       "sched_nice=%d, sched_priority=%u, sched_runtime=%" PRIu64 ", "
+	       "sched_deadline=%" PRIu64 ", sched_period=%" PRIu64 ", ...}, %u)"
+	       " = %s\n",
+	       (int) bogus_pid,
+	       attr->size,
+	       attr->sched_policy,
+	       attr->sched_flags,
+	       attr->sched_nice,
+	       attr->sched_priority,
+	       attr->sched_runtime,
+	       attr->sched_deadline,
+	       attr->sched_period,
+	       (unsigned) bogus_flags, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		const kernel_ulong_t ill = f8ill_ptr_to_kulong(attr);
+
+		sys_sched_getattr(0, ill, sizeof(*attr), 0);
+		printf("sched_getattr(0, %#llx, %u, 0) = %s\n",
+		       (unsigned long long) ill, (unsigned) sizeof(*attr),
+		       errstr);
+
+		sys_sched_setattr(0, ill, 0);
+		printf("sched_setattr(0, %#llx, 0) = %s\n",
+		       (unsigned long long) ill, errstr);
+	}
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
 
diff --git a/tests/sched_xetattr.gen.test b/tests/sched_xetattr.gen.test
new file mode 100755
index 0000000..e4f31c5
--- /dev/null
+++ b/tests/sched_xetattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetattr -a29 -e trace=sched_getattr,sched_setattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=sched_getattr,sched_setattr
diff --git a/tests/sched_xetattr.test b/tests/sched_xetattr.test
deleted file mode 100755
index c2c7914..0000000
--- a/tests/sched_xetattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check sched_getattr and sched_setattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e sched_getattr,sched_setattr $args > "$OUT"
-match_grep "$LOG" "$OUT"
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/sched_xetparam.gen.test b/tests/sched_xetparam.gen.test
new file mode 100755
index 0000000..220ffb2
--- /dev/null
+++ b/tests/sched_xetparam.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetparam -a23 -e trace=sched_getparam,sched_setparam); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests/sched_xetparam.test b/tests/sched_xetparam.test
deleted file mode 100755
index c9fede1..0000000
--- a/tests/sched_xetparam.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getparam and sched_setparam syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=sched_getparam,sched_setparam
diff --git a/tests/sched_xetscheduler.c b/tests/sched_xetscheduler.c
index 7faee8c..8248a0c 100644
--- a/tests/sched_xetscheduler.c
+++ b/tests/sched_xetscheduler.c
@@ -10,7 +10,7 @@
 int
 main(void)
 {
-	struct sched_param *const param = tail_alloc(sizeof(struct sched_param));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sched_param, param);
 	long rc = syscall(__NR_sched_getscheduler, 0);
 	const char *scheduler;
 	switch (rc) {
diff --git a/tests/sched_xetscheduler.gen.test b/tests/sched_xetscheduler.gen.test
new file mode 100755
index 0000000..0a80072
--- /dev/null
+++ b/tests/sched_xetscheduler.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests/sched_xetscheduler.test b/tests/sched_xetscheduler.test
deleted file mode 100755
index 07c93f3..0000000
--- a/tests/sched_xetscheduler.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_getscheduler and sched_setscheduler syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22 -e trace=sched_getscheduler,sched_setscheduler
diff --git a/tests/sched_yield.gen.test b/tests/sched_yield.gen.test
new file mode 100755
index 0000000..3f4542f
--- /dev/null
+++ b/tests/sched_yield.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/sched_yield.test b/tests/sched_yield.test
deleted file mode 100755
index f0c2c30..0000000
--- a/tests/sched_yield.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sched_yield syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/scm_rights-fd.test b/tests/scm_rights-fd.test
index 8447375..279666e 100755
--- a/tests/scm_rights-fd.test
+++ b/tests/scm_rights-fd.test
@@ -3,6 +3,7 @@
 # Check how SCM_RIGHTS and SCM_CREDENTIALS control messages are decoded in -y mode.
 #
 # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -34,22 +35,19 @@
 	framework_skip_ '/proc/self/fd/ is not available'
 
 check_prog mkdir
-check_prog rm
 check_prog seq
 check_prog touch
 
-dir="$LOG.dir"
-rm -rf -- "$dir"
-mkdir -- "$dir" ||
+mkdir dir ||
 	framework_skip_ 'failed to create a directory'
 
-file="$dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
+file="dir/$(for i in $(seq 1 127); do echo A; done; echo Z)"
 
 touch -- "$file" ||
 	framework_skip_ 'failed to create a file'
 
-run_prog ./scm_rights /dev/zero
-run_strace -y -x -enetwork $args "$file"
+run_prog ../scm_rights /dev/zero
+run_strace -y -x -e%network $args "$file"
 
 hex='[[:xdigit:]]'
 n='[1-9][0-9]*'
@@ -66,15 +64,9 @@
 rights='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_RIGHTS, cmsg_data='"$rights_data"'\}'
 creds='\{cmsg_len='"$n"', cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS, cmsg_data='"$ids"'\}'
 
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
+cat > "$EXP" << __EOF__
 sendmsg\\(3$socket, $msg_head\\[$rights\\]$msg_tail\\}, 0\\) = 15
 recvmsg\\(0$socket, $msg_head\\[$creds, $rights\\]$msg_tail\\}, 0\\) = 15
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-rm -rf -- "$dir"
-
-exit 0
+match_grep "$LOG" "$EXP"
diff --git a/tests/scm_rights.c b/tests/scm_rights.c
index 42caed7..632cf91 100644
--- a/tests/scm_rights.c
+++ b/tests/scm_rights.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -44,11 +45,11 @@
 	void *data = tail_alloc(data_size);
 	memcpy(data, sample, data_size);
 
-	struct iovec *iov = tail_alloc(sizeof(struct iovec));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct iovec, iov);
 	iov->iov_base = data;
 	iov->iov_len = data_size;
 
-	struct msghdr *mh = tail_alloc(sizeof(struct msghdr));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct msghdr, mh);
 	memset(mh, 0, sizeof(*mh));
 	mh->msg_iov = iov;
 	mh->msg_iovlen = 1;
diff --git a/tests/scno_tampering.sh b/tests/scno_tampering.sh
index 6aa7843..094175e 100755
--- a/tests/scno_tampering.sh
+++ b/tests/scno_tampering.sh
@@ -3,6 +3,7 @@
 # Skip the test if arch+kernel combination is not supported.
 #
 # 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
diff --git a/tests/seccomp-filter-v.c b/tests/seccomp-filter-v.c
index dbf686d..fe88ac7 100644
--- a/tests/seccomp-filter-v.c
+++ b/tests/seccomp-filter-v.c
@@ -2,6 +2,7 @@
  * Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * Copyright (c) 2015-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
@@ -105,7 +106,7 @@
 		tail_memdup(filter_c, sizeof(filter_c));
 	struct sock_filter *const big_filter =
 		tail_alloc(sizeof(*big_filter) * (BPF_MAXINSNS + 1));
-	struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
 
 	int fds[2];
 	if (pipe(fds))
diff --git a/tests/seccomp-filter-v.gen.test b/tests/seccomp-filter-v.gen.test
new file mode 100755
index 0000000..efce637
--- /dev/null
+++ b/tests/seccomp-filter-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter-v -v -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e trace=seccomp
diff --git a/tests/seccomp-filter-v.test b/tests/seccomp-filter-v.test
deleted file mode 100755
index f873eb6..0000000
--- a/tests/seccomp-filter-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e trace=seccomp
diff --git a/tests/seccomp-filter.c b/tests/seccomp-filter.c
index d4d76dd..e2bea06 100644
--- a/tests/seccomp-filter.c
+++ b/tests/seccomp-filter.c
@@ -2,6 +2,7 @@
  * Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
  *
  * 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
@@ -49,7 +50,7 @@
 {
 	struct sock_filter *const filter = tail_alloc(sizeof(*filter) * N);
 	const void *const efault = tail_alloc(1);
-	struct sock_fprog *const prog = tail_alloc(sizeof(*prog));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sock_fprog, prog);
 	long rc;
 
 	prog->filter = filter;
diff --git a/tests/seccomp-filter.gen.test b/tests/seccomp-filter.gen.test
new file mode 100755
index 0000000..52af0d5
--- /dev/null
+++ b/tests/seccomp-filter.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp-filter -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=seccomp
diff --git a/tests/seccomp-filter.test b/tests/seccomp-filter.test
deleted file mode 100755
index 65c6d49..0000000
--- a/tests/seccomp-filter.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of seccomp SECCOMP_SET_MODE_FILTER.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=seccomp
diff --git a/tests/seccomp-strict.test b/tests/seccomp-strict.test
index b354c6a..b039871 100755
--- a/tests/seccomp-strict.test
+++ b/tests/seccomp-strict.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-set -- "./$NAME"
+set -- "../$NAME"
 "$@" > /dev/null || {
 	case $? in
 		77) skip_ "$* exited with code 77" ;;
@@ -14,4 +14,3 @@
 }
 run_strace -eseccomp "$@" > "$EXP"
 match_diff "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/select.gen.test b/tests/select.gen.test
new file mode 100755
index 0000000..cb3b8f1
--- /dev/null
+++ b/tests/select.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (select -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/select.test b/tests/select.test
deleted file mode 100755
index 60b88ca..0000000
--- a/tests/select.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check select syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/semop.c b/tests/semop.c
index a2ff263..3d1f384 100644
--- a/tests/semop.c
+++ b/tests/semop.c
@@ -33,9 +33,7 @@
 	static void * const bogus_sops = (void *) -1L;
 	static const size_t bogus_nsops = (size_t) 0xdefaceddeadbeefULL;
 
-	static const struct timespec ts_data = { 1, 123456789 };
-
-	struct timespec *ts = tail_memdup(&ts_data, sizeof(*ts));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timespec, ts);
 	int rc;
 
 	id = semget(IPC_PRIVATE, 1, 0600);
@@ -47,8 +45,8 @@
 	if (semctl(id, 0, SETVAL, sem_union) == -1)
 		perror_msg_and_skip("semctl");
 
-	struct sembuf *const sem_b = tail_alloc(sizeof(*sem_b));
-	struct sembuf *const sem_b2 = tail_alloc(sizeof(*sem_b2));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sembuf, sem_b2);
 
 	rc = semop(bogus_semid, NULL, bogus_nsops);
 	printf("semop(%d, NULL, %u) = %s\n",
@@ -91,15 +89,17 @@
 	printf("semtimedop(%d, %p, 1, %p) = %s\n",
 		id, sem_b + 1, ts + 1, sprintrc(rc));
 
+	ts->tv_sec = 1;
+	ts->tv_nsec = 123456789;
 	rc = semtimedop(bogus_semid, sem_b2, 2, ts);
-	printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = %s\n",
+	printf("semtimedop(%d, [{%hu, %hd, %s%s%#hx}, %p], %u"
+		", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
 		bogus_semid, sem_b2->sem_num, sem_b2->sem_op,
 		sem_b2->sem_flg & SEM_UNDO ? "SEM_UNDO|" : "",
 		sem_b2->sem_flg & IPC_NOWAIT ? "IPC_NOWAIT|" : "",
 		sem_b2->sem_flg & ~(SEM_UNDO | IPC_NOWAIT),
 		sem_b2 + 1, 2,
-		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec,
+		(long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec),
 		sprintrc(rc));
 
 	sem_b->sem_op = 1;
@@ -110,9 +110,27 @@
 	sem_b->sem_op = -1;
 	if (semtimedop(id, sem_b, 1, ts))
 		perror_msg_and_skip("semtimedop, -1");
-	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1, "
-		"{tv_sec=%jd, tv_nsec=%jd}) = 0\n", id,
-		(intmax_t) ts->tv_sec, (intmax_t) ts->tv_nsec);
+	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = 0\n", id,
+	       (long long) ts->tv_sec, zero_extend_signed_to_ull(ts->tv_nsec));
+
+	sem_b->sem_op = 1;
+	ts->tv_sec = 0xdeadbeefU;
+	ts->tv_nsec = 0xfacefeedU;
+	rc = semtimedop(id, sem_b, 1, ts);
+	printf("semtimedop(%d, [{0, 1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       id, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
+
+	sem_b->sem_op = -1;
+	ts->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts->tv_nsec = (long) 0xbadc0dedfacefeedLL;
+	rc = semtimedop(id, sem_b, 1, ts);
+	printf("semtimedop(%d, [{0, -1, SEM_UNDO}], 1"
+	       ", {tv_sec=%lld, tv_nsec=%llu}) = %s\n",
+	       id, (long long) ts->tv_sec,
+	       zero_extend_signed_to_ull(ts->tv_nsec), sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/semop.gen.test b/tests/semop.gen.test
new file mode 100755
index 0000000..21b67ea
--- /dev/null
+++ b/tests/semop.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (semop -a32 -e trace=semop,semtimedop); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests/semop.test b/tests/semop.test
deleted file mode 100755
index 3e77d2f..0000000
--- a/tests/semop.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check semop syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a32 -e trace=semop,semtimedop
diff --git a/tests/sendfile.c b/tests/sendfile.c
index 23f096b..9253c10 100644
--- a/tests/sendfile.c
+++ b/tests/sendfile.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -69,7 +70,7 @@
 	printf("sendfile(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
 	       (unsigned long) page_len);
 
-	uint32_t *p_off = tail_alloc(sizeof(uint32_t));
+	TAIL_ALLOC_OBJECT_VAR_PTR(uint32_t, p_off);
 	void *p = p_off + 1;
 	*p_off = 0;
 
diff --git a/tests/sendfile.gen.test b/tests/sendfile.gen.test
new file mode 100755
index 0000000..433878f
--- /dev/null
+++ b/tests/sendfile.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/sendfile.test b/tests/sendfile.test
deleted file mode 100755
index 48dba58..0000000
--- a/tests/sendfile.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/sendfile64.c b/tests/sendfile64.c
index 7208c30..de02400 100644
--- a/tests/sendfile64.c
+++ b/tests/sendfile64.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -69,7 +70,7 @@
 	printf("sendfile64(0, 1, NULL, %lu) = -1 EBADF (%m)\n",
 	       (unsigned long) page_len);
 
-	uint64_t *p_off = tail_alloc(sizeof(uint64_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(uint64_t, p_off);
 	void *p = p_off + 1;
 	*p_off = 0;
 
diff --git a/tests/sendfile64.gen.test b/tests/sendfile64.gen.test
new file mode 100755
index 0000000..1655dd3
--- /dev/null
+++ b/tests/sendfile64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sendfile64 -a29); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29
diff --git a/tests/sendfile64.test b/tests/sendfile64.test
deleted file mode 100755
index faa0525..0000000
--- a/tests/sendfile64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sendfile64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29
diff --git a/tests/set_mempolicy.gen.test b/tests/set_mempolicy.gen.test
new file mode 100755
index 0000000..f8c81c7
--- /dev/null
+++ b/tests/set_mempolicy.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (set_mempolicy -s3 -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s3 -a35
diff --git a/tests/set_mempolicy.test b/tests/set_mempolicy.test
deleted file mode 100755
index 0ed6666..0000000
--- a/tests/set_mempolicy.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check set_mempolicy syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s3 -a35
diff --git a/tests/set_ptracer_any.c b/tests/set_ptracer_any.c
index bc2f90c..3b4ea2c 100644
--- a/tests/set_ptracer_any.c
+++ b/tests/set_ptracer_any.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2013-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2013-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/tests/setdomainname.gen.test b/tests/setdomainname.gen.test
new file mode 100755
index 0000000..2b12e08
--- /dev/null
+++ b/tests/setdomainname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setdomainname -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/setdomainname.test b/tests/setdomainname.test
deleted file mode 100755
index 2159e7c..0000000
--- a/tests/setdomainname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setdomainname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/setfsgid.gen.test b/tests/setfsgid.gen.test
new file mode 100755
index 0000000..caff401
--- /dev/null
+++ b/tests/setfsgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setfsgid.test b/tests/setfsgid.test
deleted file mode 100755
index 0ae2b0a..0000000
--- a/tests/setfsgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/setfsgid32.gen.test b/tests/setfsgid32.gen.test
new file mode 100755
index 0000000..fae29e0
--- /dev/null
+++ b/tests/setfsgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsgid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/setfsgid32.test b/tests/setfsgid32.test
deleted file mode 100755
index 9b7a2bf..0000000
--- a/tests/setfsgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/setfsugid.c b/tests/setfsugid.c
index 79ba34d..7484db5 100644
--- a/tests/setfsugid.c
+++ b/tests/setfsugid.c
@@ -2,6 +2,7 @@
  * Check decoding of setfsuid/setfsgid/setfsuid32/setfsgid32 syscalls.
  *
  * 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
@@ -47,7 +48,7 @@
 	const kernel_ulong_t tests[] = {
 		ugid,
 		0xffff0000U | ugid,
-		(kernel_ulong_t) 0xffffffff00000000ULL | ugid,
+		F8ILL_KULONG_MASK | ugid,
 		0xffffU,
 		-1U,
 		-1L,
diff --git a/tests/setfsuid.gen.test b/tests/setfsuid.gen.test
new file mode 100755
index 0000000..e4c4d20
--- /dev/null
+++ b/tests/setfsuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setfsuid.test b/tests/setfsuid.test
deleted file mode 100755
index 18a1021..0000000
--- a/tests/setfsuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/setfsuid32.gen.test b/tests/setfsuid32.gen.test
new file mode 100755
index 0000000..b6cd67d
--- /dev/null
+++ b/tests/setfsuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setfsuid32 -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/setfsuid32.test b/tests/setfsuid32.test
deleted file mode 100755
index 2dce3cc..0000000
--- a/tests/setfsuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setfsuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/setgid.gen.test b/tests/setgid.gen.test
new file mode 100755
index 0000000..f10add6
--- /dev/null
+++ b/tests/setgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/setgid.test b/tests/setgid.test
deleted file mode 100755
index a3a9004..0000000
--- a/tests/setgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/setgid32.gen.test b/tests/setgid32.gen.test
new file mode 100755
index 0000000..26f194e
--- /dev/null
+++ b/tests/setgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setgid32.test b/tests/setgid32.test
deleted file mode 100755
index 11a87e1..0000000
--- a/tests/setgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/setgroups.c b/tests/setgroups.c
index 1ec8333..5645c22 100644
--- a/tests/setgroups.c
+++ b/tests/setgroups.c
@@ -2,6 +2,7 @@
  * Check decoding of setgroups/setgroups32 syscalls.
  *
  * 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
@@ -75,7 +76,7 @@
 	long rc = syscall(SYSCALL_NR, 0, 0);
 	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
-	rc = syscall(SYSCALL_NR, (long) 0xffffffff00000000ULL, 0);
+	rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK, 0);
 	printf("%s(0, NULL) = %s\n", SYSCALL_NAME, sprintrc(rc));
 
 	rc = syscall(SYSCALL_NR, 1, 0);
@@ -91,7 +92,7 @@
 	printf("%s(%d, NULL) = %s\n", SYSCALL_NAME, -1, sprintrc(rc));
 
 	/* check how the second argument is decoded */
-	const GID_TYPE *const g1 = tail_alloc(sizeof(*g1));
+	TAIL_ALLOC_OBJECT_CONST_PTR(const GID_TYPE, g1);
 	GID_TYPE *const g2 = tail_alloc(sizeof(*g2) * 2);
 	GID_TYPE *const g3 = tail_alloc(sizeof(*g3) * 3);
 
@@ -164,9 +165,7 @@
 		printuid(g3[1]);
 		printf(", ...]) = %s\n", errstr);
 
-		const unsigned long size =
-			(unsigned long) 0xffffffff00000000ULL | ngroups_max;
-		rc = syscall(SYSCALL_NR, size, g3);
+		rc = syscall(SYSCALL_NR, F8ILL_KULONG_MASK | ngroups_max, g3);
 		errstr = sprintrc(rc);
 		printf("%s(%d, [", SYSCALL_NAME, ngroups_max);
 		printuid(g3[0]);
diff --git a/tests/setgroups.gen.test b/tests/setgroups.gen.test
new file mode 100755
index 0000000..01ec2e7
--- /dev/null
+++ b/tests/setgroups.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups -s2 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a17
diff --git a/tests/setgroups.test b/tests/setgroups.test
deleted file mode 100755
index 0dcc8f7..0000000
--- a/tests/setgroups.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a17
diff --git a/tests/setgroups32.gen.test b/tests/setgroups32.gen.test
new file mode 100755
index 0000000..e9e70ad
--- /dev/null
+++ b/tests/setgroups32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setgroups32 -s2 -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -s2 -a19
diff --git a/tests/setgroups32.test b/tests/setgroups32.test
deleted file mode 100755
index ee4750d..0000000
--- a/tests/setgroups32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setgroups32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -s2 -a19
diff --git a/tests/sethostname.gen.test b/tests/sethostname.gen.test
new file mode 100755
index 0000000..2827b1d
--- /dev/null
+++ b/tests/sethostname.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sethostname -a22); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22
diff --git a/tests/sethostname.test b/tests/sethostname.test
deleted file mode 100755
index 78f8c58..0000000
--- a/tests/sethostname.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sethostname syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a22
diff --git a/tests/setns.gen.test b/tests/setns.gen.test
new file mode 100755
index 0000000..45fcc60
--- /dev/null
+++ b/tests/setns.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setns -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/setns.test b/tests/setns.test
deleted file mode 100755
index e9a905a..0000000
--- a/tests/setns.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/setregid.gen.test b/tests/setregid.gen.test
new file mode 100755
index 0000000..0125d7a
--- /dev/null
+++ b/tests/setregid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/setregid.test b/tests/setregid.test
deleted file mode 100755
index 101c7bd..0000000
--- a/tests/setregid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests/setregid32.gen.test b/tests/setregid32.gen.test
new file mode 100755
index 0000000..24f1505
--- /dev/null
+++ b/tests/setregid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setregid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/setregid32.test b/tests/setregid32.test
deleted file mode 100755
index e57e66c..0000000
--- a/tests/setregid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setregid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/setresgid.gen.test b/tests/setresgid.gen.test
new file mode 100755
index 0000000..ca5bc6b
--- /dev/null
+++ b/tests/setresgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/setresgid.test b/tests/setresgid.test
deleted file mode 100755
index 5a69574..0000000
--- a/tests/setresgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/setresgid32.gen.test b/tests/setresgid32.gen.test
new file mode 100755
index 0000000..a5edb90
--- /dev/null
+++ b/tests/setresgid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresgid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/setresgid32.test b/tests/setresgid32.test
deleted file mode 100755
index 528b2c9..0000000
--- a/tests/setresgid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresgid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/setresuid.gen.test b/tests/setresuid.gen.test
new file mode 100755
index 0000000..a6e0664
--- /dev/null
+++ b/tests/setresuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid -a19); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19
diff --git a/tests/setresuid.test b/tests/setresuid.test
deleted file mode 100755
index f1219e0..0000000
--- a/tests/setresuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a19
diff --git a/tests/setresuid32.gen.test b/tests/setresuid32.gen.test
new file mode 100755
index 0000000..3fbf36b
--- /dev/null
+++ b/tests/setresuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setresuid32 -a21); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a21
diff --git a/tests/setresuid32.test b/tests/setresuid32.test
deleted file mode 100755
index 942a3a6..0000000
--- a/tests/setresuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setresuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/setreuid.gen.test b/tests/setreuid.gen.test
new file mode 100755
index 0000000..4c3dc93
--- /dev/null
+++ b/tests/setreuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid -a15); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a15
diff --git a/tests/setreuid.test b/tests/setreuid.test
deleted file mode 100755
index b6db3c1..0000000
--- a/tests/setreuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a15
diff --git a/tests/setreuid32.gen.test b/tests/setreuid32.gen.test
new file mode 100755
index 0000000..d179053
--- /dev/null
+++ b/tests/setreuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setreuid32 -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/setreuid32.test b/tests/setreuid32.test
deleted file mode 100755
index 23323d4..0000000
--- a/tests/setreuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setreuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a17
diff --git a/tests/setrlimit.gen.test b/tests/setrlimit.gen.test
new file mode 100755
index 0000000..dfe2da3
--- /dev/null
+++ b/tests/setrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setrlimit -a27); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a27
diff --git a/tests/setrlimit.test b/tests/setrlimit.test
deleted file mode 100755
index 7920608..0000000
--- a/tests/setrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of getrlimit/ugetrlimit/setrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
diff --git a/tests/setuid.gen.test b/tests/setuid.gen.test
new file mode 100755
index 0000000..98d470f
--- /dev/null
+++ b/tests/setuid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/setuid.test b/tests/setuid.test
deleted file mode 100755
index 9279233..0000000
--- a/tests/setuid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/setuid32.gen.test b/tests/setuid32.gen.test
new file mode 100755
index 0000000..7d15495
--- /dev/null
+++ b/tests/setuid32.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (setuid32 -a12); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12
diff --git a/tests/setuid32.test b/tests/setuid32.test
deleted file mode 100755
index 7998392..0000000
--- a/tests/setuid32.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setuid32 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12
diff --git a/tests/shmxt.gen.test b/tests/shmxt.gen.test
new file mode 100755
index 0000000..dd9d35f
--- /dev/null
+++ b/tests/shmxt.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shmxt -a11 -e trace='/(osf_)?shmat,shmdt'); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace='/(osf_)?shmat,shmdt'
diff --git a/tests/shmxt.test b/tests/shmxt.test
deleted file mode 100755
index 3757cfa..0000000
--- a/tests/shmxt.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check shmat and shmdt syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-case "$STRACE_ARCH" in
-	alpha) shmat=osf_shmat ;;
-	*) shmat=shmat ;;
-esac
-
-run_strace_match_diff -e trace=$shmat,shmdt -a11
diff --git a/tests/shutdown.gen.test b/tests/shutdown.gen.test
new file mode 100755
index 0000000..3412513
--- /dev/null
+++ b/tests/shutdown.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (shutdown -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/shutdown.test b/tests/shutdown.test
deleted file mode 100755
index 22f0d5a..0000000
--- a/tests/shutdown.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of shutdown syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/siginfo.gen.test b/tests/siginfo.gen.test
new file mode 100755
index 0000000..33792b9
--- /dev/null
+++ b/tests/siginfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (siginfo -e trace=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=none
diff --git a/tests/siginfo.test b/tests/siginfo.test
deleted file mode 100755
index 725f714..0000000
--- a/tests/siginfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check SIGCHLD siginfo_t decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=none
diff --git a/tests/signal_receive.gen.test b/tests/signal_receive.gen.test
new file mode 100755
index 0000000..79e8fb8
--- /dev/null
+++ b/tests/signal_receive.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signal_receive -a16 -e trace=kill); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16 -e trace=kill
diff --git a/tests/signal_receive.test b/tests/signal_receive.test
deleted file mode 100755
index 9685b66..0000000
--- a/tests/signal_receive.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check whether strace traces signals properly.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a16 -e trace=kill
diff --git a/tests/signalfd4.c b/tests/signalfd4.c
index 47e49b5..4391b92 100644
--- a/tests/signalfd4.c
+++ b/tests/signalfd4.c
@@ -2,6 +2,7 @@
  * Check decoding of signalfd4 syscall.
  *
  * Copyright (c) 2015-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
@@ -31,8 +32,7 @@
 #include <fcntl.h>
 #include <asm/unistd.h>
 
-#if defined __NR_rt_sigprocmask \
- && defined HAVE_SYS_SIGNALFD_H \
+#if defined HAVE_SYS_SIGNALFD_H \
  && defined HAVE_SIGNALFD \
  && defined O_CLOEXEC
 
@@ -41,24 +41,6 @@
 # include <unistd.h>
 # include <sys/signalfd.h>
 
-static unsigned int
-get_sigset_size(void)
-{
-	const unsigned int big_size = 1024 / 8;
-	unsigned int set_size;
-
-	for (set_size = big_size; set_size; set_size >>= 1) {
-		if (!syscall(__NR_rt_sigprocmask, SIG_SETMASK,
-			     NULL, NULL, set_size))
-			break;
-	}
-
-	if (!set_size)
-		perror_msg_and_fail("rt_sigprocmask");
-
-	return set_size;
-}
-
 int
 main(void)
 {
@@ -80,7 +62,6 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("__NR_rt_sigprocmask && HAVE_SYS_SIGNALFD_H"
-		    " && HAVE_SIGNALFD && O_CLOEXEC")
+SKIP_MAIN_UNDEFINED("HAVE_SYS_SIGNALFD_H && HAVE_SIGNALFD && O_CLOEXEC")
 
 #endif
diff --git a/tests/signalfd4.gen.test b/tests/signalfd4.gen.test
new file mode 100755
index 0000000..e91a9fe
--- /dev/null
+++ b/tests/signalfd4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (signalfd4 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/signalfd4.test b/tests/signalfd4.test
deleted file mode 100755
index a615a5b..0000000
--- a/tests/signalfd4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of signalfd4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sigreturn.c b/tests/sigreturn.c
index dace040..ff9a59f 100644
--- a/tests/sigreturn.c
+++ b/tests/sigreturn.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,23 +26,38 @@
  */
 
 #include "tests.h"
-#include <stdlib.h>
-#include <signal.h>
+#include <asm/unistd.h>
 
-#ifdef ASM_SIGRTMIN
-# define RT_0 ASM_SIGRTMIN
-#else
-/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
-# define RT_0 32
+#if defined __powerpc64__ \
+ || (defined __sparc__ && defined __arch64__)
+/* Old sigreturn is defined but not implemented in the kernel. */
+# undef __NR_sigreturn
 #endif
 
-static void handler(int sig)
+#ifdef __NR_sigreturn
+
+# include <signal.h>
+# include <stdio.h>
+# include <stdlib.h>
+
+# ifdef ASM_SIGRTMIN
+#  define RT_0 ASM_SIGRTMIN
+# else
+/* Linux kernel >= 3.18 defines SIGRTMIN to 32 on all architectures. */
+#  define RT_0 32
+# endif
+
+static void
+handler(int sig)
 {
 }
 
-int main(void) {
-	sigset_t set;
+int
+main(void)
+{
+	static sigset_t set;
 	sigemptyset(&set);
+	sigaddset(&set, SIGINT);
 	sigaddset(&set, SIGUSR2);
 	sigaddset(&set, SIGCHLD);
 	sigaddset(&set, RT_0 +  3);
@@ -50,8 +65,28 @@
 	sigaddset(&set, RT_0 +  5);
 	sigaddset(&set, RT_0 + 26);
 	sigaddset(&set, RT_0 + 27);
-	sigprocmask(SIG_SETMASK, &set, NULL);
-	signal(SIGUSR1, handler);
-	raise(SIGUSR1);
+	if (sigprocmask(SIG_SETMASK, &set, NULL))
+		perror_msg_and_fail("sigprocmask");
+	sigemptyset(&set);
+
+	/* This should result to old sigreturn. */
+	if (signal(SIGUSR1, handler) == SIG_ERR)
+		perror_msg_and_fail("sigaction");
+
+	if (raise(SIGUSR1))
+		perror_msg_and_fail("raise");
+
+	static const char *const sigs =
+		(SIGUSR2 < SIGCHLD) ? "INT USR2 CHLD" : "INT CHLD USR2";
+	static const char *const rt_sigs = "RT_3 RT_4 RT_5 RT_26 RT_27";
+	printf("sigreturn({mask=[%s %s]}) = 0\n", sigs, rt_sigs);
+
+	puts("+++ exited with 0 +++");
 	return 0;
 }
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigreturn")
+
+#endif
diff --git a/tests/sigreturn.gen.test b/tests/sigreturn.gen.test
new file mode 100755
index 0000000..f317e89
--- /dev/null
+++ b/tests/sigreturn.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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'
diff --git a/tests/sigreturn.test b/tests/sigreturn.test
deleted file mode 100755
index f9a612b..0000000
--- a/tests/sigreturn.test
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-#
-# Check rt_sigprocmask and sigreturn/rt_sigreturn decoding.
-#
-# Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-. "${srcdir=.}/init.sh"
-
-run_prog
-run_strace -esignal $args
-
-mask='\[(USR2 CHLD|CHLD USR2) RT_3 RT_4 RT_5 RT_26 RT_27\]'
-rt_sigprocmask='rt_sigprocmask\(SIG_SETMASK, '"$mask"', NULL, [[:digit:]]+\) += 0'
-osf_sigprocmask='osf_sigprocmask\(SIG_SETMASK, '"$mask"'\) += 0 +\(old mask \[[^]]*\]\)'
-EXPECTED="$LOG.expected"
-
-cat > "$EXPECTED" << __EOF__
-$rt_sigprocmask|$osf_sigprocmask
-(rt_)?sigreturn\\((\\{mask=$mask\\})?\\) += 0
-__EOF__
-
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
-
-exit 0
diff --git a/tests/sigsuspend.c b/tests/sigsuspend.c
new file mode 100644
index 0000000..dac6890
--- /dev/null
+++ b/tests/sigsuspend.c
@@ -0,0 +1,117 @@
+/*
+ * Check decoding of sigsuspend syscall.
+ *
+ * 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 <asm/unistd.h>
+
+#ifdef __NR_sigsuspend
+
+# include <assert.h>
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+# ifdef MIPS
+#  define SIGNAL_MASK_BY_REF 1
+# else
+#  define SIGNAL_MASK_BY_REF 0
+# endif
+
+static long
+k_sigsuspend(const kernel_ulong_t arg1,
+	     const kernel_ulong_t arg2,
+	     const kernel_ulong_t arg3)
+{
+	return syscall(__NR_sigsuspend, arg1, arg2, arg3);
+}
+
+static int signo;
+static const char *sigtxt[] = {
+	[SIGUSR1] = "USR1",
+	[SIGUSR2] = "USR2"
+};
+
+static void
+handler(int i)
+{
+	signo = i;
+}
+
+int
+main(void)
+{
+	union {
+		sigset_t libc_mask;
+		unsigned long old_mask;
+	} u;
+
+	sigemptyset(&u.libc_mask);
+	sigaddset(&u.libc_mask, SIGUSR1);
+	sigaddset(&u.libc_mask, SIGUSR2);
+	if (sigprocmask(SIG_SETMASK, &u.libc_mask, NULL))
+		perror_msg_and_fail("sigprocmask");
+
+	const struct sigaction sa = { .sa_handler = handler };
+	if (sigaction(SIGUSR1, &sa, NULL) || sigaction(SIGUSR2, &sa, NULL))
+		perror_msg_and_fail("sigaction");
+
+	raise(SIGUSR1);
+	raise(SIGUSR2);
+
+	u.old_mask = -1UL;
+	sigdelset(&u.libc_mask, SIGUSR1);
+	const unsigned long mask1 = u.old_mask;
+
+	u.old_mask = -1UL;
+	sigdelset(&u.libc_mask, SIGUSR2);
+	const unsigned long mask2 = u.old_mask;
+
+#if SIGNAL_MASK_BY_REF
+	k_sigsuspend((uintptr_t) &mask1, 0xdeadbeef, (uintptr_t) &mask2);
+#else
+	k_sigsuspend(mask1, 0xdeadbeef, mask2);
+#endif
+	if (EINTR != errno)
+		perror_msg_and_skip("sigsuspend");
+
+	printf("sigsuspend(~[%s]) = ? ERESTARTNOHAND"
+	       " (To be restarted if no handler)\n", sigtxt[signo]);
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sigsuspend")
+
+#endif
diff --git a/tests/sigsuspend.gen.test b/tests/sigsuspend.gen.test
new file mode 100755
index 0000000..afd0207
--- /dev/null
+++ b/tests/sigsuspend.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sigsuspend -a19 -esignal=none); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a19 -esignal=none
diff --git a/tests/skip_unavailable.c b/tests/skip_unavailable.c
new file mode 100644
index 0000000..074fc3a
--- /dev/null
+++ b/tests/skip_unavailable.c
@@ -0,0 +1,13 @@
+#include "tests.h"
+
+#include <sys/stat.h>
+#include <unistd.h>
+
+void
+skip_if_unavailable(const char *const path)
+{
+	struct stat st;
+
+	if (stat(path, &st))
+		perror_msg_and_skip("stat: %s", path);
+}
diff --git a/tests/socketcall.gen.test b/tests/socketcall.gen.test
new file mode 100755
index 0000000..95c45fd
--- /dev/null
+++ b/tests/socketcall.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (socketcall -a20); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20
diff --git a/tests/socketcall.test b/tests/socketcall.test
deleted file mode 100755
index 959bc83..0000000
--- a/tests/socketcall.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of socketcall syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20
diff --git a/tests/sockname.c b/tests/sockname.c
index c5072ca..9bab8ed 100644
--- a/tests/sockname.c
+++ b/tests/sockname.c
@@ -2,6 +2,7 @@
  * Check decoding of sockname family syscalls.
  *
  * 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
@@ -74,7 +75,7 @@
 static void
 test_sockname_syscall(const int fd)
 {
-	socklen_t *const plen = tail_alloc(sizeof(*plen));
+	TAIL_ALLOC_OBJECT_CONST_PTR(socklen_t, plen);
 	*plen = sizeof(struct sockaddr_un);
 	struct sockaddr_un *addr = tail_alloc(*plen);
 
diff --git a/tests/splice.c b/tests/splice.c
index b6f2525..cf07c80 100644
--- a/tests/splice.c
+++ b/tests/splice.c
@@ -2,6 +2,7 @@
  * This file is part of splice strace test.
  *
  * 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
@@ -40,8 +41,8 @@
 {
 	const long int fd_in = (long int) 0xdeadbeefffffffffULL;
 	const long int fd_out = (long int) 0xdeadbeeffffffffeULL;
-	long long int *const off_in = tail_alloc(sizeof(*off_in));
-	long long int *const off_out = tail_alloc(sizeof(*off_out));
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_in);
+	TAIL_ALLOC_OBJECT_CONST_PTR(long long int, off_out);
 	*off_in = 0xdeadbef1facefed1ULL;
 	*off_out = 0xdeadbef2facefed2ULL;
 	const size_t len = (size_t) 0xdeadbef3facefed3ULL;
diff --git a/tests/splice.gen.test b/tests/splice.gen.test
new file mode 100755
index 0000000..83c8406
--- /dev/null
+++ b/tests/splice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (splice ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/splice.test b/tests/splice.test
deleted file mode 100755
index cc5c327..0000000
--- a/tests/splice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check splice syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/stat.c b/tests/stat.c
index d4ca7b0..79e9175 100644
--- a/tests/stat.c
+++ b/tests/stat.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/stat.gen.test b/tests/stat.gen.test
new file mode 100755
index 0000000..13ccd0b
--- /dev/null
+++ b/tests/stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/stat.test b/tests/stat.test
deleted file mode 100755
index ba8938c..0000000
--- a/tests/stat.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/stat64.c b/tests/stat64.c
index 782de33..74927de 100644
--- a/tests/stat64.c
+++ b/tests/stat64.c
@@ -1,5 +1,6 @@
 /*
  * 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
diff --git a/tests/stat64.gen.test b/tests/stat64.gen.test
new file mode 100755
index 0000000..f49df37
--- /dev/null
+++ b/tests/stat64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (stat64 -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/stat64.test b/tests/stat64.test
deleted file mode 100755
index abcfb9e..0000000
--- a/tests/stat64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check stat64 syscall decoding.
-
-. "${srcdir=.}/statx.sh"
diff --git a/tests/statfs.expected b/tests/statfs.expected
deleted file mode 100644
index 11e9f0b..0000000
--- a/tests/statfs.expected
+++ /dev/null
@@ -1 +0,0 @@
-statfs(64)?\("/proc/self/status"(, [1-9][0-9]*)?, \{f_type=PROC_SUPER_MAGIC, f_bsize=[1-9][0-9]*, f_blocks=[0-9]+, f_bfree=[0-9]+, f_bavail=[0-9]+, f_files=[0-9]+, f_ffree=[0-9]+, f_fsid=\{val=\[[0-9]+, [0-9]+\]\}, f_namelen=[1-9][0-9]*(, f_frsize=[0-9]+)?(, f_flags=ST_VALID(\|ST_[A-Z]+)*)?\}\) += 0
diff --git a/tests/statfs.gen.test b/tests/statfs.gen.test
new file mode 100755
index 0000000..19b26dd
--- /dev/null
+++ b/tests/statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/statfs.test b/tests/statfs.test
deleted file mode 100755
index 6075576..0000000
--- a/tests/statfs.test
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-# Check statfs syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-# this test probes /proc/self/status
-[ -f /proc/self/status ] ||
-	framework_skip_ '/proc/self/status is not available'
-
-run_strace_match_diff -a17
diff --git a/tests/statfs64.gen.test b/tests/statfs64.gen.test
new file mode 100755
index 0000000..66409f9
--- /dev/null
+++ b/tests/statfs64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statfs64 -a23); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23
diff --git a/tests/statfs64.test b/tests/statfs64.test
deleted file mode 100755
index 9c0aa27..0000000
--- a/tests/statfs64.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check statfs64 syscall decoding.
-
-. "${srcdir=.}/statfs.test"
diff --git a/tests/statx.c b/tests/statx.c
new file mode 100644
index 0000000..f36fb0e
--- /dev/null
+++ b/tests/statx.c
@@ -0,0 +1,70 @@
+/*
+ * 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.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_statx
+
+# include <linux/stat.h>
+# include "xlat.h"
+# include "xlat/statx_masks.h"
+# include "xlat/statx_attrs.h"
+# include "xlat/at_statx_sync_types.h"
+
+# define IS_STATX 1
+# define TEST_SYSCALL_STR "statx"
+# define STRUCT_STAT struct statx
+# define STRUCT_STAT_STR "struct statx"
+# define STRUCT_STAT_IS_STAT64 0
+
+static unsigned    TEST_SYSCALL_STATX_FLAGS     = AT_STATX_SYNC_AS_STAT;
+static const char *TEST_SYSCALL_STATX_FLAGS_STR = "AT_STATX_SYNC_AS_STAT";
+static unsigned    TEST_SYSCALL_STATX_MASK      = STATX_ALL;
+static const char *TEST_SYSCALL_STATX_MASK_STR  = "STATX_ALL";
+
+# define TEST_SYSCALL_INVOKE(sample, pst) \
+	syscall(__NR_statx, AT_FDCWD, sample, TEST_SYSCALL_STATX_FLAGS, \
+	        TEST_SYSCALL_STATX_MASK, pst)
+# define PRINT_SYSCALL_HEADER(sample) \
+	do { \
+		int saved_errno = errno; \
+		printf("%s(AT_FDCWD, \"%s\", %s, %s, ", \
+		       TEST_SYSCALL_STR, sample, TEST_SYSCALL_STATX_FLAGS_STR, \
+		       TEST_SYSCALL_STATX_MASK_STR)
+# define PRINT_SYSCALL_FOOTER(rc) \
+		errno = saved_errno; \
+		printf(") = %s\n", sprintrc(rc)); \
+	} while (0)
+
+# include "xstatx.c"
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_statx")
+
+#endif
diff --git a/tests/statx.gen.test b/tests/statx.gen.test
new file mode 100755
index 0000000..bff3e3f
--- /dev/null
+++ b/tests/statx.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (statx -a32 -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a32 -v -P stat.sample -P /dev/full
diff --git a/tests/statx.sh b/tests/statx.sh
deleted file mode 100755
index a630193..0000000
--- a/tests/statx.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of stat family syscalls.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -P $NAME.sample -P /dev/full -a32
diff --git a/tests/strace-C.test b/tests/strace-C.test
index ccca9a0..359ddbd 100755
--- a/tests/strace-C.test
+++ b/tests/strace-C.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -a24 -C -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -C -enanosleep ../sleep 1
 match_grep
diff --git a/tests/strace-E.expected b/tests/strace-E.expected
index d7823b7..3ae2c28 100644
--- a/tests/strace-E.expected
+++ b/tests/strace-E.expected
@@ -1 +1 @@
-execve\("\./sleep", \["\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
+execve\("\.\./sleep", \["\.\./sleep", "0"\], \[.*"option_E_var=OPTION_E_VAL".*\]\) = 0
diff --git a/tests/strace-E.test b/tests/strace-E.test
index d76ec3f..843f27a 100755
--- a/tests/strace-E.test
+++ b/tests/strace-E.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0 > /dev/null
+run_prog ../sleep 0 > /dev/null
 run_strace -E option_E_var=OPTION_E_VAL -v $args
 match_grep
diff --git a/tests/strace-S.test b/tests/strace-S.test
index 3ea315c..64e4a41 100755
--- a/tests/strace-S.test
+++ b/tests/strace-S.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./readv > /dev/null
+run_prog ../readv > /dev/null
 
 test_c()
 {
@@ -13,7 +13,7 @@
 	sortopts="$1"; shift
 	sedexpr="$1"; shift
 
-	run_strace -c -w -S "$sortby" ./readv > /dev/null
+	run_strace -c -w -S "$sortby" ../readv > /dev/null
 	sed -r -n -e "$sedexpr" < "$LOG" > "$OUT"
 
 	[ -s "$OUT" ] ||
@@ -28,5 +28,3 @@
 c='[[:space:]]+([^[:space:]]+)'
 test_c calls '-n -r' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'[[:space:]].*/\4/p'
 test_c name '' '/^[[:space:]]+[0-9]/ s/^'"$c$c$c$c"'([[:space:]]+[0-9]+)?'"$c"'$/\6/p'
-
-rm -f "$OUT"
diff --git a/tests/strace-T.test b/tests/strace-T.test
index 7ab84a7..a6dac4e 100755
--- a/tests/strace-T.test
+++ b/tests/strace-T.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -a24 -T -enanosleep ./sleep 1
+run_prog ../sleep 0
+run_strace -a24 -T -enanosleep ../sleep 1
 match_grep
diff --git a/tests/strace-V.test b/tests/strace-V.test
index 9a051e0..d5c3ac0 100755
--- a/tests/strace-V.test
+++ b/tests/strace-V.test
@@ -10,15 +10,22 @@
 
 getval()
 {
-	sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' ../config.h
+	sed -r -n 's/#define[[:space:]]*'"$1"'[[:space:]]*"([^"]*)".*/\1/p' \
+		../../config.h
+}
+
+config_year=$(getval COPYRIGHT_YEAR)
+
+[ "$year" -ge "$config_year" ] && [ "$config_year" -ge 2017 ] || {
+	echo >&2 "The year derived from config.h (${config_year}) does not pass sanity checks."
+	exit 1
 }
 
 cat > "$EXP" << __EOF__
 $(getval PACKAGE_NAME) -- version $(getval PACKAGE_VERSION)
-Copyright (C) 1991-$year The strace developers <$(getval PACKAGE_URL)>.
+Copyright (C) 1991-${config_year} The strace developers <$(getval PACKAGE_URL)>.
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 __EOF__
 
-match_diff "$EXP" "$LOG"
-rm -f "$EXP"
+match_diff "$LOG" "$EXP"
diff --git a/tests/strace-ff.test b/tests/strace-ff.test
index 2ce06f1..7107527 100755
--- a/tests/strace-ff.test
+++ b/tests/strace-ff.test
@@ -7,7 +7,7 @@
 run_prog_skip_if_failed \
 	kill -0 $$
 
-./set_ptracer_any ./sleep 1 > "$OUT" &
+../set_ptracer_any ../sleep 1 > "$OUT" &
 tracee_pid=$!
 
 while ! [ -s "$OUT" ]; do
@@ -15,7 +15,6 @@
 		fail_ 'set_ptracer_any sleep failed'
 done
 
-rm -f "$LOG".*
 run_strace -a14 -eexit_group -ff -p $tracee_pid
 
 # check that output matches
@@ -25,5 +24,3 @@
 set -- "$LOG".*
 [ "$LOG.$tracee_pid" = "$*" ] ||
 	fail_ "too many output files: $*"
-
-rm -f "$OUT" "$LOG.$tracee_pid"
diff --git a/tests/strace-k.test b/tests/strace-k.test
index d5e8ed2..e68951e 100755
--- a/tests/strace-k.test
+++ b/tests/strace-k.test
@@ -4,6 +4,7 @@
 #
 # Copyright (c) 2014 Masatake YAMATO <yamato@redhat.com>
 # Copyright (c) 2014-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -37,7 +38,7 @@
 check_prog sed
 check_prog tr
 
-run_prog ./stack-fcall
+run_prog ../stack-fcall
 run_strace -e getpid -k $args
 
 expected='getpid f3 f2 f1 f0 main '
diff --git a/tests/strace-r.expected b/tests/strace-r.expected
index 8009c35..2a5b977 100644
--- a/tests/strace-r.expected
+++ b/tests/strace-r.expected
@@ -1,2 +1,2 @@
-[ ]{5}0\.0{6} execve\("\./sleep", \["\./sleep", "1"\], \[/\* [[:digit:]]+ vars \*/\]\) = 0
+[ ]{5}0\.0{6} execve\("\.\./sleep", \["\.\./sleep", "1"\], 0x[[:xdigit:]]* /\* [[:digit:]]* vars \*/\) = 0
 [ ]{5}(1\.[01]|0\.9)[[:digit:]]{5} \+\+\+ exited with 0 \+\+\+
diff --git a/tests/strace-r.test b/tests/strace-r.test
index 4ba01f1..00649b5 100755
--- a/tests/strace-r.test
+++ b/tests/strace-r.test
@@ -4,6 +4,6 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./sleep 0
-run_strace -r -eexecve ./sleep 1
+run_prog ../sleep 0
+run_strace -r -eexecve ../sleep 1
 match_grep
diff --git a/tests/strace-t.test b/tests/strace-t.test
index 1d213e6..38070f3 100755
--- a/tests/strace-t.test
+++ b/tests/strace-t.test
@@ -5,16 +5,14 @@
 . "${srcdir=.}/init.sh"
 
 run_prog_skip_if_failed date +%T > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 t0="$(date +%T)"
 run_strace -t -eexecve $args
 t1="$(date +%T)"
 
-EXPECTED="$LOG.expected"
-cat > "$EXPECTED" << __EOF__
-($t0|$t1) execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+cat > "$EXP" << __EOF__
+($t0|$t1) execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
-match_grep "$LOG" "$EXPECTED"
-rm -f "$EXPECTED"
+match_grep "$LOG" "$EXP"
diff --git a/tests/strace-tt.test b/tests/strace-tt.test
index 3f80001..3285655 100755
--- a/tests/strace-tt.test
+++ b/tests/strace-tt.test
@@ -6,7 +6,7 @@
 
 run_prog_skip_if_failed date +%s > "$LOG"
 run_prog_skip_if_failed date +%T --date "@$(cat "$LOG")" > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 s0="$(date +%s)"
 run_strace -tt -eexecve $args
@@ -21,8 +21,7 @@
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]* vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/strace-ttt.test b/tests/strace-ttt.test
index 4439715..7d4435b 100755
--- a/tests/strace-ttt.test
+++ b/tests/strace-ttt.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog_skip_if_failed date +%s > /dev/null
-run_prog ./sleep 0
+run_prog ../sleep 0
 
 s0="$(date +%s)"
 run_strace -ttt -eexecve $args
@@ -19,8 +19,7 @@
 done
 
 cat > "$EXP" << __EOF__
-($t_reg)\\.[[:digit:]]{6} execve\\("\\./sleep", \\["\\./sleep", "0"\\], \\[/\\* [[:digit:]]+ vars \\*/\\]\\) = 0
+($t_reg)\\.[[:digit:]]{6} execve\\("\\.\\./sleep", \\["\\.\\./sleep", "0"\\], 0x[[:xdigit:]]* /\\* [[:digit:]]+ vars \\*/\\) = 0
 __EOF__
 
 match_grep "$LOG" "$EXP"
-rm -f "$EXP"
diff --git a/tests/struct_flock.c b/tests/struct_flock.c
index 34cf58e..428c038 100644
--- a/tests/struct_flock.c
+++ b/tests/struct_flock.c
@@ -1,5 +1,6 @@
 /*
  * 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,7 +33,6 @@
 #include "flock.h"
 
 #define FILE_LEN 4096
-#define EINVAL_STR "-1 EINVAL (Invalid argument)"
 
 #define TEST_FLOCK_EINVAL(cmd) test_flock_einval(cmd, #cmd)
 
@@ -45,9 +45,10 @@
 static long
 invoke_test_syscall(const unsigned int cmd, void *const p)
 {
-	const unsigned long op = (unsigned long) 0xffffffff00000000ULL | cmd;
+	const kernel_ulong_t fd = F8ILL_KULONG_MASK;
+	const kernel_ulong_t op = F8ILL_KULONG_MASK | cmd;
 
-	return syscall(TEST_SYSCALL_NR, 0, op, (unsigned long) p);
+	return syscall(TEST_SYSCALL_NR, fd, op, (unsigned long) p);
 }
 
 static void
@@ -58,10 +59,10 @@
 		.l_start = (TYPEOF_FLOCK_OFF_T) 0xdefaced1facefeedULL,
 		.l_len = (TYPEOF_FLOCK_OFF_T) 0xdefaced2cafef00dULL
 	};
-	invoke_test_syscall(cmd, &fl);
+	long rc = invoke_test_syscall(cmd, &fl);
 	printf("%s(0, %s, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=%jd, l_len=%jd}) = %s\n", TEST_SYSCALL_STR, name,
-	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, EINVAL_STR);
+	       (intmax_t) fl.l_start, (intmax_t) fl.l_len, sprintrc(rc));
 }
 
 static void
@@ -77,7 +78,7 @@
 	long rc = invoke_test_syscall(F_SETLK, &fl);
 	printf("%s(0, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET"
 	       ", l_start=0, l_len=%d}) = %s\n",
-	       TEST_SYSCALL_STR, FILE_LEN, rc ? EINVAL_STR : "0");
+	       TEST_SYSCALL_STR, FILE_LEN, sprintrc(rc));
 	if (rc)
 		return;
 
diff --git a/tests/sun_path.test b/tests/sun_path.test
index 728328a..f0b7a02 100755
--- a/tests/sun_path.test
+++ b/tests/sun_path.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
+run_prog ../net-accept-connect 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
 run_strace_merge -ebind,connect,getsockname $args
 match_grep
 
diff --git a/tests/swap.gen.test b/tests/swap.gen.test
new file mode 100755
index 0000000..4ca7891
--- /dev/null
+++ b/tests/swap.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (swap -a23 -e trace=swapon,swapoff); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests/swap.test b/tests/swap.test
deleted file mode 100755
index a30e1fd..0000000
--- a/tests/swap.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check swapon and swapoff syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a23 -e trace=swapon,swapoff
diff --git a/tests/sxetmask.c b/tests/sxetmask.c
new file mode 100644
index 0000000..0ede9ad
--- /dev/null
+++ b/tests/sxetmask.c
@@ -0,0 +1,124 @@
+/*
+ * Check decoding of sgetmask and ssetmask syscalls.
+ *
+ * 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 <asm/unistd.h>
+
+#if defined __NR_sgetmask && defined __NR_ssetmask
+
+# include <errno.h>
+# include <signal.h>
+# include <stdio.h>
+# include <stdint.h>
+# include <string.h>
+# include <unistd.h>
+
+static long
+k_sgetmask(void)
+{
+	return syscall(__NR_sgetmask);
+}
+
+static long
+k_ssetmask(const kernel_ulong_t arg)
+{
+	return syscall(__NR_ssetmask, arg);
+}
+
+int
+main(void)
+{
+	union {
+		sigset_t libc_mask;
+		unsigned long old_mask;
+	} uset, uget;
+	long rc;
+
+	/*
+	 * Block, reset, and raise SIGUSR1.
+	 * If a subsequent ssetmask call fails to set the proper mask,
+	 * the process will be terminated by SIGUSR1.
+	 */
+	sigemptyset(&uset.libc_mask);
+	sigaddset(&uset.libc_mask, SIGUSR1);
+	if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+		perror_msg_and_fail("sigprocmask");
+	if (signal(SIGUSR1, SIG_DFL) == SIG_ERR)
+		perror_msg_and_fail("signal");
+	raise(SIGUSR1);
+
+	sigaddset(&uset.libc_mask, SIGUSR2);
+	rc = k_ssetmask((kernel_ulong_t) 0xfacefeed00000000ULL | uset.old_mask);
+	if (rc == -1L) {
+		printf("ssetmask([USR1 USR2]) = %s\n", sprintrc(rc));
+	} else {
+		printf("ssetmask([USR1 USR2]) = %#lx (old mask [USR1])\n", rc);
+		/*
+		 * Use a regular sigprocmask call to check the value
+		 * returned by the ssetmask call being tested.
+		 */
+		if (sigprocmask(SIG_SETMASK, NULL, &uget.libc_mask))
+			perror_msg_and_fail("sigprocmask");
+		if (uset.old_mask != uget.old_mask)
+			error_msg_and_fail("sigprocmask returned %#lx"
+					   " instead of %#lx",
+					   uget.old_mask, uset.old_mask);
+	}
+
+	rc = k_sgetmask();
+	if (rc == -1L) {
+		printf("sgetmask() = %s\n", sprintrc(rc));
+	} else {
+		printf("sgetmask() = %#lx (mask [USR1 USR2])\n", rc);
+		if (uget.old_mask != (unsigned long) rc)
+			error_msg_and_fail("sigprocmask returned %#lx",
+					   uget.old_mask);
+
+		if (sizeof(long) > 4) {
+			sigaddset(&uset.libc_mask, 32 + 27);
+			if (sigprocmask(SIG_SETMASK, &uset.libc_mask, NULL))
+				perror_msg_and_fail("sigprocmask");
+			rc = k_sgetmask();
+			printf("sgetmask() = %#lx"
+			       " (mask [USR1 USR2 RT_27])\n", rc);
+			if (uset.old_mask != (unsigned long) rc)
+				error_msg_and_fail("sigprocmask set %#lx",
+						   uset.old_mask);
+		}
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_sgetmask && __NR_ssetmask")
+
+#endif
diff --git a/tests/sxetmask.gen.test b/tests/sxetmask.gen.test
new file mode 100755
index 0000000..fea9e4a
--- /dev/null
+++ b/tests/sxetmask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sxetmask -a11 -e trace=sgetmask,ssetmask); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=sgetmask,ssetmask
diff --git a/tests/symlink.c b/tests/symlink.c
index 72cb490..3e01cf2 100644
--- a/tests/symlink.c
+++ b/tests/symlink.c
@@ -7,14 +7,12 @@
 # include <unistd.h>
 
 int
-main(void)
+main(int ac, char **av)
 {
-	static const char sample_1[] = "symlink_new";
-	static const char sample_2[] = "symlink";
+	static const char sample[] = "symlink.sample";
 
-	long rc = syscall(__NR_symlink, sample_1, sample_2);
-	printf("symlink(\"%s\", \"%s\") = %ld %s (%m)\n",
-	       sample_1, sample_2, rc, errno2name());
+	long rc = syscall(__NR_symlink, sample, av[0]);
+	printf("symlink(\"%s\", \"%s\") = %s\n", sample, av[0], sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/symlink.gen.test b/tests/symlink.gen.test
new file mode 100755
index 0000000..f41668c
--- /dev/null
+++ b/tests/symlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlink -a34); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a34
diff --git a/tests/symlink.test b/tests/symlink.test
deleted file mode 100755
index 79b93ba..0000000
--- a/tests/symlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a34
diff --git a/tests/symlinkat.gen.test b/tests/symlinkat.gen.test
new file mode 100755
index 0000000..39e624a
--- /dev/null
+++ b/tests/symlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (symlinkat ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/symlinkat.test b/tests/symlinkat.test
deleted file mode 100755
index d8501ff..0000000
--- a/tests/symlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check symlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sync.gen.test b/tests/sync.gen.test
new file mode 100755
index 0000000..4aaf8c7
--- /dev/null
+++ b/tests/sync.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync -a7); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a7
diff --git a/tests/sync.test b/tests/sync.test
deleted file mode 100755
index f6bf6c8..0000000
--- a/tests/sync.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a7
diff --git a/tests/sync_file_range.gen.test b/tests/sync_file_range.gen.test
new file mode 100755
index 0000000..0693c12
--- /dev/null
+++ b/tests/sync_file_range.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/sync_file_range.test b/tests/sync_file_range.test
deleted file mode 100755
index 6aa86d6..0000000
--- a/tests/sync_file_range.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sync_file_range2.gen.test b/tests/sync_file_range2.gen.test
new file mode 100755
index 0000000..23046b6
--- /dev/null
+++ b/tests/sync_file_range2.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sync_file_range2 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/sync_file_range2.test b/tests/sync_file_range2.test
deleted file mode 100755
index 0d9945e..0000000
--- a/tests/sync_file_range2.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check sync_file_range2 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/sysinfo.c b/tests/sysinfo.c
index 377bdc9..b4b348c 100644
--- a/tests/sysinfo.c
+++ b/tests/sysinfo.c
@@ -3,6 +3,7 @@
  *
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
@@ -38,7 +39,7 @@
 	sysinfo(NULL);
 	printf("sysinfo(NULL) = -1 EFAULT (%m)\n");
 
-	struct sysinfo * const si = tail_alloc(sizeof(*si));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct sysinfo, si);
 
 	if (sysinfo(si))
 		perror_msg_and_skip("sysinfo");
diff --git a/tests/sysinfo.gen.test b/tests/sysinfo.gen.test
new file mode 100755
index 0000000..e6469d5
--- /dev/null
+++ b/tests/sysinfo.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (sysinfo -a14); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14
diff --git a/tests/sysinfo.test b/tests/sysinfo.test
deleted file mode 100755
index 806d8b6..0000000
--- a/tests/sysinfo.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of sysinfo syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14
diff --git a/tests/syslog.gen.test b/tests/syslog.gen.test
new file mode 100755
index 0000000..5423d5b
--- /dev/null
+++ b/tests/syslog.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (syslog -a36); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36
diff --git a/tests/syslog.test b/tests/syslog.test
deleted file mode 100755
index 1c2158e..0000000
--- a/tests/syslog.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check syslog syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a36
diff --git a/tests/tee.gen.test b/tests/tee.gen.test
new file mode 100755
index 0000000..2a87fae
--- /dev/null
+++ b/tests/tee.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (tee ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/tee.test b/tests/tee.test
deleted file mode 100755
index 76b6000..0000000
--- a/tests/tee.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check tee syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/tests.h b/tests/tests.h
index d4294de..dcc1057 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -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
@@ -44,6 +45,9 @@
 /* Cached sysconf(_SC_PAGESIZE). */
 size_t get_page_size(void);
 
+/* The size of kernel's sigset_t. */
+unsigned int get_sigset_size(void);
+
 /* Print message and strerror(errno) to stderr, then exit(1). */
 void perror_msg_and_fail(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
@@ -57,6 +61,9 @@
 void perror_msg_and_skip(const char *, ...)
 	ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN;
 
+/* Stat the specified file and skip the test if the stat call failed. */
+void skip_if_unavailable(const char *);
+
 /*
  * Allocate memory that ends on the page boundary.
  * Pages allocated by this call are preceeded by an unmapped page
@@ -69,6 +76,22 @@
 	ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((2));
 
 /*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified constant pointer.
+ */
+#define TAIL_ALLOC_OBJECT_CONST_PTR(type_name, type_ptr)	\
+	type_name *const type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
+ * Allocate an object of the specified type at the end
+ * of a mapped memory region.
+ * Assign its address to the specified variable pointer.
+ */
+#define TAIL_ALLOC_OBJECT_VAR_PTR(type_name, type_ptr)		\
+	type_name *type_ptr = tail_alloc(sizeof(*type_ptr))
+
+/*
  * Fill memory (pointed by ptr, having size bytes) with different bytes (with
  * values starting with start and resetting every period) in order to catch
  * sign, byte order and/or alignment errors.
@@ -100,6 +123,12 @@
 /* Print memory in a quoted form. */
 void print_quoted_memory(const char *, size_t);
 
+/* Print time_t and nanoseconds in symbolic format. */
+void print_time_t_nsec(time_t, unsigned long long, int);
+
+/* Print time_t and microseconds in symbolic format. */
+void print_time_t_usec(time_t, unsigned long long, int);
+
 /* Read an int from the file. */
 int read_int_from_file(const char *, int *);
 
diff --git a/tests/threads-execve.c b/tests/threads-execve.c
index 853645f..4eb334f 100644
--- a/tests/threads-execve.c
+++ b/tests/threads-execve.c
@@ -2,6 +2,7 @@
  * Check decoding of threads when a non-leader thread invokes execve.
  *
  * 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
@@ -136,25 +137,25 @@
 	switch (action % NUMBER_OF_ACTIONS) {
 		case ACTION_exit:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <pid changed to %u ...>\n",
+			       ", %p /* %u vars */ <pid changed to %u ...>\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ), leader);
+			       environ, arglen(environ), leader);
 			break;
 		case ACTION_rt_sigsuspend:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <unfinished ...>\n"
+			       ", %p /* %u vars */ <unfinished ...>\n"
 			       "%-5d <... rt_sigsuspend resumed>) = ?\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ),
+			       environ, arglen(environ),
 			       leader);
 			break;
 		case ACTION_nanosleep:
 			printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-			       ", [/* %u vars */] <unfinished ...>\n"
+			       ", %p /* %u vars */ <unfinished ...>\n"
 			       "%-5d <... nanosleep resumed> <unfinished ...>)"
 			       " = ?\n",
 			       tid, argv[0], argv[0], argv[1], argv[2],
-			       arglen(environ),
+			       environ, arglen(environ),
 			       leader);
 			break;
 	}
@@ -180,18 +181,15 @@
 		if (clock_nanosleep(CLOCK_REALTIME, 0, &ts, NULL))
 			perror_msg_and_skip("clock_nanosleep CLOCK_REALTIME");
 
-		printf("%-5d execve(\"%s\", [\"%s\"], [/* %u vars */]) = 0\n",
-		       leader, av[0], av[0], arglen(environ));
-
 		get_sigsetsize();
 		static char buf[sizeof(sigsetsize) * 3];
 		sprintf(buf, "%u", sigsetsize);
 
 		char *argv[] = { av[0], buf, (char *) "0", NULL };
 		printf("%-5d execve(\"%s\", [\"%s\", \"%s\", \"%s\"]"
-		       ", [/* %u vars */]) = 0\n",
+		       ", %p /* %u vars */) = 0\n",
 		       leader, argv[0], argv[0], argv[1], argv[2],
-		       arglen(environ));
+		       environ, arglen(environ));
 		execve(argv[0], argv, environ);
 		perror_msg_and_fail("execve");
 	}
diff --git a/tests/threads-execve.test b/tests/threads-execve.test
index 4a77146..02c8924 100755
--- a/tests/threads-execve.test
+++ b/tests/threads-execve.test
@@ -3,6 +3,7 @@
 # Check decoding of threads when a non-leader thread invokes execve.
 #
 # 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
@@ -40,10 +41,11 @@
 
 # Due to probabilistic nature of the test, try it several times.
 i=0
-while [ $i -le 9 ]; do
+while [ $i -le 19 ]; do
+	i="$(($i+1))"
 	run_strace "$@" > "$EXP"
-	diff -- "$EXP" "$LOG" || continue
-	rm -f "$EXP"
+	sed 1d < "$LOG" > "$OUT"
+	diff -- "$EXP" "$OUT" || continue
 	exit 0
 done
 
diff --git a/tests/time.c b/tests/time.c
index 4a5cde9..c329a79 100644
--- a/tests/time.c
+++ b/tests/time.c
@@ -2,6 +2,7 @@
  * This file is part of time strace test.
  *
  * 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
@@ -40,15 +41,24 @@
 int
 main(void)
 {
-	time_t *p = tail_alloc(sizeof(time_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(time_t, p);
 
 	time_t t = syscall(__NR_time, NULL);
 	if ((time_t) -1 == t)
 		perror_msg_and_skip("time");
-	printf("time(NULL) = %jd\n", (intmax_t) t);
+	printf("time(NULL) = %lld (", (long long) t);
+	print_time_t_nsec(t, 0, 0);
+	puts(")");
+
+	t = syscall(__NR_time, p + 1);
+	printf("time(%p) = %s\n", p + 1, sprintrc(t));
 
 	t = syscall(__NR_time, p);
-	printf("time([%jd]) = %jd\n", (intmax_t) *p, (intmax_t) t);
+	printf("time([%lld", (long long) *p);
+	print_time_t_nsec((time_t) *p, 0, 1),
+	printf("]) = %lld (", (long long) t);
+	print_time_t_nsec(t, 0, 0);
+	puts(")");
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/time.gen.test b/tests/time.gen.test
new file mode 100755
index 0000000..ed7ec69
--- /dev/null
+++ b/tests/time.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (time -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/time.test b/tests/time.test
deleted file mode 100755
index 6ab193a..0000000
--- a/tests/time.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check time syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a10
diff --git a/tests/timer_create.gen.test b/tests/timer_create.gen.test
new file mode 100755
index 0000000..6b4c543
--- /dev/null
+++ b/tests/timer_create.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_create ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/timer_create.test b/tests/timer_create.test
deleted file mode 100755
index 870a179..0000000
--- a/tests/timer_create.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/timer_xettime.c b/tests/timer_xettime.c
index 9eabbf0..aacd770 100644
--- a/tests/timer_xettime.c
+++ b/tests/timer_xettime.c
@@ -2,6 +2,7 @@
  * This file is part of timer_xettime strace test.
  *
  * 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
@@ -47,6 +48,7 @@
 	printf("timer_settime(%d, TIMER_ABSTIME, NULL, NULL)"
 	       " = -1 EINVAL (%m)\n", 0xdefaced);
 
+	long rc;
 	int tid;
 	struct sigevent sev = { .sigev_notify = SIGEV_NONE };
 
@@ -55,51 +57,61 @@
 	printf("timer_create(CLOCK_MONOTONIC, {sigev_signo=0"
 	       ", sigev_notify=SIGEV_NONE}, [%d]) = 0\n", tid);
 
-	struct {
-		struct itimerspec its;
-		uint32_t pad[4];
-	} old = {
-		.its = {
-			.it_interval = { 0xdeface5, 0xdeface6 },
-			.it_value = { 0xdeface7, 0xdeface8 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.its = {
-			.it_interval = { 0xdeface1, 0xdeface2 },
-			.it_value = { 0xdeface3, 0xdeface4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
 
-	if (syscall(__NR_timer_settime, tid, 0, &new.its, &old.its))
+	its_new->it_interval.tv_sec = 0xdeadbeefU;
+	its_new->it_interval.tv_nsec = 0xfacefeedU;
+	its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = syscall(__NR_timer_settime, tid, 0, its_new, its_old);
+	printf("timer_settime(%d, 0"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+	       tid, (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       its_old, sprintrc(rc));
+
+	its_new->it_interval.tv_sec = 0xdeface1;
+	its_new->it_interval.tv_nsec = 0xdeface2;
+	its_new->it_value.tv_sec = 0xdeface3;
+	its_new->it_value.tv_nsec = 0xdeface4;
+	its_old->it_interval.tv_sec = 0xdeface5;
+	its_old->it_interval.tv_nsec = 0xdeface6;
+	its_old->it_value.tv_sec = 0xdeface7;
+	its_old->it_value.tv_nsec = 0xdeface8;
+
+	if (syscall(__NR_timer_settime, tid, 0, its_new, its_old))
 		perror_msg_and_skip("timer_settime");
 	printf("timer_settime(%d, 0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
 	       ") = 0\n",
 	       tid,
-	       (intmax_t) new.its.it_interval.tv_sec,
-	       (intmax_t) new.its.it_interval.tv_nsec,
-	       (intmax_t) new.its.it_value.tv_sec,
-	       (intmax_t) new.its.it_value.tv_nsec,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
-	if (syscall(__NR_timer_gettime, tid, &old.its))
+	if (syscall(__NR_timer_gettime, tid, its_old))
 		perror_msg_and_skip("timer_gettime");
 	printf("timer_gettime(%d"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
 	       tid,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/timer_xettime.gen.test b/tests/timer_xettime.gen.test
new file mode 100755
index 0000000..6e2dffa
--- /dev/null
+++ b/tests/timer_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timer_xettime -e trace=timer_create,timer_settime,timer_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests/timer_xettime.test b/tests/timer_xettime.test
deleted file mode 100755
index 08bcdd6..0000000
--- a/tests/timer_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timer_create, timer_settime, and timer_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timer_create,timer_settime,timer_gettime
diff --git a/tests/timerfd_xettime.c b/tests/timerfd_xettime.c
index ca7124e..1e8a23a 100644
--- a/tests/timerfd_xettime.c
+++ b/tests/timerfd_xettime.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -47,49 +48,59 @@
 		perror_msg_and_skip("timerfd_create");
 	puts("timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC|TFD_NONBLOCK) = 0");
 
-	struct {
-		struct itimerspec its;
-		uint32_t pad[4];
-	} old = {
-		.its = {
-			.it_interval = { 0xdeface5, 0xdeface6 },
-			.it_value = { 0xdeface7, 0xdeface8 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.its = {
-			.it_interval = { 0xdeface1, 0xdeface2 },
-			.it_value = { 0xdeface3, 0xdeface4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_new);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerspec, its_old);
 
-	if (syscall(__NR_timerfd_settime, 0, 0, &new.its, &old.its))
+	its_new->it_interval.tv_sec = 0xdeadbeefU;
+	its_new->it_interval.tv_nsec = 0xfacefeedU;
+	its_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	its_new->it_value.tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	long rc = syscall(__NR_timerfd_settime, 0, 0, its_new, its_old);
+	printf("timerfd_settime(0, 0"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}, %p) = %s\n",
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       its_old, sprintrc(rc));
+
+	its_new->it_interval.tv_sec = 0xdeface1;
+	its_new->it_interval.tv_nsec = 0xdeface2;
+	its_new->it_value.tv_sec = 0xdeface3;
+	its_new->it_value.tv_nsec = 0xdeface4;
+	its_old->it_interval.tv_sec = 0xdeface5;
+	its_old->it_interval.tv_nsec = 0xdeface6;
+	its_old->it_value.tv_sec = 0xdeface7;
+	its_old->it_value.tv_nsec = 0xdeface8;
+
+	if (syscall(__NR_timerfd_settime, 0, 0, its_new, its_old))
 		perror_msg_and_skip("timerfd_settime");
 	printf("timerfd_settime(0, 0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}"
 	       ") = 0\n",
-	       (intmax_t) new.its.it_interval.tv_sec,
-	       (intmax_t) new.its.it_interval.tv_nsec,
-	       (intmax_t) new.its.it_value.tv_sec,
-	       (intmax_t) new.its.it_value.tv_nsec,
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       (long long) its_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_interval.tv_nsec),
+	       (long long) its_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_new->it_value.tv_nsec),
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
-	if (syscall(__NR_timerfd_gettime, 0, &old.its))
+	if (syscall(__NR_timerfd_gettime, 0, its_old))
 		perror_msg_and_skip("timerfd_gettime");
 	printf("timerfd_gettime(0"
-	       ", {it_interval={tv_sec=%jd, tv_nsec=%jd}"
-	       ", it_value={tv_sec=%jd, tv_nsec=%jd}}) = 0\n",
-	       (intmax_t) old.its.it_interval.tv_sec,
-	       (intmax_t) old.its.it_interval.tv_nsec,
-	       (intmax_t) old.its.it_value.tv_sec,
-	       (intmax_t) old.its.it_value.tv_nsec);
+	       ", {it_interval={tv_sec=%lld, tv_nsec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_nsec=%llu}}) = 0\n",
+	       (long long) its_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_interval.tv_nsec),
+	       (long long) its_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(its_old->it_value.tv_nsec));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/timerfd_xettime.gen.test b/tests/timerfd_xettime.gen.test
new file mode 100755
index 0000000..97e560b
--- /dev/null
+++ b/tests/timerfd_xettime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (timerfd_xettime -e trace=timerfd_create,timerfd_settime,timerfd_gettime); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests/timerfd_xettime.test b/tests/timerfd_xettime.test
deleted file mode 100755
index 75aa21c..0000000
--- a/tests/timerfd_xettime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check timerfd_create, timerfd_settime, and timerfd_gettime syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=timerfd_create,timerfd_settime,timerfd_gettime
diff --git a/tests/times-fail.gen.test b/tests/times-fail.gen.test
new file mode 100755
index 0000000..9934d19
--- /dev/null
+++ b/tests/times-fail.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (times-fail -a12 -e trace=times); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a12 -e trace=times
diff --git a/tests/times-fail.test b/tests/times-fail.test
deleted file mode 100755
index ee28a06..0000000
--- a/tests/times-fail.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of failing times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a12 -e trace=times
diff --git a/tests/times.gen.test b/tests/times.gen.test
new file mode 100755
index 0000000..ca4ebbe
--- /dev/null
+++ b/tests/times.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/times.test b/tests/times.test
deleted file mode 100755
index b97e0d3..0000000
--- a/tests/times.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of times syscall
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/trace_fstat.gen.test b/tests/trace_fstat.gen.test
new file mode 100755
index 0000000..c3aede1
--- /dev/null
+++ b/tests/trace_fstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstat test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_fstat.in b/tests/trace_fstat.in
new file mode 100644
index 0000000..34cfa7e
--- /dev/null
+++ b/tests/trace_fstat.in
@@ -0,0 +1,5 @@
+fstat	-a15
+fstat64	-a17
+fstatat64	-a32
+newfstatat	-a32
+oldfstat	-a21
diff --git a/tests/trace_fstatfs.gen.test b/tests/trace_fstatfs.gen.test
new file mode 100755
index 0000000..063f624
--- /dev/null
+++ b/tests/trace_fstatfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_fstatfs test_trace_expr '' -e%fstatfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%fstatfs
diff --git a/tests/trace_fstatfs.in b/tests/trace_fstatfs.in
new file mode 100644
index 0000000..6441a07
--- /dev/null
+++ b/tests/trace_fstatfs.in
@@ -0,0 +1,2 @@
+fstatfs	-a18
+fstatfs64	-a24
diff --git a/tests/trace_lstat.gen.test b/tests/trace_lstat.gen.test
new file mode 100755
index 0000000..a05b7a1
--- /dev/null
+++ b/tests/trace_lstat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_lstat test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%lstat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_lstat.in b/tests/trace_lstat.in
new file mode 100644
index 0000000..abbabc4
--- /dev/null
+++ b/tests/trace_lstat.in
@@ -0,0 +1,3 @@
+lstat	-a32
+lstat64	-a32
+oldlstat	-a32
diff --git a/tests/trace_question.gen.test b/tests/trace_question.gen.test
new file mode 100755
index 0000000..76b3578
--- /dev/null
+++ b/tests/trace_question.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_question test_trace_expr '' -e?osf_utimes,?/^pkey_.*); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e?osf_utimes,?/^pkey_.*
diff --git a/tests/trace_question.in b/tests/trace_question.in
new file mode 100644
index 0000000..74d662c
--- /dev/null
+++ b/tests/trace_question.in
@@ -0,0 +1,4 @@
+osf_utimes	-a21
+pkey_alloc	-a17
+pkey_free	-a13
+pkey_mprotect	-a37
diff --git a/tests/trace_stat.gen.test b/tests/trace_stat.gen.test
new file mode 100755
index 0000000..ae95ab8
--- /dev/null
+++ b/tests/trace_stat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%stat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_stat.in b/tests/trace_stat.in
new file mode 100644
index 0000000..f105d78
--- /dev/null
+++ b/tests/trace_stat.in
@@ -0,0 +1,3 @@
+oldstat	-a32
+stat	-a32
+stat64	-a32
diff --git a/tests/trace_stat_like.gen.test b/tests/trace_stat_like.gen.test
new file mode 100755
index 0000000..5681a8a
--- /dev/null
+++ b/tests/trace_stat_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_stat_like test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%stat -v -P stat.sample -P /dev/full
diff --git a/tests/trace_stat_like.in b/tests/trace_stat_like.in
new file mode 100644
index 0000000..22bd7f2
--- /dev/null
+++ b/tests/trace_stat_like.in
@@ -0,0 +1,12 @@
+fstat	-a15
+fstat64	-a17
+fstatat64	-a32
+lstat	-a32
+lstat64	-a32
+newfstatat	-a32
+oldfstat	-a21
+oldlstat	-a32
+oldstat	-a32
+stat	-a32
+stat64	-a32
+statx	-a32
diff --git a/tests/trace_statfs.gen.test b/tests/trace_statfs.gen.test
new file mode 100755
index 0000000..957412b
--- /dev/null
+++ b/tests/trace_statfs.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs test_trace_expr '' -e%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%statfs
diff --git a/tests/trace_statfs.in b/tests/trace_statfs.in
new file mode 100644
index 0000000..7c4adfe
--- /dev/null
+++ b/tests/trace_statfs.in
@@ -0,0 +1,2 @@
+statfs	-a17
+statfs64	-a23
diff --git a/tests/trace_statfs_like.gen.test b/tests/trace_statfs_like.gen.test
new file mode 100755
index 0000000..be1a9c0
--- /dev/null
+++ b/tests/trace_statfs_like.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (trace_statfs_like test_trace_expr '' -e%%statfs); do not edit.
+. "${srcdir=.}/init.sh"
+test_trace_expr '' -e%%statfs
diff --git a/tests/trace_statfs_like.in b/tests/trace_statfs_like.in
new file mode 100644
index 0000000..285aec6
--- /dev/null
+++ b/tests/trace_statfs_like.in
@@ -0,0 +1,5 @@
+statfs	-a17
+statfs64	-a23
+fstatfs	-a18
+fstatfs64	-a24
+ustat	-a33
diff --git a/tests/truncate.gen.test b/tests/truncate.gen.test
new file mode 100755
index 0000000..0410e73
--- /dev/null
+++ b/tests/truncate.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/truncate.test b/tests/truncate.test
deleted file mode 100755
index 6bf1e70..0000000
--- a/tests/truncate.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/truncate64.gen.test b/tests/truncate64.gen.test
new file mode 100755
index 0000000..dae0fe6
--- /dev/null
+++ b/tests/truncate64.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (truncate64 ); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff 
diff --git a/tests/truncate64.test b/tests/truncate64.test
deleted file mode 100755
index c466806..0000000
--- a/tests/truncate64.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check truncate64 syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff
diff --git a/tests/ugetrlimit.gen.test b/tests/ugetrlimit.gen.test
new file mode 100755
index 0000000..ff27134
--- /dev/null
+++ b/tests/ugetrlimit.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ugetrlimit -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/ugetrlimit.test b/tests/ugetrlimit.test
deleted file mode 100755
index f4648ff..0000000
--- a/tests/ugetrlimit.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of ugetrlimit syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/uio.test b/tests/uio.test
index 020b97e..0184685 100755
--- a/tests/uio.test
+++ b/tests/uio.test
@@ -5,7 +5,7 @@
 . "${srcdir=.}/init.sh"
 
 run_prog
-run_strace -edesc $args
+run_strace -e%desc $args
 match_grep
 
 exit 0
diff --git a/tests/umask.gen.test b/tests/umask.gen.test
new file mode 100755
index 0000000..60af5e9
--- /dev/null
+++ b/tests/umask.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umask -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests/umask.test b/tests/umask.test
deleted file mode 100755
index 1351721..0000000
--- a/tests/umask.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check umask syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests/umode_t.c b/tests/umode_t.c
index 5041638..dcd1514 100644
--- a/tests/umode_t.c
+++ b/tests/umode_t.c
@@ -2,6 +2,7 @@
  * Check decoding of umode_t type syscall arguments.
  *
  * 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
@@ -38,7 +39,7 @@
 # define TEST_SYSCALL_PREFIX_STR ""
 #endif
 
-static const char sample[] = TEST_SYSCALL_STR;
+static const char *sample;
 
 static void
 test_syscall(unsigned short mode)
@@ -49,17 +50,18 @@
 
 	if (mode <= 07)
 		printf("%s(%s\"%s\", 00%d) = %ld %s (%m)\n",
-		       sample, TEST_SYSCALL_PREFIX_STR,
+		       TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
 		       sample, (int) mode, rc, errno2name());
 	else
 		printf("%s(%s\"%s\", %#03ho) = %ld %s (%m)\n",
-		       sample, TEST_SYSCALL_PREFIX_STR,
+		       TEST_SYSCALL_STR, TEST_SYSCALL_PREFIX_STR,
 		       sample, mode, rc, errno2name());
 }
 
 int
-main(void)
+main(int ac, char **av)
 {
+	sample = av[0];
 	test_syscall(0);
 	test_syscall(0xffff);
 	test_syscall(06);
diff --git a/tests/umoven-illptr.gen.test b/tests/umoven-illptr.gen.test
new file mode 100755
index 0000000..eea7b1c
--- /dev/null
+++ b/tests/umoven-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umoven-illptr -a36 -e trace=nanosleep); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests/umoven-illptr.test b/tests/umoven-illptr.test
deleted file mode 100755
index 7b8cb31..0000000
--- a/tests/umoven-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of invalid pointer by umoven.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a36 -e trace=nanosleep
diff --git a/tests/umovestr-illptr.gen.test b/tests/umovestr-illptr.gen.test
new file mode 100755
index 0000000..7685d44
--- /dev/null
+++ b/tests/umovestr-illptr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr-illptr -a11 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests/umovestr-illptr.test b/tests/umovestr-illptr.test
deleted file mode 100755
index 6f1cc86..0000000
--- a/tests/umovestr-illptr.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of invalid pointer by umovestr.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a11 -e trace=chdir
diff --git a/tests/umovestr2.test b/tests/umovestr2.test
index 5c5d561..3decbe2 100755
--- a/tests/umovestr2.test
+++ b/tests/umovestr2.test
@@ -9,7 +9,3 @@
 check_prog sed
 sed 1d < "$LOG" > "$OUT"
 match_diff "$OUT" "$EXP"
-
-rm -f "$EXP" "$OUT"
-
-exit 0
diff --git a/tests/umovestr3.gen.test b/tests/umovestr3.gen.test
new file mode 100755
index 0000000..b16e1ed
--- /dev/null
+++ b/tests/umovestr3.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (umovestr3 -a14 -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests/umovestr3.test b/tests/umovestr3.test
deleted file mode 100755
index d5be283..0000000
--- a/tests/umovestr3.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# yet another umovestr short read test
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a14 -e trace=chdir
diff --git a/tests/uname.c b/tests/uname.c
index cd6f51c..96db753 100644
--- a/tests/uname.c
+++ b/tests/uname.c
@@ -10,7 +10,7 @@
 int main(int ac, char **av)
 {
 	int abbrev = ac > 1;
-	struct utsname *const uname = tail_alloc(sizeof(struct utsname));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct utsname, uname);
 	int rc = syscall(__NR_uname, uname);
 	printf("uname({sysname=\"");
 	print_quoted_string(uname->sysname);
diff --git a/tests/uname.test b/tests/uname.test
index 03fe30c..7ca1b5b 100755
--- a/tests/uname.test
+++ b/tests/uname.test
@@ -10,9 +10,8 @@
 run_strace -v -euname $args > "$EXP"
 uniq < "$LOG" > "$OUT"
 
-run_prog "./$NAME" abbrev > /dev/null
+run_prog "../$NAME" abbrev > /dev/null
 run_strace -euname $args >> "$EXP"
 uniq < "$LOG" >> "$OUT"
 
 match_diff "$OUT" "$EXP"
-rm -f "$OUT" "$EXP"
diff --git a/tests/unix-pair-send-recv.test b/tests/unix-pair-send-recv.test
index 4defdeb..10ab7cc 100755
--- a/tests/unix-pair-send-recv.test
+++ b/tests/unix-pair-send-recv.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-send-recv abcdefghijklmnopqrstuvwxyz
 run_strace -a32 -esignal=none -esend,recv -eread=0 -ewrite=0 $args
 match_diff
 
diff --git a/tests/unix-pair-sendto-recvfrom.test b/tests/unix-pair-sendto-recvfrom.test
index 21afe23..0bd9a04 100755
--- a/tests/unix-pair-sendto-recvfrom.test
+++ b/tests/unix-pair-sendto-recvfrom.test
@@ -4,7 +4,7 @@
 
 . "${srcdir=.}/init.sh"
 
-run_prog ./unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
+run_prog ../unix-pair-sendto-recvfrom abcdefghijklmnopqrstuvwxyz
 run_strace -esignal=none -esendto,recvfrom -eread=0 -ewrite=0 $args
 match_diff
 
diff --git a/tests/unlink.gen.test b/tests/unlink.gen.test
new file mode 100755
index 0000000..7b8522b
--- /dev/null
+++ b/tests/unlink.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlink -a24); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24
diff --git a/tests/unlink.test b/tests/unlink.test
deleted file mode 100755
index 09bf79a..0000000
--- a/tests/unlink.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlink syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24
diff --git a/tests/unlinkat.gen.test b/tests/unlinkat.gen.test
new file mode 100755
index 0000000..5a77c6a
--- /dev/null
+++ b/tests/unlinkat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unlinkat -a35); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a35
diff --git a/tests/unlinkat.test b/tests/unlinkat.test
deleted file mode 100755
index 864261f..0000000
--- a/tests/unlinkat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check unlinkat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a35
diff --git a/tests/unshare.gen.test b/tests/unshare.gen.test
new file mode 100755
index 0000000..077a458
--- /dev/null
+++ b/tests/unshare.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (unshare -a11); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11
diff --git a/tests/unshare.test b/tests/unshare.test
deleted file mode 100755
index ccb9575..0000000
--- a/tests/unshare.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of setns syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11
diff --git a/tests/userfaultfd.gen.test b/tests/userfaultfd.gen.test
new file mode 100755
index 0000000..4735146
--- /dev/null
+++ b/tests/userfaultfd.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (userfaultfd -a38); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a38
diff --git a/tests/userfaultfd.test b/tests/userfaultfd.test
deleted file mode 100755
index af8b6fb..0000000
--- a/tests/userfaultfd.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check userfaultfd syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a38
diff --git a/tests/ustat.c b/tests/ustat.c
index 57bb29c..3341c70 100644
--- a/tests/ustat.c
+++ b/tests/ustat.c
@@ -47,7 +47,7 @@
 	long rc;
 
 # ifdef HAVE_USTAT_H
-	struct ustat *const ust = tail_alloc(sizeof(*ust));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct ustat, ust);
 	struct stat st;
 	if (stat(".", &st))
 		perror_msg_and_fail("stat");
diff --git a/tests/ustat.gen.test b/tests/ustat.gen.test
new file mode 100755
index 0000000..f64b28d
--- /dev/null
+++ b/tests/ustat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (ustat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/ustat.test b/tests/ustat.test
deleted file mode 100755
index 60a88e0..0000000
--- a/tests/ustat.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check ustat syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a33
diff --git a/tests/utime.c b/tests/utime.c
index 8fd594f..03e3958 100644
--- a/tests/utime.c
+++ b/tests/utime.c
@@ -2,6 +2,7 @@
  * Check decoding of utime syscall.
  *
  * 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
@@ -38,17 +39,6 @@
 # include <stdio.h>
 # include <unistd.h>
 
-
-static void
-print_tm(const struct tm * const p)
-{
-	char buf[256];
-
-	strftime(buf, sizeof(buf), "%FT%T%z", p);
-
-	printf("%s", buf);
-}
-
 static long
 k_utime(const void *const filename, const void *const times)
 {
@@ -60,8 +50,7 @@
 {
 	static const char *const dummy_str = "dummy filename";
 
-	const time_t t = time(NULL);
-	const struct tm * const p = localtime(&t);
+	const time_t t = 1492350678;
 	const struct utimbuf u = { .actime = t, .modtime = t };
 	const struct utimbuf *const tail_u = tail_memdup(&u, sizeof(u));
 	const char *const dummy_filename =
@@ -80,10 +69,10 @@
 
 	rc = k_utime("utime\nfilename", tail_u);
 	const char *errstr = sprintrc(rc);
-	printf("utime(\"utime\\nfilename\", {actime=");
-	print_tm(p);
-	printf(", modtime=");
-	print_tm(p);
+	printf("utime(\"utime\\nfilename\", {actime=%lld", (long long) t);
+	print_time_t_nsec(t, 0, 1);
+	printf(", modtime=%lld", (long long) t);
+	print_time_t_nsec(t, 0, 1);
 	printf("}) = %s\n", errstr);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/utime.gen.test b/tests/utime.gen.test
new file mode 100755
index 0000000..7270556
--- /dev/null
+++ b/tests/utime.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utime -a16); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a16
diff --git a/tests/utime.test b/tests/utime.test
deleted file mode 100755
index bd64c53..0000000
--- a/tests/utime.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utime syscall.
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a 16 -e trace=utime
diff --git a/tests/utimensat.c b/tests/utimensat.c
index 6d9faac..ddfd360 100644
--- a/tests/utimensat.c
+++ b/tests/utimensat.c
@@ -1,7 +1,7 @@
 /*
- * This file is part of utimensat strace test.
+ * Check decoding of utimensat syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -28,66 +28,173 @@
  */
 
 #include "tests.h"
-#include <assert.h>
-#include <errno.h>
 #include <fcntl.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
 
-#if defined HAVE_UTIMENSAT \
- && defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW \
- && defined UTIME_NOW && defined UTIME_OMIT
+#if defined __NR_utimensat && defined UTIME_NOW && defined UTIME_OMIT
 
 static void
 print_ts(const struct timespec *ts)
 {
-	printf("{tv_sec=%ju, tv_nsec=%ju}", (uintmax_t) ts->tv_sec,
-		(uintmax_t) ts->tv_nsec);
+	printf("{tv_sec=%lld, tv_nsec=%llu}", (long long) ts->tv_sec,
+		zero_extend_signed_to_ull(ts->tv_nsec));
+	print_time_t_nsec(ts->tv_sec,
+			  zero_extend_signed_to_ull(ts->tv_nsec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimensat(const kernel_ulong_t dirfd,
+	    const kernel_ulong_t pathname,
+	    const kernel_ulong_t times,
+	    const kernel_ulong_t flags)
+{
+	long rc = syscall(__NR_utimensat, dirfd, pathname, times, flags);
+	errstr = sprintrc(rc);
+	return rc;
 }
 
 int
 main(void)
 {
-	static const char fname[] = "utimensat\nfilename";
+	static const kernel_ulong_t bogus_fd =
+		(kernel_ulong_t) 0xbadc0deddeadbeef;
+	static const kernel_ulong_t kfdcwd =
+		(kernel_ulong_t) 0xdefaced00000000 | -100U;
+	static const char proto_fname[] = "utimensat\nfilename";
+	static const char qname[] = "\"utimensat\\nfilename\"";
 
-	assert(utimensat(AT_FDCWD, fname, NULL, 0) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	struct timespec *const ts = tail_alloc(sizeof(*ts) * 2);
 
-	#define PREFIX "utimensat(AT_FDCWD, \"utimensat\\nfilename\", "
-	printf(PREFIX "NULL, 0) = -1 ENOENT (%m)\n");
+	(void) close(0);
 
-	struct timeval tv;
-	struct timespec ts[2];
+	/* dirfd */
+	k_utimensat(0, kfname, 0, 0);
+	printf("utimensat(0, %s, NULL, 0) = %s\n", qname, errstr);
 
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_skip("gettimeofday");
+	k_utimensat(bogus_fd, kfname, 0, 0);
+	printf("utimensat(%d, %s, NULL, 0) = %s\n",
+	       (int) bogus_fd, qname, errstr);
 
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_nsec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_nsec = tv.tv_usec + 1;
+	k_utimensat(-100U, kfname, 0, 0);
+	printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
 
-	printf(PREFIX "[");
+	k_utimensat(kfdcwd, kfname, 0, 0);
+	printf("utimensat(AT_FDCWD, %s, NULL, 0) = %s\n", qname, errstr);
+
+	/* pathname */
+	k_utimensat(kfdcwd, 0, 0, 0);
+	printf("utimensat(AT_FDCWD, NULL, NULL, 0) = %s\n", errstr);
+
+	k_utimensat(kfdcwd, kfname + sizeof(proto_fname) - 1, 0, 0);
+	printf("utimensat(AT_FDCWD, \"\", NULL, 0) = %s\n", errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_utimensat(kfdcwd, kfname, 0, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("utimensat(AT_FDCWD, %p, NULL, 0) = %s\n", fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimensat(kfdcwd, f8ill_ptr_to_kulong(fname), 0, 0);
+		printf("utimensat(AT_FDCWD, %#jx, NULL, 0) = %s\n",
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 1), 0);
+	printf("utimensat(AT_FDCWD, %s, %p, 0) = %s\n",
+	       qname, ts + 1, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) (ts + 2), 0);
+	printf("utimensat(AT_FDCWD, %s, %p, 0)"
+	       " = %s\n", qname, ts + 2, errstr);
+
+	ts[0].tv_sec = 1492358706;
+	ts[0].tv_nsec = 123456789;
+	ts[1].tv_sec = 1492357068;
+	ts[1].tv_nsec = 234567890;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
 	print_ts(&ts[0]);
 	printf(", ");
 	print_ts(&ts[1]);
-	printf("], AT_SYMLINK_NOFOLLOW) = -1 ENOENT ");
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
 
-	assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
-	printf("(%m)\n");
+	ts[0].tv_sec = -1;
+	ts[0].tv_nsec = 2000000000;
+	ts[1].tv_sec = (time_t) -0x100000001LL;
+	ts[1].tv_nsec = 2345678900U;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+	ts[0].tv_sec = 0;
+	ts[0].tv_nsec = 0;
+	ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts[1].tv_nsec = 0;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
+
+	ts[0].tv_sec = 0xdeadbeefU;
+	ts[0].tv_nsec = 0xfacefeedU;
+	ts[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	ts[1].tv_nsec = (long) 0xbadc0dedfacefeedLL;
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [", qname);
+	print_ts(&ts[0]);
+	printf(", ");
+	print_ts(&ts[1]);
+	printf("], AT_SYMLINK_NOFOLLOW) = %s\n", errstr);
 
 	ts[0].tv_nsec = UTIME_NOW;
 	ts[1].tv_nsec = UTIME_OMIT;
-	assert(utimensat(AT_FDCWD, fname, ts, AT_SYMLINK_NOFOLLOW) == -1);
-	if (ENOENT != errno)
-		error_msg_and_skip("utimensat");
-	printf(PREFIX "[UTIME_NOW, UTIME_OMIT], AT_SYMLINK_NOFOLLOW)"
-	       " = -1 ENOENT (%m)\n");
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, 0x100);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_SYMLINK_NOFOLLOW) = %s\n", qname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimensat(kfdcwd, kfname, f8ill_ptr_to_kulong(ts), 0);
+		printf("utimensat(AT_FDCWD, %s, %#jx, 0) = %s\n",
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(ts), errstr);
+	}
+
+	/* flags */
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+		    (kernel_ulong_t) 0xdefaced00000200);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_REMOVEDIR) = %s\n",
+	       qname, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts,
+		    (kernel_ulong_t) 0xdefaced00000600);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_REMOVEDIR|AT_SYMLINK_FOLLOW) = %s\n",
+	       qname, errstr);
+
+	k_utimensat(kfdcwd, kfname, (uintptr_t) ts, (kernel_ulong_t) -1ULL);
+	printf("utimensat(AT_FDCWD, %s, [UTIME_NOW, UTIME_OMIT]"
+	       ", AT_SYMLINK_NOFOLLOW|AT_REMOVEDIR|AT_SYMLINK_FOLLOW"
+	       "|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|0xffffe0ff) = %s\n",
+	       qname, errstr);
 
 	puts("+++ exited with 0 +++");
 	return 0;
@@ -95,7 +202,6 @@
 
 #else
 
-SKIP_MAIN_UNDEFINED("HAVE_UTIMENSAT && AT_FDCWD && AT_SYMLINK_NOFOLLOW"
-		    " && UTIME_NOW && UTIME_OMIT")
+SKIP_MAIN_UNDEFINED("__NR_utimensat && UTIME_NOW && UTIME_OMIT")
 
 #endif
diff --git a/tests/utimensat.gen.test b/tests/utimensat.gen.test
new file mode 100755
index 0000000..a4d6656
--- /dev/null
+++ b/tests/utimensat.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimensat -a33); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a33
diff --git a/tests/utimensat.test b/tests/utimensat.test
deleted file mode 100755
index 52e3f31..0000000
--- a/tests/utimensat.test
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-# Check decoding of utimensat syscall.
-
-. "${srcdir=.}/init.sh"
-
-run_prog > /dev/null
-run_strace -e utimensat $args > "$OUT"
-
-check_prog grep
-LC_ALL=C grep -x "utimensat(.*" "$LOG" > /dev/null || {
-        rm -f "$OUT"
-        skip_ 'test executable does not use utimensat syscall'
-}
-
-match_diff "$LOG" "$OUT"
-
-rm -f "$OUT"
-
-exit 0
diff --git a/tests/utimes.c b/tests/utimes.c
index bbfa031..4bef1a6 100644
--- a/tests/utimes.c
+++ b/tests/utimes.c
@@ -1,7 +1,7 @@
 /*
  * Check decoding of utimes syscall.
  *
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -32,50 +32,10 @@
 
 #ifdef __NR_utimes
 
-# include <stdint.h>
-# include <stdio.h>
-# include <sys/time.h>
-# include <unistd.h>
-
-int
-main(void)
-{
-	struct timeval tv;
-	if (gettimeofday(&tv, NULL))
-		perror_msg_and_fail("gettimeofday");
-
-	static const char sample[] = "utimes_sample";
-
-	long rc = syscall(__NR_utimes, sample, 0);
-	printf("utimes(\"%s\", NULL) = %ld %s (%m)\n",
-	       sample, rc, errno2name());
-
-	struct timeval *const ts = tail_alloc(sizeof(*ts) * 2);
-
-	ts[0].tv_sec = tv.tv_sec;
-	ts[0].tv_usec = tv.tv_usec;
-	ts[1].tv_sec = tv.tv_sec - 1;
-	ts[1].tv_usec = tv.tv_usec + 1;
-
-	rc = syscall(__NR_utimes, 0, ts + 2);
-	printf("utimes(NULL, %p) = %ld %s (%m)\n", ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_utimes, 0, ts + 1);
-	printf("utimes(NULL, [{tv_sec=%jd, tv_usec=%jd}, %p]) = "
-	       "%ld %s (%m)\n",
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       ts + 2, rc, errno2name());
-
-	rc = syscall(__NR_utimes, "", ts);
-	printf("utimes(\"\", [{tv_sec=%jd, tv_usec=%jd}, "
-	       "{tv_sec=%jd, tv_usec=%jd}]) = %ld %s (%m)\n",
-	       (intmax_t) ts[0].tv_sec, (intmax_t) ts[0].tv_usec,
-	       (intmax_t) ts[1].tv_sec, (intmax_t) ts[1].tv_usec,
-	       rc, errno2name());
-
-	puts("+++ exited with 0 +++");
-	return 0;
-}
+# define TEST_SYSCALL_NR	__NR_utimes
+# define TEST_SYSCALL_STR	"utimes"
+# define TEST_STRUCT		struct timeval
+# include "xutimes.c"
 
 #else
 
diff --git a/tests/utimes.gen.test b/tests/utimes.gen.test
new file mode 100755
index 0000000..37ed29c
--- /dev/null
+++ b/tests/utimes.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (utimes -a17); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a17
diff --git a/tests/utimes.test b/tests/utimes.test
deleted file mode 100755
index 99143a0..0000000
--- a/tests/utimes.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check utimes syscall decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a21
diff --git a/tests/vfork-f.gen.test b/tests/vfork-f.gen.test
new file mode 100755
index 0000000..b3c1c6b
--- /dev/null
+++ b/tests/vfork-f.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vfork-f -a26 -qq -f -e signal=none -e trace=chdir); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a26 -qq -f -e signal=none -e trace=chdir
diff --git a/tests/vfork-f.test b/tests/vfork-f.test
deleted file mode 100755
index ff4422b..0000000
--- a/tests/vfork-f.test
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-# Check how strace -f follows vfork syscall.
-
-. "${srcdir=.}/fork-f.test"
diff --git a/tests/vhangup.gen.test b/tests/vhangup.gen.test
new file mode 100755
index 0000000..7ac84e5
--- /dev/null
+++ b/tests/vhangup.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (vhangup -a10); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a10
diff --git a/tests/vhangup.test b/tests/vhangup.test
deleted file mode 100755
index 8fe1cac..0000000
--- a/tests/vhangup.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check vhangup syscall decoding.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a10
diff --git a/tests/vmsplice.gen.test b/tests/vmsplice.gen.test
new file mode 100755
index 0000000..fe6a07d
--- /dev/null
+++ b/tests/vmsplice.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/vmsplice.test b/tests/vmsplice.test
deleted file mode 100755
index 8a80650..0000000
--- a/tests/vmsplice.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of vmsplice syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -ewrite=1
diff --git a/tests/wait4-v.gen.test b/tests/wait4-v.gen.test
new file mode 100755
index 0000000..5b23f42
--- /dev/null
+++ b/tests/wait4-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (wait4-v -v -e signal=none -e trace=wait4); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests/wait4-v.test b/tests/wait4-v.test
deleted file mode 100755
index 58e55f2..0000000
--- a/tests/wait4-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=wait4
diff --git a/tests/wait4.c b/tests/wait4.c
index ccb3ebb..ab0c7a4 100644
--- a/tests/wait4.c
+++ b/tests/wait4.c
@@ -2,6 +2,7 @@
  * Check decoding of wait4 syscall.
  *
  * Copyright (c) 2015-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
@@ -40,8 +41,8 @@
 {
 	static char buf[1024];
 	snprintf(buf, sizeof(buf),
-		 "{ru_utime={tv_sec=%lu, tv_usec=%lu}"
-		 ", ru_stime={tv_sec=%lu, tv_usec=%lu}"
+		 "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+		 ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
 #if VERBOSE
 		 ", ru_maxrss=%lu"
 		 ", ru_ixrss=%lu"
@@ -60,10 +61,10 @@
 #else
 		 ", ...}"
 #endif
-		 , (long) ru->ru_utime.tv_sec
-		 , (long) ru->ru_utime.tv_usec
-		 , (long) ru->ru_stime.tv_sec
-		 , (long) ru->ru_stime.tv_usec
+		 , (long long) ru->ru_utime.tv_sec
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
+		 , (long long) ru->ru_stime.tv_sec
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
 #if VERBOSE
 		 , (long) ru->ru_maxrss
 		 , (long) ru->ru_ixrss
@@ -119,12 +120,12 @@
 
 	(void) close(0);
 
-	int *const s = tail_alloc(sizeof(*s));
+	TAIL_ALLOC_OBJECT_CONST_PTR(int, s);
 	if (wait4(pid, s, WNOHANG|__WALL, NULL))
 		perror_msg_and_fail("wait4 #1");
 	tprintf("wait4(%d, %p, WNOHANG|__WALL, NULL) = 0\n", pid, s);
 
-	struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
 	if (wait4(pid, s, WNOHANG|__WALL, rusage))
 		perror_msg_and_fail("wait4 #2");
 	tprintf("wait4(%d, %p, WNOHANG|__WALL, %p) = 0\n", pid, s, rusage);
diff --git a/tests/wait4.gen.test b/tests/wait4.gen.test
new file mode 100755
index 0000000..ae04915
--- /dev/null
+++ b/tests/wait4.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/wait4.test b/tests/wait4.test
deleted file mode 100755
index 6338d1f..0000000
--- a/tests/wait4.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of wait4 syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/waitid-v.gen.test b/tests/waitid-v.gen.test
new file mode 100755
index 0000000..45744cd
--- /dev/null
+++ b/tests/waitid-v.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitid-v -v -e signal=none -e trace=waitid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests/waitid-v.test b/tests/waitid-v.test
deleted file mode 100755
index eb498cb..0000000
--- a/tests/waitid-v.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check verbose decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -v -e signal=none -e trace=waitid
diff --git a/tests/waitid.c b/tests/waitid.c
index 6a10299..b56feea 100644
--- a/tests/waitid.c
+++ b/tests/waitid.c
@@ -2,6 +2,7 @@
  * Check decoding of waitid syscall.
  *
  * Copyright (c) 2015-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
@@ -42,8 +43,8 @@
 {
 	static char buf[1024];
 	snprintf(buf, sizeof(buf),
-		 "{ru_utime={tv_sec=%lld, tv_usec=%lld}"
-		 ", ru_stime={tv_sec=%lld, tv_usec=%lld}"
+		 "{ru_utime={tv_sec=%lld, tv_usec=%llu}"
+		 ", ru_stime={tv_sec=%lld, tv_usec=%llu}"
 #if VERBOSE
 		 ", ru_maxrss=%llu"
 		 ", ru_ixrss=%llu"
@@ -63,9 +64,9 @@
 		 ", ...}"
 #endif
 		 , (long long) ru->ru_utime.tv_sec
-		 , (long long) ru->ru_utime.tv_usec
+		 , zero_extend_signed_to_ull(ru->ru_utime.tv_usec)
 		 , (long long) ru->ru_stime.tv_sec
-		 , (long long) ru->ru_stime.tv_usec
+		 , zero_extend_signed_to_ull(ru->ru_stime.tv_usec)
 #if VERBOSE
 		 , zero_extend_signed_to_ull(ru->ru_maxrss)
 		 , zero_extend_signed_to_ull(ru->ru_ixrss)
@@ -185,9 +186,9 @@
 		perror_msg_and_fail("waitid #1");
 	tprintf("waitid(P_PID, %d, NULL, WNOHANG|WEXITED, NULL) = 0\n", pid);
 
-	siginfo_t *const sinfo = tail_alloc(sizeof(*sinfo));
+	TAIL_ALLOC_OBJECT_CONST_PTR(siginfo_t, sinfo);
 	memset(sinfo, 0, sizeof(*sinfo));
-	struct rusage *const rusage = tail_alloc(sizeof(*rusage));
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct rusage, rusage);
 	if (do_waitid(P_PID, pid, sinfo, WNOHANG|WEXITED|WSTOPPED, rusage))
 		perror_msg_and_fail("waitid #2");
 	tprintf("waitid(P_PID, %d, {}, WNOHANG|WEXITED|WSTOPPED, %s) = 0\n",
diff --git a/tests/waitid.gen.test b/tests/waitid.gen.test
new file mode 100755
index 0000000..59f4022
--- /dev/null
+++ b/tests/waitid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# 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
diff --git a/tests/waitid.test b/tests/waitid.test
deleted file mode 100755
index 3bcba3a..0000000
--- a/tests/waitid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -esignal=none
diff --git a/tests/waitpid.gen.test b/tests/waitpid.gen.test
new file mode 100755
index 0000000..d91e298
--- /dev/null
+++ b/tests/waitpid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (waitpid -a28); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a28
diff --git a/tests/waitpid.test b/tests/waitpid.test
deleted file mode 100755
index 93807d1..0000000
--- a/tests/waitpid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check decoding of waitpid syscall.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a28
diff --git a/tests/xattr-strings.gen.test b/tests/xattr-strings.gen.test
new file mode 100755
index 0000000..3317892
--- /dev/null
+++ b/tests/xattr-strings.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr-strings -a22 -s 4 -e trace=fsetxattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests/xattr-strings.test b/tests/xattr-strings.test
deleted file mode 100755
index 25ef360..0000000
--- a/tests/xattr-strings.test
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Check *xattr syscalls decoding when limiting string size.
-
-. "${srcdir=.}/init.sh"
-
-run_strace_match_diff -a22 -s 4 -e trace=fsetxattr
diff --git a/tests/xattr.gen.test b/tests/xattr.gen.test
new file mode 100755
index 0000000..030f2ce
--- /dev/null
+++ b/tests/xattr.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xattr -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -e trace=getxattr,fgetxattr,lgetxattr,setxattr,fsetxattr,lsetxattr,listxattr,flistxattr,llistxattr,removexattr,fremovexattr,lremovexattr
diff --git a/tests/xattr.test b/tests/xattr.test
deleted file mode 100755
index 8c7a87b..0000000
--- a/tests/xattr.test
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# Check *xattr syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-
-syscalls=
-for n in getxattr setxattr listxattr removexattr; do
-	syscalls="$syscalls,${n},f${n},l${n}"
-done
-
-run_strace_match_diff -a22 -e trace=$syscalls
diff --git a/tests/xet_robust_list.c b/tests/xet_robust_list.c
index 211dec4..a612b92 100644
--- a/tests/xet_robust_list.c
+++ b/tests/xet_robust_list.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -51,8 +52,8 @@
 {
 	const pid_t pid = getpid();
 	const long long_pid = (unsigned long) (0xdeadbeef00000000LL | pid);
-	void **p_head = tail_alloc(sizeof(void *));
-	size_t *p_len = tail_alloc(sizeof(size_t));
+	TAIL_ALLOC_OBJECT_CONST_PTR(void *, p_head);
+	TAIL_ALLOC_OBJECT_CONST_PTR(size_t, p_len);
 
 	if (syscall(__NR_get_robust_list, long_pid, p_head, p_len))
 		perror_msg_and_skip("get_robust_list");
diff --git a/tests/xet_robust_list.gen.test b/tests/xet_robust_list.gen.test
new file mode 100755
index 0000000..798cdff
--- /dev/null
+++ b/tests/xet_robust_list.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xet_robust_list -a24 -e trace=get_robust_list,set_robust_list); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests/xet_robust_list.test b/tests/xet_robust_list.test
deleted file mode 100755
index 8a3a382..0000000
--- a/tests/xet_robust_list.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check get_robust_list and set_robust_list syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a24 -e trace=get_robust_list,set_robust_list
diff --git a/tests/xetitimer.c b/tests/xetitimer.c
index 4b17edd..3a81880 100644
--- a/tests/xetitimer.c
+++ b/tests/xetitimer.c
@@ -1,5 +1,7 @@
 /*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Check decoding of setitimer and getitimer syscalls.
+ *
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,48 +31,153 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <sys/time.h>
+#include <unistd.h>
+#include <asm/unistd.h>
 
 int
 main(void)
 {
-	struct {
-		struct itimerval itv;
-		uint32_t pad[4];
-	} old = {
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
-	}, new = {
-		.itv = {
-			.it_interval = { 0xc0de1, 0xc0de2 },
-			.it_value = { 0xc0de3, 0xc0de4 }
-		},
-		.pad = { 0xdeadbeef, 0xbadc0ded, 0xdeadbeef, 0xbadc0ded }
+	static const struct itimerval new = {
+		.it_interval = { 0xc0de1, 0xc0de2 },
+		.it_value = { 0xc0de3, 0xc0de4 }
 	};
+	static const kernel_ulong_t long_timer =
+		F8ILL_KULONG_MASK | ITIMER_REAL;
+	static const kernel_ulong_t bogus_timer =
+		(kernel_ulong_t) 0xfacefeeddeadbeefULL;
 
-	if (setitimer(ITIMER_REAL, &new.itv, &old.itv))
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct itimerval, p_old);
+	struct itimerval *const p_new = tail_memdup(&new, sizeof(new));
+	void *const efault = tail_alloc(sizeof(new) - 8);
+	long rc;
+
+	if (setitimer(ITIMER_REAL, p_new, NULL))
 		perror_msg_and_skip("setitimer");
 	printf("setitimer(ITIMER_REAL"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
-	       (intmax_t) new.itv.it_interval.tv_sec,
-	       (intmax_t) new.itv.it_interval.tv_usec,
-	       (intmax_t) new.itv.it_value.tv_sec,
-	       (intmax_t) new.itv.it_value.tv_usec,
-	       (intmax_t) old.itv.it_interval.tv_sec,
-	       (intmax_t) old.itv.it_interval.tv_usec,
-	       (intmax_t) old.itv.it_value.tv_sec,
-	       (intmax_t) old.itv.it_value.tv_usec);
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", NULL) = 0\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec));
 
-	if (getitimer(ITIMER_REAL, &old.itv))
+	fill_memory(p_old, sizeof(*p_old));
+	if (getitimer(ITIMER_REAL, p_old))
 		perror_msg_and_skip("getitimer");
 	printf("getitimer(ITIMER_REAL"
-	       ", {it_interval={tv_sec=%jd, tv_usec=%jd}, "
-	       "it_value={tv_sec=%jd, tv_usec=%jd}}) = 0\n",
-	       (intmax_t) old.itv.it_interval.tv_sec,
-	       (intmax_t) old.itv.it_interval.tv_usec,
-	       (intmax_t) old.itv.it_value.tv_sec,
-	       (intmax_t) old.itv.it_value.tv_usec);
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+	fill_memory(p_old, sizeof(*p_old));
+	setitimer(ITIMER_REAL, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = 0\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec));
+
+	rc = getitimer(ITIMER_REAL, efault);
+	printf("getitimer(ITIMER_REAL, %p) = %s\n", efault, sprintrc(rc));
+
+	rc = setitimer(ITIMER_REAL, p_new, efault);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       efault, sprintrc(rc));
+
+	rc = setitimer(ITIMER_REAL, efault, p_old);
+	printf("setitimer(ITIMER_REAL, %p, %p) = %s\n",
+	       efault, p_old, sprintrc(rc));
+
+	fill_memory(p_old, sizeof(*p_old));
+	rc = syscall(__NR_setitimer, long_timer, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+	       sprintrc(rc));
+
+	fill_memory(p_old, sizeof(*p_old));
+	rc = syscall(__NR_getitimer, long_timer, p_old);
+	printf("getitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}) = %s\n",
+	       (long long) p_old->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_interval.tv_usec),
+	       (long long) p_old->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_old->it_value.tv_usec),
+	       sprintrc(rc));
+
+	rc = syscall(__NR_setitimer, bogus_timer, p_new, p_old);
+	printf("setitimer(%#x /* ITIMER_??? */"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (int) bogus_timer,
+	       (long long) new.it_interval.tv_sec,
+	       zero_extend_signed_to_ull(new.it_interval.tv_usec),
+	       (long long) new.it_value.tv_sec,
+	       zero_extend_signed_to_ull(new.it_value.tv_usec),
+	       p_old, sprintrc(rc));
+
+	rc = syscall(__NR_getitimer, bogus_timer, p_old);
+	printf("getitimer(%#x /* ITIMER_??? */, %p) = %s\n",
+	       (int) bogus_timer, p_old, sprintrc(rc));
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		const kernel_ulong_t ill_new = f8ill_ptr_to_kulong(p_new);
+		const kernel_ulong_t ill_old = f8ill_ptr_to_kulong(p_old);
+
+		rc = syscall(__NR_setitimer, long_timer, ill_new, ill_old);
+		printf("setitimer(ITIMER_REAL, %#llx, %#llx) = %s\n",
+		       (unsigned long long) ill_new,
+		       (unsigned long long) ill_old,
+		       sprintrc(rc));
+
+		rc = syscall(__NR_getitimer, long_timer, ill_old);
+		printf("getitimer(ITIMER_REAL, %#llx) = %s\n",
+		       (unsigned long long) ill_old, sprintrc(rc));
+	}
+
+	p_new->it_interval.tv_sec = 0xdeadbeefU;
+	p_new->it_interval.tv_usec = 0xfacefeedU;
+	p_new->it_value.tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	p_new->it_value.tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	rc = setitimer(ITIMER_REAL, p_new, p_old);
+	printf("setitimer(ITIMER_REAL"
+	       ", {it_interval={tv_sec=%lld, tv_usec=%llu}"
+	       ", it_value={tv_sec=%lld, tv_usec=%llu}}, %p) = %s\n",
+	       (long long) p_new->it_interval.tv_sec,
+	       zero_extend_signed_to_ull(p_new->it_interval.tv_usec),
+	       (long long) p_new->it_value.tv_sec,
+	       zero_extend_signed_to_ull(p_new->it_value.tv_usec),
+	       p_old, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/xetitimer.gen.test b/tests/xetitimer.gen.test
new file mode 100755
index 0000000..0cdb926
--- /dev/null
+++ b/tests/xetitimer.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetitimer -a29 -e trace=setitimer,getitimer); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=setitimer,getitimer
diff --git a/tests/xetitimer.test b/tests/xetitimer.test
deleted file mode 100755
index 4aa00cc..0000000
--- a/tests/xetitimer.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check setitimer and getitimer syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -e trace=setitimer,getitimer
diff --git a/tests/xetpgid.c b/tests/xetpgid.c
index 24e0d7f..0efffcb 100644
--- a/tests/xetpgid.c
+++ b/tests/xetpgid.c
@@ -2,6 +2,7 @@
  * This file is part of xetpgid strace test.
  *
  * 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
@@ -39,13 +40,10 @@
 main(void)
 {
 	const int pid = getpid();
-	long rc = syscall(__NR_getpgid,
-			  (unsigned long) 0xffffffff00000000ULL | pid);
+	long rc = syscall(__NR_getpgid, F8ILL_KULONG_MASK | pid);
 	printf("getpgid(%d) = %ld\n", pid, rc);
 
-	rc = syscall(__NR_setpgid,
-		     (unsigned long) 0xffffffff00000000ULL,
-		     (unsigned long) 0xffffffff00000000ULL | pid);
+	rc = syscall(__NR_setpgid, F8ILL_KULONG_MASK, F8ILL_KULONG_MASK | pid);
 	printf("setpgid(0, %d) = %ld\n", pid, rc);
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/xetpgid.gen.test b/tests/xetpgid.gen.test
new file mode 100755
index 0000000..fc57fc4
--- /dev/null
+++ b/tests/xetpgid.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpgid -a11 -e trace=getpgid,setpgid); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests/xetpgid.test b/tests/xetpgid.test
deleted file mode 100755
index 07f4f9e..0000000
--- a/tests/xetpgid.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpgid and setpgid syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a11 -e trace=getpgid,setpgid
diff --git a/tests/xetpriority.c b/tests/xetpriority.c
index ed55259..30c59c8 100644
--- a/tests/xetpriority.c
+++ b/tests/xetpriority.c
@@ -12,12 +12,11 @@
 {
 	const int pid = getpid();
 	long rc = syscall(__NR_getpriority, PRIO_PROCESS,
-			  (unsigned long) 0xffffffff00000000ULL | pid);
+			  F8ILL_KULONG_MASK | pid);
 	printf("getpriority(PRIO_PROCESS, %d) = %ld\n", pid, rc);
 
 	rc = syscall(__NR_setpriority, PRIO_PROCESS,
-		     (unsigned long) 0xffffffff00000000ULL | pid,
-		     (unsigned long) 0xffffffff00000000ULL);
+		     F8ILL_KULONG_MASK | pid, F8ILL_KULONG_MASK);
 	printf("setpriority(PRIO_PROCESS, %d, 0) = %s\n", pid, sprintrc(rc));
 
 	puts("+++ exited with 0 +++");
diff --git a/tests/xetpriority.gen.test b/tests/xetpriority.gen.test
new file mode 100755
index 0000000..4b95524
--- /dev/null
+++ b/tests/xetpriority.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xetpriority -a29 -e trace=getpriority,setpriority); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests/xetpriority.test b/tests/xetpriority.test
deleted file mode 100755
index 2c84ba4..0000000
--- a/tests/xetpriority.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check getpriority and setpriority syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a29 -e trace=getpriority,setpriority
diff --git a/tests/xettimeofday.c b/tests/xettimeofday.c
index d36c57b..ec422cf 100644
--- a/tests/xettimeofday.c
+++ b/tests/xettimeofday.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -36,36 +37,49 @@
 int
 main(void)
 {
-	struct {
-		struct timeval tv;
-		uint32_t pad0[2];
-		struct timezone tz;
-		uint32_t pad1[2];
-	} t = {
-		.pad0 = { 0xdeadbeef, 0xbadc0ded },
-		.pad1 = { 0xdeadbeef, 0xbadc0ded }
-	};
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timezone, tz);
 
-	if (syscall(__NR_gettimeofday, &t.tv, NULL))
+	if (syscall(__NR_gettimeofday, tv, NULL))
 		perror_msg_and_skip("gettimeofday");
-	printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}, NULL) = 0\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec);
+	printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}, NULL) = 0\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
 
-	if (syscall(__NR_gettimeofday, &t.tv, &t.tz))
+	if (syscall(__NR_gettimeofday, tv, tz))
 		perror_msg_and_skip("gettimeofday");
-	printf("gettimeofday({tv_sec=%jd, tv_usec=%jd}"
+	printf("gettimeofday({tv_sec=%lld, tv_usec=%llu}"
 	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = 0\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
-	       t.tz.tz_minuteswest, t.tz.tz_dsttime);
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
 
-	t.tv.tv_sec = -1;
-	t.tv.tv_usec = 1000000000;
-	assert(syscall(__NR_settimeofday, &t.tv, &t.tz) == -1);
-	printf("settimeofday({tv_sec=%jd, tv_usec=%jd}"
-	       ", {tz_minuteswest=%d, tz_dsttime=%d})"
-	       " = -1 EINVAL (%m)\n",
-	       (intmax_t) t.tv.tv_sec, (intmax_t) t.tv.tv_usec,
-	       t.tz.tz_minuteswest, t.tz.tz_dsttime);
+	tv->tv_sec = -1;
+	tv->tv_usec = 1000000;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
+
+	tv->tv_sec = 0xdeadbeefU;
+	tv->tv_usec = 0xfacefeedU;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
+
+	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+	assert(syscall(__NR_settimeofday, tv, tz) == -1);
+	printf("settimeofday({tv_sec=%lld, tv_usec=%llu}"
+	       ", {tz_minuteswest=%d, tz_dsttime=%d}) = -1 EINVAL (%m)\n",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec),
+	       tz->tz_minuteswest, tz->tz_dsttime);
 
 	puts("+++ exited with 0 +++");
 	return 0;
diff --git a/tests/xettimeofday.gen.test b/tests/xettimeofday.gen.test
new file mode 100755
index 0000000..1a021e4
--- /dev/null
+++ b/tests/xettimeofday.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (xettimeofday -a20 -e trace=gettimeofday,settimeofday); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests/xettimeofday.test b/tests/xettimeofday.test
deleted file mode 100755
index 68764e4..0000000
--- a/tests/xettimeofday.test
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-# Check gettimeofday and settimeofday syscalls decoding.
-
-. "${srcdir=.}/init.sh"
-run_strace_match_diff -a20 -e trace=gettimeofday,settimeofday
diff --git a/tests/xselect.c b/tests/xselect.c
index 39e87ac..e1638c8 100644
--- a/tests/xselect.c
+++ b/tests/xselect.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -31,6 +32,7 @@
 
 #include <assert.h>
 #include <stdio.h>
+#include <string.h>
 #include <unistd.h>
 #include <sys/select.h>
 
@@ -38,14 +40,10 @@
 
 int main(void)
 {
+	TAIL_ALLOC_OBJECT_CONST_PTR(struct timeval, tv);
+	struct timeval tv_in;
 	int fds[2];
-	struct {
-		struct timeval tv;
-		int pad[2];
-	} tm_in = {
-		.tv = { .tv_sec = 0xc0de1, .tv_usec = 0xc0de2 },
-		.pad = { 0xdeadbeef, 0xbadc0ded }
-	}, tm = tm_in;
+	long rc;
 
 	if (pipe(fds))
 		perror_msg_and_fail("pipe");
@@ -56,7 +54,7 @@
 	FD_ZERO(set);
 	FD_SET(fds[0], set);
 	FD_SET(fds[1], set);
-	int rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, NULL);
+	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);
@@ -65,19 +63,73 @@
 	       fds[0], fds[1], fds[0], fds[1]);
 
 	/*
+	 * 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);
+	if (rc < 0) {
+		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));
+	} else {
+		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,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       rc, (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+	}
+
+	FD_SET(fds[0], set);
+	FD_SET(fds[1], set);
+	tv->tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv->tv_usec = (long) 0xbadc0dedfacefeedLL;
+	memcpy(&tv_in, tv, sizeof(tv_in));
+	rc = syscall(TEST_SYSCALL_NR, fds[1] + 1, set, set, set, tv);
+	if (rc < 0) {
+		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));
+	} else {
+		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,
+		       zero_extend_signed_to_ull(tv_in.tv_usec),
+		       rc, (long long) tv->tv_sec,
+		       zero_extend_signed_to_ull(tv->tv_usec));
+	}
+
+	/*
 	 * Another simple one, with a timeout.
 	 */
 	FD_SET(1, set);
 	FD_SET(2, set);
 	FD_SET(fds[0], set);
 	FD_SET(fds[1], set);
-	assert(syscall(TEST_SYSCALL_NR, fds[1] + 1, NULL, set, NULL, &tm.tv) == 3);
-	printf("%s(%d, NULL, [1 2 %d %d], NULL, {tv_sec=%lld, tv_usec=%lld})"
-	       " = 3 (out [1 2 %d], left {tv_sec=%lld, tv_usec=%lld})\n",
+	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) tm_in.tv.tv_sec, (long long) tm_in.tv.tv_usec,
+	       (long long) tv_in.tv_sec,
+	       zero_extend_signed_to_ull(tv_in.tv_usec),
 	       fds[1],
-	       (long long) tm.tv.tv_sec, (long long) tm.tv.tv_usec);
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
 
 	/*
 	 * Now the crash case that trinity found, negative nfds
@@ -94,9 +146,9 @@
 	 */
 	FD_ZERO(set);
 	FD_SET(fds[0],set);
-	tm.tv.tv_sec = 0;
-	tm.tv.tv_usec = 123;
-	assert(syscall(TEST_SYSCALL_NR, FD_SETSIZE + 1, set, set + 1, NULL, &tm.tv) == 0);
+	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]);
 
diff --git a/tests/xstatfsx.c b/tests/xstatfsx.c
index d8288f1..cb524ff 100644
--- a/tests/xstatfsx.c
+++ b/tests/xstatfsx.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2015-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
@@ -62,9 +63,9 @@
 {
 	int fd = open(sample, O_RDONLY);
 	if (fd < 0)
-		perror_msg_and_fail("open: %s", sample);
+		perror_msg_and_skip("open: %s", sample);
 
-	STRUCT_STATFS *const b = tail_alloc(sizeof(*b));
+	TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STATFS, b);
 	long rc = SYSCALL_INVOKE(sample, fd, b, sizeof(*b));
 	if (rc)
 		perror_msg_and_skip(SYSCALL_NAME);
diff --git a/tests/xstatx.c b/tests/xstatx.c
index 0d5fca8..8758ef8 100644
--- a/tests/xstatx.c
+++ b/tests/xstatx.c
@@ -1,5 +1,6 @@
 /*
  * 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
@@ -47,26 +48,7 @@
 # include <unistd.h>
 # include <sys/sysmacros.h>
 
-static void
-print_time(const time_t t)
-{
-	if (!t) {
-		printf("0");
-		return;
-	}
-
-	struct tm *p = localtime(&t);
-
-	if (p) {
-		char buf[256];
-
-		strftime(buf, sizeof(buf), "%FT%T%z", p);
-
-		printf("%s", buf);
-	} else {
-		printf("%llu", zero_extend_signed_to_ull(t));
-	}
-}
+# include "statx.h"
 
 # ifndef STRUCT_STAT
 #  define STRUCT_STAT struct stat
@@ -130,6 +112,10 @@
 #  define OLD_STAT 0
 # endif
 
+# ifndef IS_STATX
+#  define IS_STATX 0
+# endif
+
 static void
 print_ftype(const unsigned int mode)
 {
@@ -151,6 +137,8 @@
 	printf("%#o", mode & ~S_IFMT);
 }
 
+# if !IS_STATX
+
 static void
 print_stat(const STRUCT_STAT *st)
 {
@@ -165,12 +153,12 @@
 	printf(", st_nlink=%llu", zero_extend_signed_to_ull(st->st_nlink));
 	printf(", st_uid=%llu", zero_extend_signed_to_ull(st->st_uid));
 	printf(", st_gid=%llu", zero_extend_signed_to_ull(st->st_gid));
-# if OLD_STAT
+#  if OLD_STAT
 	printf(", st_blksize=0, st_blocks=0");
-# else /* !OLD_STAT */
+#  else /* !OLD_STAT */
 	printf(", st_blksize=%llu", zero_extend_signed_to_ull(st->st_blksize));
 	printf(", st_blocks=%llu", zero_extend_signed_to_ull(st->st_blocks));
-# endif /* OLD_STAT */
+#  endif /* OLD_STAT */
 
 	switch (st->st_mode & S_IFMT) {
 	case S_IFCHR: case S_IFBLK:
@@ -182,27 +170,87 @@
 		printf(", st_size=%llu", zero_extend_signed_to_ull(st->st_size));
 	}
 
-	printf(", st_atime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_atime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_atime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_atime_nsec));
-# endif
-	printf(", st_mtime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_mtime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_mtime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_mtime_nsec));
-# endif
-	printf(", st_ctime=");
-	print_time(sign_extend_unsigned_to_ll(st->st_ctime));
-# if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
-	if (st->st_ctime_nsec)
-		printf(".%09llu", zero_extend_signed_to_ull(st->st_ctime_nsec));
-# endif
+#  if defined(HAVE_STRUCT_STAT_ST_MTIME_NSEC) && !OLD_STAT
+#   define TIME_NSEC(val)	zero_extend_signed_to_ull(val)
+#   define HAVE_NSEC		1
+#  else
+#   define TIME_NSEC(val)	0ULL
+#   define HAVE_NSEC		0
+#  endif
+
+#define PRINT_ST_TIME(field)						\
+	printf(", st_" #field "=%lld",					\
+	       sign_extend_unsigned_to_ll(st->st_ ## field));		\
+	print_time_t_nsec(sign_extend_unsigned_to_ll(st->st_ ## field),	\
+			  TIME_NSEC(st->st_ ## field ## _nsec), 1);	\
+	if (HAVE_NSEC)							\
+		printf(", st_" #field "_nsec=%llu",			\
+		       TIME_NSEC(st->st_ ## field ## _nsec))
+
+	PRINT_ST_TIME(atime);
+	PRINT_ST_TIME(mtime);
+	PRINT_ST_TIME(ctime);
 	printf("}");
 }
 
+# else /* !IS_STATX */
+
+static void
+print_stat(const STRUCT_STAT *st)
+{
+#  define PRINT_FIELD_U(field) \
+	printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+#  define PRINT_FIELD_U32_UID(field) \
+	if (st->field == (uint32_t) -1) \
+		printf(", %s=-1", #field); \
+	else \
+		printf(", %s=%llu", #field, (unsigned long long) st->field)
+
+#  define PRINT_FIELD_TIME(field)					\
+	printf(", %s={tv_sec=%lld, tv_nsec=%u}",			\
+	       #field, (long long) st->field.tv_sec,			\
+	       (unsigned) st->field.tv_nsec);				\
+	print_time_t_nsec(st->field.tv_sec,				\
+			  zero_extend_signed_to_ull(st->field.tv_nsec), 1);
+
+	printf("{stx_mask=");
+	printflags(statx_masks, st->stx_mask, "STATX_???");
+
+	PRINT_FIELD_U(stx_blksize);
+
+	printf(", stx_attributes=");
+	printflags(statx_attrs, st->stx_attributes, "STATX_ATTR_???");
+
+	PRINT_FIELD_U(stx_nlink);
+	PRINT_FIELD_U32_UID(stx_uid);
+	PRINT_FIELD_U32_UID(stx_gid);
+
+	printf(", stx_mode=");
+	print_ftype(st->stx_mode);
+	printf("|");
+	print_perms(st->stx_mode);
+
+	PRINT_FIELD_U(stx_ino);
+	PRINT_FIELD_U(stx_size);
+	PRINT_FIELD_U(stx_blocks);
+
+	printf(", stx_attributes_mask=");
+	printflags(statx_attrs, st->stx_attributes_mask, "STATX_ATTR_???");
+
+	PRINT_FIELD_TIME(stx_atime);
+	PRINT_FIELD_TIME(stx_btime);
+	PRINT_FIELD_TIME(stx_ctime);
+	PRINT_FIELD_TIME(stx_mtime);
+	PRINT_FIELD_U(stx_rdev_major);
+	PRINT_FIELD_U(stx_rdev_minor);
+	PRINT_FIELD_U(stx_dev_major);
+	PRINT_FIELD_U(stx_dev_minor);
+	printf("}");
+}
+
+# endif /* !IS_STATX */
+
 static int
 create_sample(const char *fname, const libc_off_t size)
 {
@@ -229,19 +277,19 @@
 int
 main(void)
 {
-# if !IS_FSTAT
+# if IS_FSTAT
+	skip_if_unavailable("/proc/self/fd/");
+# else
 	static const char full[] = "/dev/full";
 # endif
-	static const char sample[] = TEST_SYSCALL_STR ".sample";
-	STRUCT_STAT st[2];
+	static const char sample[] = "stat.sample";
+	TAIL_ALLOC_OBJECT_CONST_PTR(STRUCT_STAT, st);
 
 	int rc;
 
 	rc = create_sample(sample, SAMPLE_SIZE);
-	if (rc) {
-		(void) unlink(sample);
+	if (rc)
 		return rc;
-	}
 
 # if TEST_BOGUS_STRUCT_STAT
 	STRUCT_STAT *st_cut = tail_alloc(sizeof(long) * 4);
@@ -262,46 +310,71 @@
 # endif
 
 	if ((rc = TEST_SYSCALL_INVOKE(sample, st))) {
-# if OLD_STAT
-		if (errno != EOVERFLOW)
-# endif
-		{
+		if (errno != EOVERFLOW) {
+			rc = (errno == ENOSYS) ? 77 : 1;
 			perror(TEST_SYSCALL_STR);
-			(void) unlink(sample);
-			return 77;
+			return rc;
 		}
 	}
-	(void) unlink(sample);
+
+# if IS_STATX
+#  define ST_SIZE_FIELD stx_size
+# else
+#  define ST_SIZE_FIELD st_size
+# endif
 	if (!rc && zero_extend_signed_to_ull(SAMPLE_SIZE) !=
-	    zero_extend_signed_to_ull(st[0].st_size)) {
+	    zero_extend_signed_to_ull(st->ST_SIZE_FIELD)) {
 		fprintf(stderr, "Size mismatch: "
 				"requested size(%llu) != st_size(%llu)\n",
 			zero_extend_signed_to_ull(SAMPLE_SIZE),
-			zero_extend_signed_to_ull(st[0].st_size));
+			zero_extend_signed_to_ull(st->ST_SIZE_FIELD));
 		fprintf(stderr, "The most likely reason for this is incorrect"
 				" definition of %s.\n"
 				"Here is some diagnostics that might help:\n",
 			STRUCT_STAT_STR);
 
-#define LOG_STAT_OFFSETOF_SIZEOF(object, member)			\
+# define LOG_STAT_OFFSETOF_SIZEOF(object, member)			\
 		fprintf(stderr, "offsetof(%s, %s) = %zu"		\
 				", sizeof(%s) = %zu\n",			\
 				STRUCT_STAT_STR, #member,		\
 				offsetof(STRUCT_STAT, member),		\
 				#member, sizeof((object).member))
 
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_dev);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_ino);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_mode);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_nlink);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_uid);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_gid);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_rdev);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_size);
-# if !OLD_STAT
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blksize);
-		LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blocks);
-# endif /* !OLD_STAT */
+# if IS_STATX
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mask);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blksize);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_nlink);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_uid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_gid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mode);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ino);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_size);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_blocks);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_attributes_mask);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_atime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_btime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_ctime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_mtime);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_major);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_rdev_minor);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_major);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, stx_dev_minor);
+# else
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_dev);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_ino);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_mode);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_nlink);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_uid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_gid);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_rdev);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_size);
+#  if !OLD_STAT
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_blksize);
+		LOG_STAT_OFFSETOF_SIZEOF(*st, st_blocks);
+#  endif /* !OLD_STAT */
+
+# endif /* IS_STATX */
 
 		return 1;
 	}
@@ -313,6 +386,63 @@
 		print_stat(st);
 	PRINT_SYSCALL_FOOTER(rc);
 
+# if IS_STATX
+
+#  define INVOKE() \
+	rc = TEST_SYSCALL_INVOKE(sample, st); \
+	PRINT_SYSCALL_HEADER(sample); \
+	if (rc) \
+		printf("%p", st); \
+	else \
+		print_stat(st); \
+	PRINT_SYSCALL_FOOTER(rc)
+
+#  define SET_FLAGS_INVOKE(flags, flags_str) \
+	TEST_SYSCALL_STATX_FLAGS = flags; \
+	TEST_SYSCALL_STATX_FLAGS_STR = flags_str; \
+	INVOKE()
+
+#  define SET_MASK_INVOKE(mask, mask_str) \
+	TEST_SYSCALL_STATX_MASK = mask; \
+	TEST_SYSCALL_STATX_MASK_STR = mask_str; \
+	INVOKE()
+
+	unsigned old_flags = TEST_SYSCALL_STATX_FLAGS;
+	const char *old_flags_str = TEST_SYSCALL_STATX_FLAGS_STR;
+	unsigned old_mask = TEST_SYSCALL_STATX_MASK;
+	const char *old_mask_str = TEST_SYSCALL_STATX_MASK_STR;
+
+	SET_FLAGS_INVOKE(AT_SYMLINK_FOLLOW | 0xffff0000U,
+		"AT_STATX_SYNC_AS_STAT|AT_SYMLINK_FOLLOW|0xffff0000");
+
+	SET_FLAGS_INVOKE(AT_STATX_SYNC_TYPE,
+		"AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC");
+
+	SET_FLAGS_INVOKE(0xffffff,
+		"AT_STATX_FORCE_SYNC|AT_STATX_DONT_SYNC|AT_SYMLINK_NOFOLLOW|"
+		"AT_REMOVEDIR|AT_SYMLINK_FOLLOW|AT_NO_AUTOMOUNT|AT_EMPTY_PATH|"
+		"0xff80ff");
+
+	/* We're done playing with flags. */
+	TEST_SYSCALL_STATX_FLAGS = old_flags;
+	TEST_SYSCALL_STATX_FLAGS_STR = old_flags_str;
+
+	SET_MASK_INVOKE(0, "0");
+	SET_MASK_INVOKE(0xfffff000U, "0xfffff000 /* STATX_??? */");
+
+	SET_MASK_INVOKE(0xfffffffbU,
+		"STATX_TYPE|STATX_MODE|STATX_UID|STATX_GID|STATX_ATIME|"
+		"STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|"
+		"STATX_BTIME|0xfffff000");
+
+	SET_MASK_INVOKE(STATX_UID, "STATX_UID");
+
+	/* ...and with mask. */
+	TEST_SYSCALL_STATX_MASK = old_mask;
+	TEST_SYSCALL_STATX_MASK_STR = old_mask_str;
+
+# endif /* IS_STATX */
+
 	puts("+++ exited with 0 +++");
 	return 0;
 }
diff --git a/tests/xutimes.c b/tests/xutimes.c
new file mode 100644
index 0000000..5fd7161
--- /dev/null
+++ b/tests/xutimes.c
@@ -0,0 +1,149 @@
+/*
+ * Check decoding of utimes/osf_utimes 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.
+ */
+
+#ifndef TEST_SYSCALL_NR
+# error TEST_SYSCALL_NR must be defined
+#endif
+
+#ifndef TEST_SYSCALL_STR
+# error TEST_SYSCALL_STR must be defined
+#endif
+
+#ifndef TEST_STRUCT
+# error TEST_STRUCT must be defined
+#endif
+
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+static void
+print_tv(const TEST_STRUCT *const tv)
+{
+	printf("{tv_sec=%lld, tv_usec=%llu}",
+	       (long long) tv->tv_sec,
+	       zero_extend_signed_to_ull(tv->tv_usec));
+	print_time_t_usec(tv->tv_sec,
+			  zero_extend_signed_to_ull(tv->tv_usec), 1);
+}
+
+static const char *errstr;
+
+static long
+k_utimes(const kernel_ulong_t pathname, const kernel_ulong_t times)
+{
+	long rc = syscall(TEST_SYSCALL_NR, pathname, times);
+	errstr = sprintrc(rc);
+	return rc;
+}
+
+int
+main(void)
+{
+	static const char proto_fname[] = TEST_SYSCALL_STR "_sample";
+	static const char qname[] = "\"" TEST_SYSCALL_STR "_sample\"";
+
+	char *const fname = tail_memdup(proto_fname, sizeof(proto_fname));
+	const kernel_ulong_t kfname = (uintptr_t) fname;
+	TEST_STRUCT *const tv = tail_alloc(sizeof(*tv) * 2);
+
+	/* pathname */
+	k_utimes(0, 0);
+	printf("%s(NULL, NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+	k_utimes(kfname + sizeof(proto_fname) - 1, 0);
+	printf("%s(\"\", NULL) = %s\n", TEST_SYSCALL_STR, errstr);
+
+	k_utimes(kfname, 0);
+	printf("%s(%s, NULL) = %s\n", TEST_SYSCALL_STR, qname, errstr);
+
+	fname[sizeof(proto_fname) - 1] = '+';
+	k_utimes(kfname, 0);
+	fname[sizeof(proto_fname) - 1] = '\0';
+	printf("%s(%p, NULL) = %s\n", TEST_SYSCALL_STR, fname, errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimes(f8ill_ptr_to_kulong(fname), 0);
+		printf("%s(%#jx, NULL) = %s\n", TEST_SYSCALL_STR,
+		       (uintmax_t) f8ill_ptr_to_kulong(fname), errstr);
+	}
+
+	/* times */
+	k_utimes(kfname, (uintptr_t) (tv + 1));
+	printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+	       qname, tv + 1, errstr);
+
+	k_utimes(kfname, (uintptr_t) (tv + 2));
+	printf("%s(%s, %p) = %s\n", TEST_SYSCALL_STR,
+	       qname, tv + 2, errstr);
+
+	tv[0].tv_sec = 0xdeadbeefU;
+	tv[0].tv_usec = 0xfacefeedU;
+	tv[1].tv_sec = (time_t) 0xcafef00ddeadbeefLL;
+	tv[1].tv_usec = (long) 0xbadc0dedfacefeedLL;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_sec = 1492358607;
+	tv[0].tv_usec = 1000000;
+	tv[1].tv_sec = 1492356078;
+	tv[1].tv_usec = 1000001;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	tv[0].tv_usec = 345678;
+	tv[1].tv_usec = 456789;
+
+	k_utimes(kfname, (uintptr_t) tv);
+	printf("%s(%s, [", TEST_SYSCALL_STR, qname);
+	print_tv(&tv[0]);
+	printf(", ");
+	print_tv(&tv[1]);
+	printf("]) = %s\n", errstr);
+
+	if (F8ILL_KULONG_SUPPORTED) {
+		k_utimes(kfname, f8ill_ptr_to_kulong(tv));
+		printf("%s(%s, %#jx) = %s\n", TEST_SYSCALL_STR,
+		       qname, (uintmax_t) f8ill_ptr_to_kulong(tv), errstr);
+	}
+
+	puts("+++ exited with 0 +++");
+	return 0;
+}
diff --git a/time.c b/time.c
index 6c542f6..6cba48c 100644
--- a/time.c
+++ b/time.c
@@ -2,6 +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) 1996-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/times.c b/times.c
index b165a2b..1ba0168 100644
--- a/times.c
+++ b/times.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
  * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
  * Copyright (c) 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
diff --git a/ubi.c b/ubi.c
index b470655..65db02d 100644
--- a/ubi.c
+++ b/ubi.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2012 Mike Frysinger <vapier@gentoo.org>
+ * 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
diff --git a/unwind.c b/unwind.c
index 326d184..2451742 100644
--- a/unwind.c
+++ b/unwind.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2013 Luca Clementi <luca.clementi@gmail.com>
+ * Copyright (c) 2013-2017 The strace developers.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -41,7 +42,7 @@
 #define DPRINTF(F, A, ...) if (debug_flag) error_msg("[unwind(" A ")] " F, __VA_ARGS__)
 
 /*
- * Кeep a sorted array of cache entries,
+ * Keep a sorted array of cache entries,
  * so that we can binary search through it.
  */
 struct mmap_cache_t {
@@ -159,7 +160,7 @@
 		struct mmap_cache_t *entry;
 		unsigned long start_addr, end_addr, mmap_offset;
 		char exec_bit;
-		char binary_path[PATH_MAX];
+		char binary_path[sizeof(buffer)];
 
 		if (sscanf(buffer, "%lx-%lx %*c%*c%c%*c %lx %*x:%*x %*d %[^\n]",
 			   &start_addr, &end_addr, &exec_bit,
diff --git a/upeek.c b/upeek.c
index 01a12d3..22ee82d 100644
--- a/upeek.c
+++ b/upeek.c
@@ -6,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/userfaultfd.c b/userfaultfd.c
index aeeb3ea..6003588 100644
--- a/userfaultfd.c
+++ b/userfaultfd.c
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 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
diff --git a/util.c b/util.c
index a38f821..9b1c411 100644
--- a/util.c
+++ b/util.c
@@ -6,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -251,8 +252,7 @@
 	}
 	/* No hits -- print raw # instead. */
 	tprintf("%#" PRIx64, val);
-	if (dflt)
-		tprintf(" /* %s */", dflt);
+	tprints_comment(dflt);
 
 	va_end(args);
 
@@ -285,8 +285,7 @@
 	}
 
 	tprintf("%#" PRIx64, val);
-	if (dflt)
-		tprintf(" /* %s */", dflt);
+	tprints_comment(dflt);
 
 	return 0;
 }
@@ -355,7 +354,6 @@
 /*
  * Interpret `xlat' as an array of flags
  * print the entries whose bits are on in `flags'
- * return # of flags printed.
  */
 void
 addflags(const struct xlat *xlat, uint64_t flags)
@@ -439,8 +437,7 @@
 	} else {
 		if (flags) {
 			tprintf("%#" PRIx64, flags);
-			if (dflt)
-				tprintf(" /* %s */", dflt);
+			tprints_comment(dflt);
 		} else {
 			if (dflt)
 				tprints("0");
@@ -545,23 +542,62 @@
 }
 #endif /* !current_klongsize */
 
-const char *
-sprinttime(time_t t)
+/**
+ * Prints time to a (static internal) buffer and returns pointer to it.
+ *
+ * @param sec		Seconds since epoch.
+ * @param part_sec	Amount of second parts since the start of a second.
+ * @param max_part_sec	Maximum value of a valid part_sec.
+ * @param width		1 + floor(log10(max_part_sec)).
+ */
+static const char *
+sprinttime_ex(const long long sec, const unsigned long long part_sec,
+	      const unsigned int max_part_sec, const int width)
 {
-	struct tm *tmp;
-	static char buf[sizeof(int) * 3 * 6 + sizeof("+0000")];
+	static char buf[sizeof(int) * 3 * 6 + sizeof(part_sec) * 3
+			+ sizeof("+0000")];
 
-	if (t == 0) {
-		strcpy(buf, "0");
-		return buf;
+	if ((sec == 0 && part_sec == 0) || part_sec > max_part_sec)
+		return NULL;
+
+	time_t t = (time_t) sec;
+	struct tm *tmp = (sec == t) ? localtime(&t) : NULL;
+	if (!tmp)
+		return NULL;
+
+	size_t pos = strftime(buf, sizeof(buf), "%FT%T", tmp);
+	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;
 	}
-	tmp = localtime(&t);
-	if (tmp)
-		strftime(buf, sizeof(buf), "%FT%T%z", tmp);
-	else
-		snprintf(buf, sizeof(buf), "%lu", (unsigned long) t);
 
-	return buf;
+	return strftime(buf + pos, sizeof(buf) - pos, "%z", tmp) ? buf : NULL;
+}
+
+const char *
+sprinttime(long long sec)
+{
+	return sprinttime_ex(sec, 0, 0, 0);
+}
+
+const char *
+sprinttime_usec(long long sec, unsigned long long usec)
+{
+	return sprinttime_ex(sec, usec, 999999, 6);
+}
+
+const char *
+sprinttime_nsec(long long sec, unsigned long long nsec)
+{
+	return sprinttime_ex(sec, nsec, 999999999, 9);
 }
 
 enum sock_proto
@@ -1536,6 +1572,17 @@
 	return RVAL_DECODED;
 }
 
+/* Print abnormal high bits of a kernel_ulong_t value. */
+void
+print_abnormal_hi(const kernel_ulong_t val)
+{
+	if (current_klongsize > 4) {
+		const unsigned int hi = (unsigned int) ((uint64_t) val >> 32);
+		if (hi)
+			tprintf("%#x<<32|", hi);
+	}
+}
+
 #if defined _LARGEFILE64_SOURCE && defined HAVE_OPEN64
 # define open_file open64
 #else
diff --git a/utime.c b/utime.c
index 8126b35..6ab6d89 100644
--- a/utime.c
+++ b/utime.c
@@ -15,8 +15,11 @@
 	printpath(tcp, tcp->u_arg[0]);
 	tprints(", ");
 	if (!umove_or_printaddr(tcp, tcp->u_arg[1], &u)) {
-		tprintf("{actime=%s,", sprinttime(u.actime));
-		tprintf(" modtime=%s}", sprinttime(u.modtime));
+		tprintf("{actime=%lld", (long long) u.actime);
+		tprints_comment(sprinttime(u.actime));
+		tprintf(", modtime=%lld", (long long) u.modtime);
+		tprints_comment(sprinttime(u.modtime));
+		tprints("}");
 	}
 
 	return RVAL_DECODED;
diff --git a/utimes.c b/utimes.c
index 2908529..311ca2d 100644
--- a/utimes.c
+++ b/utimes.c
@@ -6,6 +6,7 @@
  * Copyright (c) 2006-2007 Ulrich Drepper <drepper@redhat.com>
  * Copyright (c) 2006 Bernhard Kaindl <bk@suse.de>
  * Copyright (c) 2006-2015 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2014-2017 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,7 +38,7 @@
 {
 	printpath(tcp, tcp->u_arg[0]);
 	tprints(", ");
-	print_timeval_pair(tcp, tcp->u_arg[1]);
+	print_timeval_utimes(tcp, tcp->u_arg[1]);
 
 	return RVAL_DECODED;
 }
@@ -47,7 +48,7 @@
 	print_dirfd(tcp, tcp->u_arg[0]);
 	printpath(tcp, tcp->u_arg[1]);
 	tprints(", ");
-	print_timeval_pair(tcp, tcp->u_arg[2]);
+	print_timeval_utimes(tcp, tcp->u_arg[2]);
 
 	return RVAL_DECODED;
 }
@@ -69,7 +70,7 @@
 {
 	printpath(tcp, tcp->u_arg[0]);
 	tprints(", ");
-	print_timeval32_pair(tcp, tcp->u_arg[1]);
+	print_timeval32_utimes(tcp, tcp->u_arg[1]);
 
 	return RVAL_DECODED;
 }
diff --git a/v4l2.c b/v4l2.c
index 637e878..ad29722 100644
--- a/v4l2.c
+++ b/v4l2.c
@@ -2,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,6 +31,7 @@
 #include "defs.h"
 
 #include DEF_MPERS_TYPE(struct_v4l2_buffer)
+#include DEF_MPERS_TYPE(struct_v4l2_clip)
 #include DEF_MPERS_TYPE(struct_v4l2_create_buffers)
 #include DEF_MPERS_TYPE(struct_v4l2_ext_control)
 #include DEF_MPERS_TYPE(struct_v4l2_ext_controls)
@@ -44,6 +46,7 @@
 #include <linux/videodev2.h>
 
 typedef struct v4l2_buffer struct_v4l2_buffer;
+typedef struct v4l2_clip struct_v4l2_clip;
 typedef struct v4l2_create_buffers struct_v4l2_create_buffers;
 typedef struct v4l2_ext_control struct_v4l2_ext_control;
 typedef struct v4l2_ext_controls struct_v4l2_ext_controls;
@@ -200,10 +203,22 @@
 
 #include "xlat/v4l2_fields.h"
 #include "xlat/v4l2_colorspaces.h"
+#include "xlat/v4l2_vbi_flags.h"
+#include "xlat/v4l2_sliced_flags.h"
 
-static void
-print_v4l2_format_fmt(const char *prefix, const struct_v4l2_format *f)
+static bool
+print_v4l2_clip(struct tcb *tcp, void *elem_buf, size_t elem_size, void* data)
 {
+	const struct_v4l2_clip *p = elem_buf;
+	tprintf(FMT_RECT, ARGS_RECT(p->c));
+	return true;
+}
+
+static bool
+print_v4l2_format_fmt(struct tcb *const tcp, const char *prefix,
+		      const struct_v4l2_format *f)
+{
+	bool ret = true;
 	switch (f->type) {
 	case V4L2_BUF_TYPE_VIDEO_CAPTURE:
 	case V4L2_BUF_TYPE_VIDEO_OUTPUT:
@@ -244,42 +259,97 @@
 				f->fmt.pix_mp.plane_fmt[i].sizeimage,
 				f->fmt.pix_mp.plane_fmt[i].bytesperline);
 		}
-		tprintf("], num_planes=%u}", (unsigned) f->fmt.pix_mp.num_planes);
+		tprintf("], num_planes=%u}",
+			(unsigned) f->fmt.pix_mp.num_planes);
 		break;
 	}
 #endif
-
-	/* TODO: Complete this switch statement */
-#if 0
-	case V4L2_BUF_TYPE_VIDEO_OVERLAY:
+	/* OUTPUT_OVERLAY since Linux v2.6.22-rc1~1118^2~179 */
 #if HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
 	case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
 #endif
+	case V4L2_BUF_TYPE_VIDEO_OVERLAY: {
+		struct_v4l2_clip clip;
 		tprints(prefix);
-		tprints("fmt.win={???}");
+		tprintf("fmt.win={left=%d, top=%d, width=%u, height=%u, field=",
+			ARGS_RECT(f->fmt.win.w));
+		printxval(v4l2_fields, f->fmt.win.field, "V4L2_FIELD_???");
+		tprintf(", chromakey=%#x, clips=", f->fmt.win.chromakey);
+		ret = print_array(tcp, ptr_to_kulong(f->fmt.win.clips),
+				  f->fmt.win.clipcount, &clip, sizeof(clip),
+				  umoven_or_printaddr, print_v4l2_clip, 0);
+		tprintf(", clipcount=%u, bitmap=", f->fmt.win.clipcount);
+		printaddr(ptr_to_kulong(f->fmt.win.bitmap));
+#if HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA
+		tprintf(", global_alpha=%#x", f->fmt.win.global_alpha);
+#endif
+		tprints("}");
 		break;
-
+	}
 	case V4L2_BUF_TYPE_VBI_CAPTURE:
 	case V4L2_BUF_TYPE_VBI_OUTPUT:
 		tprints(prefix);
-		tprints("fmt.vbi={???}");
+		tprintf("fmt.vbi={sampling_rate=%u, offset=%u, "
+			"samples_per_line=%u, sample_format=",
+			f->fmt.vbi.sampling_rate, f->fmt.vbi.offset,
+			f->fmt.vbi.samples_per_line);
+		print_pixelformat(f->fmt.vbi.sample_format);
+		tprintf(", start=[%u, %u], count=[%u, %u], ",
+			f->fmt.vbi.start[0], f->fmt.vbi.start[1],
+			f->fmt.vbi.count[0], f->fmt.vbi.count[1]);
+		tprints("flags=");
+		printxval(v4l2_vbi_flags, f->fmt.vbi.flags, "V4L2_VBI_???");
+		tprints("}");
 		break;
-
+	/* both since Linux v2.6.14-rc2~64 */
+#if HAVE_DECL_V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
 	case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
-	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
-		tprints(prefix);
-		tprints("fmt.sliced={???}");
-		break;
+	case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT: {
+		unsigned int i, j;
 
+		tprints(prefix);
+		tprints("fmt.sliced={service_set=");
+		printxval(v4l2_sliced_flags, f->fmt.sliced.service_set,
+			"V4L2_SLICED_???");
+		tprintf(", io_size=%u, service_lines=[",
+			f->fmt.sliced.io_size);
+		for (i = 0; i < ARRAY_SIZE(f->fmt.sliced.service_lines); i++) {
+			if (i > 0)
+				tprints(", ");
+			tprints("[");
+			for (j = 0;
+			     j < ARRAY_SIZE(f->fmt.sliced.service_lines[0]);
+			     j++) {
+				if (j > 0)
+					tprints(", ");
+				tprintf("%#x",
+					f->fmt.sliced.service_lines[i][j]);
+			}
+			tprints("]");
+		}
+		tprints("]}");
+		break;
+	}
+#endif
+	/* since Linux v4.4-rc1~118^2~14 */
+#if HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT
+	case V4L2_BUF_TYPE_SDR_OUTPUT:
+#endif
+	/* since Linux v3.15-rc1~85^2~213 */
 #if HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE
 	case V4L2_BUF_TYPE_SDR_CAPTURE:
-	case V4L2_BUF_TYPE_SDR_OUTPUT:
 		tprints(prefix);
-		tprints("fmt.sdr={???}");
+		tprints("fmt.sdr={pixelformat=");
+		print_pixelformat(f->fmt.sdr.pixelformat);
+#if HAVE_STRUCT_V4L2_SDR_FORMAT_BUFFERSIZE
+		tprintf(", buffersize=%u",
+			f->fmt.sdr.buffersize);
+#endif
+		tprints("}");
 		break;
 #endif
-#endif
 	}
+	return ret;
 }
 
 static int
@@ -296,11 +366,14 @@
 		printxval(v4l2_buf_types, f.type, "V4L2_BUF_TYPE_???");
 		if (is_get)
 			return 0;
-		print_v4l2_format_fmt(", ", &f);
+		if (!print_v4l2_format_fmt(tcp, ", ", &f)) {
+			tprints("}");
+			return RVAL_DECODED | 1;
+		}
 	} else {
 		if (!syserror(tcp) && !umove(tcp, arg, &f)) {
 			const char *delim = is_get ? ", " : " => ";
-			print_v4l2_format_fmt(delim, &f);
+			print_v4l2_format_fmt(tcp, delim, &f);
 		}
 		tprints("}");
 	}
@@ -557,6 +630,54 @@
 	return 1;
 }
 
+#include "xlat/v4l2_tuner_types.h"
+#include "xlat/v4l2_tuner_capabilities.h"
+#include "xlat/v4l2_tuner_rxsubchanses.h"
+#include "xlat/v4l2_tuner_audmodes.h"
+
+static int
+print_v4l2_tuner(struct tcb *const tcp, const kernel_ulong_t arg,
+		 const bool is_get)
+{
+	struct v4l2_tuner c;
+	if (entering(tcp)) {
+		tprints(", ");
+		if (umove_or_printaddr(tcp, arg, &c))
+			return RVAL_DECODED | 1;
+		tprintf("{index=%u", c.index);
+		if (is_get)
+			return 0;
+		tprints(", ");
+	} else {
+		if (syserror(tcp) || umove(tcp, arg, &c) < 0) {
+			tprints("}");
+			return 1;
+		}
+		tprints(is_get ? ", " : " => ");
+	}
+
+	tprints("name=");
+	print_quoted_string((const char *) c.name, sizeof(c.name),
+			    QUOTE_0_TERMINATED);
+	tprints(", type=");
+	printxval(v4l2_tuner_types, c.type, "V4L2_TUNER_TYPE_???");
+	tprints(", capability=");
+	printxval(v4l2_tuner_capabilities, c.capability,
+		  "V4L2_TUNER_CAP_???");
+	tprintf(", rangelow=%u, rangehigh=%u, rxsubchans=",
+		c.rangelow, c.rangehigh);
+	printxval(v4l2_tuner_rxsubchanses, c.rxsubchans,
+		  "V4L2_TUNER_SUB_???");
+	tprints(", audmode=");
+	printxval(v4l2_tuner_audmodes, c.audmode,
+		  "V4L2_TUNER_MODE_???");
+	tprintf(", signal=%d, afc=%d", c.signal, c.afc);
+
+	if (exiting(tcp))
+		tprints("}");
+	return 1;
+}
+
 #include "xlat/v4l2_control_types.h"
 #include "xlat/v4l2_control_flags.h"
 
@@ -822,7 +943,7 @@
 		tprints(", format={type=");
 		printxval(v4l2_buf_types, b.format.type,
 			  "V4L2_BUF_TYPE_???");
-		print_v4l2_format_fmt(", ",
+		print_v4l2_format_fmt(tcp, ", ",
 				      (struct_v4l2_format *) &b.format);
 		tprints("}}");
 		return 0;
@@ -899,6 +1020,10 @@
 	case VIDIOC_S_CTRL: /* RW */
 		return print_v4l2_control(tcp, arg, code == VIDIOC_G_CTRL);
 
+	case VIDIOC_G_TUNER: /* RW */
+	case VIDIOC_S_TUNER: /* RW */
+		return print_v4l2_tuner(tcp, arg, code == VIDIOC_G_TUNER);
+
 	case VIDIOC_QUERYCTRL: /* RW */
 		return print_v4l2_queryctrl(tcp, arg);
 
diff --git a/wait.c b/wait.c
index 58dba8e..fc51935 100644
--- a/wait.c
+++ b/wait.c
@@ -7,6 +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.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
diff --git a/xlat/Makemodule.am b/xlat/Makemodule.am
deleted file mode 100644
index 5ba716a..0000000
--- a/xlat/Makemodule.am
+++ /dev/null
@@ -1,638 +0,0 @@
-XLAT_INPUT_FILES = xlat/access_flags.in xlat/aclipc.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_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/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/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/iffflags.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.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/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.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/name_to_handle_at_flags.in xlat/netlink_flags.in xlat/netlink_protocols.in xlat/netlink_types.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/openmodessol.in xlat/packet_mreq_type.in xlat/perf_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/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/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/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/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/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_streaming_capabilities.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in 
-XLAT_HEADER_FILES = xlat/access_flags.h xlat/aclipc.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_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/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/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/iffflags.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.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/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.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/name_to_handle_at_flags.h xlat/netlink_flags.h xlat/netlink_protocols.h xlat/netlink_types.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/openmodessol.h xlat/packet_mreq_type.h xlat/perf_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/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/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/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/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/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_streaming_capabilities.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h 
-$(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/aclipc.h: $(top_srcdir)/xlat/aclipc.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/adjtimex_modes.h: $(top_srcdir)/xlat/adjtimex_modes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/adjtimex_state.h: $(top_srcdir)/xlat/adjtimex_state.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/adjtimex_status.h: $(top_srcdir)/xlat/adjtimex_status.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/advise.h: $(top_srcdir)/xlat/advise.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/af_packet_types.h: $(top_srcdir)/xlat/af_packet_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/archvals.h: $(top_srcdir)/xlat/archvals.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/arp_hardware_types.h: $(top_srcdir)/xlat/arp_hardware_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/at_flags.h: $(top_srcdir)/xlat/at_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/atomic_ops.h: $(top_srcdir)/xlat/atomic_ops.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/audit_arch.h: $(top_srcdir)/xlat/audit_arch.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/baud_options.h: $(top_srcdir)/xlat/baud_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/blkpg_ops.h: $(top_srcdir)/xlat/blkpg_ops.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bootflags1.h: $(top_srcdir)/xlat/bootflags1.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bootflags2.h: $(top_srcdir)/xlat/bootflags2.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bootflags3.h: $(top_srcdir)/xlat/bootflags3.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_attach_type.h: $(top_srcdir)/xlat/bpf_attach_type.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_class.h: $(top_srcdir)/xlat/bpf_class.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_commands.h: $(top_srcdir)/xlat/bpf_commands.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_map_types.h: $(top_srcdir)/xlat/bpf_map_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_map_update_elem_flags.h: $(top_srcdir)/xlat/bpf_map_update_elem_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_miscop.h: $(top_srcdir)/xlat/bpf_miscop.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_mode.h: $(top_srcdir)/xlat/bpf_mode.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_op_alu.h: $(top_srcdir)/xlat/bpf_op_alu.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_op_jmp.h: $(top_srcdir)/xlat/bpf_op_jmp.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_prog_types.h: $(top_srcdir)/xlat/bpf_prog_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_rval.h: $(top_srcdir)/xlat/bpf_rval.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_size.h: $(top_srcdir)/xlat/bpf_size.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bpf_src.h: $(top_srcdir)/xlat/bpf_src.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bsg_flags.h: $(top_srcdir)/xlat/bsg_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bsg_protocol.h: $(top_srcdir)/xlat/bsg_protocol.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bsg_subprotocol.h: $(top_srcdir)/xlat/bsg_subprotocol.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/bt_protocols.h: $(top_srcdir)/xlat/bt_protocols.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_balance_args.h: $(top_srcdir)/xlat/btrfs_balance_args.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_balance_ctl_cmds.h: $(top_srcdir)/xlat/btrfs_balance_ctl_cmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_balance_flags.h: $(top_srcdir)/xlat/btrfs_balance_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_balance_state.h: $(top_srcdir)/xlat/btrfs_balance_state.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_compress_types.h: $(top_srcdir)/xlat/btrfs_compress_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_defrag_flags.h: $(top_srcdir)/xlat/btrfs_defrag_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_dev_replace_cmds.h: $(top_srcdir)/xlat/btrfs_dev_replace_cmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_dev_replace_results.h: $(top_srcdir)/xlat/btrfs_dev_replace_results.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_dev_replace_state.h: $(top_srcdir)/xlat/btrfs_dev_replace_state.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_dev_stats_flags.h: $(top_srcdir)/xlat/btrfs_dev_stats_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_dev_stats_values.h: $(top_srcdir)/xlat/btrfs_dev_stats_values.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_features_compat.h: $(top_srcdir)/xlat/btrfs_features_compat.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_features_compat_ro.h: $(top_srcdir)/xlat/btrfs_features_compat_ro.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_features_incompat.h: $(top_srcdir)/xlat/btrfs_features_incompat.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_key_types.h: $(top_srcdir)/xlat/btrfs_key_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_qgroup_ctl_cmds.h: $(top_srcdir)/xlat/btrfs_qgroup_ctl_cmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_qgroup_inherit_flags.h: $(top_srcdir)/xlat/btrfs_qgroup_inherit_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_qgroup_limit_flags.h: $(top_srcdir)/xlat/btrfs_qgroup_limit_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_qgroup_status_flags.h: $(top_srcdir)/xlat/btrfs_qgroup_status_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_scrub_flags.h: $(top_srcdir)/xlat/btrfs_scrub_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_send_flags.h: $(top_srcdir)/xlat/btrfs_send_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_snap_flags_v2.h: $(top_srcdir)/xlat/btrfs_snap_flags_v2.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_space_info_flags.h: $(top_srcdir)/xlat/btrfs_space_info_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/btrfs_tree_objectids.h: $(top_srcdir)/xlat/btrfs_tree_objectids.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/cacheflush_scope.h: $(top_srcdir)/xlat/cacheflush_scope.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/cap.h: $(top_srcdir)/xlat/cap.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/cap_mask0.h: $(top_srcdir)/xlat/cap_mask0.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/cap_mask1.h: $(top_srcdir)/xlat/cap_mask1.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/cap_version.h: $(top_srcdir)/xlat/cap_version.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/clockflags.h: $(top_srcdir)/xlat/clockflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/clocknames.h: $(top_srcdir)/xlat/clocknames.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/clone_flags.h: $(top_srcdir)/xlat/clone_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/cpuclocknames.h: $(top_srcdir)/xlat/cpuclocknames.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/delete_module_flags.h: $(top_srcdir)/xlat/delete_module_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/dirent_types.h: $(top_srcdir)/xlat/dirent_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/dm_flags.h: $(top_srcdir)/xlat/dm_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/efd_flags.h: $(top_srcdir)/xlat/efd_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/epollctls.h: $(top_srcdir)/xlat/epollctls.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/epollevents.h: $(top_srcdir)/xlat/epollevents.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/epollflags.h: $(top_srcdir)/xlat/epollflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ethernet_protocols.h: $(top_srcdir)/xlat/ethernet_protocols.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_abs.h: $(top_srcdir)/xlat/evdev_abs.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_autorepeat.h: $(top_srcdir)/xlat/evdev_autorepeat.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_ev.h: $(top_srcdir)/xlat/evdev_ev.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_ff_status.h: $(top_srcdir)/xlat/evdev_ff_status.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_ff_types.h: $(top_srcdir)/xlat/evdev_ff_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_keycode.h: $(top_srcdir)/xlat/evdev_keycode.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_leds.h: $(top_srcdir)/xlat/evdev_leds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_misc.h: $(top_srcdir)/xlat/evdev_misc.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_mtslots.h: $(top_srcdir)/xlat/evdev_mtslots.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_prop.h: $(top_srcdir)/xlat/evdev_prop.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_relative_axes.h: $(top_srcdir)/xlat/evdev_relative_axes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_snd.h: $(top_srcdir)/xlat/evdev_snd.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_switch.h: $(top_srcdir)/xlat/evdev_switch.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/evdev_sync.h: $(top_srcdir)/xlat/evdev_sync.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/f_owner_types.h: $(top_srcdir)/xlat/f_owner_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/f_seals.h: $(top_srcdir)/xlat/f_seals.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/falloc_flags.h: $(top_srcdir)/xlat/falloc_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fan_classes.h: $(top_srcdir)/xlat/fan_classes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fan_event_flags.h: $(top_srcdir)/xlat/fan_event_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fan_init_flags.h: $(top_srcdir)/xlat/fan_init_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fan_mark_flags.h: $(top_srcdir)/xlat/fan_mark_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fcntl64cmds.h: $(top_srcdir)/xlat/fcntl64cmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fcntlcmds.h: $(top_srcdir)/xlat/fcntlcmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fdflags.h: $(top_srcdir)/xlat/fdflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fiemap_extent_flags.h: $(top_srcdir)/xlat/fiemap_extent_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fiemap_flags.h: $(top_srcdir)/xlat/fiemap_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/flockcmds.h: $(top_srcdir)/xlat/flockcmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/fsmagic.h: $(top_srcdir)/xlat/fsmagic.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/futexops.h: $(top_srcdir)/xlat/futexops.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/futexwakecmps.h: $(top_srcdir)/xlat/futexwakecmps.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/futexwakeops.h: $(top_srcdir)/xlat/futexwakeops.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/getrandom_flags.h: $(top_srcdir)/xlat/getrandom_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/getsockipoptions.h: $(top_srcdir)/xlat/getsockipoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/getsockipv6options.h: $(top_srcdir)/xlat/getsockipv6options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/hci_channels.h: $(top_srcdir)/xlat/hci_channels.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/hw_breakpoint_len.h: $(top_srcdir)/xlat/hw_breakpoint_len.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/hw_breakpoint_type.h: $(top_srcdir)/xlat/hw_breakpoint_type.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/icmpfilterflags.h: $(top_srcdir)/xlat/icmpfilterflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/if_dqblk_valid.h: $(top_srcdir)/xlat/if_dqblk_valid.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/if_dqinfo_flags.h: $(top_srcdir)/xlat/if_dqinfo_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/if_dqinfo_valid.h: $(top_srcdir)/xlat/if_dqinfo_valid.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/iffflags.h: $(top_srcdir)/xlat/iffflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/inet_protocols.h: $(top_srcdir)/xlat/inet_protocols.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/inotify_flags.h: $(top_srcdir)/xlat/inotify_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/inotify_init_flags.h: $(top_srcdir)/xlat/inotify_init_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ioctl_dirs.h: $(top_srcdir)/xlat/ioctl_dirs.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ioprio_class.h: $(top_srcdir)/xlat/ioprio_class.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ioprio_who.h: $(top_srcdir)/xlat/ioprio_who.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ip_cmsg_types.h: $(top_srcdir)/xlat/ip_cmsg_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ipc_msg_flags.h: $(top_srcdir)/xlat/ipc_msg_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ipccalls.h: $(top_srcdir)/xlat/ipccalls.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/itimer_which.h: $(top_srcdir)/xlat/itimer_which.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/kcmp_types.h: $(top_srcdir)/xlat/kcmp_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/kexec_arch_values.h: $(top_srcdir)/xlat/kexec_arch_values.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/kexec_file_load_flags.h: $(top_srcdir)/xlat/kexec_file_load_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/kexec_load_flags.h: $(top_srcdir)/xlat/kexec_load_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/key_perms.h: $(top_srcdir)/xlat/key_perms.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/key_reqkeys.h: $(top_srcdir)/xlat/key_reqkeys.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/key_spec.h: $(top_srcdir)/xlat/key_spec.in $(top_srcdir)/xlat/gen.sh
-	$(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/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
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/loop_crypt_type_options.h: $(top_srcdir)/xlat/loop_crypt_type_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/loop_flags_options.h: $(top_srcdir)/xlat/loop_flags_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/madvise_cmds.h: $(top_srcdir)/xlat/madvise_cmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/membarrier_cmds.h: $(top_srcdir)/xlat/membarrier_cmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/memfd_create_flags.h: $(top_srcdir)/xlat/memfd_create_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mempolicyflags.h: $(top_srcdir)/xlat/mempolicyflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mlock_flags.h: $(top_srcdir)/xlat/mlock_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mlockall_flags.h: $(top_srcdir)/xlat/mlockall_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mmap_flags.h: $(top_srcdir)/xlat/mmap_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mmap_prot.h: $(top_srcdir)/xlat/mmap_prot.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/modem_flags.h: $(top_srcdir)/xlat/modem_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/modetypes.h: $(top_srcdir)/xlat/modetypes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/module_init_flags.h: $(top_srcdir)/xlat/module_init_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mount_flags.h: $(top_srcdir)/xlat/mount_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/move_pages_flags.h: $(top_srcdir)/xlat/move_pages_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mq_attr_flags.h: $(top_srcdir)/xlat/mq_attr_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mremap_flags.h: $(top_srcdir)/xlat/mremap_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/msg_flags.h: $(top_srcdir)/xlat/msg_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/msgctl_flags.h: $(top_srcdir)/xlat/msgctl_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mtd_file_mode_options.h: $(top_srcdir)/xlat/mtd_file_mode_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mtd_flags_options.h: $(top_srcdir)/xlat/mtd_flags_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mtd_mode_options.h: $(top_srcdir)/xlat/mtd_mode_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mtd_nandecc_options.h: $(top_srcdir)/xlat/mtd_nandecc_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mtd_otp_options.h: $(top_srcdir)/xlat/mtd_otp_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/mtd_type_options.h: $(top_srcdir)/xlat/mtd_type_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/name_to_handle_at_flags.h: $(top_srcdir)/xlat/name_to_handle_at_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/netlink_flags.h: $(top_srcdir)/xlat/netlink_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/netlink_protocols.h: $(top_srcdir)/xlat/netlink_protocols.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/netlink_types.h: $(top_srcdir)/xlat/netlink_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/notifyflags.h: $(top_srcdir)/xlat/notifyflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/nt_descriptor_types.h: $(top_srcdir)/xlat/nt_descriptor_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/open_access_modes.h: $(top_srcdir)/xlat/open_access_modes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/open_mode_flags.h: $(top_srcdir)/xlat/open_mode_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/openmodessol.h: $(top_srcdir)/xlat/openmodessol.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/packet_mreq_type.h: $(top_srcdir)/xlat/packet_mreq_type.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_attr_size.h: $(top_srcdir)/xlat/perf_attr_size.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_branch_sample_type.h: $(top_srcdir)/xlat/perf_branch_sample_type.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_event_open_flags.h: $(top_srcdir)/xlat/perf_event_open_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_event_read_format.h: $(top_srcdir)/xlat/perf_event_read_format.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_event_sample_format.h: $(top_srcdir)/xlat/perf_event_sample_format.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_hw_cache_id.h: $(top_srcdir)/xlat/perf_hw_cache_id.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_hw_cache_op_id.h: $(top_srcdir)/xlat/perf_hw_cache_op_id.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_hw_cache_op_result_id.h: $(top_srcdir)/xlat/perf_hw_cache_op_result_id.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_hw_id.h: $(top_srcdir)/xlat/perf_hw_id.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_sw_ids.h: $(top_srcdir)/xlat/perf_sw_ids.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/perf_type_id.h: $(top_srcdir)/xlat/perf_type_id.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/personality_flags.h: $(top_srcdir)/xlat/personality_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/personality_types.h: $(top_srcdir)/xlat/personality_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pkey_access.h: $(top_srcdir)/xlat/pkey_access.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/policies.h: $(top_srcdir)/xlat/policies.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pollflags.h: $(top_srcdir)/xlat/pollflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_cap_ambient.h: $(top_srcdir)/xlat/pr_cap_ambient.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_dumpable.h: $(top_srcdir)/xlat/pr_dumpable.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_fp_mode.h: $(top_srcdir)/xlat/pr_fp_mode.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_mce_kill.h: $(top_srcdir)/xlat/pr_mce_kill.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_mce_kill_policy.h: $(top_srcdir)/xlat/pr_mce_kill_policy.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_set_mm.h: $(top_srcdir)/xlat/pr_set_mm.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_tsc.h: $(top_srcdir)/xlat/pr_tsc.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/pr_unalign_flags.h: $(top_srcdir)/xlat/pr_unalign_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/prctl_options.h: $(top_srcdir)/xlat/prctl_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/priorities.h: $(top_srcdir)/xlat/priorities.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ptp_flags_options.h: $(top_srcdir)/xlat/ptp_flags_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ptrace_cmds.h: $(top_srcdir)/xlat/ptrace_cmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ptrace_events.h: $(top_srcdir)/xlat/ptrace_events.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ptrace_peeksiginfo_flags.h: $(top_srcdir)/xlat/ptrace_peeksiginfo_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ptrace_setoptions_flags.h: $(top_srcdir)/xlat/ptrace_setoptions_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/quota_formats.h: $(top_srcdir)/xlat/quota_formats.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/quotacmds.h: $(top_srcdir)/xlat/quotacmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/quotatypes.h: $(top_srcdir)/xlat/quotatypes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/rename_flags.h: $(top_srcdir)/xlat/rename_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/resource_flags.h: $(top_srcdir)/xlat/resource_flags.in $(top_srcdir)/xlat/gen.sh
-	$(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/rwf_flags.h: $(top_srcdir)/xlat/rwf_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sa_handler_values.h: $(top_srcdir)/xlat/sa_handler_values.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sched_flags.h: $(top_srcdir)/xlat/sched_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/schedulers.h: $(top_srcdir)/xlat/schedulers.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/scmvals.h: $(top_srcdir)/xlat/scmvals.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/scsi_sg_commands.h: $(top_srcdir)/xlat/scsi_sg_commands.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/secbits.h: $(top_srcdir)/xlat/secbits.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/seccomp_filter_flags.h: $(top_srcdir)/xlat/seccomp_filter_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/seccomp_mode.h: $(top_srcdir)/xlat/seccomp_mode.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/seccomp_ops.h: $(top_srcdir)/xlat/seccomp_ops.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/seccomp_ret_action.h: $(top_srcdir)/xlat/seccomp_ret_action.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/semctl_flags.h: $(top_srcdir)/xlat/semctl_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/semop_flags.h: $(top_srcdir)/xlat/semop_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/setns_types.h: $(top_srcdir)/xlat/setns_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/setsockipoptions.h: $(top_srcdir)/xlat/setsockipoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/setsockipv6options.h: $(top_srcdir)/xlat/setsockipv6options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sfd_flags.h: $(top_srcdir)/xlat/sfd_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sg_io_dxfer_direction.h: $(top_srcdir)/xlat/sg_io_dxfer_direction.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sg_io_flags.h: $(top_srcdir)/xlat/sg_io_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sg_io_info.h: $(top_srcdir)/xlat/sg_io_info.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sg_scsi_reset.h: $(top_srcdir)/xlat/sg_scsi_reset.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/shm_flags.h: $(top_srcdir)/xlat/shm_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/shm_resource_flags.h: $(top_srcdir)/xlat/shm_resource_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/shmctl_flags.h: $(top_srcdir)/xlat/shmctl_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/shutdown_modes.h: $(top_srcdir)/xlat/shutdown_modes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigact_flags.h: $(top_srcdir)/xlat/sigact_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigaltstack_flags.h: $(top_srcdir)/xlat/sigaltstack_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigbus_codes.h: $(top_srcdir)/xlat/sigbus_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigchld_codes.h: $(top_srcdir)/xlat/sigchld_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigemt_codes.h: $(top_srcdir)/xlat/sigemt_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigev_value.h: $(top_srcdir)/xlat/sigev_value.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigfpe_codes.h: $(top_srcdir)/xlat/sigfpe_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigill_codes.h: $(top_srcdir)/xlat/sigill_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/siginfo_codes.h: $(top_srcdir)/xlat/siginfo_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigpoll_codes.h: $(top_srcdir)/xlat/sigpoll_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigprocmaskcmds.h: $(top_srcdir)/xlat/sigprocmaskcmds.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigprof_codes.h: $(top_srcdir)/xlat/sigprof_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigsegv_codes.h: $(top_srcdir)/xlat/sigsegv_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigsys_codes.h: $(top_srcdir)/xlat/sigsys_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sigtrap_codes.h: $(top_srcdir)/xlat/sigtrap_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sock_type_flags.h: $(top_srcdir)/xlat/sock_type_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/socketcalls.h: $(top_srcdir)/xlat/socketcalls.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/socketlayers.h: $(top_srcdir)/xlat/socketlayers.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sockipoptions.h: $(top_srcdir)/xlat/sockipoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sockipv6options.h: $(top_srcdir)/xlat/sockipv6options.in $(top_srcdir)/xlat/gen.sh
-	$(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/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
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sockrawoptions.h: $(top_srcdir)/xlat/sockrawoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/socksctpoptions.h: $(top_srcdir)/xlat/socksctpoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/socktcpoptions.h: $(top_srcdir)/xlat/socktcpoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/socktypes.h: $(top_srcdir)/xlat/socktypes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/splice_flags.h: $(top_srcdir)/xlat/splice_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sram_alloc_flags.h: $(top_srcdir)/xlat/sram_alloc_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/statfs_flags.h: $(top_srcdir)/xlat/statfs_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/swap_flags.h: $(top_srcdir)/xlat/swap_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sync_file_range_flags.h: $(top_srcdir)/xlat/sync_file_range_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_kern.h: $(top_srcdir)/xlat/sysctl_kern.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net.h: $(top_srcdir)/xlat/sysctl_net.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net_core.h: $(top_srcdir)/xlat/sysctl_net_core.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net_ipv4.h: $(top_srcdir)/xlat/sysctl_net_ipv4.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net_ipv4_conf.h: $(top_srcdir)/xlat/sysctl_net_ipv4_conf.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net_ipv4_route.h: $(top_srcdir)/xlat/sysctl_net_ipv4_route.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net_ipv6.h: $(top_srcdir)/xlat/sysctl_net_ipv6.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net_ipv6_route.h: $(top_srcdir)/xlat/sysctl_net_ipv6_route.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_net_unix.h: $(top_srcdir)/xlat/sysctl_net_unix.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_root.h: $(top_srcdir)/xlat/sysctl_root.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysctl_vm.h: $(top_srcdir)/xlat/sysctl_vm.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/syslog_action_type.h: $(top_srcdir)/xlat/syslog_action_type.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sysmips_operations.h: $(top_srcdir)/xlat/sysmips_operations.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/tcflsh_options.h: $(top_srcdir)/xlat/tcflsh_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/tcxonc_options.h: $(top_srcdir)/xlat/tcxonc_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/timerfdflags.h: $(top_srcdir)/xlat/timerfdflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ubi_volume_props.h: $(top_srcdir)/xlat/ubi_volume_props.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/ubi_volume_types.h: $(top_srcdir)/xlat/ubi_volume_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/uffd_api_flags.h: $(top_srcdir)/xlat/uffd_api_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/uffd_copy_flags.h: $(top_srcdir)/xlat/uffd_copy_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/uffd_flags.h: $(top_srcdir)/xlat/uffd_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/uffd_register_ioctl_flags.h: $(top_srcdir)/xlat/uffd_register_ioctl_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/uffd_register_mode_flags.h: $(top_srcdir)/xlat/uffd_register_mode_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/uffd_zeropage_flags.h: $(top_srcdir)/xlat/uffd_zeropage_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/umount_flags.h: $(top_srcdir)/xlat/umount_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/unshare_flags.h: $(top_srcdir)/xlat/unshare_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/usagewho.h: $(top_srcdir)/xlat/usagewho.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_buf_flags.h: $(top_srcdir)/xlat/v4l2_buf_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_buf_types.h: $(top_srcdir)/xlat/v4l2_buf_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_capture_modes.h: $(top_srcdir)/xlat/v4l2_capture_modes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_colorspaces.h: $(top_srcdir)/xlat/v4l2_colorspaces.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_control_classes.h: $(top_srcdir)/xlat/v4l2_control_classes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_control_flags.h: $(top_srcdir)/xlat/v4l2_control_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_control_ids.h: $(top_srcdir)/xlat/v4l2_control_ids.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_control_types.h: $(top_srcdir)/xlat/v4l2_control_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_device_capabilities_flags.h: $(top_srcdir)/xlat/v4l2_device_capabilities_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_fields.h: $(top_srcdir)/xlat/v4l2_fields.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_format_description_flags.h: $(top_srcdir)/xlat/v4l2_format_description_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_frameinterval_types.h: $(top_srcdir)/xlat/v4l2_frameinterval_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_framesize_types.h: $(top_srcdir)/xlat/v4l2_framesize_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_input_types.h: $(top_srcdir)/xlat/v4l2_input_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_memories.h: $(top_srcdir)/xlat/v4l2_memories.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/v4l2_streaming_capabilities.h: $(top_srcdir)/xlat/v4l2_streaming_capabilities.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/wait4_options.h: $(top_srcdir)/xlat/wait4_options.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/waitid_types.h: $(top_srcdir)/xlat/waitid_types.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/whence_codes.h: $(top_srcdir)/xlat/whence_codes.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/xattrflags.h: $(top_srcdir)/xlat/xattrflags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/xfs_dqblk_flags.h: $(top_srcdir)/xlat/xfs_dqblk_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/xfs_quota_flags.h: $(top_srcdir)/xlat/xfs_quota_flags.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
diff --git a/xlat/aclipc.h b/xlat/aclipc.h
deleted file mode 100644
index 6dabb83..0000000
--- a/xlat/aclipc.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Generated by ./xlat/gen.sh from ./xlat/aclipc.in; do not edit. */
-
-#ifdef IN_MPERS
-
-# error static const struct xlat aclipc in mpers mode
-
-#else
-
-static
-const struct xlat aclipc[] = {
-#if defined(IPC_SHM) || (defined(HAVE_DECL_IPC_SHM) && HAVE_DECL_IPC_SHM)
-  XLAT(IPC_SHM),
-#endif
-#if defined(IPC_SEM) || (defined(HAVE_DECL_IPC_SEM) && HAVE_DECL_IPC_SEM)
-  XLAT(IPC_SEM),
-#endif
-#if defined(IPC_MSG) || (defined(HAVE_DECL_IPC_MSG) && HAVE_DECL_IPC_MSG)
-  XLAT(IPC_MSG),
-#endif
- XLAT_END
-};
-
-#endif /* !IN_MPERS */
diff --git a/xlat/aclipc.in b/xlat/aclipc.in
deleted file mode 100644
index fd4d61c..0000000
--- a/xlat/aclipc.in
+++ /dev/null
@@ -1,3 +0,0 @@
-IPC_SHM
-IPC_SEM
-IPC_MSG
diff --git a/xlat/addrfams.h b/xlat/addrfams.h
index fc437b2..5dc4118 100644
--- a/xlat/addrfams.h
+++ b/xlat/addrfams.h
@@ -128,6 +128,9 @@
 #if !(defined(AF_QIPCRTR) || (defined(HAVE_DECL_AF_QIPCRTR) && HAVE_DECL_AF_QIPCRTR))
 # define AF_QIPCRTR 42
 #endif
+#if !(defined(AF_SMC) || (defined(HAVE_DECL_AF_SMC) && HAVE_DECL_AF_SMC))
+# define AF_SMC 43
+#endif
 
 #ifndef IN_MPERS
 
@@ -175,6 +178,7 @@
  XLAT(AF_VSOCK),
  XLAT(AF_KCM),
  XLAT(AF_QIPCRTR),
+ XLAT(AF_SMC),
  XLAT_END
 };
 
diff --git a/xlat/addrfams.in b/xlat/addrfams.in
index 315667e..427d993 100644
--- a/xlat/addrfams.in
+++ b/xlat/addrfams.in
@@ -41,3 +41,4 @@
 AF_VSOCK	40
 AF_KCM		41
 AF_QIPCRTR	42
+AF_SMC		43
diff --git a/xlat/at_statx_sync_types.h b/xlat/at_statx_sync_types.h
new file mode 100644
index 0000000..4babb01
--- /dev/null
+++ b/xlat/at_statx_sync_types.h
@@ -0,0 +1,31 @@
+/* Generated by ./xlat/gen.sh from ./xlat/at_statx_sync_types.in; do not edit. */
+#if !(defined(AT_STATX_SYNC_AS_STAT) || (defined(HAVE_DECL_AT_STATX_SYNC_AS_STAT) && HAVE_DECL_AT_STATX_SYNC_AS_STAT))
+# define AT_STATX_SYNC_AS_STAT 0x0000
+#endif
+#if !(defined(AT_STATX_FORCE_SYNC) || (defined(HAVE_DECL_AT_STATX_FORCE_SYNC) && HAVE_DECL_AT_STATX_FORCE_SYNC))
+# define AT_STATX_FORCE_SYNC 0x2000
+#endif
+#if !(defined(AT_STATX_DONT_SYNC) || (defined(HAVE_DECL_AT_STATX_DONT_SYNC) && HAVE_DECL_AT_STATX_DONT_SYNC))
+# define AT_STATX_DONT_SYNC 0x4000
+#endif
+#if !(defined(AT_STATX_SYNC_TYPE) || (defined(HAVE_DECL_AT_STATX_SYNC_TYPE) && HAVE_DECL_AT_STATX_SYNC_TYPE))
+# define AT_STATX_SYNC_TYPE 0x6000
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat at_statx_sync_types in mpers mode
+
+#else
+
+static
+const struct xlat at_statx_sync_types[] = {
+ XLAT(AT_STATX_SYNC_AS_STAT),
+ XLAT(AT_STATX_FORCE_SYNC),
+ XLAT(AT_STATX_DONT_SYNC),
+
+ XLAT(AT_STATX_SYNC_TYPE),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/at_statx_sync_types.in b/xlat/at_statx_sync_types.in
new file mode 100644
index 0000000..5d0ed49
--- /dev/null
+++ b/xlat/at_statx_sync_types.in
@@ -0,0 +1,5 @@
+AT_STATX_SYNC_AS_STAT	0x0000
+AT_STATX_FORCE_SYNC	0x2000
+AT_STATX_DONT_SYNC	0x4000
+
+AT_STATX_SYNC_TYPE	0x6000
diff --git a/xlat/bpf_attach_flags.h b/xlat/bpf_attach_flags.h
new file mode 100644
index 0000000..3f9fe9d
--- /dev/null
+++ b/xlat/bpf_attach_flags.h
@@ -0,0 +1,18 @@
+/* Generated by ./xlat/gen.sh from ./xlat/bpf_attach_flags.in; do not edit. */
+#if !(defined(BPF_F_ALLOW_OVERRIDE) || (defined(HAVE_DECL_BPF_F_ALLOW_OVERRIDE) && HAVE_DECL_BPF_F_ALLOW_OVERRIDE))
+# define BPF_F_ALLOW_OVERRIDE 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat bpf_attach_flags in mpers mode
+
+#else
+
+static
+const struct xlat bpf_attach_flags[] = {
+ XLAT(BPF_F_ALLOW_OVERRIDE),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/bpf_attach_flags.in b/xlat/bpf_attach_flags.in
new file mode 100644
index 0000000..35638fd
--- /dev/null
+++ b/xlat/bpf_attach_flags.in
@@ -0,0 +1 @@
+BPF_F_ALLOW_OVERRIDE	1
diff --git a/xlat/bpf_map_types.h b/xlat/bpf_map_types.h
index 2544c89..292d9a5 100644
--- a/xlat/bpf_map_types.h
+++ b/xlat/bpf_map_types.h
@@ -35,6 +35,12 @@
 #if !(defined(BPF_MAP_TYPE_LPM_TRIE) || (defined(HAVE_DECL_BPF_MAP_TYPE_LPM_TRIE) && HAVE_DECL_BPF_MAP_TYPE_LPM_TRIE))
 # define BPF_MAP_TYPE_LPM_TRIE 11
 #endif
+#if !(defined(BPF_MAP_TYPE_ARRAY_OF_MAPS) || (defined(HAVE_DECL_BPF_MAP_TYPE_ARRAY_OF_MAPS) && HAVE_DECL_BPF_MAP_TYPE_ARRAY_OF_MAPS))
+# define BPF_MAP_TYPE_ARRAY_OF_MAPS 12
+#endif
+#if !(defined(BPF_MAP_TYPE_HASH_OF_MAPS) || (defined(HAVE_DECL_BPF_MAP_TYPE_HASH_OF_MAPS) && HAVE_DECL_BPF_MAP_TYPE_HASH_OF_MAPS))
+# define BPF_MAP_TYPE_HASH_OF_MAPS 13
+#endif
 
 #ifdef IN_MPERS
 
@@ -56,6 +62,8 @@
  XLAT(BPF_MAP_TYPE_LRU_HASH),
  XLAT(BPF_MAP_TYPE_LRU_PERCPU_HASH),
  XLAT(BPF_MAP_TYPE_LPM_TRIE),
+ XLAT(BPF_MAP_TYPE_ARRAY_OF_MAPS),
+ XLAT(BPF_MAP_TYPE_HASH_OF_MAPS),
  XLAT_END
 };
 
diff --git a/xlat/bpf_map_types.in b/xlat/bpf_map_types.in
index e3222d3..583c016 100644
--- a/xlat/bpf_map_types.in
+++ b/xlat/bpf_map_types.in
@@ -10,3 +10,5 @@
 BPF_MAP_TYPE_LRU_HASH 9
 BPF_MAP_TYPE_LRU_PERCPU_HASH 10
 BPF_MAP_TYPE_LPM_TRIE 11
+BPF_MAP_TYPE_ARRAY_OF_MAPS 12
+BPF_MAP_TYPE_HASH_OF_MAPS 13
diff --git a/xlat/clocknames.h b/xlat/clocknames.h
index 71de9da..da082e8 100644
--- a/xlat/clocknames.h
+++ b/xlat/clocknames.h
@@ -36,13 +36,8 @@
 # define CLOCK_TAI 11
 #endif
 
-#ifdef IN_MPERS
+#ifndef IN_MPERS
 
-# error static const struct xlat clocknames in mpers mode
-
-#else
-
-static
 const struct xlat clocknames[] = {
  XLAT(CLOCK_REALTIME),
  XLAT(CLOCK_MONOTONIC),
diff --git a/xlat/gen.sh b/xlat/gen.sh
index d3dec2a..06c1b17 100755
--- a/xlat/gen.sh
+++ b/xlat/gen.sh
@@ -2,6 +2,7 @@
 #
 # Copyright (c) 2014-2015 Mike Frysinger <vapier@gentoo.org>
 # Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2014-2017 The strace developers.
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
diff --git a/xlat/netlink_protocols.h b/xlat/netlink_protocols.h
index 0e1133f..fb86233 100644
--- a/xlat/netlink_protocols.h
+++ b/xlat/netlink_protocols.h
@@ -63,13 +63,8 @@
 # define NETLINK_CRYPTO 21
 #endif
 
-#ifdef IN_MPERS
+#ifndef IN_MPERS
 
-# error static const struct xlat netlink_protocols in mpers mode
-
-#else
-
-static
 const struct xlat netlink_protocols[] = {
  XLAT(NETLINK_ROUTE),
  XLAT(NETLINK_UNUSED),
diff --git a/xlat/openmodessol.h b/xlat/openmodessol.h
deleted file mode 100644
index fb6a553..0000000
--- a/xlat/openmodessol.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Generated by ./xlat/gen.sh from ./xlat/openmodessol.in; do not edit. */
-
-#ifdef IN_MPERS
-
-# error static const struct xlat openmodessol in mpers mode
-
-#else
-
-static
-const struct xlat openmodessol[] = {
-{ 0,		"O_RDWR"	},
-{ 1,		"O_RDONLY"	},
-{ 2,		"O_WRONLY"	},
-{ 0x80,		"O_NONBLOCK"	},
-{ 8,		"O_APPEND"	},
-{ 0x100,	"O_CREAT"	},
-{ 0x200,	"O_TRUNC"	},
-{ 0x400,	"O_EXCL"	},
-{ 0x800,	"O_NOCTTY"	},
-{ 0x10,		"O_SYNC"	},
-{ 0x40,		"O_DSYNC"	},
-{ 0x8000,	"O_RSYNC"	},
-{ 4,		"O_NDELAY"	},
-{ 0x1000,	"O_PRIV"	},
- XLAT_END
-};
-
-#endif /* !IN_MPERS */
diff --git a/xlat/openmodessol.in b/xlat/openmodessol.in
deleted file mode 100644
index e42af6f..0000000
--- a/xlat/openmodessol.in
+++ /dev/null
@@ -1,14 +0,0 @@
-	{ 0,		"O_RDWR"	},
-	{ 1,		"O_RDONLY"	},
-	{ 2,		"O_WRONLY"	},
-	{ 0x80,		"O_NONBLOCK"	},
-	{ 8,		"O_APPEND"	},
-	{ 0x100,	"O_CREAT"	},
-	{ 0x200,	"O_TRUNC"	},
-	{ 0x400,	"O_EXCL"	},
-	{ 0x800,	"O_NOCTTY"	},
-	{ 0x10,		"O_SYNC"	},
-	{ 0x40,		"O_DSYNC"	},
-	{ 0x8000,	"O_RSYNC"	},
-	{ 4,		"O_NDELAY"	},
-	{ 0x1000,	"O_PRIV"	},
diff --git a/xlat/setns_types.h b/xlat/setns_types.h
index 8ed5afa..a91171d 100644
--- a/xlat/setns_types.h
+++ b/xlat/setns_types.h
@@ -21,13 +21,8 @@
 # define CLONE_NEWNET 0x40000000
 #endif
 
-#ifdef IN_MPERS
+#ifndef IN_MPERS
 
-# error static const struct xlat setns_types in mpers mode
-
-#else
-
-static
 const struct xlat setns_types[] = {
  XLAT(0),
  XLAT(CLONE_NEWNS),
diff --git a/xlat/socktcpoptions.h b/xlat/socktcpoptions.h
index 7dd5923..3bc6f53 100644
--- a/xlat/socktcpoptions.h
+++ b/xlat/socktcpoptions.h
@@ -95,6 +95,9 @@
 #if defined(TCP_REPAIR_WINDOW) || (defined(HAVE_DECL_TCP_REPAIR_WINDOW) && HAVE_DECL_TCP_REPAIR_WINDOW)
   XLAT(TCP_REPAIR_WINDOW),
 #endif
+#if defined(TCP_FASTOPEN_CONNECT) || (defined(HAVE_DECL_TCP_FASTOPEN_CONNECT) && HAVE_DECL_TCP_FASTOPEN_CONNECT)
+  XLAT(TCP_FASTOPEN_CONNECT),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/socktcpoptions.in b/xlat/socktcpoptions.in
index 89bbd7e..6de28f3 100644
--- a/xlat/socktcpoptions.in
+++ b/xlat/socktcpoptions.in
@@ -27,3 +27,4 @@
 TCP_SAVE_SYN
 TCP_SAVED_SYN
 TCP_REPAIR_WINDOW
+TCP_FASTOPEN_CONNECT
diff --git a/xlat/statx_attrs.h b/xlat/statx_attrs.h
new file mode 100644
index 0000000..20370af
--- /dev/null
+++ b/xlat/statx_attrs.h
@@ -0,0 +1,38 @@
+/* Generated by ./xlat/gen.sh from ./xlat/statx_attrs.in; do not edit. */
+#if !(defined(STATX_ATTR_COMPRESSED) || (defined(HAVE_DECL_STATX_ATTR_COMPRESSED) && HAVE_DECL_STATX_ATTR_COMPRESSED))
+# define STATX_ATTR_COMPRESSED 0x00000004
+#endif
+#if !(defined(STATX_ATTR_IMMUTABLE) || (defined(HAVE_DECL_STATX_ATTR_IMMUTABLE) && HAVE_DECL_STATX_ATTR_IMMUTABLE))
+# define STATX_ATTR_IMMUTABLE 0x00000010
+#endif
+#if !(defined(STATX_ATTR_APPEND) || (defined(HAVE_DECL_STATX_ATTR_APPEND) && HAVE_DECL_STATX_ATTR_APPEND))
+# define STATX_ATTR_APPEND 0x00000020
+#endif
+#if !(defined(STATX_ATTR_NODUMP) || (defined(HAVE_DECL_STATX_ATTR_NODUMP) && HAVE_DECL_STATX_ATTR_NODUMP))
+# define STATX_ATTR_NODUMP 0x00000040
+#endif
+#if !(defined(STATX_ATTR_ENCRYPTED) || (defined(HAVE_DECL_STATX_ATTR_ENCRYPTED) && HAVE_DECL_STATX_ATTR_ENCRYPTED))
+# define STATX_ATTR_ENCRYPTED 0x00000800
+#endif
+#if !(defined(STATX_ATTR_AUTOMOUNT) || (defined(HAVE_DECL_STATX_ATTR_AUTOMOUNT) && HAVE_DECL_STATX_ATTR_AUTOMOUNT))
+# define STATX_ATTR_AUTOMOUNT 0x00001000
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat statx_attrs in mpers mode
+
+#else
+
+static
+const struct xlat statx_attrs[] = {
+ XLAT(STATX_ATTR_COMPRESSED),
+ XLAT(STATX_ATTR_IMMUTABLE),
+ XLAT(STATX_ATTR_APPEND),
+ XLAT(STATX_ATTR_NODUMP),
+ XLAT(STATX_ATTR_ENCRYPTED),
+ XLAT(STATX_ATTR_AUTOMOUNT),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/statx_attrs.in b/xlat/statx_attrs.in
new file mode 100644
index 0000000..f6e4078
--- /dev/null
+++ b/xlat/statx_attrs.in
@@ -0,0 +1,6 @@
+STATX_ATTR_COMPRESSED	0x00000004
+STATX_ATTR_IMMUTABLE	0x00000010
+STATX_ATTR_APPEND	0x00000020
+STATX_ATTR_NODUMP	0x00000040
+STATX_ATTR_ENCRYPTED	0x00000800
+STATX_ATTR_AUTOMOUNT	0x00001000
diff --git a/xlat/statx_masks.h b/xlat/statx_masks.h
new file mode 100644
index 0000000..9e0f543
--- /dev/null
+++ b/xlat/statx_masks.h
@@ -0,0 +1,71 @@
+/* Generated by ./xlat/gen.sh from ./xlat/statx_masks.in; do not edit. */
+#if !(defined(STATX_ALL) || (defined(HAVE_DECL_STATX_ALL) && HAVE_DECL_STATX_ALL))
+# define STATX_ALL 0x00000fffU
+#endif
+#if !(defined(STATX_BASIC_STATS) || (defined(HAVE_DECL_STATX_BASIC_STATS) && HAVE_DECL_STATX_BASIC_STATS))
+# define STATX_BASIC_STATS 0x000007ffU
+#endif
+#if !(defined(STATX_TYPE) || (defined(HAVE_DECL_STATX_TYPE) && HAVE_DECL_STATX_TYPE))
+# define STATX_TYPE 0x00000001U
+#endif
+#if !(defined(STATX_MODE) || (defined(HAVE_DECL_STATX_MODE) && HAVE_DECL_STATX_MODE))
+# define STATX_MODE 0x00000002U
+#endif
+#if !(defined(STATX_NLINK) || (defined(HAVE_DECL_STATX_NLINK) && HAVE_DECL_STATX_NLINK))
+# define STATX_NLINK 0x00000004U
+#endif
+#if !(defined(STATX_UID) || (defined(HAVE_DECL_STATX_UID) && HAVE_DECL_STATX_UID))
+# define STATX_UID 0x00000008U
+#endif
+#if !(defined(STATX_GID) || (defined(HAVE_DECL_STATX_GID) && HAVE_DECL_STATX_GID))
+# define STATX_GID 0x00000010U
+#endif
+#if !(defined(STATX_ATIME) || (defined(HAVE_DECL_STATX_ATIME) && HAVE_DECL_STATX_ATIME))
+# define STATX_ATIME 0x00000020U
+#endif
+#if !(defined(STATX_MTIME) || (defined(HAVE_DECL_STATX_MTIME) && HAVE_DECL_STATX_MTIME))
+# define STATX_MTIME 0x00000040U
+#endif
+#if !(defined(STATX_CTIME) || (defined(HAVE_DECL_STATX_CTIME) && HAVE_DECL_STATX_CTIME))
+# define STATX_CTIME 0x00000080U
+#endif
+#if !(defined(STATX_INO) || (defined(HAVE_DECL_STATX_INO) && HAVE_DECL_STATX_INO))
+# define STATX_INO 0x00000100U
+#endif
+#if !(defined(STATX_SIZE) || (defined(HAVE_DECL_STATX_SIZE) && HAVE_DECL_STATX_SIZE))
+# define STATX_SIZE 0x00000200U
+#endif
+#if !(defined(STATX_BLOCKS) || (defined(HAVE_DECL_STATX_BLOCKS) && HAVE_DECL_STATX_BLOCKS))
+# define STATX_BLOCKS 0x00000400U
+#endif
+#if !(defined(STATX_BTIME) || (defined(HAVE_DECL_STATX_BTIME) && HAVE_DECL_STATX_BTIME))
+# define STATX_BTIME 0x00000800U
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat statx_masks in mpers mode
+
+#else
+
+static
+const struct xlat statx_masks[] = {
+ XLAT(STATX_ALL),
+ XLAT(STATX_BASIC_STATS),
+
+ XLAT(STATX_TYPE),
+ XLAT(STATX_MODE),
+ XLAT(STATX_NLINK),
+ XLAT(STATX_UID),
+ XLAT(STATX_GID),
+ XLAT(STATX_ATIME),
+ XLAT(STATX_MTIME),
+ XLAT(STATX_CTIME),
+ XLAT(STATX_INO),
+ XLAT(STATX_SIZE),
+ XLAT(STATX_BLOCKS),
+ XLAT(STATX_BTIME),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/statx_masks.in b/xlat/statx_masks.in
new file mode 100644
index 0000000..d18dd25
--- /dev/null
+++ b/xlat/statx_masks.in
@@ -0,0 +1,15 @@
+STATX_ALL		0x00000fffU
+STATX_BASIC_STATS	0x000007ffU
+
+STATX_TYPE		0x00000001U
+STATX_MODE		0x00000002U
+STATX_NLINK		0x00000004U
+STATX_UID		0x00000008U
+STATX_GID		0x00000010U
+STATX_ATIME		0x00000020U
+STATX_MTIME		0x00000040U
+STATX_CTIME		0x00000080U
+STATX_INO		0x00000100U
+STATX_SIZE		0x00000200U
+STATX_BLOCKS		0x00000400U
+STATX_BTIME		0x00000800U
diff --git a/xlat/usagewho.h b/xlat/usagewho.h
index 810f04c..8d46fc0 100644
--- a/xlat/usagewho.h
+++ b/xlat/usagewho.h
@@ -1,4 +1,16 @@
 /* Generated by ./xlat/gen.sh from ./xlat/usagewho.in; do not edit. */
+#if !(defined(RUSAGE_SELF) || (defined(HAVE_DECL_RUSAGE_SELF) && HAVE_DECL_RUSAGE_SELF))
+# define RUSAGE_SELF 0
+#endif
+#if !(defined(RUSAGE_CHILDREN) || (defined(HAVE_DECL_RUSAGE_CHILDREN) && HAVE_DECL_RUSAGE_CHILDREN))
+# define RUSAGE_CHILDREN (-1)
+#endif
+#if !(defined(RUSAGE_BOTH) || (defined(HAVE_DECL_RUSAGE_BOTH) && HAVE_DECL_RUSAGE_BOTH))
+# define RUSAGE_BOTH (-2)
+#endif
+#if !(defined(RUSAGE_THREAD) || (defined(HAVE_DECL_RUSAGE_THREAD) && HAVE_DECL_RUSAGE_THREAD))
+# define RUSAGE_THREAD 1
+#endif
 
 #ifdef IN_MPERS
 
@@ -8,15 +20,10 @@
 
 static
 const struct xlat usagewho[] = {
-#if defined(RUSAGE_SELF) || (defined(HAVE_DECL_RUSAGE_SELF) && HAVE_DECL_RUSAGE_SELF)
-  XLAT(RUSAGE_SELF),
-#endif
-#if defined(RUSAGE_CHILDREN) || (defined(HAVE_DECL_RUSAGE_CHILDREN) && HAVE_DECL_RUSAGE_CHILDREN)
-  XLAT(RUSAGE_CHILDREN),
-#endif
-#if defined(RUSAGE_BOTH) || (defined(HAVE_DECL_RUSAGE_BOTH) && HAVE_DECL_RUSAGE_BOTH)
-  XLAT(RUSAGE_BOTH),
-#endif
+ XLAT(RUSAGE_SELF),
+ XLAT(RUSAGE_CHILDREN),
+ XLAT(RUSAGE_BOTH),
+ XLAT(RUSAGE_THREAD),
  XLAT_END
 };
 
diff --git a/xlat/usagewho.in b/xlat/usagewho.in
index e2153b3..1b1255c 100644
--- a/xlat/usagewho.in
+++ b/xlat/usagewho.in
@@ -1,3 +1,4 @@
-RUSAGE_SELF
-RUSAGE_CHILDREN
-RUSAGE_BOTH
+RUSAGE_SELF	0
+RUSAGE_CHILDREN	(-1)
+RUSAGE_BOTH	(-2)
+RUSAGE_THREAD	1
diff --git a/xlat/v4l2_buf_flags.h b/xlat/v4l2_buf_flags.h
index 63f0b47..05eb64d 100644
--- a/xlat/v4l2_buf_flags.h
+++ b/xlat/v4l2_buf_flags.h
@@ -34,6 +34,39 @@
 #if defined(V4L2_BUF_FLAG_INPUT) || (defined(HAVE_DECL_V4L2_BUF_FLAG_INPUT) && HAVE_DECL_V4L2_BUF_FLAG_INPUT)
   XLAT(V4L2_BUF_FLAG_INPUT),
 #endif
+#if defined(V4L2_BUF_FLAG_PREPARED) || (defined(HAVE_DECL_V4L2_BUF_FLAG_PREPARED) && HAVE_DECL_V4L2_BUF_FLAG_PREPARED)
+  XLAT(V4L2_BUF_FLAG_PREPARED),
+#endif
+#if defined(V4L2_BUF_FLAG_NO_CACHE_INVALIDATE) || (defined(HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_INVALIDATE) && HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_INVALIDATE)
+  XLAT(V4L2_BUF_FLAG_NO_CACHE_INVALIDATE),
+#endif
+#if defined(V4L2_BUF_FLAG_NO_CACHE_CLEAN) || (defined(HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_CLEAN) && HAVE_DECL_V4L2_BUF_FLAG_NO_CACHE_CLEAN)
+  XLAT(V4L2_BUF_FLAG_NO_CACHE_CLEAN),
+#endif
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_MASK) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MASK) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MASK)
+  XLAT(V4L2_BUF_FLAG_TIMESTAMP_MASK),
+#endif
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN)
+  XLAT(V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN),
+#endif
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC)
+  XLAT(V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC),
+#endif
+#if defined(V4L2_BUF_FLAG_TIMESTAMP_COPY) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_COPY) && HAVE_DECL_V4L2_BUF_FLAG_TIMESTAMP_COPY)
+  XLAT(V4L2_BUF_FLAG_TIMESTAMP_COPY),
+#endif
+#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_MASK) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_MASK) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_MASK)
+  XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_MASK),
+#endif
+#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_EOF) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_EOF) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_EOF)
+  XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_EOF),
+#endif
+#if defined(V4L2_BUF_FLAG_TSTAMP_SRC_SOE) || (defined(HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_SOE) && HAVE_DECL_V4L2_BUF_FLAG_TSTAMP_SRC_SOE)
+  XLAT(V4L2_BUF_FLAG_TSTAMP_SRC_SOE),
+#endif
+#if defined(V4L2_BUF_FLAG_LAST) || (defined(HAVE_DECL_V4L2_BUF_FLAG_LAST) && HAVE_DECL_V4L2_BUF_FLAG_LAST)
+  XLAT(V4L2_BUF_FLAG_LAST),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/v4l2_buf_flags.in b/xlat/v4l2_buf_flags.in
index ba7e86e..86ab91d 100644
--- a/xlat/v4l2_buf_flags.in
+++ b/xlat/v4l2_buf_flags.in
@@ -6,3 +6,14 @@
 V4L2_BUF_FLAG_BFRAME
 V4L2_BUF_FLAG_TIMECODE
 V4L2_BUF_FLAG_INPUT
+V4L2_BUF_FLAG_PREPARED
+V4L2_BUF_FLAG_NO_CACHE_INVALIDATE
+V4L2_BUF_FLAG_NO_CACHE_CLEAN
+V4L2_BUF_FLAG_TIMESTAMP_MASK
+V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN
+V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC
+V4L2_BUF_FLAG_TIMESTAMP_COPY
+V4L2_BUF_FLAG_TSTAMP_SRC_MASK
+V4L2_BUF_FLAG_TSTAMP_SRC_EOF
+V4L2_BUF_FLAG_TSTAMP_SRC_SOE
+V4L2_BUF_FLAG_LAST
diff --git a/xlat/v4l2_buf_types.h b/xlat/v4l2_buf_types.h
index c5966a9..49753e5 100644
--- a/xlat/v4l2_buf_types.h
+++ b/xlat/v4l2_buf_types.h
@@ -40,6 +40,12 @@
 #if defined(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY) || (defined(HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY) && HAVE_DECL_V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY)
   XLAT(V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY),
 #endif
+#if defined(V4L2_BUF_TYPE_SDR_CAPTURE) || (defined(HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE) && HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE)
+  XLAT(V4L2_BUF_TYPE_SDR_CAPTURE),
+#endif
+#if defined(V4L2_BUF_TYPE_SDR_OUTPUT) || (defined(HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT) && HAVE_DECL_V4L2_BUF_TYPE_SDR_OUTPUT)
+  XLAT(V4L2_BUF_TYPE_SDR_OUTPUT),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/v4l2_buf_types.in b/xlat/v4l2_buf_types.in
index 431cb59..2b52561 100644
--- a/xlat/v4l2_buf_types.in
+++ b/xlat/v4l2_buf_types.in
@@ -8,3 +8,5 @@
 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE
 V4L2_BUF_TYPE_SLICED_VBI_OUTPUT
 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY
+V4L2_BUF_TYPE_SDR_CAPTURE
+V4L2_BUF_TYPE_SDR_OUTPUT
diff --git a/xlat/v4l2_colorspaces.h b/xlat/v4l2_colorspaces.h
index 857baf9..53d16e6 100644
--- a/xlat/v4l2_colorspaces.h
+++ b/xlat/v4l2_colorspaces.h
@@ -34,6 +34,18 @@
 #if defined(V4L2_COLORSPACE_SRGB) || (defined(HAVE_DECL_V4L2_COLORSPACE_SRGB) && HAVE_DECL_V4L2_COLORSPACE_SRGB)
   XLAT(V4L2_COLORSPACE_SRGB),
 #endif
+#if defined(V4L2_COLORSPACE_ADOBERGB) || (defined(HAVE_DECL_V4L2_COLORSPACE_ADOBERGB) && HAVE_DECL_V4L2_COLORSPACE_ADOBERGB)
+  XLAT(V4L2_COLORSPACE_ADOBERGB),
+#endif
+#if defined(V4L2_COLORSPACE_BT2020) || (defined(HAVE_DECL_V4L2_COLORSPACE_BT2020) && HAVE_DECL_V4L2_COLORSPACE_BT2020)
+  XLAT(V4L2_COLORSPACE_BT2020),
+#endif
+#if defined(V4L2_COLORSPACE_RAW) || (defined(HAVE_DECL_V4L2_COLORSPACE_RAW) && HAVE_DECL_V4L2_COLORSPACE_RAW)
+  XLAT(V4L2_COLORSPACE_RAW),
+#endif
+#if defined(V4L2_COLORSPACE_DCI_P3) || (defined(HAVE_DECL_V4L2_COLORSPACE_DCI_P3) && HAVE_DECL_V4L2_COLORSPACE_DCI_P3)
+  XLAT(V4L2_COLORSPACE_DCI_P3),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/v4l2_colorspaces.in b/xlat/v4l2_colorspaces.in
index 961e71c..1d227e4 100644
--- a/xlat/v4l2_colorspaces.in
+++ b/xlat/v4l2_colorspaces.in
@@ -6,3 +6,7 @@
 V4L2_COLORSPACE_470_SYSTEM_BG
 V4L2_COLORSPACE_JPEG
 V4L2_COLORSPACE_SRGB
+V4L2_COLORSPACE_ADOBERGB
+V4L2_COLORSPACE_BT2020
+V4L2_COLORSPACE_RAW
+V4L2_COLORSPACE_DCI_P3
diff --git a/xlat/v4l2_device_capabilities_flags.h b/xlat/v4l2_device_capabilities_flags.h
index 73928e1..70842c4 100644
--- a/xlat/v4l2_device_capabilities_flags.h
+++ b/xlat/v4l2_device_capabilities_flags.h
@@ -82,6 +82,15 @@
 #if defined(V4L2_CAP_DEVICE_CAPS) || (defined(HAVE_DECL_V4L2_CAP_DEVICE_CAPS) && HAVE_DECL_V4L2_CAP_DEVICE_CAPS)
   XLAT(V4L2_CAP_DEVICE_CAPS),
 #endif
+#if defined(V4L2_CAP_SDR_CAPTURE) || (defined(HAVE_DECL_V4L2_CAP_SDR_CAPTURE) && HAVE_DECL_V4L2_CAP_SDR_CAPTURE)
+  XLAT(V4L2_CAP_SDR_CAPTURE),
+#endif
+#if defined(V4L2_CAP_EXT_PIX_FORMAT) || (defined(HAVE_DECL_V4L2_CAP_EXT_PIX_FORMAT) && HAVE_DECL_V4L2_CAP_EXT_PIX_FORMAT)
+  XLAT(V4L2_CAP_EXT_PIX_FORMAT),
+#endif
+#if defined(V4L2_CAP_SDR_OUTPUT) || (defined(HAVE_DECL_V4L2_CAP_SDR_OUTPUT) && HAVE_DECL_V4L2_CAP_SDR_OUTPUT)
+  XLAT(V4L2_CAP_SDR_OUTPUT),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/v4l2_device_capabilities_flags.in b/xlat/v4l2_device_capabilities_flags.in
index 9380eb4..d4e3292 100644
--- a/xlat/v4l2_device_capabilities_flags.in
+++ b/xlat/v4l2_device_capabilities_flags.in
@@ -22,3 +22,6 @@
 V4L2_CAP_STREAMING
 V4L2_CAP_TOUCH
 V4L2_CAP_DEVICE_CAPS
+V4L2_CAP_SDR_CAPTURE
+V4L2_CAP_EXT_PIX_FORMAT
+V4L2_CAP_SDR_OUTPUT
diff --git a/xlat/v4l2_memories.h b/xlat/v4l2_memories.h
index eda2ff9..acbb395 100644
--- a/xlat/v4l2_memories.h
+++ b/xlat/v4l2_memories.h
@@ -16,6 +16,12 @@
 #if defined(V4L2_MEMORY_USERPTR) || (defined(HAVE_DECL_V4L2_MEMORY_USERPTR) && HAVE_DECL_V4L2_MEMORY_USERPTR)
   XLAT(V4L2_MEMORY_USERPTR),
 #endif
+#if defined(V4L2_MEMORY_OVERLAY) || (defined(HAVE_DECL_V4L2_MEMORY_OVERLAY) && HAVE_DECL_V4L2_MEMORY_OVERLAY)
+  XLAT(V4L2_MEMORY_OVERLAY),
+#endif
+#if defined(V4L2_MEMORY_DMABUF) || (defined(HAVE_DECL_V4L2_MEMORY_DMABUF) && HAVE_DECL_V4L2_MEMORY_DMABUF)
+  XLAT(V4L2_MEMORY_DMABUF),
+#endif
  XLAT_END
 };
 
diff --git a/xlat/v4l2_memories.in b/xlat/v4l2_memories.in
index e592d57..2acd47b 100644
--- a/xlat/v4l2_memories.in
+++ b/xlat/v4l2_memories.in
@@ -1,2 +1,4 @@
 V4L2_MEMORY_MMAP
 V4L2_MEMORY_USERPTR
+V4L2_MEMORY_OVERLAY
+V4L2_MEMORY_DMABUF
diff --git a/xlat/v4l2_sliced_flags.h b/xlat/v4l2_sliced_flags.h
new file mode 100644
index 0000000..56634ba
--- /dev/null
+++ b/xlat/v4l2_sliced_flags.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_sliced_flags.in; do not edit. */
+
+#ifdef IN_MPERS
+
+extern const struct xlat v4l2_sliced_flags[];
+
+#else
+
+# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+# endif
+const struct xlat v4l2_sliced_flags[] = {
+#if defined(V4L2_SLICED_TELETEXT_B) || (defined(HAVE_DECL_V4L2_SLICED_TELETEXT_B) && HAVE_DECL_V4L2_SLICED_TELETEXT_B)
+  XLAT(V4L2_SLICED_TELETEXT_B),
+#endif
+#if defined(V4L2_SLICED_VPS) || (defined(HAVE_DECL_V4L2_SLICED_VPS) && HAVE_DECL_V4L2_SLICED_VPS)
+  XLAT(V4L2_SLICED_VPS),
+#endif
+#if defined(V4L2_SLICED_CAPTION_525) || (defined(HAVE_DECL_V4L2_SLICED_CAPTION_525) && HAVE_DECL_V4L2_SLICED_CAPTION_525)
+  XLAT(V4L2_SLICED_CAPTION_525),
+#endif
+#if defined(V4L2_SLICED_WSS_625) || (defined(HAVE_DECL_V4L2_SLICED_WSS_625) && HAVE_DECL_V4L2_SLICED_WSS_625)
+  XLAT(V4L2_SLICED_WSS_625),
+#endif
+#if defined(V4L2_SLICED_VBI_525) || (defined(HAVE_DECL_V4L2_SLICED_VBI_525) && HAVE_DECL_V4L2_SLICED_VBI_525)
+  XLAT(V4L2_SLICED_VBI_525),
+#endif
+#if defined(V4L2_SLICED_VBI_625) || (defined(HAVE_DECL_V4L2_SLICED_VBI_625) && HAVE_DECL_V4L2_SLICED_VBI_625)
+  XLAT(V4L2_SLICED_VBI_625),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/v4l2_sliced_flags.in b/xlat/v4l2_sliced_flags.in
new file mode 100644
index 0000000..baff2e2
--- /dev/null
+++ b/xlat/v4l2_sliced_flags.in
@@ -0,0 +1,6 @@
+V4L2_SLICED_TELETEXT_B
+V4L2_SLICED_VPS
+V4L2_SLICED_CAPTION_525
+V4L2_SLICED_WSS_625
+V4L2_SLICED_VBI_525
+V4L2_SLICED_VBI_625
diff --git a/xlat/v4l2_tuner_audmodes.h b/xlat/v4l2_tuner_audmodes.h
new file mode 100644
index 0000000..916b589
--- /dev/null
+++ b/xlat/v4l2_tuner_audmodes.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_tuner_audmodes.in; do not edit. */
+
+#ifdef IN_MPERS
+
+extern const struct xlat v4l2_tuner_audmodes[];
+
+#else
+
+# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+# endif
+const struct xlat v4l2_tuner_audmodes[] = {
+#if defined(V4L2_TUNER_MODE_MONO) || (defined(HAVE_DECL_V4L2_TUNER_MODE_MONO) && HAVE_DECL_V4L2_TUNER_MODE_MONO)
+  XLAT(V4L2_TUNER_MODE_MONO),
+#endif
+#if defined(V4L2_TUNER_MODE_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_MODE_STEREO) && HAVE_DECL_V4L2_TUNER_MODE_STEREO)
+  XLAT(V4L2_TUNER_MODE_STEREO),
+#endif
+#if defined(V4L2_TUNER_MODE_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG2) && HAVE_DECL_V4L2_TUNER_MODE_LANG2)
+  XLAT(V4L2_TUNER_MODE_LANG2),
+#endif
+#if defined(V4L2_TUNER_MODE_SAP) || (defined(HAVE_DECL_V4L2_TUNER_MODE_SAP) && HAVE_DECL_V4L2_TUNER_MODE_SAP)
+  XLAT(V4L2_TUNER_MODE_SAP),
+#endif
+#if defined(V4L2_TUNER_MODE_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG1) && HAVE_DECL_V4L2_TUNER_MODE_LANG1)
+  XLAT(V4L2_TUNER_MODE_LANG1),
+#endif
+#if defined(V4L2_TUNER_MODE_LANG1_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_MODE_LANG1_LANG2) && HAVE_DECL_V4L2_TUNER_MODE_LANG1_LANG2)
+  XLAT(V4L2_TUNER_MODE_LANG1_LANG2),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/v4l2_tuner_audmodes.in b/xlat/v4l2_tuner_audmodes.in
new file mode 100644
index 0000000..82decab
--- /dev/null
+++ b/xlat/v4l2_tuner_audmodes.in
@@ -0,0 +1,6 @@
+V4L2_TUNER_MODE_MONO
+V4L2_TUNER_MODE_STEREO
+V4L2_TUNER_MODE_LANG2
+V4L2_TUNER_MODE_SAP
+V4L2_TUNER_MODE_LANG1
+V4L2_TUNER_MODE_LANG1_LANG2
diff --git a/xlat/v4l2_tuner_capabilities.h b/xlat/v4l2_tuner_capabilities.h
new file mode 100644
index 0000000..f900179
--- /dev/null
+++ b/xlat/v4l2_tuner_capabilities.h
@@ -0,0 +1,58 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_tuner_capabilities.in; do not edit. */
+
+#ifdef IN_MPERS
+
+extern const struct xlat v4l2_tuner_capabilities[];
+
+#else
+
+# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+# endif
+const struct xlat v4l2_tuner_capabilities[] = {
+#if defined(V4L2_TUNER_CAP_LOW) || (defined(HAVE_DECL_V4L2_TUNER_CAP_LOW) && HAVE_DECL_V4L2_TUNER_CAP_LOW)
+  XLAT(V4L2_TUNER_CAP_LOW),
+#endif
+#if defined(V4L2_TUNER_CAP_NORM) || (defined(HAVE_DECL_V4L2_TUNER_CAP_NORM) && HAVE_DECL_V4L2_TUNER_CAP_NORM)
+  XLAT(V4L2_TUNER_CAP_NORM),
+#endif
+#if defined(V4L2_TUNER_CAP_HWSEEK_BOUNDED) || (defined(HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_BOUNDED) && HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_BOUNDED)
+  XLAT(V4L2_TUNER_CAP_HWSEEK_BOUNDED),
+#endif
+#if defined(V4L2_TUNER_CAP_HWSEEK_WRAP) || (defined(HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_WRAP) && HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_WRAP)
+  XLAT(V4L2_TUNER_CAP_HWSEEK_WRAP),
+#endif
+#if defined(V4L2_TUNER_CAP_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_CAP_STEREO) && HAVE_DECL_V4L2_TUNER_CAP_STEREO)
+  XLAT(V4L2_TUNER_CAP_STEREO),
+#endif
+#if defined(V4L2_TUNER_CAP_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_CAP_LANG2) && HAVE_DECL_V4L2_TUNER_CAP_LANG2)
+  XLAT(V4L2_TUNER_CAP_LANG2),
+#endif
+#if defined(V4L2_TUNER_CAP_SAP) || (defined(HAVE_DECL_V4L2_TUNER_CAP_SAP) && HAVE_DECL_V4L2_TUNER_CAP_SAP)
+  XLAT(V4L2_TUNER_CAP_SAP),
+#endif
+#if defined(V4L2_TUNER_CAP_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_CAP_LANG1) && HAVE_DECL_V4L2_TUNER_CAP_LANG1)
+  XLAT(V4L2_TUNER_CAP_LANG1),
+#endif
+#if defined(V4L2_TUNER_CAP_RDS) || (defined(HAVE_DECL_V4L2_TUNER_CAP_RDS) && HAVE_DECL_V4L2_TUNER_CAP_RDS)
+  XLAT(V4L2_TUNER_CAP_RDS),
+#endif
+#if defined(V4L2_TUNER_CAP_RDS_BLOCK_IO) || (defined(HAVE_DECL_V4L2_TUNER_CAP_RDS_BLOCK_IO) && HAVE_DECL_V4L2_TUNER_CAP_RDS_BLOCK_IO)
+  XLAT(V4L2_TUNER_CAP_RDS_BLOCK_IO),
+#endif
+#if defined(V4L2_TUNER_CAP_RDS_CONTROLS) || (defined(HAVE_DECL_V4L2_TUNER_CAP_RDS_CONTROLS) && HAVE_DECL_V4L2_TUNER_CAP_RDS_CONTROLS)
+  XLAT(V4L2_TUNER_CAP_RDS_CONTROLS),
+#endif
+#if defined(V4L2_TUNER_CAP_FREQ_BANDS) || (defined(HAVE_DECL_V4L2_TUNER_CAP_FREQ_BANDS) && HAVE_DECL_V4L2_TUNER_CAP_FREQ_BANDS)
+  XLAT(V4L2_TUNER_CAP_FREQ_BANDS),
+#endif
+#if defined(V4L2_TUNER_CAP_HWSEEK_PROG_LIM) || (defined(HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_PROG_LIM) && HAVE_DECL_V4L2_TUNER_CAP_HWSEEK_PROG_LIM)
+  XLAT(V4L2_TUNER_CAP_HWSEEK_PROG_LIM),
+#endif
+#if defined(V4L2_TUNER_CAP_1HZ) || (defined(HAVE_DECL_V4L2_TUNER_CAP_1HZ) && HAVE_DECL_V4L2_TUNER_CAP_1HZ)
+  XLAT(V4L2_TUNER_CAP_1HZ),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/v4l2_tuner_capabilities.in b/xlat/v4l2_tuner_capabilities.in
new file mode 100644
index 0000000..4aec41e
--- /dev/null
+++ b/xlat/v4l2_tuner_capabilities.in
@@ -0,0 +1,14 @@
+V4L2_TUNER_CAP_LOW
+V4L2_TUNER_CAP_NORM
+V4L2_TUNER_CAP_HWSEEK_BOUNDED
+V4L2_TUNER_CAP_HWSEEK_WRAP
+V4L2_TUNER_CAP_STEREO
+V4L2_TUNER_CAP_LANG2
+V4L2_TUNER_CAP_SAP
+V4L2_TUNER_CAP_LANG1
+V4L2_TUNER_CAP_RDS
+V4L2_TUNER_CAP_RDS_BLOCK_IO
+V4L2_TUNER_CAP_RDS_CONTROLS
+V4L2_TUNER_CAP_FREQ_BANDS
+V4L2_TUNER_CAP_HWSEEK_PROG_LIM
+V4L2_TUNER_CAP_1HZ
diff --git a/xlat/v4l2_tuner_rxsubchanses.h b/xlat/v4l2_tuner_rxsubchanses.h
new file mode 100644
index 0000000..5213498
--- /dev/null
+++ b/xlat/v4l2_tuner_rxsubchanses.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_tuner_rxsubchanses.in; do not edit. */
+
+#ifdef IN_MPERS
+
+extern const struct xlat v4l2_tuner_rxsubchanses[];
+
+#else
+
+# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+# endif
+const struct xlat v4l2_tuner_rxsubchanses[] = {
+#if defined(V4L2_TUNER_SUB_MONO) || (defined(HAVE_DECL_V4L2_TUNER_SUB_MONO) && HAVE_DECL_V4L2_TUNER_SUB_MONO)
+  XLAT(V4L2_TUNER_SUB_MONO),
+#endif
+#if defined(V4L2_TUNER_SUB_STEREO) || (defined(HAVE_DECL_V4L2_TUNER_SUB_STEREO) && HAVE_DECL_V4L2_TUNER_SUB_STEREO)
+  XLAT(V4L2_TUNER_SUB_STEREO),
+#endif
+#if defined(V4L2_TUNER_SUB_LANG2) || (defined(HAVE_DECL_V4L2_TUNER_SUB_LANG2) && HAVE_DECL_V4L2_TUNER_SUB_LANG2)
+  XLAT(V4L2_TUNER_SUB_LANG2),
+#endif
+#if defined(V4L2_TUNER_SUB_SAP) || (defined(HAVE_DECL_V4L2_TUNER_SUB_SAP) && HAVE_DECL_V4L2_TUNER_SUB_SAP)
+  XLAT(V4L2_TUNER_SUB_SAP),
+#endif
+#if defined(V4L2_TUNER_SUB_LANG1) || (defined(HAVE_DECL_V4L2_TUNER_SUB_LANG1) && HAVE_DECL_V4L2_TUNER_SUB_LANG1)
+  XLAT(V4L2_TUNER_SUB_LANG1),
+#endif
+#if defined(V4L2_TUNER_SUB_RDS) || (defined(HAVE_DECL_V4L2_TUNER_SUB_RDS) && HAVE_DECL_V4L2_TUNER_SUB_RDS)
+  XLAT(V4L2_TUNER_SUB_RDS),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/v4l2_tuner_rxsubchanses.in b/xlat/v4l2_tuner_rxsubchanses.in
new file mode 100644
index 0000000..c6d59e9
--- /dev/null
+++ b/xlat/v4l2_tuner_rxsubchanses.in
@@ -0,0 +1,6 @@
+V4L2_TUNER_SUB_MONO
+V4L2_TUNER_SUB_STEREO
+V4L2_TUNER_SUB_LANG2
+V4L2_TUNER_SUB_SAP
+V4L2_TUNER_SUB_LANG1
+V4L2_TUNER_SUB_RDS
diff --git a/xlat/v4l2_tuner_types.h b/xlat/v4l2_tuner_types.h
new file mode 100644
index 0000000..67f12e5
--- /dev/null
+++ b/xlat/v4l2_tuner_types.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_tuner_types.in; do not edit. */
+
+#ifdef IN_MPERS
+
+extern const struct xlat v4l2_tuner_types[];
+
+#else
+
+# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+# endif
+const struct xlat v4l2_tuner_types[] = {
+#if defined(V4L2_TUNER_RADIO) || (defined(HAVE_DECL_V4L2_TUNER_RADIO) && HAVE_DECL_V4L2_TUNER_RADIO)
+  XLAT(V4L2_TUNER_RADIO),
+#endif
+#if defined(V4L2_TUNER_ANALOG_TV) || (defined(HAVE_DECL_V4L2_TUNER_ANALOG_TV) && HAVE_DECL_V4L2_TUNER_ANALOG_TV)
+  XLAT(V4L2_TUNER_ANALOG_TV),
+#endif
+#if defined(V4L2_TUNER_DIGITAL_TV) || (defined(HAVE_DECL_V4L2_TUNER_DIGITAL_TV) && HAVE_DECL_V4L2_TUNER_DIGITAL_TV)
+  XLAT(V4L2_TUNER_DIGITAL_TV),
+#endif
+#if defined(V4L2_TUNER_ADC) || (defined(HAVE_DECL_V4L2_TUNER_ADC) && HAVE_DECL_V4L2_TUNER_ADC)
+  XLAT(V4L2_TUNER_ADC),
+#endif
+#if defined(V4L2_TUNER_SDR) || (defined(HAVE_DECL_V4L2_TUNER_SDR) && HAVE_DECL_V4L2_TUNER_SDR)
+  XLAT(V4L2_TUNER_SDR),
+#endif
+#if defined(V4L2_TUNER_RF) || (defined(HAVE_DECL_V4L2_TUNER_RF) && HAVE_DECL_V4L2_TUNER_RF)
+  XLAT(V4L2_TUNER_RF),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/v4l2_tuner_types.in b/xlat/v4l2_tuner_types.in
new file mode 100644
index 0000000..59a9f3a
--- /dev/null
+++ b/xlat/v4l2_tuner_types.in
@@ -0,0 +1,6 @@
+V4L2_TUNER_RADIO
+V4L2_TUNER_ANALOG_TV
+V4L2_TUNER_DIGITAL_TV
+V4L2_TUNER_ADC
+V4L2_TUNER_SDR
+V4L2_TUNER_RF
diff --git a/xlat/v4l2_vbi_flags.h b/xlat/v4l2_vbi_flags.h
new file mode 100644
index 0000000..7924d3e
--- /dev/null
+++ b/xlat/v4l2_vbi_flags.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/v4l2_vbi_flags.in; do not edit. */
+
+#ifdef IN_MPERS
+
+extern const struct xlat v4l2_vbi_flags[];
+
+#else
+
+# if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
+static
+# endif
+const struct xlat v4l2_vbi_flags[] = {
+#if defined(V4L2_VBI_UNSYNC) || (defined(HAVE_DECL_V4L2_VBI_UNSYNC) && HAVE_DECL_V4L2_VBI_UNSYNC)
+  XLAT(V4L2_VBI_UNSYNC),
+#endif
+#if defined(V4L2_VBI_INTERLACED) || (defined(HAVE_DECL_V4L2_VBI_INTERLACED) && HAVE_DECL_V4L2_VBI_INTERLACED)
+  XLAT(V4L2_VBI_INTERLACED),
+#endif
+#if defined(V4L2_VBI_ITU_525_F1_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_525_F1_START) && HAVE_DECL_V4L2_VBI_ITU_525_F1_START)
+  XLAT(V4L2_VBI_ITU_525_F1_START),
+#endif
+#if defined(V4L2_VBI_ITU_525_F2_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_525_F2_START) && HAVE_DECL_V4L2_VBI_ITU_525_F2_START)
+  XLAT(V4L2_VBI_ITU_525_F2_START),
+#endif
+#if defined(V4L2_VBI_ITU_625_F1_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_625_F1_START) && HAVE_DECL_V4L2_VBI_ITU_625_F1_START)
+  XLAT(V4L2_VBI_ITU_625_F1_START),
+#endif
+#if defined(V4L2_VBI_ITU_625_F2_START) || (defined(HAVE_DECL_V4L2_VBI_ITU_625_F2_START) && HAVE_DECL_V4L2_VBI_ITU_625_F2_START)
+  XLAT(V4L2_VBI_ITU_625_F2_START),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/v4l2_vbi_flags.in b/xlat/v4l2_vbi_flags.in
new file mode 100644
index 0000000..b367e60
--- /dev/null
+++ b/xlat/v4l2_vbi_flags.in
@@ -0,0 +1,6 @@
+V4L2_VBI_UNSYNC
+V4L2_VBI_INTERLACED
+V4L2_VBI_ITU_525_F1_START
+V4L2_VBI_ITU_525_F2_START
+V4L2_VBI_ITU_625_F1_START
+V4L2_VBI_ITU_625_F2_START