Merge "Update strace to 4.23."
diff --git a/Android.bp b/Android.bp
index 149757c..f3ac00e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -78,6 +78,7 @@
         "hdio.c",
         "hostname.c",
         "inotify.c",
+        "inotify_ioctl.c",
         "io.c",
         "ioctl.c",
         "ioperm.c",
@@ -104,6 +105,7 @@
         "memfd_create.c",
         "mknod.c",
         "mmap_cache.c",
+        "mmap_notify.c",
         "mmsghdr.c",
         "mount.c",
         "mq.c",
@@ -113,6 +115,7 @@
         "netlink.c",
         "netlink_crypto.c",
         "netlink_inet_diag.c",
+        "netlink_kobject_uevent.c",
         "netlink_netfilter.c",
         "netlink_netlink_diag.c",
         "netlink_packet_diag.c",
@@ -129,13 +132,16 @@
         "open.c",
         "pathtrace.c",
         "perf.c",
+        "perf_ioctl.c",
         "personality.c",
         "pkeys.c",
         "poll.c",
         "prctl.c",
+        "print_aio_sigset.c",
         "print_dev_t.c",
         "print_group_req.c",
         "print_ifindex.c",
+        "print_mac.c",
         "print_mq_attr.c",
         "print_msgbuf.c",
         "print_sigevent.c",
@@ -239,6 +245,7 @@
     ] + [
         "-Wall",
         "-Werror",
+        "-Wno-initializer-overrides",
         "-Wno-missing-field-initializers",
         "-Wno-pointer-arith",
         "-Wno-unused-parameter",
diff --git a/CREDITS b/CREDITS
index 94cecfe..9ef85d1 100644
--- a/CREDITS
+++ b/CREDITS
@@ -43,6 +43,7 @@
 	Chen Jingpiao <chenjingpiao@gmail.com>
 	Cheolung Lee <chpie@grayhash.com>
 	Chris Dearman <chris.dearman@imgtec.com>
+	Chris Lamb <lamby@debian.org>
 	Chris Metcalf <cmetcalf@tilera.com>
 	Chris Zankel <chris@zankel.net>
 	Christian Neukirchen <chneukirchen@gmail.com>
@@ -232,5 +233,6 @@
 	Zach Brown <zach.brown@oracle.com>
 	Zev Weiss <zev@bewilderbeest.net>
 	Zhang Le <robert.zhangle@gmail.com>
+	Zhibin Li <08826794brmt@gmail.com>
 	Zubin Mithra <zubin.mithra@gmail.com>
 	Марк Коренберг <socketpair@gmail.com>
diff --git a/ChangeLog b/ChangeLog
index 6efa3a2..2787131 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,4031 @@
+2018-06-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Prepare for 4.23 release.
+	* NEWS: Update for 4.23 release.
+
+	Update copyright headers.
+	Headers updated automatically using maint/update_copyright_years.sh
+	script.
+
+	tests: add missing copyright headers.
+	* tests/prctl-spec-inject.test: Add copyright header.
+	* tests/qualify_personality.sh: Likewise.
+
+	maint: document release procedure.
+	* maint/README-release: New file.
+	* maint/gen-release-notes.sh: Likewise.
+	* maint/gen-release-github.sh: Likewise.
+	* maint/gen-release-gitlab.sh: Likewise.
+
+	maint: prepend contributor names in tag messages with an asterisk.
+	* maint/gen-tag-message.sh: Prepend every line of
+	gen-contributors-list.sh output with an asterisk.
+
+2018-06-14  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update NEWS.
+
+2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Wire up rseq syscall.
+	This new syscall was introduced by Linux commit v4.17-1308-gd7822b1.
+
+	* linux/dummy.h (sys_rseq): New macro.
+	* linux/arm/syscallent.h (398): Add rseq entry.
+	* linux/i386/syscallent.h (386): Likewise.
+	* linux/powerpc/syscallent.h (387): Likewise.
+	* linux/powerpc64/syscallent.h (387): Likewise.
+	* linux/x32/syscallent.h (334): Likewise.
+	* linux/x86_64/syscallent.h (334): Likewise.
+
+2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of io_pgetevents syscall.
+	* configure.ac (AC_CHECK_TYPES): Check for struct __aio_sigset
+	in <linux/aio_abi.h>.
+	* tests/aio_pgetevents.c: New file.
+	* tests/.gitignore: Add aio_pgetevents.
+	* tests/pure_executables.list: Likewise.
+	* tests/gen_tests.in (aio_pgetevents): New test.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement io_pgetevents syscall decoding.
+	Introduced by Linux commit v4.17-rc3-7-g7a074e9.
+
+	* print_aio_sigset.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* aio.c (print_io_getevents): Rename from SYS_FUNC(io_getevents), add
+	has_usig flag, print user sigset on exiting if has_usig is set to true.
+	(SYS_FUNC(io_getevents), SYS_FUNC(io_pgetevents)): New functions,
+	wrappers for print_io_getevents.
+	* linux/32/syscallent.h ([292]): Wire up io_pgetevents.
+	* linux/64/syscallent.h ([292]): Likewise.
+	* linux/i386/syscallent.h ([385]): Likewise.
+	* linux/x32/syscallent.h ([333]): Likewise.
+	* linux/x86_64/syscallent.h ([333]): Likewise.
+	* NEWS: Mention this improvement.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	travis: re-enable testing with the latest mainline kernel headers.
+	As <linux/signal.h> is out of the game now, the Linux commit
+	v4.17-rc3-7-g7a074e9 should not cause harm anymore, so let's enable
+	testing with the latest mainline kernel headers again.
+
+	* .travis.yml (matrix): Do not specify KBRANCH for KHEADERS=torvalds/linux.
+
+2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Workaround incompatibility between <linux/signal.h> and libc headers.
+	Override <linux/signal.h> with <signal.h> so that those few linux
+	headers that include <linux/signal.h> could be included along with libc
+	headers.
+
+	* linux/linux/signal.h: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+
+2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add personality specification syntax checks.
+	* tests/options-syntax.test: Add personality specification syntax
+	checks.
+
+	tests: add basic checks for personality designation support.
+	* tests/qualify_personality.sh: New file.
+	* tests/qualify_personality_empty.in: Likewise.
+	* tests/trace_personality_32.in: Likewise.
+	* tests/trace_personality_64.in: Likewise.
+	* tests/trace_personality_regex_32.in: Likewise.
+	* tests/trace_personality_regex_64.in: Likewise.
+	* tests/trace_personality_regex_x32.in: Likewise.
+	* tests/trace_personality_x32.in: Likewise.
+	* tests/Makefile.am (EXTRA_DIST): Add them.
+	* tests/gen_tests.in (trace_personality_32, trace_personality_64,
+	trace_personality_x32, trace_personality_regex_32,
+	trace_personality_regex_64, trace_personality_regex_x32): New tests.
+
+2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add support for personality designation in regex qualifications.
+	* basic_filters.c (qualify_syscall_regex): Copy syscall name
+	to a temporary buffer, append the personality designation to it,
+	and check it against regular expression if the syscall name
+	hasn't been matched already.
+
+	References: https://github.com/strace/strace/issues/35
+
+2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add support for personality designation in syscall qualifications.
+	* syscall.c (personality_designators): New array.
+	* defs.h (personality_designators): New declaration.
+	* basic_filters.c (qualify_syscall_separate_personality,
+	qualify_syscall_number_personality): New functions.
+	(qualify_syscall_number): Use qualify_syscall_separate_personality for
+	checking for a personality specification, call
+	qualify_syscall_number_personality for setting number set for specific
+	personality.
+	(qualify_syscall_name_personality): New function.
+	(qualify_syscall_name): Use qualify_syscall_separate_personality for
+	checking for a personality specification, call
+	qualify_syscall_name_personality for setting number set for specific
+	personality.
+	* strace.1.in (.SS Filtering): Document it.
+	* NEWS: Mention it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+	Closes: https://github.com/strace/strace/issues/35
+
+2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add basic checks for inject=SET:syscall= expression syntax.
+	* tests/qual_fault-syscall.test: New test.
+	* tests/qual_inject-error-signal-syscall.test: Likewise.
+	* tests/qual_inject-retval-syscall.test: Likewise.
+	* tests/qual_inject-signal-syscall.test: Likewise.
+	* tests/Makefile.am (MISC_TESTS): Add them.
+	* tests/qual_fault-syntax.test: Add checks for inject=SET:syscall=
+	expression syntax.
+	* tests/qual_inject-syntax.test: Likewise.
+	* tests/qual_fault.test: Append $suffix to -e fault arguments, override
+	$NAME with $name_override if the latter is set.
+	* tests/qual_inject-error-signal.test: Append $suffix to -e inject
+	arguments, override $NAME with $name_override if the latter is set.
+	* tests/qual_inject-retval.test: Likewise.
+	* tests/qual_inject-signal.test: Likewise.
+
+2018-06-13  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement injection of syscalls with no side effects as an alternative to -1
+	* defs.h (INJECT_F_SYSCALL, INJECT_ACTION_FLAGS, TCB_TAMPERED_NO_FAIL,
+	syscall_tampered_nofail): New macros.
+	(inject_data): Add scno field.
+	* filter_qualify.c (struct inject_personality_data): New type.
+	(parse_inject_token): Add "pdata" argument, parse "syscall=" option.
+	(parse_inject_expression): Add "pdata" argument, forward it to
+	parse_inject_token.
+	(qualify_inject_common) <pdata>: New variable array, pass it to
+	parse_inject_expression, copy it into inject_vec.
+	* syscall.c (tamper_with_syscall_entering): Inject the specified syscall
+	if INJECT_F_SYSCALL is set.
+	(tamper_with_syscall_exiting): Update the check for a failed syscall
+	injection.
+	(get_syscall_result): Update get_error invocation.
+	* strace.1.in: Document new syscall injection expression.
+	* NEWS: Mention it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+	Closes: https://github.com/strace/strace/issues/26
+
+2018-06-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	ia64: remove legacy i386 entries from the syscall entry table.
+	Remove the last piece of IA-32 mode support.  Besides being obsolete,
+	these bogus syscall entries cause problems with syscall name resolution.
+
+	* linux/ia64/syscallent.h [CST > 0]: Remove.
+
+	Complements: v4.21~17 "linux/ia64: remove IA-32 mode support"
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux: set error flags in arch_set_error on POWER and Alpha.
+	* alpha/set_error.c (arch_set_error): Set alpha_r3 to 1, update tracee's
+	REG_A3.
+	* powerpc/set_error.c (arch_set_error): Set bit 28 in CCR register,
+	update tracee's PT_CCR.
+
+	Fixes: v4.15~126 "Implement arch specific methods of changing syscall number and error code"
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of IFLA_LINKINFO netlink attribute.
+	* tests/nlattr_ifla_linkinfo.c: New file.
+	* tests/pure_executables.list: Add nlattr_ifla_linkinfo.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (nlattr_ifla_linkinfo): New test.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add print_quoted_stringn to print string with a size limit.
+	This is similar to print_quoted_cstring, but not quite the same.
+
+	* tests/print_quoted_string.c (print_quoted_stringn): New function.
+	* tests/tests.h (print_quoted_stringn): New declaration.
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add fallback_func argument to TEST_NESTED_NLATTR_OBJECT_EX_
+	* tests/test_nlattr.h (TEST_NESTED_NLATTR_OBJECT_EX_): Add fallback_func
+	argument, call it instead of print_quoted_hex.
+	(TEST_NESTED_NLATTR_OBJECT_EX, TEST_NESTED_NLATTR_OBJECT): Specify
+	print_quoted_hex as a fallback_func.
+	* tests/nlattr_ifla_af_spec.c: Specify print_quoted_hex as
+	a fallback_func in TEST_NESTED_NLATTR_OBJECT_EX_ calls.
+
+	tests/test_nlattr.h: add ability to provide additional nlattr payload.
+	* tests/test_nlattr.h (print_nlattr): Add add_data argument, print
+	opening square bracket if add_data is set to true.
+	(TEST_NLATTR_EX_): Rename from TEST_NLATTR_, add nla_total_len_
+	argument, use it for msg_len calculation, print square brackets
+	if nla_total_len_ is greater than nla_data_len_.
+	(TEST_NLATTR_): New macro, a wrapper for TEST_NLATTR_EX_.
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_link: decode struct ifla_bridge_id unconditionally.
+	Since it is relatively simple.
+
+	* rtnl_link.c (decode_ifla_bridge_id): Provide struct definition for
+	the id variable.
+	[!HAVE_STRUCT_IFLA_BRIDGE_ID] (decode_ifla_bridge_id): Decode struct
+	ifla_bridge_id.
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: specify size for ethernet protocol.
+	Otherwise it tries to decode payload of size 1, which makes little
+	sense.
+
+	* nlattr.c (decode_nla_ether_proto) <opts>: Specify size field.
+
+	Fixes: v4.22-321-gfd0cd65 "nlattr: add ethernet protocol decoder"
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_link: use ARRSZ_PAIR where appropriate.
+	It reduces code duplication somewhat and allows avoiding errors like
+	the one fixed in the previous commit.
+
+	* rtnl_link.c (decode_ifla_protinfo, decode_nla_linkinfo_data_bridge,
+	decode_nla_linkinfo_data_tun, decode_ifla_linkinfo, decode_ifla_port,
+	decode_ifla_vf_ports, decode_ifla_xdp,
+	DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg)): Use ARRSZ_PAIR in
+	decode_nlattr call arguments.
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_link: fix incorrect variable names in ARRAY_SIZE arguments.
+	* rtnl_link.c (decode_nla_linkinfo_data_bridge): Change
+	rtnl_ifla_info_data_bridge_attrs to ifla_info_data_bridge_nla_decoders
+	in ARRAY_SIZE call.
+	(decode_nla_linkinfo_data_tun): Change rtnl_ifla_info_data_tun_attrs
+	to ifla_info_data_tun_nla_decoders in ARRAY_SIZE call.
+
+	Fixes: v4.22-328-g1e6d5a8 "rtnl_link: implement IFLA_INFO_DATA for bridges"
+	Fixes: v4.22-329-g4eab3a4 "rtnl_link: implement IFLA_INFO_DATA for tun devices"
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mips: add missing pure flag to syscall entries.
+	* linux/mips/syscallent-n32.h ([6038], [6100], [6102], [6105], [6106],
+	[6108], [6109], [6178]): Add pure flag to getpid, getuid, getgid, geteuid,
+	getegid, getpgid, getpgrp, and gttid syscall descriptors.
+	* linux/mips/syscallent-n64.h ([5038], [5100], [5102], [5105], [5106],
+	[5108], [5109], [5178]): Likewise.
+	* linux/mips/syscallent-o32.h ([4020], [4024], [4047], [4049], [4050],
+	[4064], [4065], [4222]): Likewise.
+
+	Complements: v4.21~29 "Add pure syscall flag"
+
+2018-06-11  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mips: add missing "never fails" flag to getpgrp syscall entries.
+	* linux/mips/syscallent-n32.h ([6109]): Add NF flag.
+	* linux/mips/syscallent-n64.h ([5109]): Likewise.
+	* linux/mips/syscallent-o32.h ([4065]): Likewise.
+
+	Complements: v4.21~46 "Add SYSCALL_NEVER_FAILS flag to getpgrp"
+
+2018-06-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Update NEWS.
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+	xlat: describe IPV4_DEVCONF_* weirdness.
+	* xlat/inet_devconf_indices.in: Add a comment about fallback definitions.
+
+2018-06-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	configure.ac: fix the check for struct tc_sizespec on old kernel headers
+	* configure.ac (AC_CHECK_TYPES): Include <linux/types.h> before
+	<linux/pkt_sched.h> to check for struct tc_sizespec on linux kernel
+	headers without v2.6.29-rc4~77^2~26 fix.
+
+2018-06-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+	travis: use kernel headers from v4.17.
+	There is too much noise when using unreleased kernel uapi.
+
+	* ci/install-dependencies.sh (clone_repo): Add optional "branch"
+	argument, pass it to "git clone".
+	($KHEADERS): Pass $KBRANCH as branch argument of clone_repo.
+	* .travis.yml (matrix): Specify KBRANCH=v4.17 for
+	KHEADERS=torvalds/linux.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of IFLA_AF_SPEC netlink attribute.
+	* configure.ac (AC_CHECK_TYPES): Check for struct ifla_cacheinfo in
+	<linux/rtnetlink.h>
+	(AC_CHECK_DECLS): Check for IFLA_AF_SPEC in <linux/rtnetlink.h>.
+	* tests/nlattr_ifla_af_spec.c: New file.
+	* tests/pure_executables.list: Add nlattr_ifla_af_spec.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (nlattr_ifla_af_spec): New test.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add TEST_NESTED_NLATTR_ARRAY_EX to test_nlattr.h.
+	An ability to specify custom depth is going to be needed later to check
+	IFLA_AF_SPEC decoding.
+
+	* configure.ac (AC_CHECK_DECLS): Check for TCA_STAB_DATA in
+	<linux/pkt_sched.h>.
+	* tests/test_nlattr.h (TEST_NESTED_NLATTR_ARRAY_EX): Rename from
+	TEST_NESTED_NLATTR_ARRAY, add depth_ argument, perform padding and
+	output accordingly.
+	(TEST_NESTED_NLATTR_ARRAY): New macro, a thin wrapper around
+	TEST_NESTED_NLATTR_ARRAY_EX.
+	* tests/nlattr_tca_stab.c [!HAVE_DECL_TCA_STAB_DATA] (TCA_STAB_DATA):
+	New enumeration declaration.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: pass index to print_elem_ callback in TEST_NLATTR_NESTED_ARRAY.
+	* tests/test_nlattr.h (TEST_NLATTR_NESTED_ARRAY): Pass array index
+	to the print_elem_ callback.
+	* tests/nlattr_tca_stab.c (print_uint16): Add index argument.
+
+	tests: move common ifinfomsg boilerplate into a separate header.
+	* configure.ac (AC_CHECK_DECLS): Check for IFLA_PORT_SELF, IFLA_PROTINFO, and
+	IFLA_XDP in <linux/rtnetlink.h>.
+	* tests/nlattr_ifla.h: New file.
+	* tests/Makefile.am (EXTRA_DIST): Add it.
+	* tests/nlattr_ifla_brport.c [!HAVE_DECL_IFLA_PROTINFO] (IFLA_PROTINFO):
+	New declaration.
+	(hdrlen, init_ifinfomsg, print_ifinfomsg): Remove.
+	(IFLA_ATTR): Define to IFLA_PROTINFO.
+	Include nlattr_ifla.h.
+	* tests/nlattr_ifla_port.c [!HAVE_DECL_IFLA_PORT_SELF] (IFLA_PORT_SELF):
+	New declaration.
+	(hdrlen, init_ifinfomsg, print_ifinfomsg): Remove.
+	(IFLA_ATTR): Define to IFLA_PORT_SELF.
+	Include nlattr_ifla.h.
+	* tests/nlattr_ifla_xdp.c
+	* tests/nlattr_ifla_xdp.c [!HAVE_DECL_IFLA_XDP] (IFLA_XDP): New
+	declaration.
+	(hdrlen, init_ifinfomsg, print_ifinfomsg): Remove.
+	(IFLA_ATTR): Define to IFLA_XDP.
+	Include nlattr_ifla.h.
+
+	rtnl_link: implement IFLA_INFO_DATA for tun devices.
+	* xlat/rtnl_ifla_info_data_tun_attrs.in: New file.
+	* xlat/tun_device_types.in: Likewise.
+	* rtnl_link.c: Include xlat/rtnl_ifla_info_data_tun_attrs.h and
+	xlat/tun_device_types.h.
+	(decode_nla_tun_type, decode_nla_linkinfo_data_tun): New functions.
+	(ifla_info_data_tun_nla_decoders): New decoder dispatcher table.
+	(decode_nla_linkinfo_data): Use decode_nla_linkinfo_data_tun if kind
+	is
+	"tun".
+
+	rtnl_link: implement IFLA_INFO_DATA for bridges.
+	* xlat/rtnl_ifla_info_data_bridge_attrs.in: New file.
+	* rtnl_link.c: Include xlat/rtnl_ifla_info_data_bridge_attrs.h.
+	(ifla_info_data_bridge_nla_decoders): New decoder dispatcher table.
+	(decode_nla_linkinfo_data_bridge, decode_nla_linkinfo_data): New
+	functions.
+	(ifla_linkinfo_nla_decoders) <IFLA_INFO_DATA>: Use
+	decode_nla_linkinfo_data as a decoder.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_link: implement IFLA_INFO_XSTATS decoding.
+	So far, only CAN provides it.
+
+	* rtnl_link.c (decode_nla_linkinfo_xstats_can,
+	decode_nla_linkinfo_xstats): New function.
+	(ifla_linkinfo_nla_decoders) <IFLA_INFO_XSTATS>: Use
+	decode_nla_linkinfo_xstats as a decoder.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_link: add basic IFLA_INFO_* handling.
+	Dispatch for IFLA_INFO_* attributes should be performed based on the
+	string provided in a IFLA_INFO_KIND attribute.
+
+	* nlattr.h (struct ifla_linkinfo_ctx): New type definition.
+	* rtnl_link.c (decode_nla_linkinfo_kind): New function.
+	(ifla_linkinfo_nla_decoders) <IFLA_INFO_KIND>: Use
+	decode_nla_linkinfo_kind as decoder.
+	(decode_ifla_linkinfo): Add struct ifla_linkinfo_ctx context, pass it to
+	the decode_nlattr call as opaque data.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_link: decode IFLA_AF_SPEC.
+	* xlat/in6_addr_gen_mode.in: New file.
+	* xlat/inet6_devconf_indices.in: Likewise.
+	* xlat/inet6_if_flags.in: Likewise.
+	* xlat/inet_devconf_indices.in: Likewise.
+	* xlat/rtnl_ifla_af_spec_inet6_attrs.in: Likewise.
+	* xlat/rtnl_ifla_af_spec_inet_attrs.in: Likewise.
+	* xlat/snmp_icmp6_stats.in: Likewise.
+	* xlat/snmp_ip_stats.in: Likewise.
+	* rtnl_link.c: Include netinet/in.h, xlat/in6_addr_gen_mode.h,
+	xlat/inet_devconf_indices.h, xlat/inet6_devconf_indices.h,
+	xlat/inet6_if_flags.h, xlat/rtnl_ifla_af_spec_inet_attrs.h,
+	xlat/rtnl_ifla_af_spec_inet6_attrs.h, xlat/snmp_icmp6_stats.h,
+	and xlat/snmp_ip_stats.h.
+	(decode_ifla_inet_conf, decode_ifla_inet6_flags,
+	decode_ifla_inet6_conf, decode_ifla_inet6_stats,
+	decode_ifla_inet6_cacheinfo, decode_ifla_inet6_icmp6_stats,
+	decode_ifla_inet6_token, decode_ifla_inet6_agm, decode_ifla_af,
+	decode_ifla_af_spec): New functions.
+	(ifla_inet_nla_decoders, ifla_inet6_nla_decoders,
+	nla_decoder_table_desc): New static constant variables.
+	(ifinfomsg_nla_decoders) <[IFLA_AF_SPEC]>: Change value from NULL to
+	decode_ifla_af_spec.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: add size check to decode_nla_xval and decode_nla_flags.
+	If the field size is known, do not print as valid numbers those
+	attributes that are too short, and ignore extra data.
+
+	This change puts xval/flags printing in line with the reset of attribute
+	decoders.
+
+	* nlattr.h (struct decode_nla_xlat_opts): Add size field.
+	* nlattr.c (decode_nla_xval, decode_nla_flags): Check that len is at
+	least opts->size, limit len to opts->size.
+	(decode_nla_ip_proto): Specify size of 1.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: add UID/GID netlink attribute decoders.
+	* nlattr.h (DECL_NLA(uid), DECL_NLA(gid)): New declarations.
+	* nlattr.c (decode_nla_uid, decode_nla_gid): New functions.
+
+	nlattr: add unsigned int decoders that print in hex form.
+	* nlattr.h (DECL_NLA(x8), DECL_NLA(x16), DECL_NLA(x32), DECL_NLA(x64)):
+	New declarations.
+	* nlattr.c (DECODE_NLA_INTEGER(x8, uint8_t, "%#" PRIx8),
+	DECODE_NLA_INTEGER(x16, uint16_t, "%#" PRIx16),
+	DECODE_NLA_INTEGER(x32, uint32_t, "%#" PRIx32),
+	DECODE_NLA_INTEGER(x64, uint64_t, "%#" PRIx64)): New decoders.
+
+	nlattr: add ethernet protocol decoder.
+	* nlattr.h (DECL_NLA(ether_proto)): New declaration.
+	* nlattr.c (process_host_order, decode_nla_ether_proto): New functions.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: add value processing support for xlat/flags nlattr decoders.
+	Needed for upcoming decoder of ethernet proto which is stored in the
+	host order and has to be converted to the network order before printing
+	as an xval constant.  This change also adds ability to provide
+	prefix/suffix in order to enclose the printed value in something that
+	describes the performed conversion.
+
+	* nlattr.h (struct decode_nla_xlat_opts): Add prefix, suffix, and
+	process_fn fields.
+	* nlattr.c (decode_nla_xval, decode_nla_flags): Handle process_fn,
+	prefix, snd uffix parameters.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: introduce decode_nla_flags.
+	Similar to decode_nla_xval.
+
+	* nlattr.c (decode_nla_flags): New function.
+	* nlattr.h: (DECL_NLA(flags)): New declaration.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: add ability to pass nla_type to decoder in decode_nlattr.
+	As of now, it's impossible to introduce a dispatching nlattr decoder
+	that performs actions based on the type of the message, so let's use
+	a combination of zero decoder list size and non-zero decoder pointer
+	for this.
+
+	This is going to be used later in IFLA_AF_SPEC decoding.
+
+	* nlattr.c (decode_nlattr_with_data): Handle zero size and non-NULL
+	decoders in a special way.
+	(decode_nlattr): Add an error message about ignoring of opaque_data
+	argument when zero size and non-NULL decoders are provided.
+	* nlattr.h (decode_nlattr): Add a comment about the new special case.
+
+2018-06-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use STRINGIFY instead of _STR.
+	Remove _STR which is essentially the same as STRINGIFY but from
+	the namespace where we should not introduce new identifiers.
+
+	* tests/tests.h (_STR): Remove.
+	* tests/add_key.c (main): Replace _STR with STRINGIFY.
+	* tests/keyctl.c (XARG_STR): Likewise.
+	* tests/request_key.c (main): Likewise.
+
+2018-06-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of IFLA_EVENT netlink attribute.
+	* tests/nlattr_ifinfomsg.c (main): Add a check for IFLA_EVENT attribute
+	decoding.
+
+2018-06-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: handle xlat constants that are not identifiers.
+	Extend xlat generator to support such input lines as
+		IPV4_DEVCONF_FORWARDING-1	0
+
+	This is going to be used later in IFLA_AF_SPEC decoding.
+
+	* xlat/gen.sh (cond_def): If the xlat value is not an identifier name,
+	extract an identifier name from the beginning of xlat value.
+
+2018-06-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat.c: handle NULL xlat in lookup routines as incremental search.
+	This is going to be used later in IFLA_AF_SPEC decoding.
+
+	* xlat.c (xlookup): Add static variable pos, store xlat there when it is
+	non-NULL, use pos for lookup.
+	(xlat_search, xlat_idx): Add static variables pos and memb_left, store
+	xlat and nmemb there when xlat is non-NULL, use them for lookup.
+	(printxvals_ex): Store the last non-NULL xlat in static variable "last".
+	If the first xlat argument is NULL, use "last" instead.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-05  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat.c: cleanup printxvals_ex a bit.
+	* xlat.c (printxvals_ex): Change "str" variable visibility to the whole
+	function, jump to va_end instead of duplicating call and return, return
+	!!str.
+
+	Leverage the fact that inet_protocols xlat is sorted.
+	* defs.h (inet_protocols): Move up, add description.
+	(inet_protocols_size): New declaration.
+	* net.c (inet_protocols_size): New constant variable.
+	* nlattr.c (decode_nla_ip_proto): Specify xlat_size, set xt to XT_SORTED.
+
+2018-06-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Print arp_hardware_types as a sorted xlat.
+	* rtnl_link.c (DECL_NETLINK_ROUTE_DECODER(decode_ifinfomsg)): Use
+	PRINT_FIELD_XVAL_SORTED_SIZED instead of PRINT_FIELD_XVAL for
+	arp_hardware_types.
+	* sock.c (print_ifreq): Likewise.
+
+	Provide a value for arp_hardware_types_size array.
+	* defs.h (arp_hardware_types_size): New declaration.
+	* sockaddr.c (arp_hardware_types_size): New variable.
+
+2018-06-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	print_fields.h: introduce PRINT_FIELD_XVAL_SORTED_SIZED.
+	For those cases when array definition is not readily available
+	and should be provided separately.
+
+	* print_fields.h (PRINT_FIELD_XVAL_SORTED_SIZED): New macro.
+
+2018-06-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/opipe.test: remove unneeded run_prog call.
+	There is no need to invoke grep using run_prog.
+
+	* tests/opipe.test: Remove run_prog decoration for the grep invocation.
+
+2018-06-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check BPF_OBJ_GET_INFO_BY_FD decoding.
+	* tests/bpf-obj_get_info_by_fd-prog-v.c: New file.
+	* tests/bpf-obj_get_info_by_fd-prog.c: Likewise.
+	* tests/bpf-obj_get_info_by_fd-v.c: Likewise.
+	* tests/bpf-obj_get_info_by_fd.c: Likewise.
+	* configure.ac (AC_CHECK_HEADERS): Check for struct bpf_insn,
+	struct bpf_map_info, and struct bpf_prog_info.
+	* tests/pure_executables.list: Add bpf-obj_get_info_by_fd,
+	bpf-obj_get_info_by_fd-v, bpf-obj_get_info_by_fd-prog, and
+	bpf-obj_get_info_by_fd-prog-v.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (bpf-obj_get_info_by_fd,
+	bpf-obj_get_info_by_fd-v, bpf-obj_get_info_by_fd-prog,
+	bpf-obj_get_info_by_fd-prog-v): New tests.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf: enhance BPF_OBJ_GET_INFO_BY_FD decoder further.
+	* bpf.c (print_ebpf_prog): Remove "decode" argument, all users updated.
+	(print_bpf_prog_info): Use the minimum of xlated_prog_len values on
+	entering and exiting syscall as the size of xlated_prog_insns array
+	to be decoded.  Likewise, use the minimum of nr_map_ids values on entering
+	and exiting syscall as the size of map_ids array to be decoded.
+
+2018-06-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: enhance BPF_OBJ_GET_INFO_BY_FD decoder.
+	* bpf.c (print_bpf_map_info): Print only those fields that are
+	present in the structure, as it has been growing over time.
+	(print_bpf_prog_info): Likewise.  Print map_ids field as an array
+	of uint32_t instead of uint64_t; print "name" field.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: move handling of the saved state to BPF_OBJ_GET_INFO_BY_FD decoder.
+	As it is needed for proper info_len printing on exiting.
+
+	* bpf.c (print_bpf_obj_info_fn): Change return type to void, add "saved"
+	argument.
+	(struct obj_get_info_saved): New type definition.
+	(print_bpf_map_info, print_bpf_prog_info): Change return type to void,
+	add "saved" argument, do not handle private tcb data allocation and
+	obtainment.
+	(print_bpf_obj_info_addr): Change return type to void, add tcb argument,
+	print the address only on exiting.
+	(print_bpf_obj_info): Change return type to void, add "saved" argument.
+	(BEGIN_BPF_CMD_DECODER(BPF_OBJ_GET_INFO_BY_FD)): Handle private data
+	allocation/saving/restoring, use it for storing/printing info_len field.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: print log_buf field as a string.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)): Print log_buf field
+	as a string.
+	* tests/bpf.c: Update expected output.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: print xlated_prog_insns only when xlated_prog_len had not been 0.
+	If xlated_prog_len is zero on entering syscall and non-zero on exiting,
+	the program itself is not written into xlated_prog_insns.
+
+	* bpf.c (print_ebpf_prog): Add decode argument, print the address only
+	if decode is false.
+	(BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)): Specify decode == true argument
+	to print_ebpf_prog.
+	(print_bpf_prog_info): Specify saved xlated_prog_len as decode argument
+	to print_ebpf_prog.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: move print_big_u64_addr inside print_ebpf_prog.
+	* bpf.c (print_ebpf_prog): Add static qualifier.  Change the type
+	of "addr" argument from kernel_ulong_t to uint64_t, print it using
+	print_big_u64_addr.
+	(BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD), print_bpf_prog_info): Do not call
+	print_big_u64_addr before print_ebpf_prog.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-06-02  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf_attr.h: add ATTRIBUTE_ALIGNED(8) to all fields of type uint64_t.
+	Our policy is that all fields of type uint64_t in this header file
+	must have this attribute.
+
+	This shouldn't cause any contradictions with <linux/bpf.h>
+	unless the latter is buggy.
+
+	By word "buggy" I mean containing such changes as Linux kernel commit
+	v4.16-rc1~123^2~109^2~5^2~4.
+
+	* bpf_attr.h (struct BPF_MAP_UPDATE_ELEM_struct): Add
+	ATTRIBUTE_ALIGNED(8) to "flags" field.
+	(struct bpf_prog_info_struct): Add ATTRIBUTE_ALIGNED(8) to "load_time"
+	field.
+
+2018-06-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: cast printf arguments to short when %h format qualifier is used.
+	Reported by clang.
+
+	* tests/mknod.c (main): Cast printf argument for %#03ho format to short.
+	* tests/mknodat.c (main): Likewise.
+	* tests/net-sockaddr.c (main): Cast printf argument for %hu format
+	to short.
+	* tests/semop.c (main): Likewise.
+
+2018-06-02  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat/evdev_keycode.in: remove constants with duplicating values.
+	Those are used for describing input device category and not specific
+	button.
+
+	Reported by clang.
+
+	* xlat/evdev_keycode.in (BTN_MOUSE, BTN_JOYSTICK, BTN_GAMEPAD, BTN_DIGI,
+	BTN_WHEEL, BTN_TRIGGER_HAPPY): Remove.
+
+2018-06-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	configure.ac: include <sys/socket.h> before <linux/rtnetlink.h>
+	This is needed for old Linux UAPI headers that do no contain commit
+	v3.1-rc2~19^2~29.
+
+	* configure.ac: Include <sys/socket.h> before <linux/rtnetlink.h>
+	in AC_CHECK_* invocations.
+
+2018-06-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	configure.ac: check for linux/rtnetlink.h instead of linux/if_link.h for declarations
+	Historically, type definitions and declarations related to netlink route
+	interface attributes were in linux/rtnetlink.h, later they were moved
+	elsewhere (first linux/if.h, then linux/if_link.h) with the inclusion
+	of the corresponding header file in linux/rtnetlink.h.
+
+	* configure.ac: Use <linux/rtnetlink.h> instead of <linux/if_link.h>
+	in checks for interface netlink attributes-related declarations
+	and definitions.
+
+2018-06-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	m4: move the gawk script from m4/gen_bpf_attr_m4.sh into a separate file
+	As it turns out, old versions of gawk do not support -e option.
+
+	* m4/gen_bpf_attr_m4.sh: Move the gawk script ...
+	* m4/gen_bpf_attr_m4.awk: ... here.
+
+2018-06-01  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	s390: wire up kexec_file_load syscall.
+	* linux/s390/syscallent.h ([381]): Add kexec_file_load syscall.
+	* linux/s390/syscallent.h ([381]): Likewise.
+
+2018-06-01  Zhibin Li  <08826794brmt@gmail.com>
+
+	tests: check short read of struct flock/flock64.
+	* tests/fcntl-common.c (test_flock_einval): Check short read
+	of struct flock.
+	(test_flock64_einval): Check short read of struct flock64.
+
+2018-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: extend struct flock/flock64 decoding checks.
+	* tests/fcntl-common.c (test_flock_einval, test_flock): Create
+	struct_kernel_flock object using tail_alloc.
+	(test_flock64_einval): Create struct_kernel_flock64 object using
+	tail_alloc.
+	* tests/fcntl64.c (test_flock64_lk64): Likewise.
+
+2018-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: extend F_OFD_* decoding checks.
+	Check that non-faulty F_OFD_* fcntl operations are decoded properly.
+
+	* tests/fcntl-common.c: Include <string.h>.
+	(test_flock64_ofd): New function.
+	(test_flock64): Invoke it, remove [F_OFD_SETLK].
+
+2018-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests/fcntl-common.c: define and initialize errstr.
+	Initialize errstr inside invoke_test_syscall so that its users
+	won't have to go into trouble of caring about clobbering errno.
+
+	* tests/fcntl-common.c (errstr): New variable.
+	(invoke_test_syscall): Initialize it.
+	(test_flock_einval, test_flock64_einval, test_flock,
+	test_f_owner_ex_type_pid): Use it.
+	* tests/fcntl.c (test_flock64_undecoded): Likewise.
+	* tests/fcntl64.c (test_flock64_lk64): Likewise.
+
+2018-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests/fcntl-common.c: add fd argument to invoke_test_syscall.
+	Extend invoke_test_syscall for later use with different file
+	descriptors.
+
+	* tests/fcntl-common.c (invoke_test_syscall): Add fd argument, pass it
+	to TEST_SYSCALL_NR syscall.  All users updated.
+
+2018-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: move F_OFD_SETLK* checks from fcntl64.c to fcntl-common.c.
+	This change enables F_OFD_SETLK* tests for fcntl as well.
+
+	* tests/fcntl64.c (test_flock64): Rename to test_flock64_lk64.
+	[F_OFD_SETLK]: Remove.
+	(test_flock64_einval): Move ...
+	* tests/fcntl-common.c: ... here.
+	(test_flock64_lk64): New protype.
+	(test_flock64_einval, test_flock64): New functions.
+	* tests/fcntl.c (test_flock64_einval): Rename to test_flock64_undecoded.
+	(TEST_FLOCK64_UNDECODED): New macro.
+	(test_flock64): Rename to test_flock64_lk64, replace TEST_FLOCK64_EINVAL
+	with TEST_FLOCK64_UNDECODED.
+
+2018-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: move F_OWNER_* tests to fcntl-common.c.
+	This change enables F_OWNER_* tests for fcntl64 as well.
+
+	* tests/fcntl.c: Move main, [TEST_FLOCK64_EINVAL],
+	and [TEST_F_OWNER_EX] ...
+	* tests/fcntl-common.c: ... here.
+	(test_flock64): New prototype.
+	* tests/fcntl64.c (main): Remove.
+
+2018-06-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: rename struct_flock.c to fcntl-common.c.
+	It is not limited to struct flock, more fcntl tests are going to land
+	in this file.
+
+	* tests/struct_flock.c: Rename to fcntl-common.c.
+	* tests/Makefile.am (EXTRA_DIST): Rename struct_flock.c
+	to fcntl-common.c.
+	* tests/fcntl.c: Likewise.
+	* tests/fcntl64.c: Likewise.
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of new FRA_* netlink attributes.
+	* configure.ac (AC_CHECK_TYPES): Check for struct fib_rule_port_range
+	in <linux/fib_rules.h>.
+	* tests/nlattr_fib_rule_hdr.c: Include <linux/in.h>.
+	(FRA_PROTOCOL, FRA_IP_PROTO, FRA_SPORT_RANGE, FRA_DPORT_RANGE): New
+	macro constants.
+	[!HAVE_STRUCT_FIB_RULE_PORT_RANGE] (struct fib_rule_port_range): New
+	type.
+	(main): Check decoding of new FRA_* netlink attributes.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_rule: decode new FRA_* attributes.
+	* nlattr.h (DECL_NLA(ip_proto), DECL_NLA(rt_proto)): New declarations.
+	* nlattr.c (decode_nla_ip_proto): New function.
+	* rtnl_route.c (decode_nla_rt_proto): Likewise.
+	* rtnl_rule.c (decode_rule_port_rang): Likewise.
+	(fib_rule_hdr_nla_decoders) <[FRA_PROTOCOL]>: New attribute, introduced
+	by Linux commit v4.17-rc1~148^2~371.
+	(fib_rule_hdr_nla_decoders) <[FRA_IP_PROTO], [FRA_SPORT_RANGE],
+	[FRA_DPORT_RANGE]>: New attributes, introduced by Linux commit
+	v4.17-rc1~148^2~328^2~4.
+	* xlat/rtnl_rule_attrs.in (FRA_PROTOCOL, FRA_IP_PROTO, FRA_SPORT_RANGE,
+	FRA_DPORT_RANGE): New constants.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: introduce decode_nla_xval helper.
+	* nlattr.c (decode_nla_xval): New function.
+	* nlattr.h: Include "xlat.h".
+	(struct decode_nla_xlat_opts): New type.
+	(DECL_NLA(xval)): New declaration.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-30  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Move definitions of xlat_type and xlat_style from defs.h to xlat.h.
+	* defs.h (enum xlat_type, enum xlat_style, XLAT_STYLE_FORMAT_SHIFT,
+	XLAT_STYLE_VERBOSITY_MASK, XLAT_STYLE_FORMAT_MASK, XLAT_STYLE_SPEC_BITS,
+	XLAT_STYLE_MASK): Move ...
+	* xlat.h: ... here.
+
+	travis: switch from gcc-7 to gcc-8.
+	* .travis.yml (matrix): Change gcc-7 to gcc-8.
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: use syscall() for ioctl() calls with oversized arguments.
+	* tests/ioctl_inotify.c (sys_ioctl): New function.
+	(main): Use sys_ioctl for ioctl calls with oversized arguments.
+	* tests/ioctl_loop.c: Likewise.
+	* tests/ioctl_perf.c: Likewise.
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	print_ifindex: respect xlat style settings.
+	Print interface indices according to the preferred xlat style settings.
+
+	* print_ifindex.c (INI_PFX, INI_SFX): New helper macros.
+	[HAVE_IF_INDEXTONAME] (get_ifname): New function.
+	[HAVE_IF_INDEXTONAME] (print_ifindex): Implement as a wrapper around
+	get_ifname and print_xlat_ex.
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/test_nlattr.h: fix pointer calculation in TEST_NLATTR_ARRAY, take 2
+	The old code works only when an array contains exactly two items.
+
+	* tests/test_nlattr.h (TEST_NLATTR_ARRAY): Fix pointer address
+	for the case of incomplete read.
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: print index names in netlink meminfo array.
+	* xlat/netlink_sk_meminfo_indices.in: New file.
+	* nlattr.c: Include xlat/netlink_sk_meminfo_indices.h.
+	(decode_nla_meminfo): Use print_array_ex, pass
+	netlink_sk_meminfo_indices as index xlat table.
+	* tests/nlattr_inet_diag_msg.c: Update expected output.
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce ARRSZ_PAIR macro.
+	A shorthand similar to ARG_STR in its purpose: it provides and ability
+	to pass an array an its size without variable name duplication.
+
+	* macros.h (ARRSZ_PAIR): New macro.
+
+2018-05-30  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	print_array: add support for printing array indices.
+	* defs.h (XLAT_STYLE_SPEC_BITS, XLAT_STYLE_MASK): New macro constants.
+	(tfetch_mem_fn, print_fn): New typedefs.
+	(enum print_array_flag_bits, enum print_array_flags): New enumerations.
+	(print_array_ex): Rename from print_array, add flags, index_xlat,
+	index_xlat_size, and index_dflt arguments.
+	(print_array): New static inline function, a thin wrapper around
+	print_array_ex.
+	util.c: Include "xlat.h".
+	(print_array): Rename to print_array_ex, add flags, index_xlat,
+	index_xlat_size, and index_dflt arguments.  Print array indices
+	according to the style settings specified by flags if PAF_PRINT_INDICES
+	is set.
+
+2018-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Enhance printing of unfetchable object addresses in sequences and arrays
+	* btrfs.c (btrfs_print_tree_search): Print the address of unfetchable
+	object inside the sequence using printaddr_comment.
+	* msghdr.c (decode_msg_control): Likewise.
+	* execve.c (printargv): Print the address of unfetchable object inside
+	the array using printaddr_comment.
+	* netlink.c (fetch_nlmsghdr): Add in_array argument.  When in_array
+	is true, print the address of unfetchable object using
+	printaddr_comment.
+	* nlattr.c (fetch_nlattr): Likewise.
+	* tests/execve.c (main): Update expected output.
+	* tests/execveat.c (main): Likewise.
+	* tests/msg_control.c (test_scm_rights1, test_scm_rights2,
+	test_scm_security): Likewise.
+	* tests/netlink_protocol.c (send_query): Likewise.
+	* tests/nlattr.c (test_nlattr): Likewise.
+
+2018-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	print_array: enhance printing of unfetchable object addresses.
+	When umoven_func invocation fails to fetch data, it prints the faulty
+	address.  If this happens to a subsequent umoven_func invocation,
+	the printed address may be undistinguishable from a valid data printed
+	by print_func, e.g. when the data is printed in a numeric form like
+	[0x1, 0x2, 0x3, 0xdefaced].
+
+	Fix this source of confusion by moving the printing of the faulty
+	address from umoven_func to print_array itself.  This change renames
+	umoven_func to tfetch_mem_func and changes its semantics, so that
+	 - tfetch_mem_func never prints anything;
+	 - tfetch_mem_func returns true if the fetch succeeded,
+	   and false otherwise.
+
+	* defs.h (print_array): Replace umoven_func argument with
+	tfetch_mem_func.
+	* util.c (print_array): Replace umoven_func argument with
+	tfetch_mem_func, document expected tfetch_mem_func return value
+	semantics.  When tfetch_mem_func returns false, print either addr
+	or "... /* addr */" depending on the context (inside the array or not).
+	* bpf.c (print_ebpf_prog, print_bpf_prog_info,
+	BEGIN_BPF_CMD_DECODER(BPF_PROG_QUERY)): Replace umoven_or_printaddr
+	argument of print_array with tfetch_mem.
+	* bpf_filter.c (print_bpf_fprog): Likewise.
+	* btrfs.c (btrfs_print_logical_ino_container,
+	btrfs_print_ino_path_container, btrfs_print_qgroup_inherit,
+	btrfs_ioctl): Likewise.
+	* dm.c (dm_decode_dm_target_deps): Likewise.
+	* epoll.c (epoll_wait_common): Likewise.
+	* file_ioctl.c (file_ioctl): Likewise.
+	* ipc_sem.c (tprint_sembuf_array): Likewise.
+	* kexec.c (print_kexec_segments): Likewise.
+	* mem.c (SYS_FUNC(subpage_prot)): Likewise.
+	* net.c (print_getsockopt): Likewise.
+	* netlink.c (decode_nlmsgerr_attr_cookie): Likewise.
+	* netlink_netlink_diag.c (decode_netlink_diag_groups): Likewise.
+	* netlink_packet_diag.c (decode_packet_diag_mclist): Likewise.
+	* netlink_unix_diag.c (decode_unix_diag_inode): Likewise.
+	* nlattr.c (decode_nla_meminfo): Likewise.
+	* numa.c (print_nodemask, SYS_FUNC(move_pages),
+	* perf_ioctl.c (perf_ioctl_query_bpf): Likewise.
+	* poll.c (decode_poll_entering): Likewise.
+	* printsiginfo.c (print_siginfo_array): Likewise.
+	* rtnl_tc.c (decode_tca_stab_data): Likewise.
+	* sock.c (decode_ifconf): Likewise.
+	* uid.c (print_groups): Likewise.
+	* io.c (SYS_FUNC(io_submit), SYS_FUNC(io_getevents)): Replace
+	umoven_or_printaddr argument of print_array with tfetch_mem.
+	(tprint_iov_upto): Replace umoven_or_printaddr_ignore_syserror
+	with tfetch_mem_ignore_syserror.
+	* v4l2.c (print_v4l2_format_fmt): Replace umoven_or_printaddr argument
+	of print_array with tfetch_mem.
+	(print_v4l2_ext_controls): Replace umoven_or_printaddr_ignore_syserror
+	with tfetch_mem_ignore_syserror.
+	* mmsghdr.c (fetch_struct_mmsghdr_or_printaddr): Rename
+	to fetch_struct_mmsghdr_for_print, do not print address, return bool.
+	(decode_mmsgvec): Replace fetch_struct_mmsghdr_or_printaddr
+	with fetch_struct_mmsghdr_for_print.
+	* tests/aio.c (main): Update expected output.
+	* tests/bpf.c (print_BPF_PROG_QUERY_attr5): Likewise.
+	* tests/ioctl_perf-success.c (main): Likewise.
+	* tests/ioctl_v4l2.c (main): Update expected output.
+	* tests/kexec_load.c (main): Likewise.
+	* tests/mmsg_name.c (test_mmsg_name): Update expected output.
+	* tests/move_pages.c (print_page_array, print_node_array): Likewise.
+	* tests/poll.c (print_pollfd_array_entering): Likewise.
+	* tests/preadv-pwritev.c (main): Likewise.
+	* tests/preadv2-pwritev2.c (dumpio): Likewise.
+	* tests/process_vm_readv_writev.c (print_iov): Likewise.
+	* tests/pwritev.c (print_iovec): Likewise.
+	* tests/readv.c (main): Likewise.
+	* tests/seccomp-filter-v.c
+	* tests/semop.c (main): Likewise.
+	* tests/set_mempolicy.c (print_nodes): Likewise.
+	* tests/setgroups.c (main): Likewise.
+	* tests/test_nlattr.h (print_nlattr) Likewise.
+
+	Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2018-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Introduce tfetch_* family of functions and macros.
+	These new functions are going to be used instead of umove_or_printaddr*
+	as umoven_func argument of print_array.
+
+	* defs.h (tfetch_mem64, tfetch_mem64_ignore_syserror): New
+	function prototypes.
+	(tfetch_mem, tfetch_mem_ignore_syserror): New static inline
+	wrappers.
+	(tfetch_obj): New macro wrapper around tfetch_mem.
+	* util.c (tfetch_mem64, tfetch_mem64_ignore_syserror): New
+	functions.
+	(umoven_or_printaddr64, umoven_or_printaddr64_ignore_syserror): Use
+	them.
+
+2018-05-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Introduce printaddr_comment.
+	* defs.h (printaddr_comment): New static inline wrapper around
+	tprintf_comment.
+
+	Turn printaddr into a thin wrapper around printaddr64.
+	* util.c (printaddr): Move ...
+	* defs.h: ... here, add "static inline" qualifiers.
+
+2018-05-29  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	defs.h: add comments about umove* return values.
+	* defs.h (umoven, umoven_or_printaddr64,
+	umoven_or_printaddr64_ignore_syserror, umovestr): Add comments about
+	return values.
+
+2018-05-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use TAIL_ALLOC_OBJECT_CONST_PTR where appropriate.
+	* tests/kcmp.c (main): Use TAIL_ALLOC_OBJECT_CONST_PTR.
+	* tests/modify_ldt.c (main): Likewise.
+	* tests/netlink_protocol.c (send_query): Likewise.
+	* tests/ptrace.c (test_peeksiginfo, main): Likewise.
+	* tests/s390_guarded_storage.c (main): Likewise.
+	* tests/s390_sthyi.c (main): Likewise.
+	* tests/xet_thread_area_x86.c (main): Likewise.
+
+2018-05-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: decode bpf_attr.info field used by BPF_OBJ_GET_INFO_BY_FD command.
+	* bpf_attr.h [!BPF_TAG_SIZE] (BPF_TAG_SIZE): Define.
+	[BPF_TAG_SIZE]: Check that BPF_TAG_SIZE is 8.
+	(struct bpf_map_info_struct, struct bpf_prog_info_struct): New
+	structures.
+	(bpf_map_info_struct_size, expected_bpf_map_info_struct_size,
+	bpf_prog_info_struct_size, expected_bpf_prog_info_struct_size): New
+	macro constants.
+	* bpf.c (print_bpf_obj_info_fn): New type.
+	(print_bpf_map_info, print_bpf_prog_info, fetch_bpf_obj_info,
+	print_bpf_obj_info_addr, print_bpf_obj_info): New functions.
+	(BEGIN_BPF_CMD_DECODER(BPF_OBJ_GET_INFO_BY_FD)): Print bpf_fd and info_len
+	fields only on entering, call print_bpf_obj_info for printing info field.
+	* tests/bpf.c (BPF_OBJ_GET_INFO_BY_FD_checks): Print info field
+	as a pointer.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: add support for checking structures outside union bpf_attr.
+	struct bpf_prog_info and bpf_map_info need essentially the same handling
+	as union bpf_attr.
+
+	* gen_bpf_attr_check.sh: Derive type_name from $struct if it doesn't
+	start with "BPF_", derive TYPE_NAME from type_name, use them in code
+	generation.
+	* m4/gen_bpf_attr_m4.sh: Rewrite parsing/generation code into awk,
+	add support for structures outside union bpf_attr.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf: remove bpf_priv_data.
+	As various bpf commands need different data to save between entering
+	and exiting of the syscall, do not emulate union bpf_attr approach.
+
+	* bpf.c (struct bpf_priv_data): Remove.
+	(DECL_BPF_CMD_DECODER): Remove "struct bpf_priv_data *" argument.
+	(BEGIN_BPF_CMD_DECODER(BPF_PROG_QUERY)): Use set_tcb_priv_ulong
+	and get_tcb_priv_ulong to keep bpf_attr.query.prog_cnt field.
+	(SYS_FUNC(bpf)): Remove priv variable, do not initialize it,
+	and do not pass it to bpf_cmd_decoders.
+
+2018-05-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add union bpf_attr.query.prog_ids field decoding checks.
+	* tests/bpf-success-v.c: New file.
+	* tests/bpf-success.c: Likewise.
+	* tests/bpf-success-v.test: New test.
+	* tests/bpf-success.test: Likewise.
+	* tests/.gitignore: Add bpf-success and bpf-success-v.
+	* tests/Makefile.am (check_PROGRAMS): Likewise.
+	(DECODER_TESTS): Add bpf-success.test and bpf-success-v.test.
+	* tests/bpf.c [INJECT_RETVAL] (sys_bpf): Check that retuned value
+	is equivalent to the injected one; append "(INJECTED)" string to errstr.
+	(prog_load_ids, prog_load_ids_ptr): New variables.
+	(init_BPF_PROG_QUERY_attr4, print_BPF_PROG_QUERY_attr4,
+	init_BPF_PROG_QUERY_attr5, print_BPF_PROG_QUERY_attr5): New functions.
+	(BPF_PROG_QUERY_checks): Drop "const" qualifier, add new checks.
+
+	bpf: BPF_PROG_QUERY bpf_attr.query.prog_ids printing fixes.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_QUERY)): Use
+	print_uint32_array_member instead of print_uint64_array_member for
+	printing prog_ids elements (and change the type of prog_id_buf from
+	uint64_t to uint32_t), as they are 32-bit; use common trick with
+	print_big_u64_addr for handling possible ambiguity with prog_ids
+	address.
+	* tests/bpf.c (BIG_ADDR_MAYBE): New macro.
+	(BPF_PROG_QUERY_checks): Update expected output.
+
+	bpf: add support for instruction decoding.
+	* xlat/ebpf_regs.in: New file.
+	* bpf.c (struct ebpf_insn, struct ebpf_insns_data): New type definitions.
+	(print_ebpf_insn, print_ebpf_prog): New functions.
+	(DEF_BPF_CMD_DECODER(BPF_PROG_LOAD)): Use them.
+
+2018-05-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check decoding of successful PERF_EVENT_IOC_{ID,QUERY_BPF} ioctls
+	As these have some argument output on the exit path.
+
+	* tests/ioctl_perf-success.c: New file.
+	* tests/ioctl_perf-success.test: New test.
+	* tests/Makefile.am (DECODER_TESTS): Add it.
+	(check_PROGRAMS): Add ioctl_perf-success.
+	* tests/.gitignore: Likewise.
+	* tests/ioctl_perf.c: Remove TODO.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Implement PERF_EVENT_IOC_* decoding.
+	* perf.c (fetch_perf_event_attr, print_perf_event_attr): Remove "static"
+	qualifier.
+	* defs.h (fetch_perf_event_attr, print_perf_event_attr): New
+	declarations.
+	* perf_event_struct.h (struct perf_event_query_bpf): New type
+	definition.
+	* perf_ioctl.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* xlat/perf_ioctl_cmds.in: New file.
+	* xlat/perf_ioctl_flags.in: Likewise.
+	* ioctl.c (ioctl_decode) <case '$'>: Call perf_ioctl.
+	* tests/gen_tests.in (ioctl_perf): New test.
+	* tests/ioctl_perf.c: New file.
+	* tests/pure_executables.list: ioctl_perf.
+	* tests/.gitignore: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: fix ipc_msgbuf.test.
+	* tests/ipc_msgbuf.test: Fix -a argument.
+
+2018-05-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update IPPROTO_* constants.
+	* xlat/inet_protocols.in (IPPROTO_GGP, IPPROTO_HELLO, IPPROTO_ND):
+	Remove, not defined in Linux.
+	(IPPROTO_BEETPH): New constant, introduced by Linux commit
+	v2.6.19-rc1~33^2.
+	(IPPROTO_L2TP): New constant, introduced by Linux commit
+	v2.6.35-rc1~473^2~594.
+	(IPPROTO_MH): New constant, introduced by Linux commit
+	v2.6.19-rc1~1272^2~157.
+	Add default values to constants, sort the file.
+
+	xlat: add fallback definitions to RTPROT_* constants.
+	* xlat/routing_protocols.in: Add default values to constants.
+
+	xlat: add SECCOMP_FILTER_FLAG_SPEC_ALLOW.
+	* xlat/seccomp_filter_flags.in (SECCOMP_FILTER_FLAG_SPEC_ALLOW): New
+	constant, introduced by Linux commit v4.17-rc3-24-g00a02d0.
+	* tests/seccomp-filter.c: Update expected output.
+	* tests/seccomp-filter-v.c: Likewise.
+
+	prctl: add PR_GET_SPECULATION_CTRL/PR_SET_SPECULATION_CTRL decoding.
+	* xlat/pr_spec_cmds.in: New fille.
+	* xlat/pr_spec_get_store_bypass_flags.in: Likewise.
+	* xlat/pr_spec_set_store_bypass_flags.in: Likewise.
+	* xlat/prctl_options.in (PR_GET_SPECULATION_CTRL,
+	PR_SET_SPECULATION_CTRL): New constants, introduced by Linux commit
+	v4.17-rc3-15-gb617cfc.
+	* prctl.c (SYS_FUNC(prctl)) <case PR_GET_SPECULATION_CTRL,
+	case PR_SET_SPECULATION_CTRL>: Implement decoding of new prctl options.
+	* tests/Makefile.am (check_PROGRAMS): Add prctl-spec-inject.
+	(DECODER_TESTS): Add prctl-spec-inject.test.
+	* tests/prctl-spec-inject.c: New file.
+	* tests/prctl-spec-inject.test: New test.
+	* tests/.gitignore: Add prctl-spec-inject.
+
+	tests: add keyctl variants with different xlat verbosity levels.
+	* tests/keyctl-Xabbrev.c: New file.
+	* tests/keyctl-Xraw.c: Likewise.
+	* tests/keyctl-Xverbose.c: Likewise.
+	* tests/keyctl.c (XARG_STR): New macro.
+	(do_keyctl): Print command in accordance with XLAT_RAW/XLAT_VERBOSE settings.
+	(main): Update expected output.
+	* tests/pure_executables.list: Add keyctl-Xabbrev, keyctl-Xraw,
+	and keyctl-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (keyctl-Xabbrev, keyctl-Xraw, keyctl-Xverbose): New
+	tests.
+
+	keyctl: print KEYCTL_SET_REQKEY_KEYRING argument as an integer.
+	* xlat/key_reqkeys.in: Add #val_type int.
+	* keyctl.c (SYS_FUNC(keyctl)) <case KEYCTL_SET_REQKEY_KEYRING>: Print
+	arg2 as an integer.
+	* tests/keyctl.c: Update expected output.
+
+	keyctl: respect xlat style when printing errno.
+	* keyctl.c (keyctl_reject_key): Use print_xlat_ex for printing error
+	argument.
+
+2018-05-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	syscall.c: unify error value printing.
+	There's little reason not to decode error code for syscalls printed in
+	raw; moreover, it creates inconsistencies for unknown syscall printing.
+
+	Another issue was with error numbers unknown to strace: previously, they
+	were printed as "... = -1 1234 (Unknown error 1234)" which looked kinda
+	weird.
+
+	* syscall.c (print_err_ret): New function.
+	(syscall_exiting_trace): Remove u_error variable, use tcp->u_error
+	instead. Remove u_error_str variable.
+	(syscall_exiting_trace) <if (raw(tcp))>: Call print_err_ret if u_error
+	is non-zero.
+	(syscall_exiting_trace) <if (!(sys_res & RVAL_NONE) && tcp->u_error)>:
+	Use print_err_ret for default error printing.
+	* tests/nsyscalls.c [!LINUX_MIPSO32] (test_syscall): Update expected
+	output.
+	* tests/qual_fault.c (invoke) <if (is_raw)>: Likewise.
+	* strace.1.in (.SH DESCIPTION): Update unknown syscall example.
+
+2018-05-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ioctl: implement INOTIFY_IOC_SETNEXTWD decoding.
+	* inotify_ioctl.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* defs.h (DECL_IOCTL(inotify)): New declaration.
+	* ioctl.c (ioctl_decode) <case 'I'>: Call inotify_ioctl.
+	* tests/ioctl_inotify.c: New file.
+	* tests/.gitignore: Add ioctl_inotify.
+	* tests/pure_executables.list: Likewise.
+	* tests/gen_tests.in (ioctl_inotify): New test.
+
+	tests/test_nlattr.h: avoid testing cropped objects of size 1.
+	* tests/test_nlattr.h (TEST_NLATTR_OBJECT_EX_): Check
+	"len < sizeof(obj_)" case only if "sizeof(obj_) > 1".
+
+	tests: pass index to print_elem_ callback in TEST_NLATTR_ARRAY.
+	* tests/test_nlattr.h (TEST_NLATTR_ARRAY): Pass array index to the
+	print_elem_ callback.
+	* tests/nlattr_inet_diag_msg.c (print_uint): Add index argument.
+	* tests/nlattr_netlink_diag_msg.c (print_xlong): Likewise.
+	* tests/nlattr_packet_diag_msg.c (print_packet_diag_mclist,
+	print_sock_filter): Likewise.
+	* tests/nlattr_unix_diag_msg.c (print_uint): Likewise.
+
+2018-05-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: further cleanup bpf big address checks.
+	Replace BIG_ADDR_IS_64BIT and BIG_ADDR_IS_32BIT with BIG_ADDR().
+
+	* tests/bpf.c (BIG_ADDR): New macro.
+	(BIG_ADDR_IS_64BIT, BIG_ADDR_IS_32BIT): Remove.
+	(BPF_PROG_LOAD_checks, BPF_OBJ_PIN_checks,
+	BPF_RAW_TRACEPOINT_OPEN_checks): Use BIG_ADDR() instead of
+	BIG_ADDR_IS_64BIT and BIG_ADDR_IS_32BIT.
+
+2018-05-23  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: cleanup bpf big address checks.
+	Introduce BIG_ADDR_IS_64BIT and BIG_ADDR_IS_32BIT to reduce redundancy.
+
+	* tests/bpf.c (BIG_ADDR_IS_64BIT, BIG_ADDR_IS_32BIT): New macros.
+	(BPF_PROG_LOAD_checks, BPF_OBJ_PIN_checks,
+	BPF_RAW_TRACEPOINT_OPEN_checks): Use them.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: add support for BPF_RAW_TRACEPOINT_OPEN command decoding.
+	* bpf_attr.h (struct BPF_RAW_TRACEPOINT_OPEN_struct): New type
+	definition.
+	(BPF_RAW_TRACEPOINT_OPEN_struct_size,
+	expected_BPF_RAW_TRACEPOINT_OPEN_struct_size): New macros.
+	* xlat/bpf_commands.in (BPF_RAW_TRACEPOINT_OPEN): New constant,
+	introduced by Linux commit v4.17-rc1~148^2~19^2~4^2~3.
+	* xlat/bpf_prog_types.in (BPF_PROG_TYPE_RAW_TRACEPOINT): Likewise.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_RAW_TRACEPOINT_OPEN)): New bpf
+	command decoder.
+	(SYS_FUNC(bpf)) <bpf_cmd_decoders[]>: Add
+	BPF_CMD_ENTRY(BPF_RAW_TRACEPOINT_OPEN).
+	* tests/bpf.c (union bpf_attr_data): Add
+	BPF_ATTR_DATA_FIELD(BPF_RAW_TRACEPOINT_OPEN).
+	(BPF_PROG_LOAD_checks): Update.
+	(init_BPF_RAW_TRACEPOINT_attr2): New function.
+	(BPF_RAW_TRACEPOINT_OPEN_checks): New checks array.
+	(main) <checks>: Add CHK(BPF_RAW_TRACEPOINT_OPEN).
+
+	bpf: add support for decoding struct bpf_attr.expected_attach_type field
+	* bpf_attr.h (struct BPF_PROG_LOAD_struct): Add expected_attach_type
+	field.
+	(BPF_PROG_LOAD_struct_size): Update to offsetofend of
+	expected_attach_type field.
+	(expected_BPF_PROG_LOAD_struct_size): Update to 72.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)): Decode
+	expected_attach_type field.
+	* tests/bpf.c: Update expected output.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: do not assume that SK_MEMINFO_VARS is constant.
+	SK_MEMINFO_VARS changes over time (as it was in Linux commit
+	v4.7-rc1~154^2~354^2~4, for example), so we cannot use it
+	for sanity checks.
+
+	* nlattr.c (print_meminfo): Remove.
+	(decode_nla_meminfo): Use generic print_uint32_array_member element
+	printer callback.
+	* tests/nlattr_inet_diag_msg.c (main): Update expected output.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce print_uint32_array_member helper function.
+	Analogous to print_int32_array_member, this helper is going to be used
+	in various decoders, including BPF_PROG_QUERY, PERF_EVENT_IOC_*,
+	and netlink meminfo.
+
+	* defs.h (print_uint32_array_member): New declaration.
+	* util.c (print_uint32_array_member): New function.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce print_int32_array_member helper function.
+	Analogous to print_uint64_array_member, this helper is going to be used
+	for IFLA_AF_SPEC decoding.
+
+	* defs.h (print_int32_array_member): New declaration.
+	* util.c (print_int32_array_member): New function.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	defs.h: move print_uint64_array_member and print_array declarations down
+	In preparation for the forthcoming changes.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/test_nlattr.h: fix pointer calculation in TEST_NLATTR_ARRAY.
+	The old code works only when an array contains exactly two items.
+
+	* tests/test_nlattr.h (TEST_NLATTR_ARRAY): Fix pointer address
+	for the case of incomplete read.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sockaddr: add support for sockaddr_l2 without l2_bdaddr_type.
+	Apparently, struct sockaddr_l2 changed over time: the l2_bdaddr_type
+	field was added only by commit v3.5-rc1~35^2~3^2~18^2^2~39.
+
+	* configure.ac (AC_CHECK_HEADERS): Move bluetooth/bluetooth.h check into
+	a separate check.
+	(AC_CHECK_HEADERS([bluetooth/bluetooth.h])): New check, also checks for
+	struct sockaddr_l2.l2_bdaddr_type member in case of success.
+	* sockaddr.c (print_sockaddr_data_bt) <case offsetof(struct sockaddr_l2,
+	l2_bdaddr_type)>: Add to sizeof(struct sockaddr_l2) case. Print
+	l2_bdaddr_type field only if the provided sockaddr is big enough.
+	* tests/net-sockaddr.c (check_l2): Put l2_bdaddr_type usage/printing
+	under HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE ifdef, add a check for the
+	sockaddr_l2 structure without the l2_bdaddr_type field.
+
+2018-05-23  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sock: guess ifr_hwaddr size in SIOCSIFHWADDR/SIOCGIFHWADDR.
+	And make the output more structured.
+
+	* sock.c: Include xlat/arp_hardware_types.h in XLAT_MACROS_ONLY mode.
+	(print_ifreq) <case SIOCSIFHWADDR, case SIOCGIFHWADDR>: Introduce
+	hwaddr_sizes array, print ifr_hwaddr.sa_family, print ifr_hwaddr.sa_data
+	using hwaddr_sizes and PRINT_FIELD_MAC_SZ.
+
+2018-05-22  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Simplify errnoent and signalent.
+	Remove personality support for errnoent and signalent as
+	there is nothing personality-specific in these files.
+
+	* linux/aarch64/errnoent1.h: Remove.
+	* linux/aarch64/signalent1.h: Likewise.
+	* linux/powerpc64/errnoent1.h: Likewise.
+	* linux/powerpc64/signalent1.h: Likewise.
+	* linux/riscv/errnoent1.h: Likewise.
+	* linux/riscv/signalent1.h: Likewise.
+	* linux/s390x/errnoent1.h: Likewise.
+	* linux/s390x/signalent1.h: Likewise.
+	* linux/sparc64/errnoent1.h: Likewise.
+	* linux/sparc64/signalent1.h: Likewise.
+	* linux/tile/errnoent1.h: Likewise.
+	* linux/tile/signalent1.h: Likewise.
+	* linux/x32/errnoent1.h: Likewise.
+	* linux/x32/signalent1.h: Likewise.
+	* linux/x86_64/errnoent1.h: Likewise.
+	* linux/x86_64/errnoent2.h: Likewise.
+	* linux/x86_64/signalent1.h: Likewise.
+	* linux/x86_64/signalent2.h: Likewise.
+	* Makefile.am (EXTRA_DIST): Remove them.
+	* defs.h (errnoent0): Rename to errnoent.
+	(signalent0): Rename signalent.
+	(nerrnos, nsignals): Change to const variables unconditionally.
+	* syscall.c (errnoent0): Rename to errnoent.
+	(signalent0): Rename signalent.
+	(nerrnos, nsignals): Change to const variables unconditionally.
+	(nerrnos0, nsignals0): Remove.
+	[SUPPORTED_PERSONALITIES > 1] (errnoent1, signalent1, nerrnos1,
+	nsignals1): Remove.
+	[SUPPORTED_PERSONALITIES > 2] (errnoent2, signalent2, nerrnos2,
+	nsignals2): Likewise.
+	(set_personality): Do not assign errnoent, signalent, nerrnos,
+	and nsignals.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1.in: mention -Xraw in -eraw description.
+	* strace.1.in (\fB\-e\ raw\fR=\,\fIset\fR): Mention -X raw.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1.in: display -k option description only if it is enabled.
+	Leverage the fact that manpage is generated and add condition statements
+	around mentions of -k option.
+
+	* strace.1.in (.SH SYNOPSIS): Put option list inside an
+	".if '@ENABLE_STACKTRACE_TRUE@'#' .ig end_unwind_opt ... .end_unwind_opt"
+	condition; add a second list of options without -k and put it inside
+	".if '@ENABLE_STACKTRACE_FALSE@'#' .ig end_no_unwind_opt ... .end_no_unwind_opt"
+	condition.
+	(.SS Output format) <-k>: Put it inside
+	".if '@ENABLE_STACKTRACE_TRUE@'#' .ig end_unwind ... .end_unwind"
+	condition, remove the mention of --enable-stacktrace configuration
+	option requirement.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1.in: format a reference to "open" syscall using bold font.
+	* strace.1.in (.SH DESCRIPTION): Format a reference to "open" syscall
+	using bold font.
+
+	tests/qual_fault.test: add -efu arguments to the interpreter.
+	* tests/qual_fault.test (#!/bin/sh): Add -efu arguments.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/qual_fault.test: swap expected/output files in match_diff calls.
+	match_diff expects the first argument as strace output and the second
+	argument as expected output.
+
+	* tests/qual_fault.test (check_fault_injection): Swap arguments
+	in match_diff calls.
+
+2018-05-21  Dmitry V. Levin  <ldv@altlinux.org>
+
+	defs.h: convert some macro wrappers into static inline functions.
+	* defs.h (pathtrace_select, pathtrace_match, printxval_searchn,
+	printxval_indexn, sprintxval, sprintflags, printnum_slong,
+	printnum_ulong, printnum_ptr, printnum_kptr): Convert macro wrappers
+	into static inline functions.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add support for xlat_styles in printxval_dispatch.
+	* defs.h (printxval_dispatch_ex): Rename from printxval_dispatch, add
+	style argument.
+	(printxval_dispatch): New static inline function, a thin wrapper around
+	printxval_dispatch_ex.
+	* xlat.c (printxval_dispatch): Rename to printxval_dispatch_ex, add
+	style argument, handle it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Make printxval_dispatch publicly available.
+	* evdev.c (enum xlat_type, printxval_dispatch): Move elsewhere.
+	* defs.h (enum_xlat_type): Move from evdev.c.
+	(printxval_dispatch): New declaration.
+	* xlat.c (printxval_dispatch): Move from evdev.c, drop static qualifier.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Revert "evdev: remove XT_NORMAL"
+	This reverts commit cc52da10c6f13feba577a83088f34916c6350165
+	in preparation for printxval_dispatch generalisation.
+
+	* evdev.c (enum xlat_type): Add XT_NORMAL back.
+	(printxval_dispatch): Handle XT_NORMAL again.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	defs.h: introduce is_bigendian macro.
+	This macro is going to be used in inline checks.
+
+	* defs.h (is_bigendian): New macro constant.
+
+2018-05-21  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	util.c: make memory allocation error messages more informative.
+	As those are pretty unusual, let's add some additional information
+	that can be reported by users.
+
+	* util.c (print_quoted_string_ex, dumpstr): Add reasons for memory
+	allocation errors.
+	(sizeof_iov): Change type from size_t to unsigned int.
+	(dumpiov_upto): Rewrite size initialisation similarly to the way it's
+	done in print_quoted_string_ex, add reasons for memory allocation errors.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1.in: fix -A description.
+	* strace.1.in (.SS Output format) <-A>: Add missing .B.
+
+	strace.1.in: document x32 64-bit syscall peculiarity.
+	* strace.1.in (.SH NOTES): Document "#64" suffix for 64-bit syscalls on
+	x32.
+
+2018-05-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	linux/x32/syscallent.h: change 64-bit syscall designation.
+	The current way of designation of 64-bit specific syscalls in x32
+	personality not only conflicts with fault injection specification
+	syntax, but also makes it impossible to specify such syscalls at all
+	(since everything that starts from a digit is considered a syscall
+	number specification).  So, let's change prefix to suffix and use
+	octothorpe instead of colon as a separator.
+
+	* linux/x32/syscallent.h (13, 15, 16, 19, 20, 45, 46, 47, 54, 55, 59,
+	101, 127, 128. 129, 131, 134, 156, 174, 177, 178, 180, 205, 206, 209,
+	211, 214, 215, 222, 236, 244, 246, 247, 273, 274, 278, 279, 295, 296,
+	297, 299, 307, 310, 311, 32, 327, 328): Change "64:" prefix to "#64"
+	suffix in syscall name.
+
+	Closes: https://github.com/strace/strace/issues/36
+
+2018-05-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add BPF_PROG_TYPE_SK_MSG.
+	* xlat/bpf_prog_types.in (BPF_PROG_TYPE_SK_MSG): New constant,
+	introduced by Linux commit v4.17-rc1~148^2~156^2~1^2~13.
+	* tests/bpf.c (BPF_PROG_LOAD_checks): Update expected output.
+
+	xlat: update bpf_attach_type constants.
+	* xlat/bpf_attach_type.in (BPF_SK_MSG_VERDICT): New constant,
+	introduced by Linux commit v4.17-rc1~148^2~156^2~1^2~13.
+	(BPF_CGROUP_INET4_BIND, BPF_CGROUP_INET6_BIND): New constants,
+	introduced by Linux commit v4.17-rc1~148^2~19^2^2~6.
+	(BPF_CGROUP_INET4_CONNECT, BPF_CGROUP_INET6_CONNECT): New constants,
+	introduced by Linux commit v4.17-rc1~148^2~19^2^2~3.
+	(BPF_CGROUP_INET4_POST_BIND, BPF_CGROUP_INET6_POST_BIND): New constants,
+	introduced by Linux commit v4.17-rc1~148^2~19^2^2~1.
+	* tests/bpf.c (BPF_PROG_QUERY_checks): Update expected output.
+
+2018-05-19  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat/sock_rds_options.in: make it sorted.
+	Define SO_TIMESTAMP twice, for PA-RISC and all the other architectures.
+
+	* xlat/sock_rds_options.in [!__hppa__] (SO_TIMESTAMP): Define to 29.
+	[__hppa__] (SO_TIMESTAMP): Define to 0x4012.
+	* net.c (print_sockopt_fd_level_name) <case SOL_RDS>: Use
+	printxval_search instead of printxval.
+
+2018-05-17  Gleb Fotengauer-Malinovskiy  <glebfm@altlinux.org>
+
+	Update ioctl entries from linux v4.17.
+	* linux/32/ioctls_inc_align16.h: Update from linux v4.17-rc5
+	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/i386/ioctls_arch0.h: Likewise.
+	* linux/x86_64/ioctls_arch0.h: Likewise.
+	* NEWS: Mention this.
+
+	maint: update for linux 4.17-rc5.
+	* maint/ioctls_sym.sh: (x86_list): Add KVM_HYPERV_EVENTFD.
+
+2018-05-16  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf: use indexed lookups where appropriate.
+	* xlat/bpf_attach_type.in: Add "#value_indexed" directive.
+	* xlat/bpf_class.in: Likewise.
+	* xlat/bpf_map_types.in: Likewise.
+	* xlat/bpf_map_update_elem_flags.in: Likewise.
+	* xlat/bpf_prog_types.in: Likewise.
+	* xlat/ebpf_class.in: Likewise.
+	* bpf_filter.c (print_bpf_filter_code): Use printxval_index
+	instead of printxval for decoding bpf_class and ebpf_class.
+	* print_fields.h (PRINT_FIELD_XVAL_INDEX): New macro.
+	* bpf.c: Use it instead of PRINT_FIELD_XVAL for decoding bpf_attach_type,
+	bpf_map_types, bpf_map_update_elem_flags, and bpf_prog_types.
+
+2018-05-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf: use printxval_index lookup instead of printxval.
+	* xlat/bpf_commands.in: Add "#value_indexed" directive.
+	* bpf.c (SYS_FUNC(bpf)): Use printxval_index instead of printxval.
+
+	time: use indexed lookups.
+	* defs.h (xlat_idx): New prototype.
+	* xlat.c (xlat_idx): Remove static qualifier.
+	* time.c (do_adjtimex): Use xlat_idx instead of xlookup.
+	(SYS_FUNC(getitimer), SYS_FUNC(setitimer)): Use printxval_index
+	instead of printxval.
+	[ALPHA] (SYS_FUNC(osf_getitimer), SYS_FUNC(osf_setitimer)): Likewise.
+	(printclockname) [CLOCKID_TO_FD]: Likewise.
+	* xlat/adjtimex_state.in: Add "#value_indexed" directive.
+	* xlat/clocknames.in: Likewise.
+	* xlat/cpuclocknames.in: Add "#value_indexed" directive, add default
+	values to constants.
+	* xlat/itimer_which.in: Likewise.
+
+2018-05-15  Andre McCurdy  <armccurdy@gmail.com>
+
+	linux/arm/raw_syscall.h: avoid r7 specified register variables with Thumb
+	If Thumb code is being generated and frame pointers are enabled, the
+	Thumb frame pointer in r7 clashes with any local variable which may
+	need to be assigned to r7 (e.g. the syscall NR when making a raw
+	syscall).
+
+	With gcc, the double use of r7 results in a build error, e.g.
+
+	  strace-4.22/tests/inject-nf.c:86:1: error: r7 cannot be used in asm here
+
+	With clang, the double use of r7 can result in the compiler silently
+	generating broken code which crashes at run time due to frame pointer
+	corruption:
+
+	  https://bugs.llvm.org/show_bug.cgi?id=34165
+
+	In most cases the problem isn't visible as frame pointers will be
+	disabled automatically due to optimisation level. However to handle
+	cases where frame pointers are enabled (e.g. when CFLAGS etc are set
+	to support a debug build, etc) provide a version of raw_syscall_0
+	which manually saves and restores the frame pointer value in r7
+	to a temporary register before setting up the syscall NR in r7
+	and invoking the syscall.
+
+	* linux/arm/raw_syscall.h (raw_syscall_0) [__thumb__]: Provide
+	an alternative version.
+
+2018-05-15  Dmitry V. Levin  <ldv@altlinux.org>
+
+	sockaddr: use printxval_index lookup instead of printxval.
+	* xlat/addrfams.in: Add "#value_indexed" directive.
+	* xlat/af_packet_types.in: Likewise.
+	* xlat/hci_channels.in: Likewise.
+	* sockaddr.c (print_sockaddr_data_bt, print_sockaddr,
+	* print_sockaddr_data_ll): Use printxval_index instead of printxval.
+
+2018-05-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sockaddr: use printxval_search for ARPHRD_* constants.
+	This xlat table is quite big.
+
+	* sockaddr.c (print_sockaddr_data_ll): Replace printxval call with
+	printxval_search for printing of struct sockaddr_ll.sll_hatype field.
+
+2018-05-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add a common MAC address printing routine.
+	* print_mac.c: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+	* defs.h (sprint_mac_addr): New declaration.
+	(print_mac_addr): New function, a thin wrapper around sprint_mac_addr.
+	* print_fields.h (PRINT_FIELD_MAC, PRINT_FIELD_MAC_SZ): New macros.
+	* rtnl_link.c (decode_ifla_bridge_id): Use PRINT_FIELD_MAC for bridge
+	address printing.
+	* sock.c (print_ifreq) <case SIOCGIFHWADDR>: Use print_mac_addr for
+	ifr_hwaddr printing.
+	* sockaddr.c (print_sockaddr_data_bt): Use print_mac_addr for
+	{sco,rc,l2}_bdaddr field printing.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sockaddr: decode Bluetooth L2 CID values.
+	* xlat/bluetooth_l2_cid.in: New file.
+	* sockaddr.c: Include xlat/bluetooth_l2_cid.h.
+	(print_bluetooth_l2_cid): New function.
+	(print_sockaddr_data_bt): Use it to decode struct sockaddr_l2.l2_cid
+	field.
+	* tests/net-sockaddr.c (check_l2): Update expected output.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sockaddr: decode Bluetooth L2 PSM values.
+	* xlat/bluetooth_l2_psm.in: New file.
+	* sockaddr.c: Include xlat/bluetooth_l2_psm.h.
+	(print_bluetooth_l2_psm): New function.
+	(print_sockaddr_data_bt): Use it to decode struct sockaddr_l2.l2_psm
+	field.
+	* tests/net-sockaddr.c (check_l2): Update expected output.
+
+	sockaddr: decode bluetooth address type names.
+	* xlat/bdaddr_types.in: New file.
+	* sockaddr.c: Include xlat/bdaddr_types.h.
+	(print_sockaddr_data_bt): Decode struct sockaddr_l2.l2_bdaddr_type field
+	using constants from bdaddr_types xlat.
+	* tests/net-sockaddr.c (check_l2): Check decoding
+	of struct sockaddr_l2.l2_bdaddr_type field.
+
+2018-05-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sockaddr: decode Bluetooth socket address unconditionally.
+	* sockaddr.c [HAVE_BLUETOOTH_BLUETOOTH_H]: Do not include
+	bluetooth/bluetooth.h, bluetooth/hci.h, bluetooth/l2cap.h,
+	bluetooth/rfcomm.h, and bluetooth/sco.h.
+	[!HAVE_BLUETOOTH_BLUETOOTH_H]: Include xlat/hci_channels.h.
+	(btohs): New function.
+	(print_sockaddr_data_bt): Define unconditionally, add definitions
+	of struct sockaddr_hci, struct bdaddr, struct sockaddr_sco,
+	struct sockaddr_rc, and struct sockaddr_l2.
+	(sa_printers) <AF_BLUETOOTH>: Define unconditionally.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Avoid using print_array as a local variable name.
+	We have a function with the same name.
+
+	* netlink.c (decode_netlink) <print_array>: Rename to is_array, all
+	users updated.
+	* nlattr.c (decode_nlattr) <print_array>: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-15  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update MSG_* constants.
+	Sync them with kernel's include/linux/socket.h, since syscalls perform
+	almost no checks for incorrect flags.
+
+	* xlat/msg_flags.in (MSG_OOB, MSG_PEEK, MSG_DONTROUTE, MSG_CTRUNC,
+	MSG_PROBE, MSG_TRUNC, MSG_DONTWAIT, MSG_EOR, MSG_WAITALL, MSG_FIN,
+	MSG_SYN, MSG_CONFIRM, MSG_RST, MSG_ERRQUEUE, MSG_NOSIGNAL, MSG_MORE,
+	MSG_WAITFORONE, MSG_FASTOPEN, MSG_CMSG_CLOEXEC): Add default values
+	to all constants.
+	(MSG_SENDPAGE_NOTLAST, MSG_NO_SHARED_FRAGS): New constants.  It is
+	an internal one, but, apparently, nothing prohibits passing it
+	to the kernel.
+	(MSG_CMSG_COMPAT): New constant.  Override the value provided
+	by system headers.
+	(MSG_EOF): Commented out, as it is a synonym for MSG_FIN.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-14  Dmitry V. Levin  <ldv@altlinux.org>
+
+	socketutils: use exact match of unix domain sockets on fresh kernels.
+	* socketutils.c (unix_send_query): Do not add NLM_F_DUMP to nlmsg_flags
+	when kernel version is 4.4.4 or later, initialize udiag_cookie
+	unconditionally.
+
+	Complements: v4.12~536 ("Change unix_diag requests back to use full dump instead of exact match")
+
+2018-05-14  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	socketutils: do not request NDIAG_SHOW_MEMINFO.
+	This information is not used and it looks like it negatively affects
+	ability to find the socket under high load.
+
+	* socketutils.c (netlink_send_query) <req>: Remove NDIAG_SHOW_MEMINFO
+	flag from netlink_diag_req.ndiag_show field.
+	* tests/netlink_netlink_diag.c (send_query) <req>: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: introduce midtail_alloc and use it in netlink tests.
+	netlink tests happen to access memory located before the tail_malloc'ed
+	pointers, a practice that doesn't go well with the latest compilers
+	because tail_malloc is marked with ATTRIBUTE_MALLOC.
+	For example, glibc in -D_FORTIFY_SOURCE=2 mode and gcc 8 with
+	-Warray-bounds enabled complain about negative offsets out of bounds.
+	Fix this issue by introducing midtail_alloc.
+
+	* tests/tests.h (midtail_alloc): New macro.
+	* tests/netlink_crypto.c: Use it instead of tail_malloc for nlh0 allocation.
+	* tests/netlink_netfilter.c: Likewise.
+	* tests/netlink_protocol.c: Likewise.
+	* tests/netlink_route.c: Likewise.
+	* tests/netlink_selinux.c: Likewise.
+	* tests/netlink_sock_diag.c: Likewise.
+	* tests/nlattr_br_port_msg.c: Likewise.
+	* tests/nlattr_crypto_user_alg.c: Likewise.
+	* tests/nlattr_dcbmsg.c: Likewise.
+	* tests/nlattr_fib_rule_hdr.c: Likewise.
+	* tests/nlattr_ifaddrlblmsg.c: Likewise.
+	* tests/nlattr_ifaddrmsg.c: Likewise.
+	* tests/nlattr_ifinfomsg.c: Likewise.
+	* tests/nlattr_ifla_brport.c: Likewise.
+	* tests/nlattr_ifla_port.c: Likewise.
+	* tests/nlattr_ifla_xdp.c: Likewise.
+	* tests/nlattr_inet_diag_msg.c: Likewise.
+	* tests/nlattr_inet_diag_req_compat.c: Likewise.
+	* tests/nlattr_inet_diag_req_v2.c: Likewise.
+	* tests/nlattr_mdba_mdb_entry.c: Likewise.
+	* tests/nlattr_mdba_router_port.c: Likewise.
+	* tests/nlattr_ndmsg.c: Likewise.
+	* tests/nlattr_ndtmsg.c: Likewise.
+	* tests/nlattr_netconfmsg.c: Likewise.
+	* tests/nlattr_netlink_diag_msg.c: Likewise.
+	* tests/nlattr_nlmsgerr.c: Likewise.
+	* tests/nlattr_packet_diag_msg.c: Likewise.
+	* tests/nlattr_rtgenmsg.c: Likewise.
+	* tests/nlattr_rtmsg.c: Likewise.
+	* tests/nlattr_smc_diag_msg.c: Likewise.
+	* tests/nlattr_tc_stats.c: Likewise.
+	* tests/nlattr_tca_stab.c: Likewise.
+	* tests/nlattr_tcamsg.c: Likewise.
+	* tests/nlattr_tcmsg.c: Likewise.
+	* tests/nlattr_unix_diag_msg.c: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Use MIN where appropriate.
+	* netlink.c (decode_nlmsghdr_with_payload): Use MIN.
+	* netlink_packet_diag.c (print_packet_diag_mclist): Likewise.
+	* nlattr.c (decode_nlattr_with_data): Likewise.
+	* rtnl_route.c (decode_rta_multipath): Likewise.
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add fallback definitions to {msg,sem,shm}ctl command constants.
+	* xlat/msgctl_flags.in: Add default values to all constants, reorder
+	to make them sorted by value.
+	* xlat/semctl_flags.in: Likewise.
+	* xlat/shmctl_flags.in: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add MSG_STAT_ANY.
+	* xlat/msgctl_flags.in (MSG_STAT_ANY): New constant, introduced
+	by Linux commit v4.17-rc1~52^2~21.
+	* tests/ipc_msg.c: Check it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add SEM_STAT_ANY.
+	* xlat/semctl_flags.in (SEM_STAT_ANY): New constant, introduced
+	by Linux commit v4.17-rc1~52^2~22.
+	* tests/ipc_sem.c: Check it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add SHM_STAT_ANY.
+	* xlat/shmctl_flags.in (SHM_STAT_ANY): New constant, introduced
+	by Linux commit v4.17-rc1~52^2~23.
+	* tests/ipc_shm.c: Check it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	net: print SO_GET_FILTER in getsockopt.
+	SO_ATTACH_FILTER and SO_GET_FILTER have the same value; the former
+	constant is intended for use in setsockopt, and the latter is for
+	getsockopt.  Handle that the same way as similar SOL_IP/SOL_IPV6 socket
+	options are handled.
+
+	* xlat/getsock_options.in: New file.
+	* xlat/setsock_options.in: Likewise.
+	* xlat/sockoptions.in (SO_ATTACH_FILTER): Move to
+	xlat/setsock_options.in.
+	* net.c: Include "xlat/setsock_options.h" and "xlat/getsock_options.h".
+	(print_sockopt_fd_level_name) <case SOL_SOCKET>: Use
+	getsock_options or setsock_options as auxiliary xlats based on the value
+	of is_getsockopt flag.
+	* tests/sock_filter-v.c: Update expected output.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-09  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add sock_filtrer-v variants with different xlat verbosity levels.
+	* tests/sock_filter-v-Xabbrev.c: New file.
+	* tests/sock_filter-v-Xraw.c: Likewise.
+	* tests/sock_filter-v-Xverbose.c: Likewise.
+	* tests/sock_filter-v.c (PRINT_STMT_SYM, PRINT_STMT_SYM_,
+	PRINT_STMT_VAL, PRINT_STMT_VAL_, PRINT_JUMP_): Remove.
+	(HEX_FMT, XLAT_FMT, XLAT_ARGS, PRINT_STMT): New macros.
+	(PRINT_JUMP): Rewrite.
+	(print_filter): Rewrite using PRINT_STMT and new PRINT_JUMP.
+	(main): Print SOL_SOCKET, SO_ATTACH_FILTER, and SO_ATTACH_REUSEPORT_CBPF
+	using XLAT_FMT/XLAT_ARGS macros.
+	* tests/pure_executables.list: Add sock_filter-v-Xabbrev,
+	sock_filter-v-Xraw, and sock_filter-v-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (sock_filter-v-Xabbrev, sock_filter-v-Xraw,
+	sock_filter-v-Xverbose): New tests.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	defs.h: fix ethernet_protocols comment.
+	Starting with commit v4.22~109, sorted xlat tables are terminated
+	with XLAT_END.
+
+	* defs.h (ethernet_protocols): Remove the "unterminated" part from
+	description.
+
+2018-05-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: rename *sock*options xlat tables.
+	Such names as sockrxrpcoptions are incomprehensible.
+
+	* xlat/getsockipoptions.in: Rename to xlat/getsock_ip_options.in.
+	* xlat/getsockipv6options.in: Rename to xlat/getsock_ipv6_options.in.
+	* xlat/setsockipoptions.in: Rename to xlat/setsock_ip_options.in.
+	* xlat/setsockipv6options.in: Rename to xlat/setsock_ipv6_options.in.
+	* xlat/sockalgoptions.in: Rename to xlat/sock_alg_options.in.
+	* xlat/sockbluetoothoptions.in: Rename to xlat/sock_bluetooth_options.in.
+	* xlat/sockcaifoptions.in: Rename to xlat/sock_caif_options.in.
+	* xlat/sockdccpoptions.in: Rename to xlat/sock_dccp_options.in.
+	* xlat/sockipoptions.in: Rename to xlat/sock_ip_options.in.
+	* xlat/sockipv6options.in: Rename to xlat/sock_ipv6_options.in.
+	* xlat/sockipxoptions.in: Rename to xlat/sock_ipx_options.in.
+	* xlat/sockirdaoptions.in: Rename to xlat/sock_irda_options.in.
+	* xlat/sockiucvoptions.in: Rename to xlat/sock_iucv_options.in.
+	* xlat/sockkcmoptions.in: Rename to xlat/sock_kcm_options.in.
+	* xlat/sockllcoptions.in: Rename to xlat/sock_llc_options.in.
+	* xlat/socknetlinkoptions.in: Rename to xlat/sock_netlink_options.in.
+	* xlat/socknfcllcpoptions.in: Rename to xlat/sock_nfcllcp_options.in.
+	* xlat/sockoptions.in: Rename to xlat/sock_options.in.
+	* xlat/sockpacketoptions.in: Rename to xlat/sock_packet_options.in.
+	* xlat/sockpnpoptions.in: Rename to xlat/sock_pnp_options.in.
+	* xlat/sockpppol2tpoptions.in: Rename to xlat/sock_pppol2tp_options.in.
+	* xlat/sockrawoptions.in: Rename to xlat/sock_raw_options.in.
+	* xlat/sockrdsoptions.in: Rename to xlat/sock_rds_options.in.
+	* xlat/sockrxrpcoptions.in: Rename to xlat/sock_rxrpc_options.in.
+	* xlat/socksctpoptions.in: Rename to xlat/sock_sctp_options.in.
+	* xlat/socktcpoptions.in: Rename to xlat/sock_tcp_options.in.
+	* xlat/socktipcoptions.in: Rename to xlat/sock_tipc_options.in.
+	* xlat/socktlsoptions.in: Rename to xlat/sock_tls_options.in.
+	* xlat/sockudpoptions.in: Rename to xlat/sock_udp_options.in.
+	* net.c: Update.
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	net: decode more SOL_* socket options.
+	* xlat/sockalgoptions.in: New file.
+	* xlat/sockbluetoothoptions.in: Likewise.
+	* xlat/sockcaifoptions.in: Likewise.
+	* xlat/sockdccpoptions.in: Likewise.
+	* xlat/sockiucvoptions.in: Likewise.
+	* xlat/sockkcmoptions.in: Likewise.
+	* xlat/sockllcoptions.in: Likewise.
+	* xlat/socknfcllcpoptions.in: Likewise.
+	* xlat/sockpnpoptions.in: Likewise.
+	* xlat/sockpppol2tpoptions.in: Likewise.
+	* xlat/sockrdsoptions.in: Likewises.
+	* xlat/sockrxrpcoptions.in: Likewise.
+	* xlat/socktipcoptions.in: Likewise.
+	* xlat/socktlsoptions.in: Likewise.
+	* xlat/sockudpoptions.in: Likewise.
+	* net.c: Include "xlat/sockalgoptions.h", "xlat/sockbluetoothoptions.h",
+	"xlat/sockcaifoptions.h", "xlat/sockdccpoptions.h",
+	"xlat/sockiucvoptions.h", "xlat/sockkcmoptions.h",
+	"xlat/sockllcoptions.h", "xlat/socknfcllcpoptions.h",
+	"xlat/sockpnpoptions.h", "xlat/sockpppol2tpoptions.h",
+	"xlat/sockrdsoptions.h", "xlat/sockrxrpcoptions.h",
+	"xlat/socktipcoptions.h", "xlat/socktlsoptions.h",
+	and "xlat/sockudpoptions.h".
+	(print_sockopt_fd_level_name): Decode SOL_UDP, SOL_IRDA, SOL_LLC,
+	SOL_DCCP, SOL_TIPC, SOL_RXRPC, SOL_PPPOL2TP, SOL_BLUETOOTH, SOL_PNPIPE,
+	SOL_RDS, SOL_IUCV, SOL_CAIF, SOL_ALG, SOL_NFC, SOL_KCM, and SOL_TLS
+	socket option names.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	net: decode more AF_* protocol names.
+	* xlat/caif_protocols.in: New file.
+	* xlat/can_protocols.in: Likewise.
+	* xlat/irda_protocols.in: Likewise.
+	* xlat/isdn_protocols.in: Likewise.
+	* xlat/kcm_protocols.in: Likewise.
+	* xlat/nfc_protocols.in: Likewise.
+	* xlat/phonet_protocols.in: Likewise.
+	* xlat/smc_protocols.in: Likewise.
+	* net.c: Include "xlat/irda_protocols.h", "xlat/can_protocols.h",
+	"xlat/isdn_protocols.h", "xlat/phonet_protocols.h",
+	"xlat/caif_protocols.h", "xlat/nfc_protocols.h",
+	"xlat/kcm_protocols.h", and "xlat/smc_protocols.h".
+	(SYS_FUNC(socket)): Decode AF_IRDA, AF_CAN, AF_RXRPC, AF_ISDN,
+	AF_PHONET, AF_CAIF, AF_NFC, AF_KCM, and AF_SMC protocol names.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Remove some duplicate fallback definitions.
+	There is no need to provide duplicate fallback definitions anymore,
+	inclusion of the appropriate xlat header in XLAT_MACROS_ONLY mode
+	does the right thing.
+
+	* btrfs.c [!BTRFS_FIRST_FREE_OBJECTID] (BTRFS_FIRST_FREE_OBJECTID):
+	Remove, a fallback definition is already provided by included
+	"xlat/btrfs_tree_objectids.h".
+	* net.c: Include "xlat/addrfams.h" in XLAT_MACROS_ONLY mode.
+	[!AF_BLUETOOTH] (AF_BLUETOOTH): Remove.
+	* syscall.c: Include "xlat/nt_descriptor_types.h" in XLAT_MACROS_ONLY
+	mode.
+	[!NT_PRSTATUS] (NT_PRSTATUS): Remove.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat/gen.sh: introduce XLAT_MACROS_ONLY macro.
+	Sometimes we need just fallback definitions and nothing else.
+	This change adds an interface of skipping xlat table prototypes
+	and definitions.
+
+	* xlat/gen.sh (gen_header): Place xlat table prototype or definition
+	under "#ifndef XLAT_MACROS_ONLY" guard.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	rtnl_link: print IFLA_NEW_IFINDEX using decode_nla_ifindex.
+	As it is an interface index.
+
+	* rtnl_link.c (ifinfomsg_nla_decoders) <[IFLA_NEW_IFINDEX]>: Change
+	the value from decode_nla_s32 to decode_nla_ifindex.
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ci: install libbluetooth-dev.
+	* ci/install-dependencies.sh (common_packages): Add libbluetooth-dev.
+
+	xlat: provide fallback definitions for HCI_CHANNEL_* constants.
+	* xlat/hci_channels.in: Provide fallback definitions.
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	s390: simplify s390_runtime_instr command printing.
+	As the header with command definitions is now a part of UAPI (since
+	Linux commit v4.16-rc1~21^2~11), there's no need for a very special
+	printing routine for command names.
+
+	* s390.c (SYS_FUNC(s390_runtime_instr)): Use printxval_d to print
+	the command argument.
+	* tests/s390_runtime_instr.c: Update expected output.
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/init.sh: add run_prog_match_grep.
+	* tests/init.sh (run_prog_match_grep): New function, similar
+	to run_prog_match_diff.
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add so_peercred variants with different xlat verbosity levels.
+	* tests/so_peercred-Xabbrev.c: New file.
+	* tests/so_peercred-Xraw.c: Likewise.
+	* tests/so_peercred-Xverbose.c: Likewise.
+	* tests/pure_executables.list: Add so_peercred-Xabbrev,
+	so_peercred-Xraw, and so_peercred-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/so_peercred.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags.
+	* tests/gen_tests.in (so_peercred-Xabbrev, so_peercred-Xraw,
+	so_peercred-Xverbose): New tests.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add personality variants with different xlat verbosity levels.
+	* tests/personality-Xabbrev.c: New file.
+	* tests/personality-Xraw.c: Likewise.
+	* tests/personality-Xverbose.c: Likewise.
+	* tests/pure_executables.list: Add personality-Xabbrev,
+	personality-Xraw, and personality-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/personality.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags.
+	* tests/personality.test: Add support for accepting test arguments.
+	* tests/gen_tests.in (personality-Xabbrev, personality-Xraw,
+	personality-Xverbose): New tests.
+
+	tests: add fanotify_mark variants with different xlat verbosity levels.
+	* tests/fanotify_mark-Xabbrev.c: New file.
+	* tests/fanotify_mark-Xraw.c: Likewise.
+	* tests/fanotify_mark-Xverbose.c: Likewise.
+	* tests/pure_executables.list: Add fanotify_mark-Xabbev,
+	fanotify_mark-Xraw, and fanotify_mark-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/fanotify_mark.c: Add handling of XLAT_RAW and XLAT_VERBOSE
+	flags.
+	* tests/gen_tests.in (fanotify_mark-Xabbev, fanotify_mark-Xraw,
+	fanotify_mark-Xverbose): New tests.
+
+2018-05-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: provide fallback definitions for IFF_* constants.
+	* xlat/iffflags.in: Provide fallback definitions.  Mention that
+	the array is sorted.
+
+	xlat: update IFF_* constants.
+	* xlat/iffflags.in (IFF_DYNAMIC): New constant, had been introduced
+	before the current git repository was conceived.
+	(IFF_LOWER_UP, IFF_DORMANT): New constants, introduced by Linux commit
+	v2.6.17-rc1~1175^2~206.
+	(IFF_ECHO): New constant, introduced by Linux commit
+	v2.6.25-rc1~1162^2~1415.
+
+	xlat: provide fallback definitions for ARPHRD_* constants.
+	* xlat/arp_hardware_types.in: Provide fallback definitions, sort.
+
+	tests: add more v4l2 checks.
+	* tests/ioctl_v4l2.c (main): Add more VIDIOC_S_EXT_CTRLS checks.
+
+	tests: add variants of IPC tests with different xlat verbosity levels.
+	* tests/.gitignore: Add ipc_msg-Xabbrev, ipc_msg-Xraw, ipc_msg-Xverbose,
+	ipc_msgbuf-Xabbrev, ipc_msgbuf-Xraw, ipc_msgbuf-Xverbose,
+	ipc_sem-Xabbrev, ipc_sem-Xraw, ipc_sem-Xverbose, ipc_shm-Xabbrev,
+	ipc_shm-Xraw, and ipc_shm-Xverbose.
+	* tests/pure_executables.list: Likewise.
+	* tests/gen_tests.in (ipc_msg-Xabbrev, ipc_msg-Xraw, ipc_msg-Xverbose,
+	ipc_msgbuf-Xabbrev, ipc_msgbuf-Xraw, ipc_msgbuf-Xverbose,
+	ipc_sem-Xabbrev, ipc_sem-Xraw, ipc_sem-Xverbose, ipc_shm-Xabbrev,
+	ipc_shm-Xraw, ipc_shm-Xverbose): New tests.
+	* tests/ipc_msg-Xabbrev.c: New file.
+	* tests/ipc_msg-Xraw.c: Likewise.
+	* tests/ipc_msg-Xverbose.c: Likewise.
+	* tests/ipc_msgbuf-Xabbrev.c: Likewise.
+	* tests/ipc_msgbuf-Xraw.c: Likewise.
+	* tests/ipc_msgbuf-Xverbose.c: Likewise.
+	* tests/ipc_sem-Xabbrev.c: Likewise.
+	* tests/ipc_sem-Xraw.c: Likewise.
+	* tests/ipc_sem-Xverbose.c: Likewise.
+	* tests/ipc_shm-Xabbrev.c: Likewise.
+	* tests/ipc_shm-Xraw.c: Likewise.
+	* tests/ipc_shm-Xverbose.c: Likewise.
+	* tests/ipc.sh: Add support for accepting test arguments.
+	* tests/ipc_msgbuf.test: Likewise.
+	* tests/ipc_msg.c: Add handling of XLAT_RAW and XLAT_VERBOSE flags.
+	* tests/ipc_msgbuf.c: Likewise.
+	* tests/ipc_sem.c: Likewise.
+	* tests/ipc_shm.c: Likewise.
+
+	tests: make ipc tests a bit more strict.
+	* tests/gen_tests.in (ipc_msg, ipc_sem, ipc_shm): Add -a option.
+	* tests/ipc_msg.c: Replace " +" with " " in expected output.
+	* tests/ipc_sem.c: Likewise.
+	* tests/ipc_shm.c: Likewise.
+
+	ipc_shm: print SHM_HUGE_SHIFT using print_xlat_u.
+	* ipc_shm.c (SYS_FUNC(shmget)): Print SHM_HUGE_SHIFT using print_xlat_u.
+
+	tests: check all bits of mtype in ipc_msgbuf test.
+	* tests/ipc_msgbuf.c: Include <unistd.h> and <asm/unistd.h>.
+	(sys_msgrcv): New function.
+	(msgrcv): Use it instead of msgrcv.  Add bits to mtype,
+	check for -mtype in msgrcv.
+
+	tests: print expected output by ipc_msgbuf test itself.
+	* tests/ipc_msgbuf.expected: Remove.
+	* tests/Makefile.am (EXTRA_DIST): Remove tests/ipc_msgbuf.expected.
+	* tests/ipc_msgbuf.c: Add expected output.
+	* tests/ipc_msgbuf.test: Add -a31.  Redirect output to $EXP.  Call
+	match_grep with $LOG and $EXP arguments.
+
+2018-05-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: provide fallback definitions for SKF_*_OFF constants.
+	* xlat/skf_off.in: New file.
+	* bpf_sock_filter.c: Include "xlat/skf_off.h".
+
+	xlat: provide fallback definitions for BPF_* constants.
+	* xlat/bpf_class.in: Add default values for constants.
+	* xlat/bpf_miscop.in: Likewise.
+	* xlat/bpf_mode.in: Likewise.
+	* xlat/bpf_op_alu.in: Likewise.
+	* xlat/bpf_op_jmp.in: Likewise.
+	* xlat/bpf_rval.in: Likewise.
+	* xlat/bpf_size.in: Likewise.
+	* xlat/bpf_src.in: Likewise.
+
+2018-05-06  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: fix F_* fallback definitions on mips64.
+	* xlat/fcntlcmds.in (F_GETLK64, F_SETLK64, F_SETLKW64) [__mips64]: Fix
+	default values.
+
+	Fixes: v4.22-122-gfa8f486 ("xlat: fix F_* fallback definitions on alpha, hppa, mips, and sparc")
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add fallback definitions to SO_* constants.
+	Regenerate xlat/sockoptions.in using the following script:
+
+	  sed -n 's/^\(SO_[^[:space:]]*\).*/\1/p' xlat/sockoptions.in |
+	  uniq |
+	  while read name; do
+	    sed -rn 's/#define[[:space:]]+('"$name"')[[:space:]]+([[:digit:]]+)$/\2\t\1/p' \
+	      /path/to/linux/include/uapi/asm-generic/socket.h
+	  done |
+	  sort -n |
+	  while read def name; do
+	    grep -EH '#define[[:space:]]+'"$name"'[[:space:]]+(0x[[:xdigit:]]+|[[:digit:]]+)' \
+	      /path/to/linux/arch/*/include/uapi/asm/socket.h |
+	    sed -rn 's|^[^#]*/arch/([^/]+)/include/uapi/asm/socket\.h:#define[[:space:]]+'"$name"'[[:space:]]+([^[:space:]]+)([[:space:]].*)?$|\1\t\2|p' |
+	    sed s/parisc/hppa/ |sort |
+	    awk -vname="$name" -vdef="$def" '
+	      {
+	        i=strtonum($2)
+	        if (i == def) next
+	        if (a[i])
+	          a[i]=a[i] " || defined __" $1 "__"
+	        else
+	          a[i]="defined __" $1 "__"
+	      }
+	      END {
+	        iftext="#if"
+	        for (i in a) {
+	          printf("%s %s\n%s %u\n",iftext,a[i],name,i)
+	          iftext="#elif"
+	        }
+	        if (iftext != "#if")
+	          print "#else"
+	        printf("%s %s\n", name, def)
+	        if (iftext == "#if")
+	          print ""
+	        else
+	          print "#endif\n"
+	      }'
+	  done
+
+	* xlat/sockoptions.in: Add fallback definitions.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: remove socket options with duplicate names.
+	* xlat/sockoptions.in (SO_GET_FILTER): Remove as it is defined
+	to SO_ATTACH_FILTER.
+	(SO_DETACH_BPF): Remove as it is defined to SO_DETACH_FILTER.
+
+	xlat: remove socket options that do not exist in Linux.
+	* xlat/sockoptions.in (SO_ALLRAW, SO_ICS, SO_IMASOCKET, SO_LISTENING,
+	SO_MGMT, SO_ORDREL, SO_PARALLELSVR, SO_PROTOTYPE, SO_RDWRSO_SEMA,
+	SO_USELOOPBACK): Remove.
+
+	xlat: treat socketlayers as a sorted array.
+	* xlat/socketlayers.in: Add a comment that the xlat is sorted.
+	* net.c (print_sockopt_fd_level_name): Use printxval_search
+	instead of printxval for decoding socket layer name.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	net: decode Bluetooth protocol names unconditionally.
+	As we have all BTPROTO_* constant definitions now, there is no need
+	to rely on bluetooth.h header anymore.
+
+	* net.c (AF_BLUETOOTH): Provide a fallback definition.
+	[HAVE_BLUETOOTH_BLUETOOTH_H]: Do not include <bluetooth/bluetooth.h>.
+	[!HAVE_BLUETOOTH_BLUETOOTH_H]: Include "xlat/bt_protocols.h".
+	[!HAVE_BLUETOOTH_BLUETOOTH_H] (decode_sockbuf): Decode AF_BLUETOOTH.
+	(decode_sockbuf) <case AF_BLUETOOTH>: Use printxval_index.
+	* xlat/bt_protocols.in: Add "#value_indexed" directive.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat/gen.sh: invoke the shell interpreter with -e -u options.
+	* xlat/gen.sh: Change interpreter from "/bin/sh" to "/bin/sh -eu".
+
+	xlat: update FPE_* constants.
+	* xlat/sigfpe_codes.in (FPE_FLTUNK): New constant, introduced by Linux
+	commit v4.17-rc1~107^2~2.
+	(FPE_CONDTRAP): New constant, introduced by Linux commit
+	v4.17-rc1~31^2~3.
+
+	xlat: add MAP_FIXED_NOREPLACE.
+	* xlat/mmap_flags.in (MAP_FIXED_NOREPLACE): New constant, introduced
+	by Linux commit v4.17-rc1~52^2~14.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: provide fallback definitions for BTPROTO_* constants.
+	As they are architecture-independent.
+
+	* xlat/bt_protocols.in: Add values to constants.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add NETLINK_SMC.
+	* xlat/netlink_protocols.in (NETLINK_SMC): New constant, introduced
+	by Linux commit v4.11-rc1~94^2~43^2.
+
+	xlat: provide fallback definitions for V4L2_CID_* constants.
+	* xlat/v4l2_control_id_bases.in: New file with fallback definitions.
+	* xlat/v4l2_control_ids.in: Add fallback definitions.
+	* v4l2.c: Reorder includes, include "xlat/v4l2_control_id_bases.h",
+	remove legacy V4L2_CID_* constant definitions.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update V4L2_CID_* constants.
+	Synchronise v4l2_control_ids list with the one provided by kernel's
+	include/uapi/linux/v4l2-controls.h.  A few notes:
+	 - V4L2_CID_CHROMA_GAIN and V4L2_CID_COLORFX_CBCR moved in accordance
+	   with their position/values.
+	 - V4L2_CID_WHITENESS is removed as it has the same value as
+	   V4L2_CID_GAMMA.
+	 - V4L2_CID_PRIVATE_BASE is removed.
+	 - V4L2_CID_HCENTER and V4L2_CID_VCENTER that were removed by Linux
+	   commit v3.9-rc1~93^2~237, are retained for historical reasons.
+
+	* xlat/v4l2_control_ids.in: Update.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: provide fallback definitions for V4L2_CTRL_CLASS_* constants.
+	As those are architecture-independant.  Also note that the xlat
+	is sorted.
+
+	* xlat/v4l2_control_classes.in: Add values.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update V4L2_CTRL_CLASS_* constants.
+	* xlat/v4l2_control_classes.in (V4L2_CTRL_CLASS_DV): New constant,
+	introduced by Linux commit v3.7-rc1~101^2^2~322.
+	(V4L2_CTRL_CLASS_RF_TUNER): New constant, introduced by Linux commit
+	v3.15-rc1~85^2~192.
+	(V4L2_CTRL_CLASS_DETECT): New constant, introduced by Linux commit
+	v3.17-rc1~112^2~340.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update BPF_F_* constants.
+	Apparently, BPF_F_RDONLY and BPF_F_WRONLY are also used in map_flags.
+	Moreover, set of flags depends on the type of map, but let's leave that
+	for another day.
+
+	* xlat/bpf_map_flags.in (BPF_F_RDONLY, BPF_F_WRONLY): New constants.
+	(BPF_F_STACK_BUILD_ID): New constant, introduced by Linux commit
+	v4.17-rc1~148^2~156^2~3^2~1.
+	* xlat/bpf_map_flags.in: Update expected output.
+
+2018-05-06  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add V4L2_PIX_FMT_HEVC.
+	* xlat/v4l2_pix_fmts.in (V4L2_PIX_FMT_HEVC): New constant, introduced
+	by Linux commit v4.17-rc1~143^2~60.
+
+	xlat: add ETH_P_PREAUTH.
+	* xlat/ethernet_protocols.in (ETH_P_PREAUTH): New constant, introduced
+	by Linux commit v4.17-rc1~148^2~379^2~3.
+
+	xlat: update SCTP_* constants.
+	* xlat/socksctpoptions.in (SCTP_AUTH_DEACTIVATE_KEY): New constant,
+	introduced by Linux commit v4.17-rc1~148^2~191^2~2.
+	(SCTP_SENDMSG_CONNECT): New constant, introduced by Linux commit
+	v4.17-rc1~96^2~9.
+
+	xlat: add SPARC ADI-related SIGSEGV codes.
+	* xlat/sigsegv_codes.in (SEGV_ACCADI, SEGV_ADIDERR, SEGV_ADIPERR): New
+	constants, introduced by Linux commit v4.17-rc1~147^2~4^2~10.
+
+	xlat: add PROT_ADI.
+	* xlat/mmap_prot.in (PROT_ADI): New constant, introduced by Linux commit
+	v4.17-rc1~147^2~4^2~1.
+
+2018-05-05  Dmitry V. Levin  <ldv@altlinux.org>
+
+	build: rewrite libdw detection without pkg-config.
+	pkg-config expected to be more convenient way to configure libdw,
+	but in practice it appeared to be less portable than good old
+	AC_CHECK_HEADERS and AC_CHECK_LIB.
+
+	* ci/install-dependencies.sh (common_packages): Remove pkg-config.
+	(STACKTRACE == "libdw"): Do not install libz-dev and liblzma-dev.
+	* debian/control (Build-Depends): Remove pkg-config.
+	* m4/st_libdw.m4 (st_ARG_LIBDW, st_LIBDW): Rewrite without pkg-config.
+
+2018-05-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+	ci: add more variants of unwinder to test matrices.
+	Check x86_64 builds with libdw, with libunwind, and without stacktrace.
+	As Travis CI doesn't provide a suitable libdw, do not test libdw there.
+
+	* ci/install-dependencies.sh (common_packages): Remove libdw-dev.
+	Install libdw-dev or libunwind8-dev depending on $STACKTRACE.
+	* ci/run-build-and-tests.sh: Specify --with-libdw=yes,
+	--with-libunwind=yes, or --without-stacktrace depending on $STACKTRACE.
+	* .gitlab-ci.yml (gcc-x86_64): Rename to gcc-x86_64-libdw,
+	add STACKTRACE=libdw.
+	(gcc-x86): Rename to gcc-x86-nounwind, add STACKTRACE=no.
+	(clang-x86_64): Rename to clang-x86_64-libdw, add STACKTRACE=libdw.
+	(clang-x86): Rename to clang-x86-nounwind, add STACKTRACE=no.
+	(gcc-x86_64-libunwind, gcc-x86_64-nounwind, gcc-x86-nounwind,
+	clang-x86_64-libunwind, clang-x86_64-nounwind, clang-x86-nounwind):
+	New test matrix entries.
+	* .travis.yml: Add STACKTRACE=libunwind to all x86_64 test matrix
+	entries except musl-gcc, add STACKTRACE=no to other matrix entries,
+	add test matrix entries with STACKTRACE=no variants on x86_64.
+
+2018-05-04  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: update af_packet_types.
+	* xlat/af_packet_types.in: Add values.
+	(PACKET_USER, PACKET_KERNEL): New constants, introduced by Linux commit
+	v3.14-rc1~94^2~349.
+
+	xlat: add values to adjtimex_state, adjtimex_status, advise xlats.
+	* xlat/adjtimex_state.in: Add values.
+	* xlat/adjtimex_status.in: Likewise.
+	* xlat/advise.in: Likewise.
+
+	xlat: update adjtimex_modes.
+	* xlat/adjtimex_modes.in: Add values to constants.
+	(0): Remove.
+	(ADJ_OFFSET_SS_READ): Move to the first place.
+	(ADJ_OFFSET_SINGLESHOT): Move to the second place.
+
+2018-05-04  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mmap_cache: do not activate unless requested.
+	Do not call mmap_cache functions until mmap_cache_enable is invoked.
+	Change struct mmap_cache_t into a proxy structure, move all mmap_cache
+	data from struct tcb inside this new structure.
+
+	* Makefile.am (strace_SOURCES): Move mmap_cache.c and mmap_cache.h
+	to libstrace_a_SOURCES.
+	* defs.h (struct tcb): Remove mmap_cache_size and mmap_cache_generation
+	* fields.
+	* mmap_cache.h (struct mmap_cache_t): Rename
+	to struct mmap_cache_entry_t, create a new struct mmap_cache_t,
+	all users updated.
+	(mmap_cache_delete): Remove.
+	* mmap_cache.c (mmap_cache_delete): Rename to delete_mmap_cache,
+	add static qualifier.
+	(build_mmap_cache): Merge into mmap_cache_rebuild_if_invalid.
+	* strace.c (droptcb): Replace mmap_cache_delete invocation
+	with tcp->mmap_cache->free_fn.
+
+2018-05-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	mmap_cache: remove mmap_cache_is_enabled.
+	This function is no longer used and could be removed.
+
+	* mmap_cache.c (mmap_cache_is_enabled): Remove.
+	* mmap_cache.h: Likewise.
+
+2018-05-03  Masatake YAMATO  <yamato@redhat.com>
+
+	unwind-libdw: use the mmap_notify subsystem.
+	The unwind subsystem uses the mmap_cache subsystem even it uses
+	unwind-libdw as backend. unwind-libdw doesn't need the full set of the
+	mmap_cache subsystem; libdw has a feature for caching a memory
+	mapping.
+
+	This commit does three things.
+
+	(1) Make the unwind subsystem not use the mmap_cache subsystem.
+	The unwind subsystem never concern the memory mapping of the target.
+	It becomes a thin layer.
+
+	(2) Make unwind-libunwind use the mmap_cache subsystem directly.
+
+	(3) Make unwind-libdw use the mmap_notify subsystem to know when it
+	should call dwfl_linux_proc_report/dwfl_report_end for updating the
+	cache.
+
+	Here is a subsystem structure that this patch
+	introduces:
+
+		+-------------------------------------+
+		|            unwind subsys            |
+		+------------------+------------------+
+		| unwind-libunwind |   unwind-libdw   |
+		+------------------+------------------+
+		|    mmap_cache    |                  |
+		+------------------+                  |
+		|               mmap_notify           |
+		+-------------------------------------+
+		|                syscall              |
+		+-------------------------------------+
+	               mmap/munmap/mprotect/brk...
+
+	* unwind.c: Don't include "mmap_cache.h".
+	(unwind_init): Don't call mmap_cache_enable.
+	(unwind_tcb_print, unwind_tcb_capture): Don't call mmap_cache related
+	functions, just invoke unwinder.tcb_walk.
+	* unwind.h (struct unwind_unwinder_t): Remove tcb_flush_cache field.
+
+	* unwind-libdw.c: Include "mmap_notify.h" instead of "mmap_cache.h".
+	(struct ctx): Add last_proc_updating field to record the generation
+	of memory mapping that is cached by dwfl_linux_proc_report
+	and dwfl_report_end.
+	(mapping_generation): A variable counting how many times the memory
+	mapping of targets has been changed.
+	(updating_mapping_generation): New utility function for updating
+	mapping_generation.
+	(init): New function for registering updating_mapping_generation
+	in the mmap_notify subsystem as a callback function.
+	(tcb_init): Initialize ctx::last_proc_updating.
+	(tcb_flush_cache): Rename to flush_cache_maybe.  Rebuild the cache data
+	only if the data is stale.
+	(tcb_walk): Call flush_cache_maybe for avoiding referring staled cache data.
+	(unwinder): Set init function, remove tcb_flush_cache field.
+	* unwind-libunwind.c (init): Enable the mmap_cache subsystem.
+	(tcb_walk): Call mmap_cache_rebuild_if_invalid and unw_flush_cache for
+	updating the cache of the memory mapping before walking the stack.
+	(tcb_walk): Rename to walk.
+	(unwinder): Remove tcb_flush_cache field.
+
+2018-05-03  Masatake YAMATO  <yamato@redhat.com>
+
+	unwind-libdw: introduce indirect data structure for storing unwinding context
+	unwind-libdw uses Dwfl as the data structure for storing unwinding
+	context.  It is raw data that come from libdw.
+
+	This commit introduces "struct ctx" file local data type for allowing
+	unwind-libdw to attach strace side data to the unwinding context.
+
+	* unwind-libdw.c (struct ctx): New struct definition.
+	(tcb_init, tcb_fin, tcb_walk, tcb_flush_cache): Use struct ctx instead
+	of Dwfl directly.
+
+2018-05-03  Masatake YAMATO  <yamato@redhat.com>
+
+	mmap_notify: rename the macro for tracking memory mapping.
+	* sysent.h (STACKTRACE_INVALIDATE_CACHE): Rename to
+	MEMORY_MAPPING_CHANGE.  All users updated.
+
+	mmap_cache: use the mmap_notify subsystem.
+	* mmap_cache.c: Include mmap_notify.h.
+	(mmap_cache_enable): Call mmap_notify_register_client to use
+	the mmap_notify subsystem, mmap_cache_invalidate is specified
+	to handle the change of memory mapping.
+	(mmap_cache_invalidate): Add static qualifier.
+	* mmap_cache.h (mmap_cache_invalidate): Remove.
+	* syscall.c: Include mmap_notify.h instead of mmap_cache.h.
+	(syscall_exiting_decode): Call mmap_notify_report instead
+	of mmap_cache_invalidate.
+
+2018-05-03  Masatake YAMATO  <yamato@redhat.com>
+
+	mmap_notify: new subsystem for tracking the changes of memory mappings.
+	This subsystem is a spin-off of the mmap_cache subsystem.
+
+	The mmap_cache subsystem had two features: (1) tracking the change
+	of memory mapping, and (2) maintaining the cache of memory mapping.
+
+	mmap_notify is a subsystem specialized to provide feature (2).
+	unwind-libdw itself has the feature (1).  It needs only (2).
+
+	* mmap_notify.h: New file.
+	* mmap_notify.c: Likewise.
+	* Makefile.am (strace_SOURCES): Add them.
+
+2018-05-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	btrfs: add missing braces.
+	Reported by Coverity.
+
+	* btrfs.c (MPERS_PRINTER_DECL(btrfs_ioctl)) <case
+	BTRFS_IOC_TREE_SEARCH_V2>: Add missing braces.
+
+	Fixes: v4.22-76-gf766447 "btrfs: use PRINT_FIELD_*"
+
+2018-05-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.c: check return code of never failing fcntl call.
+	Because the kernel cannot be trusted.
+
+	* strace.c (set_cloexec_flag): Call perror_msg_and_die if fcntl(F_SETFD)
+	has failed.
+
+2018-05-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	sock: use error_func_msg for printing function name.
+	* sock.c (decode_ifconf): Use error_func_msg instead of error_msg with
+	manual function name printing.
+
+2018-05-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	util.c: add len sanity checks to dumpstr.
+	Reported by clang.
+
+	* util.c (dumpstr): Check that len is sane.
+
+2018-05-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mmap_cache: fool-proofing build_mmap_cache.
+	Let's try to handle better the situation when build_mmap_cache is called
+	without mmap_cache/mmap_cache_size being reset prior to the call.
+
+	Reported by Coverity scan.
+
+	* mmap_cache.c (build_mmap_cache): Set cache_head to tcp->mmap_cache.
+	Reset tcp->mmap_cache_size to 0.
+
+2018-05-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	error_prints: add missing va_end() calls.
+	These missing va_end() calls are followed by die() calls that never
+	return, so the only practical effect of this change is appeasement
+	of code checking tools.
+
+	Reported by cppcheck.
+
+	* error_prints.c (error_msg_and_die, error_msg_and_help,
+	perror_msg_and_die): Add va_end().
+
+2018-05-03  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mem: handle potential error from sysconf(_SC_PAGESIZE)
+	Reported by Coverity scan.
+
+	* mem.c (get_pagesize): Handle the case when sysconf(_SC_PAGESIZE)
+	returns an error.
+
+2018-05-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: merge fcntl64cmds into fcntlcmds.
+	Since we don't have to workaround old F_[GS]ETOWN_EX == F_[SG]ETLK64
+	kernel bug any longer, there is a room for cleanup.
+
+	* xlat/fcntlcmds.in (F_GETLK64, F_SETLK64, F_SETLKW64): Add from
+	xlat/fcntl64cmds.in.
+	* xlat/fcntl64cmds.in: Remove.
+	* fcntl.c: Do not include "xlat/fcntl64cmds.h".
+	(SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Do not use fcntl64cmds, call
+	printxval instead of printxvals.
+
+2018-05-03  Zhibin Li  <08826794brmt@gmail.com>
+
+	tests: check decoding of F_GETOWN_EX and F_SETOWN_EX fcntl commands.
+	* tests/fcntl.c (TEST_F_OWNER_EX): New macro.
+	[TEST_F_OWNER_EX]: Include "f_owner_ex.h".
+	[TEST_F_OWNER_EX] (test_f_owner_ex_type_pid,
+	test_f_owner_ex_umove_or_printaddr, test_f_owner_ex): New functions.
+	(main) [TEST_F_OWNER_EX]: Use test_f_owner_ex.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-05-03  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Introduce f_owner_ex.h.
+	Some headers define struct f_owner_ex, some struct __kernel_f_owner_ex,
+	we have to support both variants.
+
+	* configure.ac (AC_CHECK_TYPES): Check for "struct f_owner_ex"
+	and "struct __kernel_f_owner_ex" in <linux/fcntl.h>.
+	* f_owner_ex.h: New file.
+	* Makefile.am (strace_SOURCES): Add it.
+
+2018-05-02  Masatake YAMATO  <yamato@redhat.com>
+
+	tests/ioctl_kvm_run.c: handle cpuid at the end of vcpu dentry.
+	Since Linux 4.16, kernel appends the cpuid as suffix to the entry
+	for a kvm vcpu in /proc/$pid/fd like:
+
+	    anon_inode:kvm-vcpu:0
+
+	That was
+
+	    anon_inode:kvm-vcpu
+
+	This kernel change causes the test case failure on newer kernels.
+	Update the test to deal with the new name as well as the old one.
+
+	* tests/ioctl_kvm_run.c: Include unistd.h for using readlink(2).
+	(vcpu_dev_should_have_cpuid): New function for detecting whether
+	a proc entry for given fd has the cpuid suffix or not.
+	(main): Trim vcpu_dev to remove the cpuid suffix if needed.
+	(vcpu_dev): Remove const modifier.
+
+2018-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: check that system definitions match fallback definitions.
+	For each constant that is accompanied by a fallback definition,
+	generate a sanity check that the definition provided by system headers
+	matches the fallback definition.
+
+	* gcc_compat.h (DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE,
+	DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE): New macros.
+	* xlat/gen.sh (cond_def): Generate a code that checks the system
+	definition against the default.
+	(gen_header): Generate a code that includes "gcc_compat.h" and
+	"static_assert.h".
+
+	Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2018-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: override values of F_SETOWN_EX and F_GETOWN_EX constants.
+	Linux kernel commit v2.6.32-rc7~23 has changed values of F_SETOWN_EX
+	and F_GETOWN_EX constants introduced by commit v2.6.32-rc1~96 to fix
+	the conflict with F_GETLK64 and F_SETLK64 constants.
+
+	Looks like the best way to handle this situation is to pretend that
+	old values of F_SETOWN_EX and F_GETOWN_EX didn't exist.
+
+	* xlat/fcntlcmds.in (F_SETOWN_EX, F_GETOWN_EX): Undefine.
+
+2018-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: fix F_* fallback definitions on alpha, hppa, mips, and sparc.
+	* xlat/fcntlcmds.in (F_GETLK, F_SETLK, F_SETLKW, F_SETOWN, F_GETOWN,
+	F_SETSIG, F_GETSIG) [alpha || hppa || mips || sparc]: Fix definitions.
+	* xlat/fcntl64cmds.in (F_GETLK64, F_SETLK64, F_SETLKW64) [hppa || mips]:
+	Likewise.
+
+	xlat: fix SI_* fallback definitions on mips.
+	* xlat/siginfo_codes.in [mips] (SI_ASYNCIO, SI_TIMER, SI_MESGQ): Define
+	to -2, -3, and -4, respectively.
+
+2018-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: override values of KEY_RFKILL and KEY_BRIGHTNESS_MIN constants.
+	KEY_RFKILL and KEY_NUMERIC_A constants were introduced by Linux kernel
+	commits v2.6.33~17^2~2 and v4.1-rc1~150^2~1^10~6, respectively.
+	Apparently, RHEL6 introduced an alternative KEY_RFKILL constant
+	with the same value as upstream KEY_NUMERIC_A.
+
+	KEY_BRIGHTNESS_MIN and KEY_BRIGHTNESS_MAX constants were introduced
+	by Linux kernel commit v3.16-rc1~30^2~6^2~1^2~7.
+	Apparently, RHEL7 introduced an alternative KEY_BRIGHTNESS_MIN constant
+	with the same value as upstream KEY_BRIGHTNESS_MAX.
+
+	Downstream vendors are *not* allowed to do this.
+	Ignore the system value of KEY_RFKILL and KEY_BRIGHTNESS_MIN.
+
+	* xlat/evdev_keycode.in (KEY_RFKILL, KEY_BRIGHTNESS_MIN): Undefine.
+
+2018-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: override the value of KEY_DATA constant.
+	Linux kernel commit v4.9-rc8~12^2 has changed the value of KEY_DATA
+	constant introduced by commit v4.7-rc6~32^2~6^2 because the old value
+	was already used by KEY_FASTREVERSE.
+
+	Looks like the best way to handle this situation is to pretend that
+	the old value of KEY_DATA didn't exist.
+
+	* xlat/evdev_keycode.in (KEY_DATA): Undefine.
+
+2018-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: override the value of AUDIT_FEATURE_CHANGE constant.
+	Linux kernel commit v3.15-rc1~18^2~1 has changed the value
+	of AUDIT_FEATURE_CHANGE constant introduced by commit v3.13-rc1~19^2~20
+	which is of course an ABI breakage that affected 3.13 and 3.14 kernel
+	releases as well as their LTS derivatives.
+
+	Linux kernel commit v3.15-rc1~18^2~1 also claims that the old value
+	of AUDIT_FEATURE_CHANGE was ignored by userspace because of the
+	established convention how netlink messages for the audit system
+	are divided into blocks.
+
+	Looks like the best way to handle this situation is to pretend that
+	the old value of AUDIT_FEATURE_CHANGE didn't exist.
+
+	* xlat/nl_audit_types.in (AUDIT_FEATURE_CHANGE): Undefine.
+
+	Co-Authored-by: Eugene Syromyatnikov <evgsyr@gmail.com>
+
+2018-04-29  Dmitry V. Levin  <ldv@altlinux.org>
+
+	xlat: fix MCL_* fallback definitions on alpha, ppc, ppc64, and sparc.
+	On these architectures, MCL_* constants are different.
+
+	* xlat/socketlayers.in [__alpha__ || __powerpc__ || __powerpc64__
+	|| __sparc__] (MCL_CURRENT, MCL_FUTURE, MCL_ONFAULT): Define to 0x2000,
+	0x4000, and 0x8000, respectively.
+
+2018-04-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: fix SOL_SOCKET fallback definition on alpha, hppa, mips, and sparc
+	On these architectures, SOL_SOCKET is 0xffff and not 1.
+
+	* xlat/socketlayers.in [__alpha__ || __hppa__ || __mips__ || __sparc__]
+	(SOL_SOCKET): Define to 0xffff.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add more mount checks.
+	* tests/gen_tests.in (mount, mount-Xabbrev, mount-Xraw, mount-Xverbose):
+	Add -a33 option.
+	* tests/mount.c: Check printing of flags and pointers.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-28  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: use sprintrc in mount test.
+	* tests/mount.c (main): Use sprintrc.
+
+2018-04-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add mount variants with different xlat verbosity levels.
+	* tests/mount-Xabbrev.c: New file.
+	* tests/mount-Xraw.c: Likewise.
+	* tests/mount-Xverbose.c: Likewise.
+	* tests/mount.c: Add handling of XLAT_RAW and XLAT_VERBOSE macros.
+	* tests/pure_executables.list: Add mount-Xabbrev, mount-Xraw,
+	and mount-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (mount-Xabbrev, mount-Xraw, mount-Xverbose): New
+	tests.
+
+	tests: add old_mmap variants with different xlat verbosity levels.
+	* tests/old_mmap-Xabbrev.c: New file.
+	* tests/old_mmap-Xraw.c: Likewise.
+	* tests/old_mmap-Xverbose.c: Likewise.
+	* tests/old_mmap.c (main): Add handling of XLAT_RAW and XLAT_VERBOSE
+	macros.
+	* tests/pure_executables.list: Add old_mmap-Xabbrev, old_mmap-Xraw,
+	and old_mmap-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (old_mmap-Xabbrev, old_mmap-Xraw,
+	old_mmap-Xverbose): New tests.
+
+2018-04-28  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add mmap/mmap64 variants different xlat verbosity levels.
+	* tests/tests.h [!XLAT_RAW] (XLAT_RAW): Define.
+	[!XLAT_VERBOSE] (XLAT_VERBOSE): Likewise.
+	* tests/mmap-Xabbrev.c: New file.
+	* tests/mmap-Xraw.c: Likewise.
+	* tests/mmap-Xverbose.c: Likewise.
+	* tests/mmap64-Xabbrev.c: Likewise.
+	* tests/mmap64-Xraw.c: Likewise.
+	* tests/mmap64-Xverbose.c: Likewise.
+	* tests/mmap.c (main): Add handling of XLAT_RAW and XLAT_VERBOSE macros.
+	* tests/mmap.test: Add handling of optional test arguments that set
+	alignment and xlat verbosity options.
+	* tests/Makefile.am (mmap64_Xabbrev_CPPFLAGS, mmap64_Xraw_CPPFLAGS,
+	mmap64_Xverbose_CPPFLAGS): New variables, analogous to mmap64_CPPFLAGS.
+	* tests/pure_executables.list: Add mmap-Xabbrev, mmap-Xraw,
+	mmap-Xverbose, mmap64-Xabbrev, mmap64-Xraw, and mmap64-Xverbose.
+	* tests/.gitignore: Likewise.
+	* tests/gen_tests.in (mmap-Xabbrev, mmap-Xraw, mmap-Xverbose,
+	mmap64-Xabbrev, mmap64-Xraw, mmap64-Xverbose): New tests.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Fix fallback definition of MSG_ZEROCOPY.
+	* xlat/msg_flags.in (MSG_ZEROCOPY): Set fallback definition to 0x4000000.
+
+	Fixes: v4.21~316 ("Update MSG_* constants")
+
+2018-04-27  Dmitry V. Levin  <ldv@altlinux.org>
+
+	build: try to use _Static_assert if static_assert is not available.
+	* configure.ac: Check for _Static_assert if static_assert
+	is not available.
+	* static_assert.h [!HAVE_STATIC_ASSERT && HAVE__STATIC_ASSERT]
+	(static_assert): Define to _Static_assert.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	printmode: add xlat style support to print_symbolic_mode_t.
+	* printmode.c (print_symbolic_mode_t): Set ifmt to an empty string,
+	print raw and decoded values based on current xlat_verbosity setting.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	evdev: remove XT_NORMAL.
+	It is no longer used.
+
+	* evdev.c (enum xlat_type) <XT_NORMAL>: Remove.
+	(printxval_dispatch) <case XT_NORMAL>: Remove.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Switch to use of value-indexed xlats for evdev constants.
+	* xlat/evdev_abs.in: Add "#value_indexed" directive.
+	* xlat/evdev_autorepeat.in: Likewise.
+	* xlat/evdev_ff_status.in: Likewise.
+	* xlat/evdev_keycode.in: Likewise.
+	* xlat/evdev_leds.in: Likewise.
+	* xlat/evdev_misc.in: Likewise.
+	* xlat/evdev_prop.in: Likewise.
+	* xlat/evdev_relative_axes.in: Likewise.
+	* xlat/evdev_snd.in: Likewise.
+	* xlat/evdev_switch.in: Likewise.
+	* xlat/evdev_sync.in: Likewise.
+	* xlat/evdev_ff_types.in: Add a comment about sorting.
+	* evdev.c (keycode_ioctl, keycode_V2_ioctl): Use printxval_index
+	instead of printxval.
+	(bit_ioctl): Use XT_SORTED for evdev_ff_types, use XT_INDEXED
+	for other xlats.
+	(evdev_read_ioctl): Use XT_INDEXED for all xlats.
+	* ioctl.c (evdev_decode_number): Use printxval_indexn instead of
+	printxval for evdev_abs.
+
+	evdev: support various types of xlats in decode_bitset.
+	* evdev.c (enum xlat_type): New enumeration.
+	(printxval_dispatch): New function.
+	(decode_bitset_): Rename from decode_bitset, add decode_nr_size
+	and xt arguments, call printxval_dispatch instead of printxval.
+	(decode_bitset): Add a decode_bitset_ wrapper that derives
+	decode_nr_size from the ARRAY_SIZE of decode_nr.
+	(bit_ioctl, evdev_read_ioctl): Update decode_bitset calls.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Move xlat/evdev_abs.h inclusion from ioctl.c to evdev.c.
+	Also introduce evdev_abs_size constant, which will be needed later.
+
+	* defs.h (evdev_abs_size): New declaration.
+	* ioctl.c: Move xlat/evdev_abs.h inclusion ...
+	* evdev.c: ... here.
+	(evdev_abs_size): New constant variable.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add support for value-indexed xlats.
+	There are quite a few xlats that start from 0 and not too sparse,
+	we can push the search time for them down to O(1).
+
+	* defs.h (printxval_indexn_ex): New declaration.
+	(printxval_indexn, printxval_index, printxval_index_ex): New macros.
+	* xlat.c (printxval_sized): Rename from printxval_searchn_ex,
+	add fn argument, call it instead of xlat_search.
+	(printxval_searchn_ex): Implement as a thin wrapper around
+	printxval_sized using xlat_search as a search function.
+	(xlat_idx): New function.
+	(printxval_indexn_ex): New function, a thin wrapper around
+	printxval_sized using xlat_idx as a search function.
+	* xlat/gen.sh: Add support for "#value_indexed" directive.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	socketcall: use printxval_d for printing call argument.
+	* socketcall.c (SYS_FUNC(socketcall)): Use printxval_d instead of manual
+	call argument decoding.
+
+	signal: use print_xlat_ex in print_sa_handler.
+	* signal.c (print_sa_handler): Call print_xlat_ex instead of tprints
+	in order to respect current xlat style setting.
+
+	s390: use printxvals_ex for command printing in s390_runtime_instr.
+	* s390.c (SYS_FUNC(s390_runtime_instr)): Replace manual command argument
+	decoding with a printxvals_ex call.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	printsiginfo: use print_xlat_ex in print_si_code.
+	In order to respect current xlat style setting.
+
+	* printsiginfo.c (print_si_code): Use print_xlat_ex instead of manual
+	string/value printing.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	open: use print_xlat_ex for printing open modes.
+	In order to respect xlat style setting.
+
+	* open.c (tprint_open_modes): Use print_xlat_ex instead of
+	tprint_open_modes.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	netlink: use print_xlat_ex in decode_nlmsg_type_netfilter.
+	In order to respect current xlat style setting.
+
+	* netlink.c (decode_nlmsg_type_netfilter): Use print_xlat_ex
+	instead of tprints.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	net: use print_xlat_ex in tprint_sock_type.
+	In order to respect current xlat style setting.
+
+	* next.c (tprint_sock_type): Use print_xlat_ex instead of tprints
+	for socket type printing.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	keyctl: use printxval_d for printing keyring serial number.
+	* keyctl.c (print_keyring_serial_number): Use printxval_d instead of
+	looking up and printing xlat value manually.
+	* xlat/key_spec.in: Add "#val_type int" so the xlat values have sign
+	bit propagated.
+
+	ipc: use printxval_u instead of manual xlat value printing.
+	* ipc.c (SYS_FUNC(ipc)): Decode call argument using printxval_u.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ioprio: use sprintxval instead of xlookup and string/value printing.
+	In order to respect current xlat style.
+
+	* ioprio.c (sprint_ioprio): Use sprintxval for producing string
+	representation of ioprio class, use the produced string representation
+	in resulting xsprintf.
+
+2018-04-27  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: handle NULL str in print_xlat_ex.
+	It allows to use the following code pattern:
+
+		print_xlat_ex(val, xlookup(xlat, val), XLAT_STYLE_FMT_D);
+
+	* xlat.c (print_xlat_ex): Handle str being NULL: print val instead.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-26  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	strace.1.in: fix typo (Ronald -> Roland)
+	A very unfortunate one, though.
+
+	NEWS: mention that -X option addresses Debian bug #692915.
+
+2018-04-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ioctl: do not include linux/input.h.
+	All the ABS_* and EV_* values are now available internally,
+	there's no need to include the header.
+
+	* ioctl.c [HAVE_LINUX_INPUT_H]: Do not include linux/input.h.
+
+2018-04-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: add more evdev ioctl checks.
+	tests/ioctl_evdev.c (TEST_NULL_ARG_EX): Rename from TEST_NULL_ARG, add
+	str argument, print it instead of #cmd.
+	(TEST_NULL_ARG): Implement as a TEST_NULL_ARG_EX wrapper.
+	(main): Add checks for EVIOCSABS and EVIOCGBIT ioctls.
+
+	evdev: decode EV_SW unconditionally.
+	* evdev.c (bit_ioctl): Remove [EV_SW] check.
+	* tests/ioctl_evdev.c [!EV_SW] (EV_SW): Define.
+	(main): Remove [EV_SW] check.
+
+2018-04-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: provide fallback definitions for arch-independent evdev constants.
+	* xlat/evdev_abs.in: Add constant values.
+	* xlat/evdev_autorepeat.in: Likewise.
+	* xlat/evdev_ev.in: Likewise.
+	* xlat/evdev_ff_status.in: Likewise.
+	* xlat/evdev_ff_types.in: Likewise.
+	* xlat/evdev_leds.in: Likewise.
+	* xlat/evdev_misc.in: Likewise.
+	* xlat/evdev_prop.in: Likewise.
+	* xlat/evdev_relative_axes.in: Likewise.
+	* xlat/evdev_snd.in: Likewise.
+	* xlat/evdev_switch.in: Likewise.
+	* xlat/evdev_sync.in: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-25  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat/evdev_switch.in: update.
+	* xlat/evdev_switch.in (SW_RADIO): Remove, as it was renamed to
+	SW_RFKILL_ALL and marked as deprecated by Linux commit v2.6.26-rc5~32^2.
+	(SW_PEN_INSERTED): New constant, was added by Linux commit v4.7~11^2~7.
+
+2018-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	util.c: make "Out of memory" messages a bit more informative.
+	Since these are emitted in multiple places and are not expected during
+	any normal operation, it makes sense to report the caller name.
+
+	* util.c (print_quoted_string_ex, print_quoted_string_ex, dumpiov_upto,
+	dumpstr): Replace error_msg with error_func_msg.
+
+2018-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ci: reorder travis jobs.
+	Run coverage check first as it is the longest one.
+
+	* .travis.yml (matrix): Reorder.
+
+2018-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: add MS_SUBMOUNT constant.
+	* xlat/mount_flags.in (MS_SUBMOUNT): New constant, introduced
+	by Linux commit v4.11-rc1~82^2~7.
+
+2018-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	fcntl: replace combinations of xlookup and printxval with printxvals.
+	After all, that's what printxvals for.
+
+	* fcntl.c (SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Use printxvals for
+	printing value with multiple xlat tables as constant sources.
+
+2018-04-24  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Move xlat_verbose and xlat_format from xlat.c to defs.h.
+	As it will be used elsewhere.
+
+	* xlat.c (xlat_verbose, xlat_format): Move...
+	* defs.h: ...here.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	btrfs: use printxval_u for error types printing.
+	* btrfs.c (MPERS_PRINTER_DECL(btrfs_ioctl)) <case
+	BTRFS_IOC_GET_DEV_STATS>: Use printxval_u for error type printing.
+	* tests/btrfs.c (btrfs_test_get_dev_stats_ioctl): Update expected output.
+
+	btrfs: print device IDs using PRINT_FIELD_DEV.
+	* btrfs.c (btrfs_print_balance_args): Print devid field using
+	PRINT_FIELD_DEV.
+	(MPERS_PRINTER_DECL(btrfs_ioctl)) <case BTRFS_IOC_DEV_INFO,
+	case BTRFS_IOC_GET_DEV_STATS, case BTRFS_IOC_SCRUB,
+	case BTRFS_IOC_SCRUB_PROGRESS>: Likewise.
+	(MPERS_PRINTER_DECL(btrfs_ioctl)) <case BTRFS_IOC_DEV_REPLACE>: Print
+	start.srcdevid field using PRINT_FIELD_DEV.
+	* tests/btrfs.c: Update expected output.
+
+	btrfs: print cont_reading_from_srcdev_mode as xlat.
+	* xlat/btrfs_cont_reading_from_srcdev_mode.in: New file.
+	* btrfs.c: Include "xlat/btrfs_cont_reading_from_srcdev_mode.h".
+	(MPERS_PRINTER_DECL(btrfs_ioctl)) <case BTRFS_IOC_DEV_REPLACE>: Print
+	named values for the
+	struct btrfs_ioctl_dev_replace_args.start.cont_reading_from_srcdev_mode
+	field.
+	* tests/btrfs.c: Include "xlat/btrfs_cont_reading_from_srcdev_mode.h".
+	(btrfs_test_dev_replace_ioctl): Update expected output.
+
+	btrfs: use PRINT_FIELD_*
+	* btrfs.c (btrfs_print_balance_args, btrfs_print_balance,
+	btrfs_print_features, btrfs_print_qgroup_limit,
+	btrfs_print_data_container_header,
+	print_btrfs_data_container_logical_ino, btrfs_print_qgroup_inherit,
+	btrfs_print_tree_search, print_btrfs_ioctl_space_info, btrfs_ioctl):
+	Use PRINT_FIELD_* macros for printing structure fields.
+
+	btrfs: make BTRFS_IOC_GET_DEV_STATS error statistics output more structured
+	* btrfs.c (MPERS_PRINTER_DECL(btrfs_ioctl)) <case
+	BTRFS_IOC_GET_DEV_STATS>: Print array index in square brackets before
+	the value in order to avoid confusion.
+	* tests/btrfs.c (btrfs_test_get_dev_stats_ioctl): Update expected output.
+
+	ioctl: print ioctl number in accordance with xlat verbosity setting.
+	* ioctl.c (SYS_FUNC(ioctl)): Print ioctl command name in accordance
+	with the current xlat_verbosity setting.
+	* tests/btrfs.c (sprint_xlat_): New function.
+	(ioc): New macro, a wrapper for sprint_xlat_.
+	Update expected output.
+
+	file_ioctl: make abbreviated output more structured.
+	* file_ioctl.c (file_ioctl): Print fm_extents field name only in case
+	of non-abbreviated output.
+	* tests/btrfs.c (btrfs_test_ino_path_ioctls): Update expected output.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	btrfs: fix printing of struct btrfs_ioctl_quota_ctl_args.
+	For some reason, he decoder of BTRFS_IOC_QUOTA_CTL command didn't print
+	opening curly brace and field name, only the closing curly brace.
+
+	* btrfs.c (MPERS_PRINTER_DECL(btrfs_ioctl)) <case BTRFS_IOC_QUOTA_CTL>:
+	Print "{cmd=".
+	* tests/btrfs.c (btrfs_test_quota_ctl_ioctl): Update expected output.
+
+	Fixes: v4.12~100 "ioctl: add decoding support for btrfs ioctls"
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	btrfs: consistently use PRINT_FIELD_U64.
+	* btrfs.c (print_u64, print_member_u64, print_key_value_internal,
+	print_key_value): Remove.
+	(btrfs_print_balance_args): Use PRINT_FIELD_U64 instead of
+	print_member_u64.
+	(btrfs_print_tree_search): Use PRINT_FIELD_U64 instead of
+	print_key_value.
+	(MPERS_PRINTER_DECL(btrfs_ioctl)): Use PRINT_FIELD_U64 instead of manual
+	UINT64_MAX printing.
+	* tests/btrfs.c: Update expected output in order to account fields that
+	are now affected by xlat_verbosity setting.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	btrfs: print {min,max}_{offset,transid} unconditionally.
+	As it looks like there's no reason to skip their printing.
+
+	* btrfs.c (print_key_value_internal): Do not check value argument
+	for holding non-zero value.
+	* tests/btrfs.c (btrfs_print_search_key): Update expected output.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/btrfs.c: accept possible failure of BTRFS_IOC_BALANCE_V2.
+	BTRFS_IOC_BALANCE_V2 ioctl might fail sometimes (for example, if it
+	decides that it doesn't have enough free space).
+
+	* tests/btrfs.c (btrfs_test_balance_ioctls): Print expected output for
+	the BTRFS_IOC_BALANCE_V2 call based on its return code.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/btrfs.c: support volumes with mixed data/metadata in BTRFS_IOC_BALANCE_V2
+	For these volumes, pend/vend should be the same for data and meta.
+
+	* tests/btrfs.c (btrfs_test_balance_ioctls): Set args.meta.pend and
+	args.meta.vend to the same values as args.data.pend and args.data.vend,
+	respectively.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/btrfs.c: check BTRFS_IOC_SUBVOL_CREATE_V2 result.
+	Otherwise the subsequent openat call fails with a cryptic message.
+
+	* tests/btrfs.c (btrfs_test_subvol_ioctls): Check return code of the
+	BTRFS_IOC_SUBVOL_CREATE_V2 ioctl call that is supposed to be successful.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests/btrfs.c: add pid suffix to the created directory, remove it on exit
+	If multiple tests are running simultaneously in the same directory,
+	conflicts (and test failures) may happen.
+
+	* tests/btrfs.c (path, dir_name_fmt, dir_name): New variables.
+	(btrfs_test_ino_path_ioctls): Use dir_name for printing directory name.
+	(rm_test_dir): New function.
+	(main): Generate dir_name, use it instead of fixed name, add rm_test_dir
+	as an atexit handler.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	btrfs: duplicate printing of opening braces on entering/exiting.
+	* btrfs.c (MPERS_PRINTER_DECL(btrfs_ioctl)): Print opening bracket
+	on entering and exiting separately.
+
+	btrfs: refactor timespec printing into print_btrfs_timespec.
+	* btrfs.c (print_btrfs_timespec): New function.
+	(MPERS_PRINTER_DECL(btrfs_ioctl)) <case BTRFS_IOC_SET_RECEIVED_SUBVOL>:
+	Use print_btrfs_timespec for printing stime and rtime fields.
+	* tests/btrfs.c (btrfs_test_set_received_subvol_ioctl): Update expected
+	output.
+
+	btrfs: print abbreviations and field names more consistently.
+	* btrfs.c (btrfs_print_data_container_header): Do not print ", val=".
+	(btrfs_print_ino_path_container): Print val field name only in case
+	of non-abbreviated output.
+	(btrfs_print_qgroup_inherit): Print qgroups field name only in case
+	of non-abbreviated output.
+	(btrfs_print_tree_search): Print buf field name only in case
+	of non-abbreviated output.
+	(MPERS_PRINTER_DECL(btrfs_ioctl)) <case BTRFS_IOC_SEND>: Print
+	clone_sources field name only in case of non-abbreviated output.
+	(MPERS_PRINTER_DECL(btrfs_ioctl)) <case BTRFS_IOC_SPACE_INFO>: Print
+	spaces field name only in case of non-abbreviated output.
+	* tests/btrfs.c: Update expected output.
+
+	btrfs: move printing of the field name inside btrfs_print_qgroup_limit.
+	* btrfs.c (btrfs_print_qgroup_limit): Print ", lim=".
+	(btrfs_print_qgroup_inherit, MPERS_PRINTER_DECL(btrfs_ioctl)): Do not
+	print ", lim=" before btrfs_print_qgroup_limit call.
+
+	btrfs: convert btrfs_print_{objectid,key_type} to PRINT_FIELD_XVAL_U.
+	* btrfs.c (btrfs_print_key_type, btrfs_print_objectid): Convert into
+	thin wrappers around PRINT_FIELD_XVAL_U.
+	(btrfs_print_data_container_header, btrfs_print_tree_search,
+	MPERS_PRINTER_DECL(btrfs_ioctl)): Update calls to btrfs_print_key_type
+	and btrfs_print_objectid in accordance with the new calling convention.
+	(print_objectid_callback): Use printxvals_ex directly instead of
+	btrfs_print_objectid call.
+	* tests/btrfs.c (btrfs_print_objectid, btrfs_print_key_type): Update
+	expected output.
+
+	tests: add btrfs tests with verbose xlat decoding.
+	* tests/btrfs-X.test: New test.
+	* tests/btrfs-vX.test: Likewise.
+	* tests/btrfs-vwX.test: Likewise.
+	* tests/btrfs-wX.test: Likewise.
+	* tests/Makefile.am (DECODER_TESTS): Add them.
+	* tests/btrfs.c (verbose_xlat): New static variable.
+	(prfl_btrfs, prxval_btrfs): New function.
+	(btrfs_print_qgroup_inherit, btrfs_print_vol_args_v2,
+	btrfs_print_balance_args, btrfs_test_balance_ioctls,
+	btrfs_test_clone_ioctls, btrfs_test_defrag_ioctls,
+	btrfs_test_space_info_ioctl, btrfs_print_defrag_range_args,
+	btrfs_test_scrub_ioctls, btrfs_test_ino_path_ioctls,
+	btrfs_test_send_ioctl, btrfs_test_send_ioctl,
+	btrfs_test_quota_ctl_ioctl, btrfs_test_get_dev_stats_ioctl,
+	btrfs_test_get_dev_stats_ioctl, btrfs_test_dev_replace_ioctl,
+	btrfs_test_dev_replace_ioctl, btrfs_print_features): Use prfl_btrfs and
+	prxval_btrfs instead of printflags and printxval, respectively.
+	(btrfs_test_balance_ioctls, btrfs_test_ino_path_ioctls,
+	btrfs_test_quota_ctl_ioctl, btrfs_test_dev_replace_ioctl,
+	btrfs_test_dev_replace_ioctl): Update expected output based on
+	verbose_xlat setting.
+	(btrfs_print_defrag_range_args): Add compress_type_known arg, pass it
+	to prxval_btrfs.
+	(main): Handle -X option.
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	tests: check -X option syntax.
+	* tests/options-syntax.test: Add checks for -X option with invalid
+	arguments.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add user interface for configuring xlat output style.
+	* strace.c (init): Handle -X option, set xlat_verbosity
+	according to -X argument.
+	* strace.1.in: Document -X option.
+	* NEWS: Mention it.
+
+	Closes: https://github.com/strace/strace/issues/27
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-20  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: print fields that interpreted as pointers using printaddr64.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_ELEM),
+	BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_ELEM)): Print key and value
+	fields using PRINT_FIELD_ADDR64.
+	(BEGIN_BPF_CMD_DECODER(BPF_MAP_DELETE_ELEM)): Print key field using
+	PRINT_FIELD_ADDR64.
+	(BEGIN_BPF_CMD_DECODER(BPF_MAP_GET_NEXT_KEY)): Print key and next_key
+	field using PRINT_FIELD_ADDR64.
+	(BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)): Print insns and log_buf fields
+	using PRINT_FIELD_ADDR64.
+	(BEGIN_BPF_CMD_DECODER(BPF_PROG_TEST_RUN)): Print data_in and data_out
+	fields using PRINT_FIELD_ADDR64.
+	* tests/bpf.c: Update expected output.
+
+2018-04-20  Dmitry V. Levin  <ldv@altlinux.org>
+
+	build: make it even more reproducible.
+	* Makefile.am (today): Consistently print the UTC date in C locale.
+	* configure.ac (RPM_CHANGELOGTIME, DEB_CHANGELOGTIME): Likewise.
+	* maint/update_copyright_years.sh: Likewise.
+	* copyright-year-gen: Likewise.  When $SOURCE_DATE_EPOCH is non-empty,
+	use it as fallback date before the current system date.
+
+	References: https://github.com/strace/strace/pull/68
+
+2018-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	unwind: move unwind_tcb_init invocation to after_successful_attach.
+	There is no need to call unwind_tcb_init before the tracee is attached.
+
+	* strace.c (alloctcb) [ENABLE_STACKTRACE]: Move unwind_tcb_init
+	invocation ...
+	(after_successful_attach) [ENABLE_STACKTRACE]: ... here.
+	(init) [ENABLE_STACKTRACE]: Remove unwind_tcb_init invocation loop.
+	* unwind.c (unwind_tcb_fin): Skip if tcp->unwind_queue is NULL.
+
+2018-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	strace: move setting of post-attach flags inside after_successful_attach
+	* strace.c (after_successful_attach): Add "flags" argument.
+	Set TCB_ATTACHED, TCB_STARTUP, and "flags" in tcp->flags.
+	All users updated.
+
+2018-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	strace: rename newoutf to after_successful_attach.
+	This function is going to be used for other things that have to be done
+	right after a successful attach, hence the rename.
+
+	* strace.c (newoutf): Rename to after_successful_attach,
+	all users updated.
+
+2018-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	unwind: remove stray newline in error diagnostics.
+	* unwind-libdw.c (tcb_init): Do not pass trailing "\n" to error_msg
+	as the latter prints newline itself.
+
+2018-04-19  Dmitry V. Levin  <ldv@altlinux.org>
+
+	build: make it more reproducible.
+	* file-date-gen: Consistently print the UTC date in C locale.
+	When $SOURCE_DATE_EPOCH is non-empty, use it as fallback date
+	before the current system date.
+
+	Reported-by: Chris Lamb <lamby@debian.org>
+	Closes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=896016
+	Closes: https://github.com/strace/strace/pull/68
+
+2018-04-19  Masatake YAMATO  <yamato@redhat.com>
+
+	unwind: initialize unwind context only if given tcb is initialized.
+	With libdw based unwinder, following warnings are reported
+	when -p is passed before -k:
+
+	   $ ./strace -p 1 -k
+	   ...
+	   ./strace: dwfl_linux_proc_attach returned an error for process 0: No such file or directory
+	   ...
+
+	It seems that commit 54c7792b, "Fix libunwind segfault when -p is
+	passed before -k" doesn't fix the original issue.
+
+	* strace.c (init) [ENABLE_STACKTRACE]: Initialize unwind context only
+	if given tcb is initialized.
+
+2018-04-12  Dmitry V. Levin  <ldv@altlinux.org>
+
+	bpf: harmonize length checks.
+	The rest of the decoder uses offsetof to check the length.
+
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_OBJ_PIN),
+	BEGIN_BPF_CMD_DECODER(BPF_PROG_GET_NEXT_ID),
+	BEGIN_BPF_CMD_DECODER(BPF_PROG_GET_FD_BY_ID),
+	BEGIN_BPF_CMD_DECODER(BPF_MAP_GET_FD_BY_ID)): Use offsetof instead
+	of offsetofend.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: add support for map_name and map_ifindex fields in BPF_MAP_CREATE.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)): Decode map_name
+	and map_ifindex fields that were added in Linux commits
+	v4.15-rc1~84^2~605^2~3 and v4.16-rc1~123^2~145^2~5^2~8, respectively.
+	* bpf_attr.h (struct BPF_MAP_CREATE_struct): Add map_name
+	and map_ifindex fields.
+	* tests/bpf.c (init_BPF_MAP_CREATE_attr7): New function.
+	(BPF_MAP_CREATE_checks): Remove const qualifier, add two more checks.
+
+	bpf: improve handling of various sizes of BPF_MAP_CREATE attributes.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)): Skip printing
+	the rest of the structure if len is less than the offset of the end
+	of max_entries, map_flags, or inner_map_fd field.
+	* tests/bpf.c (BPF_MAP_CREATE_checks): Add two more checks.
+
+	tests: add checks for bpf BPF_MAP_CREATE arguments.
+	* tests/bpf.c (BPF_MAP_CREATE_checks): Add two more checks.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: print numa_node using xlat.
+	As the value of -1 has a special meaning.  The issue is complicated
+	by the fact that this constant is not exported by UAPI.
+
+	* xlat/numa_node.in: New file.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)): Print numa_node field
+	using printxvals_ex with a special xlat style.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	btrfs: use umove_or_printaddr_ignore_syserror instead of u_error mangling
+	* btrfs.c (MPERS_PRINTER_DECL(btrfs_ioctl)) <case
+	BTRFS_IOC_TREE_SEARCH_V2>: Use umove_or_printaddr_ignore_syserror
+	instead of tcp->u_error mangling around umove_or_printaddr call.
+
+	defs.h: introduce umove_or_printaddr{,64}_ignore_syserror wrappers.
+	* defs.h (umove_or_printaddr64_ignore_syserror): New macro, a thin
+	wrapper around umoven_or_printaddr64_ignore_syserror.
+	(umove_or_printaddr_ignore_syserror): New macro, a thin wrapper around
+	umoven_or_printaddr_ignore_syserror.
+
+	print_fields.h: add PRINT_FIELD_XVAL_U for printing xlat in %u format.
+	* print_fields.h (PRINT_FIELD_XVAL_U): New macro.
+
+	print_fields.h: add PRINT_FIELD_U64 for printing u64 with UINT64_MAX handling
+	* print_fields.h (PRINT_FIELD_U64): New macro.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf_sock_filter: use print_xlat32.
+	We can't simply use print_xlat here due to the way those SKF_*_OFF
+	constants are defined.
+
+	* bpf_sock_filter.c (print_sock_filter_k): Use print_xlat32 for printing
+	SKF_AD_OFF, SKF_NET_OFF, and SKF_LL_OFF named constants.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	defs.h: add print_xlat32 macro.
+	For those cases where inadvertent sign extension is possible.
+
+	* defs.h (print_xlat32): New macro, a wrapper for print_xlat_ex.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	open: use print_xlat_d in print_dirfd.
+	* open.c (print_dirfd): Use print_xlat_d for printing AT_FDCWD named
+	constant.
+
+	fanotify: use print_xlat_d.
+	* fanotify.c (SYS_FUNC(fanotify_mark)): Use print_xlat_d for printing
+	FAN_NOFD named constant.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add print_xlat_u and print_xlat_d shorthands.
+	Add variants of print_xlat with various value printing formats.
+
+	* defs.h (print_xlat_u, print_xlat_d): New macro, a wrapper for
+	print_xlat_ex.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	xlat: introduce XLAT_STYLE_FMT_D.
+	As there are some possible users for it, apparently.
+
+	* defs.h (XLAT_STYLE_FORMAT_MASK): Update the value in order to
+	accommodate XLAT_STYLE_FMT_D.
+	(enum xlat_style) <XLAT_STYLE_FMT_D>: New enumeration entity.
+	(printxval64_d, printxval_d): New function, a shorthand for
+	printxvals_ex with a single xlat and XLAT_STYLE_FMT_D xlat style.
+	* xlat.c (sprint_xlat_val): Handle XLAT_STYLE_FMT_D.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	defs.h: add shorthands for printing xval with XLAT_STYLE_FMT_U.
+	* defs.h (printxval_u, printxval64_u): New function, a shorthand for
+	printxvals_ex with a single xlat and XLAT_STYLE_FMT_U as a style.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Add support for various xlat formats.
+	Since xlat printing routines now have a notion of "style" that should be
+	used for printing xlat values, we can also employ this argument for
+	passing information about number printing format (unsigned decimal
+	or hexadecimal, so far).
+
+	* defs.h (XLAT_STYLE_FORMAT_SHIFT, XLAT_STYLE_FORMAT_MASK): New macro
+	constant.
+	(enum xlat_style) <XLAT_STYLE_FMT_X, XLAT_STYLE_FMT_U>: New enumeration
+	entities.
+	* xlat.c (xlat_verbose, xlat_format): New macro for checking specific
+	aspect of style argument.
+	(get_xlat_style): Use xlat_verbose for checking xlat verbosity style.
+	(sprint_xlat_val, print_xlat_val): New function, for easing printing
+	raw constant number with respect to printing format style.
+	(printxvals_ex, sprintxval_ex, printxval_searchn_ex,
+	printxval_searchn_ex, sprintflags_ex, printflags_ex, print_xlat_ex):
+	Use xlat_verbose macro for xlat verbosity style checks. Use
+	print_xlat_val instead of direct raw xlat value printing.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	v4l2: use print_xlat in print_v4l2_queryctrl.
+	* v4la.c (print_v4l2_queryctrl): Use print_xlat for printing
+	V4L2_CTRL_FLAG_NEXT_CTRL named constant.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	prctl: use print_xlat_ex to print PR_SET_PTRACER_ANY.
+	We cannot simply use print_xlat as PR_SET_PTRACER_ANY is defined
+	differently in kernel headers.
+
+	* prctl.c (SYS_FUNC(prctl)) <case PR_SET_PTRACER>: Use print_xlat_ex
+	for printing PR_SET_PTRACER_ANY named constant.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	nlattr: use print_xlat.
+	* nlattr.c (print_nlattr): Use print_xlat for printing NLA_F_NESTED and
+	NLA_F_NET_BYTEORDER named constants.
+
+	ipc_defs.h: use print_xlat.
+	* ipc_defs.h (PRINTCTL): Use print_xlat for printing IPC_64 named
+	constant.
+
+	futex: use print_xlat.
+	* futex.c [!FUTEX_OP_OPARG_SHIFT] (FUTEX_OP_OPARG_SHIFT): New macro
+	constant.
+	(SYS_FUNC(futex)): Use print_xlat for printing FUTEX_OP_OPARG_SHIFT
+	named constant.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ipc: use printxval for printing key.
+	Convert explicit constant printing logic into a printxval call in order
+	to account for xlat style setting.
+
+	* defs.h (ipc_private): New xlat array declaration.
+	* ipc_msg.c (SYS_FUNC(msgget)): Use printxval for printing IPC_PRIVATE.
+	* ipc_sem.c (SYS_FUNC(semtimedop)): Likewise.
+	* ipc_shm.c (SYS_FUNC(shmget)): Likewise.
+	* xlat/ipc_private.in: New file.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	mount: use print_xlat for printing MS_MGC_VAL.
+	* mount.c (SYS_FUNC(mount)): Use print_xlat for printing MS_MGC_VAL
+	named constant.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce print_xlat and print_xlat_ex.
+	print_xlat_ex prints a named constant in accordance with xlat style
+	provided, print_xlat is a thin wrapper around print_xlat_ex that passes
+	stringified constant name as a string and XLAT_STYLE_DEFAULT as a style.
+
+	* defs.h (print_xlat_ex): New function prototype.
+	(print_xlat): New macro, a thin wrapper around print_xlat_ex.
+	* xlat.c (print_xlat_ex): New function.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce XLAT_STYLE_DEFAULT.
+	This will be needed later, with the introduction of user-configurable
+	xlat style setting (stored in xlat_verbosity variable).
+
+	* defs.h (XLAT_STYLE_VERBOSITY_MASK): New macro constant.
+	(enum xlat_style) <XLAT_STYLE_DEFAULT>: New enumeration entity.
+	(xlat_verbosity): New external declaration.
+	(printxvals, printxval_searchn, printxval_search_ex, sprintxval,
+	sprintflags, printflags64): Use XLAT_STYLE_DEFAULT instead of
+	XLAT_STYLE_ABBREV.
+	* strace.c (xlat_verbosity): New variable.
+	* xlat.c (get_xlat_style): New function.
+	(printxvals_ex, sprintxval_ex, printxval_searchn_ex, sprintflags_ex,
+	printflags_ex): Use it.
+
+2018-04-12  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce xlat verbosity styles.
+	* defs.h (printxvals_ex): Rename from printxvals, add style argument.
+	(enum xlat_style): New enumeration.
+	(printxvals): New macro, a wrapper for printxvals_ex.
+	(printxval_searchn_ex): Rename from printxval_searchn, add style
+	argument.
+	(printxval_searchn): New macro, a wrapper for printxval_searchn_ex.
+	(printxval_search_ex): New macro, a wrapper for printxval_searchn_ex.
+	(sprintxval_ex): Rename from sprintxval, add style argument.
+	(sprintxval): New macro, a wrapper for sprintxval_ex.
+	(printflags_ex): Add style argument.
+	(sprintflags_ex): Rename from sprintflags, add style argument.
+	(sprintflags): New macro, a wrapper for sprintflags_ex.
+	(printflags64): Pass XLAT_STYLE_ABBREV as a style in printflags_ex call.
+	* netlink.c (decode_nlmsg_flags): Pass XLAT_STYLE_ABBREV as a style in
+	printflags_ex call.
+	* xlat.c (printxvals_ex): Rename from printxvals, add style argument,
+	handle it.
+	(sprintxval_ex): Rename from sprintxval, add style argument, handle it.
+	(printxval_searchn_ex): Rename from printxval_searchn, add style
+	argument, handle it.
+	(sprintflags_ex): Rename from sprintflags, add style argument,
+	handle it.
+	(printflags_ex): Add style argument, handle it.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+	References: https://github.com/strace/strace/issues/27
+
+2018-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: robustify signal delivery test against kernel bugs.
+	Recent kernel siginfo changes, namely, v4.14-rc1~60^2^2~1,
+	v4.16-rc1~159^2~37, and v4.16-rc1~159^2~39, introduced ABI regressions
+	that render the whole siginfo interface unreliable.
+
+	Looks like the kernel side is not eager to fix the breakage,
+	so here is a workaround.
+
+	* tests/signal_receive.c (s_sig, s_code, s_pid, s_uid): New volatile
+	variables.
+	(handler): Add siginfo_t parameter, save siginfo_t fields.
+	(sig_print): Remove.
+	(main): Rewrite.  Use variables saved by handler to print expected
+	siginfo output. Print diagnostics in case of siginfo mismatch.
+	* strace.spec.in (%check): Extract the diagnostics.
+
+	Closes: https://github.com/strace/strace/issues/21
+
+2018-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Lift experimental status from stack tracing feature.
+	* strace.1.in (.SH OPTIONS) <.B \-k>: Remove " (experimental)".
+	* strace.c (usage) [ENABLE_STACKTRACE]: Likewise.
+
+2018-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Enable stack tracing in packages on all architectures.
+	The stack tracing feature used to be enabled in packages on x86_64 only.
+	This change enables -k option on all architectures.
+
+	* debian/control (Build-Depends) [!amd64]: Add pkg-config, libdw-dev,
+	and libiberty-dev.
+	* strace.spec.in (BuildRequires) [!x86_64]: Add
+	%buildrequires_stacktrace.
+
+2018-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Use libdw-based unwinder in ci and packages.
+	* ci/install-dependencies.sh (common_packages): Add pkg-config,
+	replace libunwind8-dev with libdw-dev.
+	* debian/control (Build-Depends) [amd64]: Add pkg-config,
+	replace libunwind-dev with libdw-dev.
+	* debian/rules (build-udeb/Makefile): Replace --without-libunwind
+	with --without-stacktrace.
+	* strace.spec.in (buildrequires_libunwind_devel): Rename
+	to buildrequires_stacktrace, replace libunwind-devel with
+	either elfutils-devel or libdw-devel.
+
+	tests: skip -k tests on unsupported architectures.
+	* tests/strace-k.test: When actual strace -k output doesn't match the
+	expected output because of limited architecture support, skip the test
+	on architectures that are not currently supported by libdw.
+
+2018-04-11  Masatake YAMATO  <yamato@redhat.com>
+
+	unwind: add libdw as an unwinder.
+	Implement alternative libdw-based unwinder for stack tracing.
+	Add --with-libdw configure option to control whether libdw can be used
+	as an unwinder.
+
+	* m4/st_libdw.m4: New file.
+	* m4/st_stacktrace.m4 (st_STACKTRACE): Invoke st_ARG_LIBDW and st_LIBDW,
+	check for mutually exclusive configure options,
+	(AM_CONDITIONAL): Add USE_LIBDW.
+	* unwind-libdw.c: New file.
+	* Makefile.am [USE_LIBDW] (strace_SOURCES): Append unwind-libdw.c.
+	[USE_LIBDW] (strace_CPPFLAGS): Append $(libdw_CPPFLAGS).
+	[USE_LIBDW] (strace_CFLAGS): Append $(libdw_CFLAGS).
+	[USE_LIBDW] (strace_LDFLAGS): Append $(libdw_LDFLAGS).
+	[USE_LIBDW] (strace_LDADD): Append $(libdw_LIBS).
+	* NEWS: Mention this improvement.
+
+	Closes: https://github.com/strace/strace/issues/12
+	Closes: https://github.com/strace/strace/issues/13
+	Co-Authored-by: Mark Wielaard <mjw@redhat.com>
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-11  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: check corner cases of udev_monitor_netlink_header decoding.
+	* tests/netlink_kobject_uevent.c (test_nlmsg_type_kernel): Create
+	a tail-allocated udev_monitor_netlink_header object and pass it
+	to sys_send.
+	(test_nlmsg_type_udev): Likewise.  Check decoding of
+	udev_monitor_netlink_header object that ends in unmapped memory region.
+
+2018-04-11  Harsha Sharma  <harshasharmaiitr@gmail.com>
+
+	tests: check decoding of udev_monitor_netlink_header.
+	* tests/netlink_kobject_uevent.c: Include <string.h>, <arpa/inet.h>,
+	and "netlink_kobject_uevent.h".
+	(test_nlmsg_type_udev, test_nlmsg_type_kernel): New functions.
+	(main): Use them.
+
+2018-04-11  Harsha Sharma  <harshasharmaiitr@gmail.com>
+
+	netlink: decode libudev netlink header.
+	* defs.h (decode_netlink_kobject_uevent): New prototype.
+	* netlink.c (decode_netlink): Decode family kobject_uevent.
+	* netlink_kobject_uevent.h: New file.
+	* netlink_kobject_uevent.c: Likewise.
+	* Makefile.am (strace_SOURCES): Add them.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-11  Harsha Sharma  <harshasharmaiitr@gmail.com>
+
+	tests: check basic decoding of PTP_* ioctl commands.
+	* tests/ioctl_ptp.c: New file.
+	* tests/gen_tests.in (ioctl_ptp): New entry.
+	* tests/pure_executables.list: Add ioctl_ptp.
+	* tests/.gitignore: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: decode BPF_PROG_QUERY command.
+	BPF_PROG_QUERY was introduced in Linux commit v4.15-rc1~84^2~558^2~6.
+
+	* xlat/bpf_commands.in (BPF_PROG_QUERY): New constant.
+	* xlat/bpf_query_flags.in: New file.
+	* bpf.c: Include it.
+	(DECL_BPF_CMD_DECODER): Add priv argument for passing tcb private data.
+	(BEGIN_BPF_CMD_DECODER(BPF_PROG_QUERY)): New function.
+	(SYS_FUNC(bpf)) <bpf_cmd_decoders>: Add BPF_PROG_QUERY entry.
+	(SYS_FUNC(bpf)): Fetch buf on entering and exiting, pass buf on exiting,
+	retrieve private data on exiting, pass it to decoder as well, explicitly
+	rework rc handling logic for size argument printing.
+	* bpf_attr.h (struct BPF_PROG_QUERY_struct): New structure declaration.
+	(BPF_PROG_QUERY_struct_size, expected_BPF_PROG_QUERY_struct_size): New
+	macro.
+	* tests/bpf.c: Add checks for BPF_PROG_QUERY command.
+
+2018-04-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Make print_uint64 from btrfs.c globally available.
+	And rename it to print_uint64_array_member to make the name sensible
+	without additional context.
+
+	* defs.h (print_uint64_array_member): New function prototype.
+	* btrfs.c (print_uint64): Move...
+	* util.c (print_uint64_array_member): ...here, drop "static" qualifier.
+
+2018-04-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	Introduce umoven_or_printaddr64* functions.
+	Counterparts for umoven_or_printaddr/umoven_or_printaddr_ignore_syserror
+	that always print 64 bits of addr (as this is needed in bpf and btrfs
+	decoders).
+
+	* util.c (umoven_or_printaddr64): Rename from umoven_or_printaddr,
+	change addr argument type to uint64_t, call printaddr64 instead of
+	printaddr.
+	(umoven_or_printaddr64_ignore_syserror): Rename from
+	umoven_or_printaddr_ignore_syserror, change addr argument type to
+	uint64_t, call printaddr64 instead of printaddr.
+	* defs.h (umoven_or_printaddr64): Rename from umoven_or_printaddr,
+	change addr argument type to uint64_t.
+	(umoven_or_printaddr64_ignore_syserror): Rename from
+	umoven_or_printaddr_ignore_syserror, change addr argument type to
+	uint64_t.
+	(umove_or_printaddr64): New macro, a wrapper for umoven_or_printaddr64.
+	(umoven_or_printaddr): New function, a wrapper for
+	umoven_or_printaddr64.
+	(umoven_or_printaddr_ignore_syserror): New function, a wrapper for
+	umoven_or_printaddr64_ignore_syserror.
+
+2018-04-10  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf_filter.c: add support for decoding eBPF instruction codes.
+	* bpf_filter.c (print_bpf_filter_code): Add extended argument, remove
+	static qualifier.  Add support for decoding eBPF instruction code.
+	* defs.h (print_bpf_filter_code): New declaration.
+	* xlat/ebpf_class.in: New file.
+	* xlat/ebpf_mode.in: Likewise.
+	* xlat/ebpf_op_alu.in: Likewise.
+	* xlat/ebpf_op_jmp.in: Likewise.
+	* xlat/ebpf_size.in: Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-08  Dmitry V. Levin  <ldv@altlinux.org>
+
+	unwind: prepare configure subsystem for alternative unwinders.
+	Introduce --enable-stacktrace configure option to control whether
+	-k option support is compiled in, --with-libunwind option remains
+	available to control whether libunwind can be used as an unwinder.
+
+	* m4/st_demangle.m4: New file.
+	* m4/st_libunwind.m4: Likewise.
+	* m4/st_stacktrace.m4: Likewise.
+	* configure.ac: Replace all libunwind and libiberty checks
+	with a single st_STACKTRACE invocation.
+	* Makefile.am: Conditionalize checks for USE_LIBUNWIND and USE_DEMANGLE
+	on ENABLE_STACKTRACE.
+	[ENABLE_STACKTRACE] (strace_SOURCES): Append unwind.c and unwind.h.
+	* strace.1.in: Replace libunwind with an unwinder-agnostic wording.
+	* defs.h: Replace USE_LIBUNWIND with ENABLE_STACKTRACE.
+	* strace.c: Likewise.
+	(print_version): Print stack-trace instead of stack-unwind.
+	* syscall.c: Replace USE_LIBUNWIND with ENABLE_STACKTRACE.
+	* tests/Makefile.am: Likewise.  Replace LIBUNWIND_TESTS
+	with STACKTRACE_TESTS.
+	* tests/strace-V.test: Update expected output.
+
+2018-04-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: implement decoding of prog_name and prog_ifindex fields.
+	* bpf.c (BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)): Add support for decoding
+	of prog_name (introduced in Linux commit v4.15-rc1~84^2~605^2~4) and
+	prog_ifindex (introduced as prog_target_ifindex in v4.15-rc1~84^2~127^2~13,
+	renamed in v4.15-rc1~15^2~5^2~3^2~7).
+	* bpf_attr.h [!BPF_OBJ_NAME_LEN] (BPF_OBJ_NAME_LEN): New macro constant.
+	[BPF_OBJ_NAME_LEN]: Check that BPF_OBJ_NAME_LEN is equal to 16.
+	(struct BPF_PROG_LOAD_struct): Add prog_name and prog_ifindex fields.
+	(BPF_PROG_LOAD_struct_size, expected_BPF_PROG_LOAD_struct_size): Update.
+	* tests/bpf.c (init_BPF_PROG_LOAD_attr): Rename
+	to init_BPF_PROG_LOAD_attr3.
+	(print_BPF_PROG_LOAD_attr): Rename to print_BPF_PROG_LOAD_attr3.
+	(init_BPF_PROG_LOAD_attr4, print_BPF_PROG_LOAD_attr4): New functions.
+	(BPF_PROG_LOAD_checks): Check new decoding features.
+
+2018-04-08  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	bpf: add support for array fields.
+	* gen_bpf_attr_check.sh: Ignore field array size definition.
+	* m4/gen_bpf_attr_m4.sh (filter_entries): Likewise.
+
+	Co-Authored-by: Dmitry V. Levin <ldv@altlinux.org>
+
+2018-04-07  Dmitry V. Levin  <ldv@altlinux.org>
+
+	tests: robustify strace -k tests.
+	Allow __getpid as an alternative name for getpid,
+	allow __kernel_vsyscall after getpid.
+
+	* tests/strace-k.expected: New file.
+	* tests/strace-k-demangle.expected: Likewise.
+	* tests/Makefile.am (EXTRA_DIST): Add them.
+	* tests/strace-k-demangle.test (expected): Remove.
+	* tests/strace-k.test: Likewise.  Use grep to check the output.
+
+2018-04-07  Eugene Syromyatnikov  <evgsyr@gmail.com>
+
+	ipc_msg: sign extend msgtyp in m32 personality.
+	msgtyp has to be treated as a signed type all the way from fetching
+	to printing.
+
+	* ipc_msg.c (fetch_msgrcv_args): Sign extend msgtyp when fetching.
+
 2018-04-05  Dmitry V. Levin  <ldv@altlinux.org>
 
+	strace.spec.in: update Source URL.
+	* strace.spec.in (Source): Change to https://strace.io/files/.
+
+	debian: enable mpers support for ppc64el and s390x.
+	* debian/control (Build-Depends) [ppc64el, s390x]: Add gcc-multilib.
+
+	Post-release administrivia.
+	* NEWS: Add a header line for the next release.
+	* debian/changelog.in: Add a changelog entry for 4.22-1.
+	* strace.spec.in: Likewise.
+
 	Prepare for 4.22 release.
 	* NEWS: Update for 4.22 release.
 
diff --git a/Makefile b/Makefile
index f6dbb59..c148798 100644
--- a/Makefile
+++ b/Makefile
@@ -147,28 +147,37 @@
 	$(top_srcdir)/debian/changelog.in depcomp AUTHORS COPYING \
 	INSTALL NEWS README compile config.guess config.sub install-sh \
 	missing
-#am__append_1 = unwind.c unwind.h unwind-libunwind.c
-#am__append_2 = $(libunwind_CPPFLAGS)
-#am__append_3 = $(libunwind_LDFLAGS)
-#am__append_4 = $(libunwind_LIBS)
-##am__append_5 = $(libiberty_CPPFLAGS)
-##am__append_6 = $(libiberty_LDFLAGS)
-##am__append_7 = $(libiberty_LIBS)
-am__append_8 = libmpers-m32.a
-am__append_9 = libmpers-m32.a
-am__append_10 = $(mpers_m32_targets)
-am__append_11 = $(mpers_m32_targets)
-#am__append_12 = libmpers-mx32.a
-#am__append_13 = libmpers-mx32.a
-#am__append_14 = $(mpers_mx32_targets)
-#am__append_15 = $(mpers_mx32_targets)
+#am__append_1 = unwind.c unwind.h
+##am__append_2 = unwind-libdw.c
+##am__append_3 = $(libdw_CPPFLAGS)
+##am__append_4 = $(libdw_CFLAGS)
+##am__append_5 = $(libdw_LDFLAGS)
+##am__append_6 = $(libdw_LIBS)
+##am__append_7 = unwind-libunwind.c
+##am__append_8 = $(libunwind_CPPFLAGS)
+##am__append_9 = $(libunwind_LDFLAGS)
+##am__append_10 = $(libunwind_LIBS)
+##am__append_11 = $(libiberty_CPPFLAGS)
+##am__append_12 = $(libiberty_LDFLAGS)
+##am__append_13 = $(libiberty_LIBS)
+am__append_14 = libmpers-m32.a
+am__append_15 = libmpers-m32.a
+am__append_16 = $(mpers_m32_targets)
+am__append_17 = $(mpers_m32_targets)
+#am__append_18 = libmpers-mx32.a
+#am__append_19 = libmpers-mx32.a
+#am__append_20 = $(mpers_mx32_targets)
+#am__append_21 = $(mpers_mx32_targets)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
 	$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
 	$(top_srcdir)/m4/ax_valgrind_check.m4 \
 	$(top_srcdir)/m4/bpf_attr.m4 $(top_srcdir)/m4/mpers.m4 \
+	$(top_srcdir)/m4/st_demangle.m4 $(top_srcdir)/m4/st_libdw.m4 \
+	$(top_srcdir)/m4/st_libunwind.m4 \
 	$(top_srcdir)/m4/st_save_restore_var.m4 \
+	$(top_srcdir)/m4/st_stacktrace.m4 \
 	$(top_srcdir)/m4/st_warn_cflags.m4 \
 	$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -194,12 +203,12 @@
 	fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
 	fetch_struct_msghdr.c fetch_struct_stat.c \
 	fetch_struct_stat64.c fetch_struct_statfs.c hdio.c \
-	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_group_req.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
+	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c \
+	print_aio_sigset.c print_group_req.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
 am__objects_1 = libmpers_m32_a-block.$(OBJEXT) \
 	libmpers_m32_a-btrfs.$(OBJEXT) libmpers_m32_a-dirent.$(OBJEXT) \
 	libmpers_m32_a-evdev_mpers.$(OBJEXT) \
@@ -215,6 +224,8 @@
 	libmpers_m32_a-ipc_msgctl.$(OBJEXT) \
 	libmpers_m32_a-ipc_shmctl.$(OBJEXT) \
 	libmpers_m32_a-loop.$(OBJEXT) libmpers_m32_a-mtd.$(OBJEXT) \
+	libmpers_m32_a-perf_ioctl.$(OBJEXT) \
+	libmpers_m32_a-print_aio_sigset.$(OBJEXT) \
 	libmpers_m32_a-print_group_req.$(OBJEXT) \
 	libmpers_m32_a-print_mq_attr.$(OBJEXT) \
 	libmpers_m32_a-print_msgbuf.$(OBJEXT) \
@@ -241,12 +252,12 @@
 	fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
 	fetch_struct_msghdr.c fetch_struct_stat.c \
 	fetch_struct_stat64.c fetch_struct_statfs.c hdio.c \
-	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_group_req.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
+	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c \
+	print_aio_sigset.c print_group_req.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
 am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
 	libmpers_mx32_a-btrfs.$(OBJEXT) \
 	libmpers_mx32_a-dirent.$(OBJEXT) \
@@ -263,6 +274,8 @@
 	libmpers_mx32_a-ipc_msgctl.$(OBJEXT) \
 	libmpers_mx32_a-ipc_shmctl.$(OBJEXT) \
 	libmpers_mx32_a-loop.$(OBJEXT) libmpers_mx32_a-mtd.$(OBJEXT) \
+	libmpers_mx32_a-perf_ioctl.$(OBJEXT) \
+	libmpers_mx32_a-print_aio_sigset.$(OBJEXT) \
 	libmpers_mx32_a-print_group_req.$(OBJEXT) \
 	libmpers_mx32_a-print_mq_attr.$(OBJEXT) \
 	libmpers_mx32_a-print_msgbuf.$(OBJEXT) \
@@ -291,6 +304,7 @@
 	libstrace_a-fetch_indirect_syscall_args.$(OBJEXT) \
 	libstrace_a-fstatfs.$(OBJEXT) libstrace_a-fstatfs64.$(OBJEXT) \
 	libstrace_a-getpagesize.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
+	libstrace_a-mmap_cache.$(OBJEXT) \
 	libstrace_a-sigreturn.$(OBJEXT) \
 	libstrace_a-socketcall.$(OBJEXT) libstrace_a-statfs.$(OBJEXT) \
 	libstrace_a-statfs64.$(OBJEXT) \
@@ -309,39 +323,42 @@
 	copy_file_range.c count.c defs.h delay.c delay.h desc.c \
 	dirent.c dirent64.c dm.c dyxlat.c empty.h epoll.c \
 	error_prints.c error_prints.h evdev.c evdev_mpers.c eventfd.c \
-	execve.c fadvise.c fallocate.c fanotify.c fchownat.c fcntl.c \
-	fetch_bpf_fprog.c fetch_struct_flock.c \
+	execve.c f_owner_ex.h fadvise.c fallocate.c fanotify.c \
+	fchownat.c fcntl.c fetch_bpf_fprog.c fetch_struct_flock.c \
 	fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
 	fetch_struct_msghdr.c fetch_struct_stat.c \
 	fetch_struct_stat64.c fetch_struct_statfs.c file_handle.c \
 	file_ioctl.c filter_qualify.c filter.h flock.c flock.h \
 	fs_x_ioctl.c futex.c gcc_compat.h get_robust_list.c getcpu.c \
-	getcwd.c getrandom.c hdio.c hostname.c inotify.c io.c ioctl.c \
-	ioperm.c iopl.c ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
-	ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_types.h kexec.c \
-	keyctl.c keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c \
-	link.c linux/asm_stat.h linux/x32/asm_stat.h \
+	getcwd.c getrandom.c hdio.c hostname.c inotify.c \
+	inotify_ioctl.c io.c ioctl.c ioperm.c iopl.c ioprio.c \
+	ipc_defs.h ipc_msg.c ipc_msgctl.c ipc_sem.c ipc_shm.c \
+	ipc_shmctl.c kcmp.c kernel_types.h kexec.c keyctl.c \
+	keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c link.c \
+	linux/asm_stat.h linux/linux/signal.h linux/x32/asm_stat.h \
 	linux/x86_64/asm_stat.h listen.c lookup_dcookie.c loop.c \
 	lseek.c macros.h mem.c membarrier.c memfd_create.c mknod.c \
-	mmap_cache.c mmap_cache.h mmsghdr.c mount.c mpers_type.h mq.c \
-	msghdr.c msghdr.h mtd.c native_defs.h negated_errno.h net.c \
-	netlink.c netlink.h netlink_crypto.c netlink_sock_diag.h \
-	netlink_inet_diag.c netlink_netfilter.c netlink_netlink_diag.c \
-	netlink_packet_diag.c netlink_route.c netlink_route.h \
-	netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
-	netlink_unix_diag.c nlattr.c nlattr.h nsfs.c nsfs.h nsig.h \
-	numa.c number_set.c number_set.h oldstat.c open.c \
-	or1k_atomic.c pathtrace.c perf.c perf_event_struct.h \
-	personality.c pkeys.c poll.c prctl.c print_dev_t.c \
-	print_group_req.c print_fields.h print_ifindex.c \
-	print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
-	print_sigevent.c print_statfs.c print_struct_stat.c \
-	print_time.c print_timespec.c print_timeval.c print_timex.c \
-	printmode.c printrusage.c printsiginfo.c printsiginfo.h \
-	process.c process_vm.c ptp.c ptrace.h quota.c readahead.c \
-	readlink.c reboot.c regs.h renameat.c resource.c retval.c \
-	retval.h riscv.c rt_sigframe.c rt_sigreturn.c rtc.c \
-	rtnl_addr.c rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
+	mmap_notify.c mmap_notify.h mmsghdr.c mount.c mpers_type.h \
+	mq.c msghdr.c msghdr.h mtd.c native_defs.h negated_errno.h \
+	net.c netlink.c netlink.h netlink_crypto.c \
+	netlink_kobject_uevent.c netlink_kobject_uevent.h \
+	netlink_sock_diag.h netlink_inet_diag.c netlink_netfilter.c \
+	netlink_netlink_diag.c netlink_packet_diag.c netlink_route.c \
+	netlink_route.h netlink_selinux.c netlink_smc_diag.c \
+	netlink_sock_diag.c netlink_unix_diag.c nlattr.c nlattr.h \
+	nsfs.c nsfs.h nsig.h numa.c number_set.c number_set.h \
+	oldstat.c open.c or1k_atomic.c pathtrace.c perf.c \
+	perf_event_struct.h perf_ioctl.c personality.c pkeys.c poll.c \
+	prctl.c print_aio_sigset.c print_dev_t.c print_group_req.c \
+	print_fields.h print_ifindex.c print_mac.c print_mq_attr.c \
+	print_msgbuf.c print_sg_req_info.c print_sigevent.c \
+	print_statfs.c print_struct_stat.c print_time.c \
+	print_timespec.c print_timeval.c print_timex.c printmode.c \
+	printrusage.c printsiginfo.c printsiginfo.h process.c \
+	process_vm.c ptp.c ptrace.h quota.c readahead.c readlink.c \
+	reboot.c regs.h renameat.c resource.c retval.c retval.h \
+	riscv.c rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \
+	rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
 	rtnl_neigh.c rtnl_neightbl.c rtnl_netconf.c rtnl_nsid.c \
 	rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
 	sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
@@ -355,10 +372,12 @@
 	truncate.c ubi.c ucopy.c uid.c uid16.c umask.c umount.c \
 	uname.c userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c \
 	wait.c xattr.c xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \
-	bpf_attr_check.c unwind.c unwind.h unwind-libunwind.c
+	bpf_attr_check.c unwind.c unwind.h unwind-libdw.c \
+	unwind-libunwind.c
 am__objects_3 = strace-bpf_attr_check.$(OBJEXT)
-#am__objects_4 = strace-unwind.$(OBJEXT) \
-#	strace-unwind-libunwind.$(OBJEXT)
+#am__objects_4 = strace-unwind.$(OBJEXT)
+##am__objects_5 = strace-unwind-libdw.$(OBJEXT)
+##am__objects_6 = strace-unwind-libunwind.$(OBJEXT)
 am_strace_OBJECTS = strace-access.$(OBJEXT) strace-affinity.$(OBJEXT) \
 	strace-aio.$(OBJEXT) strace-alpha.$(OBJEXT) \
 	strace-basic_filters.$(OBJEXT) strace-bind.$(OBJEXT) \
@@ -392,23 +411,25 @@
 	strace-get_robust_list.$(OBJEXT) strace-getcpu.$(OBJEXT) \
 	strace-getcwd.$(OBJEXT) strace-getrandom.$(OBJEXT) \
 	strace-hdio.$(OBJEXT) strace-hostname.$(OBJEXT) \
-	strace-inotify.$(OBJEXT) strace-io.$(OBJEXT) \
-	strace-ioctl.$(OBJEXT) strace-ioperm.$(OBJEXT) \
-	strace-iopl.$(OBJEXT) strace-ioprio.$(OBJEXT) \
-	strace-ipc_msg.$(OBJEXT) strace-ipc_msgctl.$(OBJEXT) \
-	strace-ipc_sem.$(OBJEXT) strace-ipc_shm.$(OBJEXT) \
-	strace-ipc_shmctl.$(OBJEXT) strace-kcmp.$(OBJEXT) \
-	strace-kexec.$(OBJEXT) strace-keyctl.$(OBJEXT) \
-	strace-kvm.$(OBJEXT) strace-ldt.$(OBJEXT) \
-	strace-link.$(OBJEXT) strace-listen.$(OBJEXT) \
-	strace-lookup_dcookie.$(OBJEXT) strace-loop.$(OBJEXT) \
-	strace-lseek.$(OBJEXT) strace-mem.$(OBJEXT) \
-	strace-membarrier.$(OBJEXT) strace-memfd_create.$(OBJEXT) \
-	strace-mknod.$(OBJEXT) strace-mmap_cache.$(OBJEXT) \
-	strace-mmsghdr.$(OBJEXT) strace-mount.$(OBJEXT) \
-	strace-mq.$(OBJEXT) strace-msghdr.$(OBJEXT) \
-	strace-mtd.$(OBJEXT) strace-net.$(OBJEXT) \
-	strace-netlink.$(OBJEXT) strace-netlink_crypto.$(OBJEXT) \
+	strace-inotify.$(OBJEXT) strace-inotify_ioctl.$(OBJEXT) \
+	strace-io.$(OBJEXT) strace-ioctl.$(OBJEXT) \
+	strace-ioperm.$(OBJEXT) strace-iopl.$(OBJEXT) \
+	strace-ioprio.$(OBJEXT) strace-ipc_msg.$(OBJEXT) \
+	strace-ipc_msgctl.$(OBJEXT) strace-ipc_sem.$(OBJEXT) \
+	strace-ipc_shm.$(OBJEXT) strace-ipc_shmctl.$(OBJEXT) \
+	strace-kcmp.$(OBJEXT) strace-kexec.$(OBJEXT) \
+	strace-keyctl.$(OBJEXT) strace-kvm.$(OBJEXT) \
+	strace-ldt.$(OBJEXT) strace-link.$(OBJEXT) \
+	strace-listen.$(OBJEXT) strace-lookup_dcookie.$(OBJEXT) \
+	strace-loop.$(OBJEXT) strace-lseek.$(OBJEXT) \
+	strace-mem.$(OBJEXT) strace-membarrier.$(OBJEXT) \
+	strace-memfd_create.$(OBJEXT) strace-mknod.$(OBJEXT) \
+	strace-mmap_notify.$(OBJEXT) strace-mmsghdr.$(OBJEXT) \
+	strace-mount.$(OBJEXT) strace-mq.$(OBJEXT) \
+	strace-msghdr.$(OBJEXT) strace-mtd.$(OBJEXT) \
+	strace-net.$(OBJEXT) strace-netlink.$(OBJEXT) \
+	strace-netlink_crypto.$(OBJEXT) \
+	strace-netlink_kobject_uevent.$(OBJEXT) \
 	strace-netlink_inet_diag.$(OBJEXT) \
 	strace-netlink_netfilter.$(OBJEXT) \
 	strace-netlink_netlink_diag.$(OBJEXT) \
@@ -422,11 +443,12 @@
 	strace-number_set.$(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-perf_ioctl.$(OBJEXT) strace-personality.$(OBJEXT) \
+	strace-pkeys.$(OBJEXT) strace-poll.$(OBJEXT) \
+	strace-prctl.$(OBJEXT) strace-print_aio_sigset.$(OBJEXT) \
 	strace-print_dev_t.$(OBJEXT) strace-print_group_req.$(OBJEXT) \
-	strace-print_ifindex.$(OBJEXT) strace-print_mq_attr.$(OBJEXT) \
-	strace-print_msgbuf.$(OBJEXT) \
+	strace-print_ifindex.$(OBJEXT) strace-print_mac.$(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) \
@@ -471,16 +493,18 @@
 	strace-utimes.$(OBJEXT) strace-v4l2.$(OBJEXT) \
 	strace-wait.$(OBJEXT) strace-xattr.$(OBJEXT) \
 	strace-xlat.$(OBJEXT) strace-xmalloc.$(OBJEXT) \
-	$(am__objects_3) $(am__objects_4)
+	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
+	$(am__objects_6)
 strace_OBJECTS = $(am_strace_OBJECTS)
 am__DEPENDENCIES_1 =
-#am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-##am__DEPENDENCIES_3 =  \
+##am__DEPENDENCIES_2 =  \
 ##	$(am__DEPENDENCIES_1)
+##am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+##am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
 strace_DEPENDENCIES = libstrace.a $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) $(am__append_8) \
-	$(am__append_12)
+	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) \
+	$(am__DEPENDENCIES_1) $(am__append_14) $(am__append_18)
 strace_LINK = $(CCLD) $(strace_CFLAGS) $(CFLAGS) $(strace_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -640,12 +664,12 @@
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
-ACLOCAL = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.22/missing aclocal-1.14
+ACLOCAL = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.23/missing aclocal-1.14
 AMTAR = $${TAR-tar}
 AM_DEFAULT_VERBOSITY = 1
-AUTOCONF = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.22/missing autoconf
-AUTOHEADER = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.22/missing autoheader
-AUTOMAKE = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.22/missing automake-1.14
+AUTOCONF = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.23/missing autoconf
+AUTOHEADER = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.23/missing autoheader
+AUTOMAKE = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.23/missing automake-1.14
 AWK = gawk
 BUILD_EXEEXT = 
 BUILD_OBJEXT = 
@@ -666,7 +690,7 @@
 CPPFLAGS_FOR_BUILD = 
 CPP_FOR_BUILD = gcc -E
 CYGPATH_W = echo
-DEB_CHANGELOGTIME = Thu, 14 Jun 2018 16:29:09 -0700
+DEB_CHANGELOGTIME = Fri, 15 Jun 2018 17:54:18 +0000
 DEFS = -DHAVE_CONFIG_H
 DEPDIR = .deps
 ECHO_C = 
@@ -693,23 +717,23 @@
 LIBS = 
 LTLIBOBJS = 
 MAINT = #
-MAKEINFO = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.22/missing makeinfo
-MANPAGE_DATE = 2018-04-04
+MAKEINFO = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.23/missing makeinfo
+MANPAGE_DATE = 2018-06-13
 MIPS_ABI = 
 MKDIR_P = /bin/mkdir -p
 OBJEXT = o
 PACKAGE = strace
 PACKAGE_BUGREPORT = strace-devel@lists.strace.io
 PACKAGE_NAME = strace
-PACKAGE_STRING = strace 4.22
+PACKAGE_STRING = strace 4.23
 PACKAGE_TARNAME = strace
 PACKAGE_URL = https://strace.io
-PACKAGE_VERSION = 4.22
+PACKAGE_VERSION = 4.23
 PATH_SEPARATOR = :
 PERL = /usr/bin/perl
 RANLIB = aarch64-linux-android-ranlib
 READELF = aarch64-linux-android-readelf
-RPM_CHANGELOGTIME = Thu Jun 14 2018
+RPM_CHANGELOGTIME = Fri Jun 15 2018
 SED = /bin/sed
 SET_MAKE = 
 SHELL = /bin/sh
@@ -718,13 +742,13 @@
 STRIP = aarch64-linux-android-strip
 VALGRIND = valgrind
 VALGRIND_ENABLED = yes
-VERSION = 4.22
+VERSION = 4.23
 WARN_CFLAGS =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Winit-self -Wnested-externs -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings
 WARN_CFLAGS_FOR_BUILD =  -Wall -Wempty-body -Wformat-security -Wignored-qualifiers -Wimplicit-fallthrough=5 -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/ndkports/.out/strace/package/strace-4.22
-abs_srcdir = /usr/local/google/ndkports/.out/strace/package/strace-4.22
-abs_top_builddir = /usr/local/google/ndkports/.out/strace/package/strace-4.22
-abs_top_srcdir = /usr/local/google/ndkports/.out/strace/package/strace-4.22
+abs_builddir = /usr/local/google/ndkports/.out/strace/package/strace-4.23
+abs_srcdir = /usr/local/google/ndkports/.out/strace/package/strace-4.23
+abs_top_builddir = /usr/local/google/ndkports/.out/strace/package/strace-4.23
+abs_top_srcdir = /usr/local/google/ndkports/.out/strace/package/strace-4.23
 ac_ct_CC = 
 ac_ct_CC_FOR_BUILD = gcc
 am__include = include
@@ -760,8 +784,12 @@
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.22/install-sh
+install_sh = ${SHELL} /usr/local/google/ndkports/.out/strace/package/strace-4.23/install-sh
 libdir = ${exec_prefix}/lib
+libdw_CFLAGS = 
+libdw_CPPFLAGS = 
+libdw_LDFLAGS = 
+libdw_LIBS = 
 libexecdir = ${exec_prefix}/libexec
 libiberty_CPPFLAGS = 
 libiberty_LDFLAGS = 
@@ -814,21 +842,23 @@
 	xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in \
 	xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in \
 	xlat/at_statx_sync_types.in xlat/atomic_ops.in \
-	xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in \
-	xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in \
-	xlat/bpf_attach_flags.in xlat/bpf_attach_type.in \
-	xlat/bpf_class.in xlat/bpf_commands.in \
+	xlat/audit_arch.in xlat/baud_options.in xlat/bdaddr_types.in \
+	xlat/blkpg_ops.in xlat/bluetooth_l2_cid.in \
+	xlat/bluetooth_l2_psm.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_file_mode_flags.in xlat/bpf_map_flags.in \
 	xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in \
 	xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in \
 	xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in \
-	xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in \
-	xlat/bpf_src.in xlat/bsg_flags.in xlat/bsg_protocol.in \
-	xlat/bsg_subprotocol.in xlat/bt_protocols.in \
-	xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in \
-	xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in \
-	xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in \
-	xlat/btrfs_dev_replace_cmds.in \
+	xlat/bpf_prog_types.in xlat/bpf_query_flags.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_cont_reading_from_srcdev_mode.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 \
@@ -841,12 +871,15 @@
 	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/cacheflush_scope.in xlat/caif_protocols.in \
+	xlat/can_protocols.in xlat/cap.in xlat/cap_mask0.in \
 	xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in \
 	xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in \
 	xlat/crypto_nl_attrs.in xlat/dcb_commands.in \
 	xlat/delete_module_flags.in xlat/dirent_types.in \
-	xlat/dm_flags.in xlat/efd_flags.in xlat/epollctls.in \
+	xlat/dm_flags.in xlat/ebpf_class.in xlat/ebpf_mode.in \
+	xlat/ebpf_op_alu.in xlat/ebpf_op_jmp.in xlat/ebpf_regs.in \
+	xlat/ebpf_size.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 \
@@ -857,27 +890,31 @@
 	xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in \
 	xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in \
 	xlat/fan_event_flags.in xlat/fan_init_flags.in \
-	xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in \
-	xlat/fdflags.in xlat/fib_rule_actions.in \
-	xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in \
-	xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in \
-	xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in \
-	xlat/getrandom_flags.in xlat/getsockipoptions.in \
-	xlat/getsockipv6options.in xlat/hci_channels.in \
-	xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in \
-	xlat/icmpfilterflags.in xlat/if_dqblk_valid.in \
-	xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in \
-	xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in \
-	xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in \
-	xlat/inet_diag_req_attrs.in xlat/inet_protocols.in \
-	xlat/inotify_flags.in xlat/inotify_init_flags.in \
-	xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in \
-	xlat/ip_cmsg_types.in xlat/ip_type_of_services.in \
-	xlat/ipc_msg_flags.in xlat/ipccalls.in xlat/itimer_which.in \
-	xlat/kcmp_types.in xlat/kexec_arch_values.in \
-	xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in \
-	xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in \
-	xlat/keyctl_commands.in xlat/kvm_mem_flags.in \
+	xlat/fan_mark_flags.in xlat/fcntlcmds.in xlat/fdflags.in \
+	xlat/fib_rule_actions.in xlat/fib_rule_flags.in \
+	xlat/fiemap_extent_flags.in xlat/fiemap_flags.in \
+	xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in \
+	xlat/futexwakecmps.in xlat/futexwakeops.in \
+	xlat/getrandom_flags.in xlat/getsock_ip_options.in \
+	xlat/getsock_ipv6_options.in xlat/getsock_options.in \
+	xlat/hci_channels.in xlat/hw_breakpoint_len.in \
+	xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in \
+	xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in \
+	xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in \
+	xlat/in6_addr_gen_mode.in xlat/inet6_devconf_indices.in \
+	xlat/inet6_if_flags.in xlat/inet_devconf_indices.in \
+	xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in \
+	xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in \
+	xlat/inet_protocols.in xlat/inotify_flags.in \
+	xlat/inotify_init_flags.in xlat/ioctl_dirs.in \
+	xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in \
+	xlat/ip_type_of_services.in xlat/ipc_msg_flags.in \
+	xlat/ipc_private.in xlat/ipccalls.in xlat/irda_protocols.in \
+	xlat/isdn_protocols.in xlat/itimer_which.in \
+	xlat/kcm_protocols.in xlat/kcmp_types.in \
+	xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in \
+	xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in \
+	xlat/key_spec.in xlat/keyctl_commands.in xlat/kvm_mem_flags.in \
 	xlat/lockfcmds.in xlat/loop_cmds.in \
 	xlat/loop_crypt_type_options.in xlat/loop_flags_options.in \
 	xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in \
@@ -899,6 +936,7 @@
 	xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in \
 	xlat/netlink_flags.in xlat/netlink_get_flags.in \
 	xlat/netlink_new_flags.in xlat/netlink_protocols.in \
+	xlat/netlink_sk_meminfo_indices.in \
 	xlat/netlink_socket_flags.in xlat/netlink_states.in \
 	xlat/netlink_types.in xlat/nf_acct_msg_types.in \
 	xlat/nf_cthelper_msg_types.in \
@@ -907,12 +945,13 @@
 	xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in \
 	xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in \
 	xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in \
-	xlat/nl_audit_types.in xlat/nl_crypto_types.in \
-	xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in \
-	xlat/nl_route_types.in xlat/nl_selinux_types.in \
-	xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in \
-	xlat/nlmsgerr_attrs.in xlat/notifyflags.in \
-	xlat/nt_descriptor_types.in xlat/open_access_modes.in \
+	xlat/nfc_protocols.in xlat/nl_audit_types.in \
+	xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in \
+	xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in \
+	xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in \
+	xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in \
+	xlat/notifyflags.in xlat/nt_descriptor_types.in \
+	xlat/numa_node.in xlat/open_access_modes.in \
 	xlat/open_mode_flags.in xlat/packet_diag_attrs.in \
 	xlat/packet_diag_info_flags.in xlat/packet_diag_show.in \
 	xlat/packet_mreq_type.in xlat/perf_attr_size.in \
@@ -920,13 +959,17 @@
 	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/perf_hw_id.in xlat/perf_ioctl_cmds.in \
+	xlat/perf_ioctl_flags.in xlat/perf_sw_ids.in \
+	xlat/perf_type_id.in xlat/personality_flags.in \
+	xlat/personality_types.in xlat/phonet_protocols.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_sve_vl_flags.in xlat/pr_tsc.in \
-	xlat/pr_unalign_flags.in xlat/prctl_options.in \
+	xlat/pr_set_mm.in xlat/pr_spec_cmds.in \
+	xlat/pr_spec_get_store_bypass_flags.in \
+	xlat/pr_spec_set_store_bypass_flags.in xlat/pr_sve_vl_flags.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 \
@@ -938,11 +981,16 @@
 	xlat/routing_scopes.in xlat/routing_table_ids.in \
 	xlat/routing_types.in xlat/rtnl_addr_attrs.in \
 	xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in \
+	xlat/rtnl_ifla_af_spec_inet6_attrs.in \
+	xlat/rtnl_ifla_af_spec_inet_attrs.in \
 	xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_events.in \
-	xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in \
-	xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in \
-	xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in \
-	xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in \
+	xlat/rtnl_ifla_info_attrs.in \
+	xlat/rtnl_ifla_info_data_bridge_attrs.in \
+	xlat/rtnl_ifla_info_data_tun_attrs.in \
+	xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in \
+	xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in \
+	xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in \
+	xlat/rtnl_mdba_mdb_eattr_attrs.in \
 	xlat/rtnl_mdba_mdb_entry_attrs.in \
 	xlat/rtnl_mdba_router_attrs.in \
 	xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in \
@@ -960,31 +1008,42 @@
 	xlat/seccomp_filter_flags.in xlat/seccomp_mode.in \
 	xlat/seccomp_ops.in xlat/seccomp_ret_action.in \
 	xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in \
-	xlat/setsockipoptions.in xlat/setsockipv6options.in \
-	xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in \
-	xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in \
-	xlat/shm_flags.in xlat/shm_resource_flags.in \
-	xlat/shmctl_flags.in xlat/shutdown_modes.in \
-	xlat/sigact_flags.in xlat/sigaltstack_flags.in \
-	xlat/sigbus_codes.in xlat/sigchld_codes.in \
-	xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in \
-	xlat/sigill_codes.in xlat/siginfo_codes.in \
-	xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in \
-	xlat/sigprof_codes.in xlat/sigsegv_codes.in \
-	xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in \
+	xlat/setsock_ip_options.in xlat/setsock_ipv6_options.in \
+	xlat/setsock_options.in xlat/sfd_flags.in \
+	xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in \
+	xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in \
+	xlat/shm_resource_flags.in xlat/shmctl_flags.in \
+	xlat/shutdown_modes.in xlat/sigact_flags.in \
+	xlat/sigaltstack_flags.in xlat/sigbus_codes.in \
+	xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in \
+	xlat/sigfpe_codes.in xlat/sigill_codes.in \
+	xlat/siginfo_codes.in xlat/sigpoll_codes.in \
+	xlat/sigprocmaskcmds.in xlat/sigprof_codes.in \
+	xlat/sigsegv_codes.in xlat/sigsys_codes.in \
+	xlat/sigtrap_codes.in xlat/skf_ad.in xlat/skf_off.in \
 	xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in \
-	xlat/smc_link_group_roles.in xlat/smc_states.in \
-	xlat/sock_type_flags.in xlat/socketcalls.in \
-	xlat/socketlayers.in xlat/sockipoptions.in \
-	xlat/sockipv6options.in xlat/sockipxoptions.in \
-	xlat/socknetlinkoptions.in xlat/sockoptions.in \
-	xlat/sockpacketoptions.in xlat/sockrawoptions.in \
-	xlat/socksctpoptions.in xlat/socktcpoptions.in \
-	xlat/socktypes.in xlat/sparc_kern_features.in \
-	xlat/splice_flags.in xlat/sram_alloc_flags.in \
-	xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in \
-	xlat/swap_flags.in xlat/sync_file_range_flags.in \
-	xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in \
+	xlat/smc_link_group_roles.in xlat/smc_protocols.in \
+	xlat/smc_states.in xlat/snmp_icmp6_stats.in \
+	xlat/snmp_ip_stats.in xlat/sock_alg_options.in \
+	xlat/sock_bluetooth_options.in xlat/sock_caif_options.in \
+	xlat/sock_dccp_options.in xlat/sock_ip_options.in \
+	xlat/sock_ipv6_options.in xlat/sock_ipx_options.in \
+	xlat/sock_irda_options.in xlat/sock_iucv_options.in \
+	xlat/sock_kcm_options.in xlat/sock_llc_options.in \
+	xlat/sock_netlink_options.in xlat/sock_nfcllcp_options.in \
+	xlat/sock_options.in xlat/sock_packet_options.in \
+	xlat/sock_pnp_options.in xlat/sock_pppol2tp_options.in \
+	xlat/sock_raw_options.in xlat/sock_rds_options.in \
+	xlat/sock_rxrpc_options.in xlat/sock_sctp_options.in \
+	xlat/sock_tcp_options.in xlat/sock_tipc_options.in \
+	xlat/sock_tls_options.in xlat/sock_type_flags.in \
+	xlat/sock_udp_options.in xlat/socketcalls.in \
+	xlat/socketlayers.in xlat/socktypes.in \
+	xlat/sparc_kern_features.in xlat/splice_flags.in \
+	xlat/sram_alloc_flags.in xlat/statfs_flags.in \
+	xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in \
+	xlat/sync_file_range_flags.in xlat/sysctl_kern.in \
+	xlat/sysctl_net.in xlat/sysctl_net_core.in \
 	xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in \
 	xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in \
 	xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in \
@@ -992,17 +1051,18 @@
 	xlat/syslog_action_type.in xlat/sysmips_operations.in \
 	xlat/tcflsh_options.in xlat/tcp_state_flags.in \
 	xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in \
-	xlat/ubi_volume_props.in xlat/ubi_volume_types.in \
-	xlat/uffd_api_features.in xlat/uffd_api_flags.in \
-	xlat/uffd_copy_flags.in xlat/uffd_flags.in \
-	xlat/uffd_register_ioctl_flags.in \
+	xlat/tun_device_types.in xlat/ubi_volume_props.in \
+	xlat/ubi_volume_types.in xlat/uffd_api_features.in \
+	xlat/uffd_api_flags.in xlat/uffd_copy_flags.in \
+	xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in \
 	xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in \
 	xlat/umount_flags.in xlat/unix_diag_attrs.in \
 	xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in \
 	xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in \
 	xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in \
 	xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in \
-	xlat/v4l2_control_ids.in xlat/v4l2_control_types.in \
+	xlat/v4l2_control_id_bases.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 \
@@ -1020,18 +1080,22 @@
 	xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h \
 	xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h \
 	xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h \
-	xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h \
-	xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h \
-	xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h \
+	xlat/baud_options.h xlat/bdaddr_types.h xlat/blkpg_ops.h \
+	xlat/bluetooth_l2_cid.h xlat/bluetooth_l2_psm.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_file_mode_flags.h xlat/bpf_map_flags.h \
 	xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h \
 	xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h \
 	xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h \
-	xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h \
-	xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h \
-	xlat/bt_protocols.h xlat/btrfs_balance_args.h \
-	xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h \
-	xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h \
+	xlat/bpf_query_flags.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_cont_reading_from_srcdev_mode.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 \
@@ -1043,11 +1107,14 @@
 	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/cacheflush_scope.h xlat/caif_protocols.h \
+	xlat/can_protocols.h xlat/cap.h xlat/cap_mask0.h \
 	xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h \
 	xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h \
 	xlat/crypto_nl_attrs.h xlat/dcb_commands.h \
 	xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h \
+	xlat/ebpf_class.h xlat/ebpf_mode.h xlat/ebpf_op_alu.h \
+	xlat/ebpf_op_jmp.h xlat/ebpf_regs.h xlat/ebpf_size.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 \
@@ -1057,23 +1124,27 @@
 	xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h \
 	xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h \
 	xlat/fan_event_flags.h xlat/fan_init_flags.h \
-	xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h \
-	xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h \
+	xlat/fan_mark_flags.h xlat/fcntlcmds.h xlat/fdflags.h \
+	xlat/fib_rule_actions.h xlat/fib_rule_flags.h \
 	xlat/fiemap_extent_flags.h xlat/fiemap_flags.h \
 	xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h \
 	xlat/futexwakecmps.h xlat/futexwakeops.h \
-	xlat/getrandom_flags.h xlat/getsockipoptions.h \
-	xlat/getsockipv6options.h xlat/hci_channels.h \
-	xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h \
-	xlat/icmpfilterflags.h xlat/if_dqblk_valid.h \
-	xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h \
-	xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h \
-	xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h \
-	xlat/inet_diag_req_attrs.h xlat/inet_protocols.h \
-	xlat/inotify_flags.h xlat/inotify_init_flags.h \
-	xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h \
-	xlat/ip_cmsg_types.h xlat/ip_type_of_services.h \
-	xlat/ipc_msg_flags.h xlat/ipccalls.h xlat/itimer_which.h \
+	xlat/getrandom_flags.h xlat/getsock_ip_options.h \
+	xlat/getsock_ipv6_options.h xlat/getsock_options.h \
+	xlat/hci_channels.h xlat/hw_breakpoint_len.h \
+	xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h \
+	xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h \
+	xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h \
+	xlat/in6_addr_gen_mode.h xlat/inet6_devconf_indices.h \
+	xlat/inet6_if_flags.h xlat/inet_devconf_indices.h \
+	xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h \
+	xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h \
+	xlat/inet_protocols.h xlat/inotify_flags.h \
+	xlat/inotify_init_flags.h xlat/ioctl_dirs.h \
+	xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h \
+	xlat/ip_type_of_services.h xlat/ipc_msg_flags.h \
+	xlat/ipc_private.h xlat/ipccalls.h xlat/irda_protocols.h \
+	xlat/isdn_protocols.h xlat/itimer_which.h xlat/kcm_protocols.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 \
@@ -1098,34 +1169,38 @@
 	xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h \
 	xlat/netlink_flags.h xlat/netlink_get_flags.h \
 	xlat/netlink_new_flags.h xlat/netlink_protocols.h \
-	xlat/netlink_socket_flags.h xlat/netlink_states.h \
-	xlat/netlink_types.h xlat/nf_acct_msg_types.h \
-	xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h \
+	xlat/netlink_sk_meminfo_indices.h xlat/netlink_socket_flags.h \
+	xlat/netlink_states.h xlat/netlink_types.h \
+	xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h \
+	xlat/nf_ctnetlink_exp_msg_types.h \
 	xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h \
 	xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h \
 	xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h \
 	xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h \
-	xlat/nl_audit_types.h xlat/nl_crypto_types.h \
-	xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h \
-	xlat/nl_route_types.h xlat/nl_selinux_types.h \
-	xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h \
-	xlat/nlmsgerr_attrs.h xlat/notifyflags.h \
-	xlat/nt_descriptor_types.h xlat/open_access_modes.h \
-	xlat/open_mode_flags.h xlat/packet_diag_attrs.h \
-	xlat/packet_diag_info_flags.h xlat/packet_diag_show.h \
-	xlat/packet_mreq_type.h xlat/perf_attr_size.h \
-	xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h \
-	xlat/perf_event_read_format.h xlat/perf_event_sample_format.h \
-	xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h \
-	xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h \
-	xlat/perf_sw_ids.h xlat/perf_type_id.h \
+	xlat/nfc_protocols.h xlat/nl_audit_types.h \
+	xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h \
+	xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h \
+	xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h \
+	xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h \
+	xlat/nt_descriptor_types.h xlat/numa_node.h \
+	xlat/open_access_modes.h xlat/open_mode_flags.h \
+	xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h \
+	xlat/packet_diag_show.h xlat/packet_mreq_type.h \
+	xlat/perf_attr_size.h xlat/perf_branch_sample_type.h \
+	xlat/perf_event_open_flags.h xlat/perf_event_read_format.h \
+	xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h \
+	xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h \
+	xlat/perf_hw_id.h xlat/perf_ioctl_cmds.h \
+	xlat/perf_ioctl_flags.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_sve_vl_flags.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/phonet_protocols.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_spec_cmds.h \
+	xlat/pr_spec_get_store_bypass_flags.h \
+	xlat/pr_spec_set_store_bypass_flags.h xlat/pr_sve_vl_flags.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 \
@@ -1135,11 +1210,16 @@
 	xlat/routing_scopes.h xlat/routing_table_ids.h \
 	xlat/routing_types.h xlat/rtnl_addr_attrs.h \
 	xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h \
+	xlat/rtnl_ifla_af_spec_inet6_attrs.h \
+	xlat/rtnl_ifla_af_spec_inet_attrs.h \
 	xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_events.h \
-	xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h \
-	xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h \
-	xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h \
-	xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h \
+	xlat/rtnl_ifla_info_attrs.h \
+	xlat/rtnl_ifla_info_data_bridge_attrs.h \
+	xlat/rtnl_ifla_info_data_tun_attrs.h \
+	xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h \
+	xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h \
+	xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h \
+	xlat/rtnl_mdba_mdb_eattr_attrs.h \
 	xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h \
 	xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h \
 	xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h \
@@ -1156,24 +1236,35 @@
 	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/setsock_ip_options.h xlat/setsock_ipv6_options.h \
+	xlat/setsock_options.h xlat/sfd_flags.h \
+	xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h \
+	xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h \
+	xlat/shm_resource_flags.h xlat/shmctl_flags.h \
 	xlat/shutdown_modes.h xlat/sigact_flags.h \
 	xlat/sigaltstack_flags.h xlat/sigbus_codes.h \
 	xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h \
 	xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h \
 	xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h \
 	xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h \
-	xlat/sigtrap_codes.h xlat/skf_ad.h xlat/smc_diag_attrs.h \
-	xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h \
-	xlat/smc_states.h xlat/sock_type_flags.h xlat/socketcalls.h \
-	xlat/socketlayers.h xlat/sockipoptions.h \
-	xlat/sockipv6options.h xlat/sockipxoptions.h \
-	xlat/socknetlinkoptions.h xlat/sockoptions.h \
-	xlat/sockpacketoptions.h xlat/sockrawoptions.h \
-	xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h \
+	xlat/sigtrap_codes.h xlat/skf_ad.h xlat/skf_off.h \
+	xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h \
+	xlat/smc_link_group_roles.h xlat/smc_protocols.h \
+	xlat/smc_states.h xlat/snmp_icmp6_stats.h xlat/snmp_ip_stats.h \
+	xlat/sock_alg_options.h xlat/sock_bluetooth_options.h \
+	xlat/sock_caif_options.h xlat/sock_dccp_options.h \
+	xlat/sock_ip_options.h xlat/sock_ipv6_options.h \
+	xlat/sock_ipx_options.h xlat/sock_irda_options.h \
+	xlat/sock_iucv_options.h xlat/sock_kcm_options.h \
+	xlat/sock_llc_options.h xlat/sock_netlink_options.h \
+	xlat/sock_nfcllcp_options.h xlat/sock_options.h \
+	xlat/sock_packet_options.h xlat/sock_pnp_options.h \
+	xlat/sock_pppol2tp_options.h xlat/sock_raw_options.h \
+	xlat/sock_rds_options.h xlat/sock_rxrpc_options.h \
+	xlat/sock_sctp_options.h xlat/sock_tcp_options.h \
+	xlat/sock_tipc_options.h xlat/sock_tls_options.h \
+	xlat/sock_type_flags.h xlat/sock_udp_options.h \
+	xlat/socketcalls.h xlat/socketlayers.h xlat/socktypes.h \
 	xlat/sparc_kern_features.h xlat/splice_flags.h \
 	xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h \
 	xlat/statx_masks.h xlat/swap_flags.h \
@@ -1185,9 +1276,10 @@
 	xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h \
 	xlat/sysmips_operations.h xlat/tcflsh_options.h \
 	xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h \
-	xlat/timerfdflags.h xlat/ubi_volume_props.h \
-	xlat/ubi_volume_types.h xlat/uffd_api_features.h \
-	xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h \
+	xlat/timerfdflags.h xlat/tun_device_types.h \
+	xlat/ubi_volume_props.h xlat/ubi_volume_types.h \
+	xlat/uffd_api_features.h xlat/uffd_api_flags.h \
+	xlat/uffd_copy_flags.h xlat/uffd_flags.h \
 	xlat/uffd_register_ioctl_flags.h \
 	xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h \
 	xlat/umount_flags.h xlat/unix_diag_attrs.h \
@@ -1195,7 +1287,8 @@
 	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_control_id_bases.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 \
@@ -1207,14 +1300,14 @@
 	xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h \
 	xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h \
 	xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
-strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_2) $(am__append_5) \
-	$(CODE_COVERAGE_CPPFLAGS)
-strace_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
-strace_LDFLAGS = $(am__append_3) $(am__append_6)
-strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS) $(am__append_4) \
-	$(am__append_7) $(CODE_COVERAGE_LIBS) $(am__append_8) \
-	$(am__append_12)
-noinst_LIBRARIES = libstrace.a $(am__append_9) $(am__append_13)
+strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_3) $(am__append_8) \
+	$(am__append_11) $(CODE_COVERAGE_CPPFLAGS)
+strace_CFLAGS = $(AM_CFLAGS) $(am__append_4) $(CODE_COVERAGE_CFLAGS)
+strace_LDFLAGS = $(am__append_5) $(am__append_9) $(am__append_12)
+strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS) $(am__append_6) \
+	$(am__append_10) $(am__append_13) $(CODE_COVERAGE_LIBS) \
+	$(am__append_14) $(am__append_18)
+noinst_LIBRARIES = libstrace.a $(am__append_15) $(am__append_19)
 libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
 libstrace_a_CFLAGS = $(strace_CFLAGS)
 libstrace_a_SOURCES = \
@@ -1223,6 +1316,8 @@
 	fstatfs64.c \
 	getpagesize.c \
 	ipc.c \
+	mmap_cache.c	\
+	mmap_cache.h	\
 	sigreturn.c	\
 	socketcall.c \
 	statfs.c \
@@ -1240,40 +1335,43 @@
 	caps1.h chdir.c chmod.c clone.c copy_file_range.c count.c \
 	defs.h delay.c delay.h desc.c dirent.c dirent64.c dm.c \
 	dyxlat.c empty.h epoll.c error_prints.c error_prints.h evdev.c \
-	evdev_mpers.c eventfd.c execve.c fadvise.c fallocate.c \
-	fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
+	evdev_mpers.c eventfd.c execve.c f_owner_ex.h fadvise.c \
+	fallocate.c fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
 	fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c \
 	fetch_struct_mmsghdr.c fetch_struct_msghdr.c \
 	fetch_struct_stat.c fetch_struct_stat64.c \
 	fetch_struct_statfs.c file_handle.c file_ioctl.c \
 	filter_qualify.c filter.h flock.c flock.h fs_x_ioctl.c futex.c \
 	gcc_compat.h get_robust_list.c getcpu.c getcwd.c getrandom.c \
-	hdio.c hostname.c inotify.c io.c ioctl.c ioperm.c iopl.c \
-	ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c ipc_sem.c ipc_shm.c \
-	ipc_shmctl.c kcmp.c kernel_types.h kexec.c keyctl.c \
-	keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c link.c \
-	linux/asm_stat.h linux/x32/asm_stat.h linux/x86_64/asm_stat.h \
-	listen.c lookup_dcookie.c loop.c lseek.c macros.h mem.c \
-	membarrier.c memfd_create.c mknod.c mmap_cache.c mmap_cache.h \
-	mmsghdr.c mount.c mpers_type.h mq.c msghdr.c msghdr.h mtd.c \
+	hdio.c hostname.c inotify.c inotify_ioctl.c io.c ioctl.c \
+	ioperm.c iopl.c ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
+	ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_types.h kexec.c \
+	keyctl.c keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c \
+	link.c linux/asm_stat.h linux/linux/signal.h \
+	linux/x32/asm_stat.h linux/x86_64/asm_stat.h listen.c \
+	lookup_dcookie.c loop.c lseek.c macros.h mem.c membarrier.c \
+	memfd_create.c mknod.c mmap_notify.c mmap_notify.h mmsghdr.c \
+	mount.c mpers_type.h mq.c msghdr.c msghdr.h mtd.c \
 	native_defs.h negated_errno.h net.c netlink.c netlink.h \
-	netlink_crypto.c netlink_sock_diag.h netlink_inet_diag.c \
-	netlink_netfilter.c netlink_netlink_diag.c \
+	netlink_crypto.c netlink_kobject_uevent.c \
+	netlink_kobject_uevent.h netlink_sock_diag.h \
+	netlink_inet_diag.c netlink_netfilter.c netlink_netlink_diag.c \
 	netlink_packet_diag.c netlink_route.c netlink_route.h \
 	netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
 	netlink_unix_diag.c nlattr.c nlattr.h nsfs.c nsfs.h nsig.h \
 	numa.c number_set.c number_set.h oldstat.c open.c \
 	or1k_atomic.c pathtrace.c perf.c perf_event_struct.h \
-	personality.c pkeys.c poll.c prctl.c print_dev_t.c \
-	print_group_req.c print_fields.h print_ifindex.c \
-	print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
-	print_sigevent.c print_statfs.c print_struct_stat.c \
-	print_time.c print_timespec.c print_timeval.c print_timex.c \
-	printmode.c printrusage.c printsiginfo.c printsiginfo.h \
-	process.c process_vm.c ptp.c ptrace.h quota.c readahead.c \
-	readlink.c reboot.c regs.h renameat.c resource.c retval.c \
-	retval.h riscv.c rt_sigframe.c rt_sigreturn.c rtc.c \
-	rtnl_addr.c rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
+	perf_ioctl.c personality.c pkeys.c poll.c prctl.c \
+	print_aio_sigset.c print_dev_t.c print_group_req.c \
+	print_fields.h print_ifindex.c print_mac.c print_mq_attr.c \
+	print_msgbuf.c print_sg_req_info.c print_sigevent.c \
+	print_statfs.c print_struct_stat.c print_time.c \
+	print_timespec.c print_timeval.c print_timex.c printmode.c \
+	printrusage.c printsiginfo.c printsiginfo.h process.c \
+	process_vm.c ptp.c ptrace.h quota.c readahead.c readlink.c \
+	reboot.c regs.h renameat.c resource.c retval.c retval.h \
+	riscv.c rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \
+	rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
 	rtnl_neigh.c rtnl_neightbl.c rtnl_netconf.c rtnl_nsid.c \
 	rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
 	sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
@@ -1287,7 +1385,8 @@
 	truncate.c ubi.c ucopy.c uid.c uid16.c umask.c umount.c \
 	uname.c userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c \
 	wait.c xattr.c xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \
-	$(strace_SOURCES_check) $(am__append_1)
+	$(strace_SOURCES_check) $(am__append_1) $(am__append_2) \
+	$(am__append_7)
 strace_SOURCES_check = bpf_attr_check.c
 CODE_COVERAGE_BRANCH_COVERAGE = 1
 CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
@@ -1335,7 +1434,6 @@
 	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	\
 	linux/aarch64/get_scno.c	\
 	linux/aarch64/get_syscall_args.c	\
@@ -1348,7 +1446,6 @@
 	linux/aarch64/set_error.c	\
 	linux/aarch64/set_scno.c	\
 	linux/aarch64/shuffle_scno.c	\
-	linux/aarch64/signalent1.h	\
 	linux/aarch64/syscallent.h	\
 	linux/aarch64/syscallent1.h	\
 	linux/alpha/arch_defs_.h	\
@@ -1606,7 +1703,6 @@
 	linux/powerpc64/arch_rt_sigframe.c	\
 	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	\
@@ -1620,7 +1716,6 @@
 	linux/powerpc64/rt_sigframe.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	\
@@ -1629,7 +1724,6 @@
 	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		\
 	linux/riscv/get_syscall_args.c	\
@@ -1640,7 +1734,6 @@
 	linux/riscv/raw_syscall.h	\
 	linux/riscv/set_error.c		\
 	linux/riscv/set_scno.c		\
-	linux/riscv/signalent1.h	\
 	linux/riscv/syscallent.h	\
 	linux/riscv/syscallent1.h	\
 	linux/rt_sigframe.h		\
@@ -1667,7 +1760,6 @@
 	linux/s390x/arch_regs.h		\
 	linux/s390x/arch_rt_sigframe.c	\
 	linux/s390x/arch_sigreturn.c	\
-	linux/s390x/errnoent1.h		\
 	linux/s390x/get_error.c		\
 	linux/s390x/get_scno.c		\
 	linux/s390x/get_syscall_args.c	\
@@ -1679,7 +1771,6 @@
 	linux/s390x/rt_sigframe.h	\
 	linux/s390x/set_error.c		\
 	linux/s390x/set_scno.c		\
-	linux/s390x/signalent1.h	\
 	linux/s390x/syscallent.h	\
 	linux/s390x/syscallent1.h	\
 	linux/s390x/userent.h		\
@@ -1745,7 +1836,6 @@
 	linux/sparc64/arch_rt_sigframe.c	\
 	linux/sparc64/arch_sigreturn.c	\
 	linux/sparc64/errnoent.h	\
-	linux/sparc64/errnoent1.h	\
 	linux/sparc64/get_error.c	\
 	linux/sparc64/get_scno.c	\
 	linux/sparc64/get_syscall_args.c	\
@@ -1758,7 +1848,6 @@
 	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		\
@@ -1769,7 +1858,6 @@
 	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		\
 	linux/tile/get_scno.c		\
 	linux/tile/get_syscall_args.c	\
@@ -1781,7 +1869,6 @@
 	linux/tile/rt_sigframe.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		\
@@ -1794,7 +1881,6 @@
 	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		\
 	linux/x32/get_scno.c		\
 	linux/x32/get_syscall_args.c	\
@@ -1807,7 +1893,6 @@
 	linux/x32/set_error.c		\
 	linux/x32/set_scno.c		\
 	linux/x32/shuffle_scno.c	\
-	linux/x32/signalent1.h		\
 	linux/x32/syscallent.h		\
 	linux/x32/syscallent1.h		\
 	linux/x32/userent.h		\
@@ -1817,8 +1902,6 @@
 	linux/x86_64/arch_regs.h	\
 	linux/x86_64/arch_rt_sigframe.c	\
 	linux/x86_64/arch_sigreturn.c	\
-	linux/x86_64/errnoent1.h	\
-	linux/x86_64/errnoent2.h	\
 	linux/x86_64/get_error.c	\
 	linux/x86_64/get_scno.c		\
 	linux/x86_64/get_syscall_args.c	\
@@ -1835,8 +1918,6 @@
 	linux/x86_64/set_error.c	\
 	linux/x86_64/set_scno.c		\
 	linux/x86_64/shuffle_scno.c	\
-	linux/x86_64/signalent1.h	\
-	linux/x86_64/signalent2.h	\
 	linux/x86_64/syscallent.h	\
 	linux/x86_64/syscallent1.h	\
 	linux/x86_64/syscallent2.h	\
@@ -1876,7 +1957,7 @@
 
 syscallent_patterns = $(patsubst %,\%/%,$(syscallent_names))
 syscallent_files = $(filter $(syscallent_patterns),$(EXTRA_DIST))
-today = $(shell date +%Y-%m-%d)
+today = $(shell LC_TIME=C date -u +%Y-%m-%d)
 version_regexp = $(subst .,\.,$(VERSION))
 news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))'
 ioctlsort_CC = $(CC_FOR_BUILD)
@@ -1890,12 +1971,12 @@
 ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h)))
 BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) bpf_attr_check.c \
 	native_printer_decls.h native_printer_defs.h printers.h sen.h \
-	sys_func.h .version scno.h $(am__append_10) $(am__append_14)
+	sys_func.h .version scno.h $(am__append_16) $(am__append_20)
 CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \
 	ioctl_iocdef.h ioctl_iocdef.i bpf_attr_check.c \
 	native_printer_decls.h native_printer_defs.h printers.h sen.h \
-	sys_func.h syscallent.i scno.h $(am__append_11) \
-	$(am__append_15)
+	sys_func.h syscallent.i scno.h $(am__append_17) \
+	$(am__append_21)
 DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
@@ -1905,7 +1986,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_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_group_req.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 
+mpers_source_files = block.c btrfs.c dirent.c evdev_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.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))
@@ -2114,6 +2195,8 @@
 include ./$(DEPDIR)/libmpers_m32_a-ipc_shmctl.Po
 include ./$(DEPDIR)/libmpers_m32_a-loop.Po
 include ./$(DEPDIR)/libmpers_m32_a-mtd.Po
+include ./$(DEPDIR)/libmpers_m32_a-perf_ioctl.Po
+include ./$(DEPDIR)/libmpers_m32_a-print_aio_sigset.Po
 include ./$(DEPDIR)/libmpers_m32_a-print_group_req.Po
 include ./$(DEPDIR)/libmpers_m32_a-print_mq_attr.Po
 include ./$(DEPDIR)/libmpers_m32_a-print_msgbuf.Po
@@ -2152,6 +2235,8 @@
 include ./$(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Po
 include ./$(DEPDIR)/libmpers_mx32_a-loop.Po
 include ./$(DEPDIR)/libmpers_mx32_a-mtd.Po
+include ./$(DEPDIR)/libmpers_mx32_a-perf_ioctl.Po
+include ./$(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Po
 include ./$(DEPDIR)/libmpers_mx32_a-print_group_req.Po
 include ./$(DEPDIR)/libmpers_mx32_a-print_mq_attr.Po
 include ./$(DEPDIR)/libmpers_mx32_a-print_msgbuf.Po
@@ -2178,6 +2263,7 @@
 include ./$(DEPDIR)/libstrace_a-fstatfs64.Po
 include ./$(DEPDIR)/libstrace_a-getpagesize.Po
 include ./$(DEPDIR)/libstrace_a-ipc.Po
+include ./$(DEPDIR)/libstrace_a-mmap_cache.Po
 include ./$(DEPDIR)/libstrace_a-sigreturn.Po
 include ./$(DEPDIR)/libstrace_a-socketcall.Po
 include ./$(DEPDIR)/libstrace_a-statfs.Po
@@ -2245,6 +2331,7 @@
 include ./$(DEPDIR)/strace-hdio.Po
 include ./$(DEPDIR)/strace-hostname.Po
 include ./$(DEPDIR)/strace-inotify.Po
+include ./$(DEPDIR)/strace-inotify_ioctl.Po
 include ./$(DEPDIR)/strace-io.Po
 include ./$(DEPDIR)/strace-ioctl.Po
 include ./$(DEPDIR)/strace-ioperm.Po
@@ -2269,7 +2356,7 @@
 include ./$(DEPDIR)/strace-membarrier.Po
 include ./$(DEPDIR)/strace-memfd_create.Po
 include ./$(DEPDIR)/strace-mknod.Po
-include ./$(DEPDIR)/strace-mmap_cache.Po
+include ./$(DEPDIR)/strace-mmap_notify.Po
 include ./$(DEPDIR)/strace-mmsghdr.Po
 include ./$(DEPDIR)/strace-mount.Po
 include ./$(DEPDIR)/strace-mq.Po
@@ -2279,6 +2366,7 @@
 include ./$(DEPDIR)/strace-netlink.Po
 include ./$(DEPDIR)/strace-netlink_crypto.Po
 include ./$(DEPDIR)/strace-netlink_inet_diag.Po
+include ./$(DEPDIR)/strace-netlink_kobject_uevent.Po
 include ./$(DEPDIR)/strace-netlink_netfilter.Po
 include ./$(DEPDIR)/strace-netlink_netlink_diag.Po
 include ./$(DEPDIR)/strace-netlink_packet_diag.Po
@@ -2296,13 +2384,16 @@
 include ./$(DEPDIR)/strace-or1k_atomic.Po
 include ./$(DEPDIR)/strace-pathtrace.Po
 include ./$(DEPDIR)/strace-perf.Po
+include ./$(DEPDIR)/strace-perf_ioctl.Po
 include ./$(DEPDIR)/strace-personality.Po
 include ./$(DEPDIR)/strace-pkeys.Po
 include ./$(DEPDIR)/strace-poll.Po
 include ./$(DEPDIR)/strace-prctl.Po
+include ./$(DEPDIR)/strace-print_aio_sigset.Po
 include ./$(DEPDIR)/strace-print_dev_t.Po
 include ./$(DEPDIR)/strace-print_group_req.Po
 include ./$(DEPDIR)/strace-print_ifindex.Po
+include ./$(DEPDIR)/strace-print_mac.Po
 include ./$(DEPDIR)/strace-print_mq_attr.Po
 include ./$(DEPDIR)/strace-print_msgbuf.Po
 include ./$(DEPDIR)/strace-print_sg_req_info.Po
@@ -2382,6 +2473,7 @@
 include ./$(DEPDIR)/strace-umask.Po
 include ./$(DEPDIR)/strace-umount.Po
 include ./$(DEPDIR)/strace-uname.Po
+include ./$(DEPDIR)/strace-unwind-libdw.Po
 include ./$(DEPDIR)/strace-unwind-libunwind.Po
 include ./$(DEPDIR)/strace-unwind.Po
 include ./$(DEPDIR)/strace-userfaultfd.Po
@@ -2647,6 +2739,34 @@
 #	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-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
 
+libmpers_m32_a-perf_ioctl.o: perf_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-perf_ioctl.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo -c -o libmpers_m32_a-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_m32_a-perf_ioctl.Po
+#	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_m32_a-perf_ioctl.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-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+
+libmpers_m32_a-perf_ioctl.obj: perf_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo -c -o libmpers_m32_a-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_m32_a-perf_ioctl.Po
+#	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_m32_a-perf_ioctl.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-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+
+libmpers_m32_a-print_aio_sigset.o: print_aio_sigset.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo -c -o libmpers_m32_a-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Po
+#	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_m32_a-print_aio_sigset.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-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+
+libmpers_m32_a-print_aio_sigset.obj: print_aio_sigset.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo -c -o libmpers_m32_a-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Po
+#	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_m32_a-print_aio_sigset.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-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+
 libmpers_m32_a-print_group_req.o: print_group_req.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_m32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_m32_a_CFLAGS) $(CFLAGS) -MT libmpers_m32_a-print_group_req.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_group_req.Tpo -c -o libmpers_m32_a-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_group_req.Tpo $(DEPDIR)/libmpers_m32_a-print_group_req.Po
@@ -3179,6 +3299,34 @@
 #	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-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
 
+libmpers_mx32_a-perf_ioctl.o: perf_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-perf_ioctl.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo -c -o libmpers_mx32_a-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Po
+#	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_mx32_a-perf_ioctl.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-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+
+libmpers_mx32_a-perf_ioctl.obj: perf_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo -c -o libmpers_mx32_a-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Po
+#	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_mx32_a-perf_ioctl.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-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+
+libmpers_mx32_a-print_aio_sigset.o: print_aio_sigset.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo -c -o libmpers_mx32_a-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Po
+#	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_mx32_a-print_aio_sigset.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-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+
+libmpers_mx32_a-print_aio_sigset.obj: print_aio_sigset.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo -c -o libmpers_mx32_a-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Po
+#	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_mx32_a-print_aio_sigset.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-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+
 libmpers_mx32_a-print_group_req.o: print_group_req.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmpers_mx32_a_CPPFLAGS) $(CPPFLAGS) $(libmpers_mx32_a_CFLAGS) $(CFLAGS) -MT libmpers_mx32_a-print_group_req.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_group_req.Tpo -c -o libmpers_mx32_a-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_group_req.Tpo $(DEPDIR)/libmpers_mx32_a-print_group_req.Po
@@ -3543,6 +3691,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-mmap_cache.o: mmap_cache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.o -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
+#	$(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.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-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+
+libstrace_a-mmap_cache.obj: mmap_cache.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
+#	$(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.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-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.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
@@ -4467,6 +4629,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-inotify.obj `if test -f 'inotify.c'; then $(CYGPATH_W) 'inotify.c'; else $(CYGPATH_W) '$(srcdir)/inotify.c'; fi`
 
+strace-inotify_ioctl.o: inotify_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify_ioctl.o -MD -MP -MF $(DEPDIR)/strace-inotify_ioctl.Tpo -c -o strace-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify_ioctl.Tpo $(DEPDIR)/strace-inotify_ioctl.Po
+#	$(AM_V_CC)source='inotify_ioctl.c' object='strace-inotify_ioctl.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-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
+
+strace-inotify_ioctl.obj: inotify_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-inotify_ioctl.Tpo -c -o strace-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify_ioctl.Tpo $(DEPDIR)/strace-inotify_ioctl.Po
+#	$(AM_V_CC)source='inotify_ioctl.c' object='strace-inotify_ioctl.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-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
+
 strace-io.o: io.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-io.o -MD -MP -MF $(DEPDIR)/strace-io.Tpo -c -o strace-io.o `test -f 'io.c' || echo '$(srcdir)/'`io.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-io.Tpo $(DEPDIR)/strace-io.Po
@@ -4803,19 +4979,19 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mknod.obj `if test -f 'mknod.c'; then $(CYGPATH_W) 'mknod.c'; else $(CYGPATH_W) '$(srcdir)/mknod.c'; fi`
 
-strace-mmap_cache.o: mmap_cache.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_cache.o -MD -MP -MF $(DEPDIR)/strace-mmap_cache.Tpo -c -o strace-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
-	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_cache.Tpo $(DEPDIR)/strace-mmap_cache.Po
-#	$(AM_V_CC)source='mmap_cache.c' object='strace-mmap_cache.o' libtool=no \
+strace-mmap_notify.o: mmap_notify.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_notify.o -MD -MP -MF $(DEPDIR)/strace-mmap_notify.Tpo -c -o strace-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_notify.Tpo $(DEPDIR)/strace-mmap_notify.Po
+#	$(AM_V_CC)source='mmap_notify.c' object='strace-mmap_notify.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-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
 
-strace-mmap_cache.obj: mmap_cache.c
-	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_cache.obj -MD -MP -MF $(DEPDIR)/strace-mmap_cache.Tpo -c -o strace-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
-	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_cache.Tpo $(DEPDIR)/strace-mmap_cache.Po
-#	$(AM_V_CC)source='mmap_cache.c' object='strace-mmap_cache.obj' libtool=no \
+strace-mmap_notify.obj: mmap_notify.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_notify.obj -MD -MP -MF $(DEPDIR)/strace-mmap_notify.Tpo -c -o strace-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_notify.Tpo $(DEPDIR)/strace-mmap_notify.Po
+#	$(AM_V_CC)source='mmap_notify.c' object='strace-mmap_notify.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-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
+#	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
 
 strace-mmsghdr.o: mmsghdr.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmsghdr.o -MD -MP -MF $(DEPDIR)/strace-mmsghdr.Tpo -c -o strace-mmsghdr.o `test -f 'mmsghdr.c' || echo '$(srcdir)/'`mmsghdr.c
@@ -4929,6 +5105,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-netlink_crypto.obj `if test -f 'netlink_crypto.c'; then $(CYGPATH_W) 'netlink_crypto.c'; else $(CYGPATH_W) '$(srcdir)/netlink_crypto.c'; fi`
 
+strace-netlink_kobject_uevent.o: netlink_kobject_uevent.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_kobject_uevent.o -MD -MP -MF $(DEPDIR)/strace-netlink_kobject_uevent.Tpo -c -o strace-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_kobject_uevent.Tpo $(DEPDIR)/strace-netlink_kobject_uevent.Po
+#	$(AM_V_CC)source='netlink_kobject_uevent.c' object='strace-netlink_kobject_uevent.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-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
+
+strace-netlink_kobject_uevent.obj: netlink_kobject_uevent.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_kobject_uevent.obj -MD -MP -MF $(DEPDIR)/strace-netlink_kobject_uevent.Tpo -c -o strace-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_kobject_uevent.Tpo $(DEPDIR)/strace-netlink_kobject_uevent.Po
+#	$(AM_V_CC)source='netlink_kobject_uevent.c' object='strace-netlink_kobject_uevent.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-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
+
 strace-netlink_inet_diag.o: netlink_inet_diag.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_inet_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_inet_diag.Tpo -c -o strace-netlink_inet_diag.o `test -f 'netlink_inet_diag.c' || echo '$(srcdir)/'`netlink_inet_diag.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_inet_diag.Tpo $(DEPDIR)/strace-netlink_inet_diag.Po
@@ -5181,6 +5371,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-perf.obj `if test -f 'perf.c'; then $(CYGPATH_W) 'perf.c'; else $(CYGPATH_W) '$(srcdir)/perf.c'; fi`
 
+strace-perf_ioctl.o: perf_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf_ioctl.o -MD -MP -MF $(DEPDIR)/strace-perf_ioctl.Tpo -c -o strace-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf_ioctl.Tpo $(DEPDIR)/strace-perf_ioctl.Po
+#	$(AM_V_CC)source='perf_ioctl.c' object='strace-perf_ioctl.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-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+
+strace-perf_ioctl.obj: perf_ioctl.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-perf_ioctl.Tpo -c -o strace-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf_ioctl.Tpo $(DEPDIR)/strace-perf_ioctl.Po
+#	$(AM_V_CC)source='perf_ioctl.c' object='strace-perf_ioctl.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-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+
 strace-personality.o: personality.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-personality.o -MD -MP -MF $(DEPDIR)/strace-personality.Tpo -c -o strace-personality.o `test -f 'personality.c' || echo '$(srcdir)/'`personality.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-personality.Tpo $(DEPDIR)/strace-personality.Po
@@ -5237,6 +5441,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-prctl.obj `if test -f 'prctl.c'; then $(CYGPATH_W) 'prctl.c'; else $(CYGPATH_W) '$(srcdir)/prctl.c'; fi`
 
+strace-print_aio_sigset.o: print_aio_sigset.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/strace-print_aio_sigset.Tpo -c -o strace-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_aio_sigset.Tpo $(DEPDIR)/strace-print_aio_sigset.Po
+#	$(AM_V_CC)source='print_aio_sigset.c' object='strace-print_aio_sigset.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-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+
+strace-print_aio_sigset.obj: print_aio_sigset.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/strace-print_aio_sigset.Tpo -c -o strace-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_aio_sigset.Tpo $(DEPDIR)/strace-print_aio_sigset.Po
+#	$(AM_V_CC)source='print_aio_sigset.c' object='strace-print_aio_sigset.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-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+
 strace-print_dev_t.o: print_dev_t.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_dev_t.o -MD -MP -MF $(DEPDIR)/strace-print_dev_t.Tpo -c -o strace-print_dev_t.o `test -f 'print_dev_t.c' || echo '$(srcdir)/'`print_dev_t.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_dev_t.Tpo $(DEPDIR)/strace-print_dev_t.Po
@@ -5279,6 +5497,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-print_ifindex.obj `if test -f 'print_ifindex.c'; then $(CYGPATH_W) 'print_ifindex.c'; else $(CYGPATH_W) '$(srcdir)/print_ifindex.c'; fi`
 
+strace-print_mac.o: print_mac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mac.o -MD -MP -MF $(DEPDIR)/strace-print_mac.Tpo -c -o strace-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mac.Tpo $(DEPDIR)/strace-print_mac.Po
+#	$(AM_V_CC)source='print_mac.c' object='strace-print_mac.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-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
+
+strace-print_mac.obj: print_mac.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mac.obj -MD -MP -MF $(DEPDIR)/strace-print_mac.Tpo -c -o strace-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mac.Tpo $(DEPDIR)/strace-print_mac.Po
+#	$(AM_V_CC)source='print_mac.c' object='strace-print_mac.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-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
+
 strace-print_mq_attr.o: print_mq_attr.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mq_attr.o -MD -MP -MF $(DEPDIR)/strace-print_mq_attr.Tpo -c -o strace-print_mq_attr.o `test -f 'print_mq_attr.c' || echo '$(srcdir)/'`print_mq_attr.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mq_attr.Tpo $(DEPDIR)/strace-print_mq_attr.Po
@@ -6553,6 +6785,20 @@
 #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-unwind.obj `if test -f 'unwind.c'; then $(CYGPATH_W) 'unwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind.c'; fi`
 
+strace-unwind-libdw.o: unwind-libdw.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libdw.o -MD -MP -MF $(DEPDIR)/strace-unwind-libdw.Tpo -c -o strace-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libdw.Tpo $(DEPDIR)/strace-unwind-libdw.Po
+#	$(AM_V_CC)source='unwind-libdw.c' object='strace-unwind-libdw.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-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
+
+strace-unwind-libdw.obj: unwind-libdw.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libdw.obj -MD -MP -MF $(DEPDIR)/strace-unwind-libdw.Tpo -c -o strace-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
+	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libdw.Tpo $(DEPDIR)/strace-unwind-libdw.Po
+#	$(AM_V_CC)source='unwind-libdw.c' object='strace-unwind-libdw.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-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
+
 strace-unwind-libunwind.o: unwind-libunwind.c
 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libunwind.o -MD -MP -MF $(DEPDIR)/strace-unwind-libunwind.Tpo -c -o strace-unwind-libunwind.o `test -f 'unwind-libunwind.c' || echo '$(srcdir)/'`unwind-libunwind.c
 	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libunwind.Tpo $(DEPDIR)/strace-unwind-libunwind.Po
@@ -7105,8 +7351,14 @@
 	$(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/bdaddr_types.h: $(top_srcdir)/xlat/bdaddr_types.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/bluetooth_l2_cid.h: $(top_srcdir)/xlat/bluetooth_l2_cid.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bluetooth_l2_psm.h: $(top_srcdir)/xlat/bluetooth_l2_psm.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
@@ -7141,6 +7393,8 @@
 	$(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_query_flags.h: $(top_srcdir)/xlat/bpf_query_flags.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
@@ -7165,6 +7419,8 @@
 	$(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_cont_reading_from_srcdev_mode.h: $(top_srcdir)/xlat/btrfs_cont_reading_from_srcdev_mode.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
@@ -7207,6 +7463,10 @@
 	$(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/caif_protocols.h: $(top_srcdir)/xlat/caif_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/can_protocols.h: $(top_srcdir)/xlat/can_protocols.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
@@ -7233,6 +7493,18 @@
 	$(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/ebpf_class.h: $(top_srcdir)/xlat/ebpf_class.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_mode.h: $(top_srcdir)/xlat/ebpf_mode.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_op_alu.h: $(top_srcdir)/xlat/ebpf_op_alu.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_op_jmp.h: $(top_srcdir)/xlat/ebpf_op_jmp.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_regs.h: $(top_srcdir)/xlat/ebpf_regs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_size.h: $(top_srcdir)/xlat/ebpf_size.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
@@ -7285,8 +7557,6 @@
 	$(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
@@ -7311,9 +7581,11 @@
 	$(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
+$(top_srcdir)/xlat/getsock_ip_options.h: $(top_srcdir)/xlat/getsock_ip_options.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
+$(top_srcdir)/xlat/getsock_ipv6_options.h: $(top_srcdir)/xlat/getsock_ipv6_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/getsock_options.h: $(top_srcdir)/xlat/getsock_options.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 $< $@
@@ -7333,6 +7605,14 @@
 	$(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/in6_addr_gen_mode.h: $(top_srcdir)/xlat/in6_addr_gen_mode.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet6_devconf_indices.h: $(top_srcdir)/xlat/inet6_devconf_indices.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet6_if_flags.h: $(top_srcdir)/xlat/inet6_if_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet_devconf_indices.h: $(top_srcdir)/xlat/inet_devconf_indices.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/inet_diag_attrs.h: $(top_srcdir)/xlat/inet_diag_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/inet_diag_bytecodes.h: $(top_srcdir)/xlat/inet_diag_bytecodes.in $(top_srcdir)/xlat/gen.sh
@@ -7359,10 +7639,18 @@
 	$(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/ipc_private.h: $(top_srcdir)/xlat/ipc_private.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/irda_protocols.h: $(top_srcdir)/xlat/irda_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/isdn_protocols.h: $(top_srcdir)/xlat/isdn_protocols.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/kcm_protocols.h: $(top_srcdir)/xlat/kcm_protocols.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
@@ -7471,6 +7759,8 @@
 	$(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_sk_meminfo_indices.h: $(top_srcdir)/xlat/netlink_sk_meminfo_indices.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/netlink_socket_flags.h: $(top_srcdir)/xlat/netlink_socket_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/netlink_states.h: $(top_srcdir)/xlat/netlink_states.in $(top_srcdir)/xlat/gen.sh
@@ -7499,6 +7789,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/nf_ulog_msg_types.h: $(top_srcdir)/xlat/nf_ulog_msg_types.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nfc_protocols.h: $(top_srcdir)/xlat/nfc_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/nl_audit_types.h: $(top_srcdir)/xlat/nl_audit_types.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/nl_crypto_types.h: $(top_srcdir)/xlat/nl_crypto_types.in $(top_srcdir)/xlat/gen.sh
@@ -7521,6 +7813,8 @@
 	$(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/numa_node.h: $(top_srcdir)/xlat/numa_node.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
@@ -7551,6 +7845,10 @@
 	$(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_ioctl_cmds.h: $(top_srcdir)/xlat/perf_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/perf_ioctl_flags.h: $(top_srcdir)/xlat/perf_ioctl_flags.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
@@ -7559,6 +7857,8 @@
 	$(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/phonet_protocols.h: $(top_srcdir)/xlat/phonet_protocols.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
@@ -7577,6 +7877,12 @@
 	$(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_spec_cmds.h: $(top_srcdir)/xlat/pr_spec_cmds.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/pr_spec_get_store_bypass_flags.h: $(top_srcdir)/xlat/pr_spec_get_store_bypass_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/pr_spec_set_store_bypass_flags.h: $(top_srcdir)/xlat/pr_spec_set_store_bypass_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pr_sve_vl_flags.h: $(top_srcdir)/xlat/pr_sve_vl_flags.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
@@ -7629,12 +7935,20 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_dcb_attrs.h: $(top_srcdir)/xlat/rtnl_dcb_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_af_spec_inet6_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_af_spec_inet6_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_af_spec_inet_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_af_spec_inet_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_brport_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_brport_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_events.h: $(top_srcdir)/xlat/rtnl_ifla_events.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_info_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_info_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_info_data_bridge_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_info_data_bridge_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_info_data_tun_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_info_data_tun_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_port_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_port_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_vf_port_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_vf_port_attrs.in $(top_srcdir)/xlat/gen.sh
@@ -7713,9 +8027,11 @@
 	$(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
+$(top_srcdir)/xlat/setsock_ip_options.h: $(top_srcdir)/xlat/setsock_ip_options.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
+$(top_srcdir)/xlat/setsock_ipv6_options.h: $(top_srcdir)/xlat/setsock_ipv6_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/setsock_options.h: $(top_srcdir)/xlat/setsock_options.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 $< $@
@@ -7767,38 +8083,78 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/skf_ad.h: $(top_srcdir)/xlat/skf_ad.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/skf_off.h: $(top_srcdir)/xlat/skf_off.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_diag_attrs.h: $(top_srcdir)/xlat/smc_diag_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_diag_extended_flags.h: $(top_srcdir)/xlat/smc_diag_extended_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_link_group_roles.h: $(top_srcdir)/xlat/smc_link_group_roles.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/smc_protocols.h: $(top_srcdir)/xlat/smc_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_states.h: $(top_srcdir)/xlat/smc_states.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/snmp_icmp6_stats.h: $(top_srcdir)/xlat/snmp_icmp6_stats.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/snmp_ip_stats.h: $(top_srcdir)/xlat/snmp_ip_stats.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_alg_options.h: $(top_srcdir)/xlat/sock_alg_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_bluetooth_options.h: $(top_srcdir)/xlat/sock_bluetooth_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_caif_options.h: $(top_srcdir)/xlat/sock_caif_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_dccp_options.h: $(top_srcdir)/xlat/sock_dccp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_ip_options.h: $(top_srcdir)/xlat/sock_ip_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_ipv6_options.h: $(top_srcdir)/xlat/sock_ipv6_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_ipx_options.h: $(top_srcdir)/xlat/sock_ipx_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_irda_options.h: $(top_srcdir)/xlat/sock_irda_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_iucv_options.h: $(top_srcdir)/xlat/sock_iucv_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_kcm_options.h: $(top_srcdir)/xlat/sock_kcm_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_llc_options.h: $(top_srcdir)/xlat/sock_llc_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_netlink_options.h: $(top_srcdir)/xlat/sock_netlink_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_nfcllcp_options.h: $(top_srcdir)/xlat/sock_nfcllcp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_options.h: $(top_srcdir)/xlat/sock_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_packet_options.h: $(top_srcdir)/xlat/sock_packet_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_pnp_options.h: $(top_srcdir)/xlat/sock_pnp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_pppol2tp_options.h: $(top_srcdir)/xlat/sock_pppol2tp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_raw_options.h: $(top_srcdir)/xlat/sock_raw_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_rds_options.h: $(top_srcdir)/xlat/sock_rds_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_rxrpc_options.h: $(top_srcdir)/xlat/sock_rxrpc_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_sctp_options.h: $(top_srcdir)/xlat/sock_sctp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_tcp_options.h: $(top_srcdir)/xlat/sock_tcp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_tipc_options.h: $(top_srcdir)/xlat/sock_tipc_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_tls_options.h: $(top_srcdir)/xlat/sock_tls_options.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/sock_udp_options.h: $(top_srcdir)/xlat/sock_udp_options.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/socknetlinkoptions.h: $(top_srcdir)/xlat/socknetlinkoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sockoptions.h: $(top_srcdir)/xlat/sockoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sockpacketoptions.h: $(top_srcdir)/xlat/sockpacketoptions.in $(top_srcdir)/xlat/gen.sh
-	$(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/sparc_kern_features.h: $(top_srcdir)/xlat/sparc_kern_features.in $(top_srcdir)/xlat/gen.sh
@@ -7853,6 +8209,8 @@
 	$(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/tun_device_types.h: $(top_srcdir)/xlat/tun_device_types.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
@@ -7893,6 +8251,8 @@
 	$(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_id_bases.h: $(top_srcdir)/xlat/v4l2_control_id_bases.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
diff --git a/Makefile.am b/Makefile.am
index 6985d28..3259344 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -75,6 +75,8 @@
 	fstatfs64.c \
 	getpagesize.c \
 	ipc.c \
+	mmap_cache.c	\
+	mmap_cache.h	\
 	sigreturn.c	\
 	socketcall.c \
 	statfs.c \
@@ -128,6 +130,7 @@
 	evdev_mpers.c	\
 	eventfd.c	\
 	execve.c	\
+	f_owner_ex.h	\
 	fadvise.c	\
 	fallocate.c	\
 	fanotify.c	\
@@ -157,6 +160,7 @@
 	hdio.c		\
 	hostname.c	\
 	inotify.c	\
+	inotify_ioctl.c	\
 	io.c		\
 	ioctl.c		\
 	ioperm.c	\
@@ -178,6 +182,7 @@
 	ldt.c		\
 	link.c		\
 	linux/asm_stat.h \
+	linux/linux/signal.h \
 	linux/x32/asm_stat.h \
 	linux/x86_64/asm_stat.h \
 	listen.c	\
@@ -189,8 +194,8 @@
 	membarrier.c	\
 	memfd_create.c	\
 	mknod.c		\
-	mmap_cache.c	\
-	mmap_cache.h	\
+	mmap_notify.c	\
+	mmap_notify.h	\
 	mmsghdr.c	\
 	mount.c		\
 	mpers_type.h	\
@@ -204,6 +209,8 @@
 	netlink.c       \
 	netlink.h	\
 	netlink_crypto.c \
+	netlink_kobject_uevent.c \
+	netlink_kobject_uevent.h \
 	netlink_sock_diag.h \
 	netlink_inet_diag.c \
 	netlink_netfilter.c \
@@ -229,14 +236,17 @@
 	pathtrace.c	\
 	perf.c		\
 	perf_event_struct.h \
+	perf_ioctl.c	\
 	personality.c	\
 	pkeys.c		\
 	poll.c		\
 	prctl.c		\
+	print_aio_sigset.c \
 	print_dev_t.c	\
 	print_group_req.c \
 	print_fields.h	\
 	print_ifindex.c	\
+	print_mac.c	\
 	print_mq_attr.c	\
 	print_msgbuf.c	\
 	print_sg_req_info.c \
@@ -349,11 +359,21 @@
 
 strace_SOURCES_check = bpf_attr_check.c
 
+if ENABLE_STACKTRACE
+strace_SOURCES += unwind.c unwind.h
+if USE_LIBDW
+strace_SOURCES += unwind-libdw.c
+strace_CPPFLAGS += $(libdw_CPPFLAGS)
+strace_CFLAGS += $(libdw_CFLAGS)
+strace_LDFLAGS += $(libdw_LDFLAGS)
+strace_LDADD += $(libdw_LIBS)
+endif
 if USE_LIBUNWIND
-strace_SOURCES += unwind.c unwind.h unwind-libunwind.c
+strace_SOURCES += unwind-libunwind.c
 strace_CPPFLAGS += $(libunwind_CPPFLAGS)
 strace_LDFLAGS += $(libunwind_LDFLAGS)
 strace_LDADD += $(libunwind_LIBS)
+endif
 if USE_DEMANGLE
 strace_CPPFLAGS += $(libiberty_CPPFLAGS)
 strace_LDFLAGS += $(libiberty_LDFLAGS)
@@ -411,7 +431,6 @@
 	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	\
 	linux/aarch64/get_scno.c	\
 	linux/aarch64/get_syscall_args.c	\
@@ -424,7 +443,6 @@
 	linux/aarch64/set_error.c	\
 	linux/aarch64/set_scno.c	\
 	linux/aarch64/shuffle_scno.c	\
-	linux/aarch64/signalent1.h	\
 	linux/aarch64/syscallent.h	\
 	linux/aarch64/syscallent1.h	\
 	linux/alpha/arch_defs_.h	\
@@ -682,7 +700,6 @@
 	linux/powerpc64/arch_rt_sigframe.c	\
 	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	\
@@ -696,7 +713,6 @@
 	linux/powerpc64/rt_sigframe.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	\
@@ -705,7 +721,6 @@
 	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		\
 	linux/riscv/get_syscall_args.c	\
@@ -716,7 +731,6 @@
 	linux/riscv/raw_syscall.h	\
 	linux/riscv/set_error.c		\
 	linux/riscv/set_scno.c		\
-	linux/riscv/signalent1.h	\
 	linux/riscv/syscallent.h	\
 	linux/riscv/syscallent1.h	\
 	linux/rt_sigframe.h		\
@@ -743,7 +757,6 @@
 	linux/s390x/arch_regs.h		\
 	linux/s390x/arch_rt_sigframe.c	\
 	linux/s390x/arch_sigreturn.c	\
-	linux/s390x/errnoent1.h		\
 	linux/s390x/get_error.c		\
 	linux/s390x/get_scno.c		\
 	linux/s390x/get_syscall_args.c	\
@@ -755,7 +768,6 @@
 	linux/s390x/rt_sigframe.h	\
 	linux/s390x/set_error.c		\
 	linux/s390x/set_scno.c		\
-	linux/s390x/signalent1.h	\
 	linux/s390x/syscallent.h	\
 	linux/s390x/syscallent1.h	\
 	linux/s390x/userent.h		\
@@ -821,7 +833,6 @@
 	linux/sparc64/arch_rt_sigframe.c	\
 	linux/sparc64/arch_sigreturn.c	\
 	linux/sparc64/errnoent.h	\
-	linux/sparc64/errnoent1.h	\
 	linux/sparc64/get_error.c	\
 	linux/sparc64/get_scno.c	\
 	linux/sparc64/get_syscall_args.c	\
@@ -834,7 +845,6 @@
 	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		\
@@ -845,7 +855,6 @@
 	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		\
 	linux/tile/get_scno.c		\
 	linux/tile/get_syscall_args.c	\
@@ -857,7 +866,6 @@
 	linux/tile/rt_sigframe.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		\
@@ -870,7 +878,6 @@
 	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		\
 	linux/x32/get_scno.c		\
 	linux/x32/get_syscall_args.c	\
@@ -883,7 +890,6 @@
 	linux/x32/set_error.c		\
 	linux/x32/set_scno.c		\
 	linux/x32/shuffle_scno.c	\
-	linux/x32/signalent1.h		\
 	linux/x32/syscallent.h		\
 	linux/x32/syscallent1.h		\
 	linux/x32/userent.h		\
@@ -893,8 +899,6 @@
 	linux/x86_64/arch_regs.h	\
 	linux/x86_64/arch_rt_sigframe.c	\
 	linux/x86_64/arch_sigreturn.c	\
-	linux/x86_64/errnoent1.h	\
-	linux/x86_64/errnoent2.h	\
 	linux/x86_64/get_error.c	\
 	linux/x86_64/get_scno.c		\
 	linux/x86_64/get_syscall_args.c	\
@@ -911,8 +915,6 @@
 	linux/x86_64/set_error.c	\
 	linux/x86_64/set_scno.c		\
 	linux/x86_64/shuffle_scno.c	\
-	linux/x86_64/signalent1.h	\
-	linux/x86_64/signalent2.h	\
 	linux/x86_64/syscallent.h	\
 	linux/x86_64/syscallent1.h	\
 	linux/x86_64/syscallent2.h	\
@@ -980,7 +982,7 @@
 	${AM_V_GEN}echo $(COPYRIGHT_YEAR) > $(distdir)/.year
 	${AM_V_GEN}echo $(MANPAGE_DATE) > $(distdir)/.strace.1.in.date
 
-today = $(shell date +%Y-%m-%d)
+today = $(shell LC_TIME=C date -u +%Y-%m-%d)
 version_regexp = $(subst .,\.,$(VERSION))
 news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))'
 
diff --git a/Makefile.in b/Makefile.in
index f02c2be..9cfc55a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -147,28 +147,37 @@
 	$(top_srcdir)/debian/changelog.in depcomp AUTHORS COPYING \
 	INSTALL NEWS README compile config.guess config.sub install-sh \
 	missing
-@USE_LIBUNWIND_TRUE@am__append_1 = unwind.c unwind.h unwind-libunwind.c
-@USE_LIBUNWIND_TRUE@am__append_2 = $(libunwind_CPPFLAGS)
-@USE_LIBUNWIND_TRUE@am__append_3 = $(libunwind_LDFLAGS)
-@USE_LIBUNWIND_TRUE@am__append_4 = $(libunwind_LIBS)
-@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_5 = $(libiberty_CPPFLAGS)
-@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_6 = $(libiberty_LDFLAGS)
-@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__append_7 = $(libiberty_LIBS)
-@HAVE_M32_MPERS_TRUE@am__append_8 = libmpers-m32.a
-@HAVE_M32_MPERS_TRUE@am__append_9 = libmpers-m32.a
-@HAVE_M32_MPERS_TRUE@am__append_10 = $(mpers_m32_targets)
-@HAVE_M32_MPERS_TRUE@am__append_11 = $(mpers_m32_targets)
-@HAVE_MX32_MPERS_TRUE@am__append_12 = libmpers-mx32.a
-@HAVE_MX32_MPERS_TRUE@am__append_13 = libmpers-mx32.a
-@HAVE_MX32_MPERS_TRUE@am__append_14 = $(mpers_mx32_targets)
-@HAVE_MX32_MPERS_TRUE@am__append_15 = $(mpers_mx32_targets)
+@ENABLE_STACKTRACE_TRUE@am__append_1 = unwind.c unwind.h
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__append_2 = unwind-libdw.c
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__append_3 = $(libdw_CPPFLAGS)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__append_4 = $(libdw_CFLAGS)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__append_5 = $(libdw_LDFLAGS)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__append_6 = $(libdw_LIBS)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__append_7 = unwind-libunwind.c
+@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__append_8 = $(libunwind_CPPFLAGS)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__append_9 = $(libunwind_LDFLAGS)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__append_10 = $(libunwind_LIBS)
+@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_11 = $(libiberty_CPPFLAGS)
+@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_12 = $(libiberty_LDFLAGS)
+@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__append_13 = $(libiberty_LIBS)
+@HAVE_M32_MPERS_TRUE@am__append_14 = libmpers-m32.a
+@HAVE_M32_MPERS_TRUE@am__append_15 = libmpers-m32.a
+@HAVE_M32_MPERS_TRUE@am__append_16 = $(mpers_m32_targets)
+@HAVE_M32_MPERS_TRUE@am__append_17 = $(mpers_m32_targets)
+@HAVE_MX32_MPERS_TRUE@am__append_18 = libmpers-mx32.a
+@HAVE_MX32_MPERS_TRUE@am__append_19 = libmpers-mx32.a
+@HAVE_MX32_MPERS_TRUE@am__append_20 = $(mpers_mx32_targets)
+@HAVE_MX32_MPERS_TRUE@am__append_21 = $(mpers_mx32_targets)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_code_coverage.m4 \
 	$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \
 	$(top_srcdir)/m4/ax_valgrind_check.m4 \
 	$(top_srcdir)/m4/bpf_attr.m4 $(top_srcdir)/m4/mpers.m4 \
+	$(top_srcdir)/m4/st_demangle.m4 $(top_srcdir)/m4/st_libdw.m4 \
+	$(top_srcdir)/m4/st_libunwind.m4 \
 	$(top_srcdir)/m4/st_save_restore_var.m4 \
+	$(top_srcdir)/m4/st_stacktrace.m4 \
 	$(top_srcdir)/m4/st_warn_cflags.m4 \
 	$(top_srcdir)/m4/warnings.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -194,12 +203,12 @@
 	fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
 	fetch_struct_msghdr.c fetch_struct_stat.c \
 	fetch_struct_stat64.c fetch_struct_statfs.c hdio.c \
-	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_group_req.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
+	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c \
+	print_aio_sigset.c print_group_req.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
 am__objects_1 = libmpers_m32_a-block.$(OBJEXT) \
 	libmpers_m32_a-btrfs.$(OBJEXT) libmpers_m32_a-dirent.$(OBJEXT) \
 	libmpers_m32_a-evdev_mpers.$(OBJEXT) \
@@ -215,6 +224,8 @@
 	libmpers_m32_a-ipc_msgctl.$(OBJEXT) \
 	libmpers_m32_a-ipc_shmctl.$(OBJEXT) \
 	libmpers_m32_a-loop.$(OBJEXT) libmpers_m32_a-mtd.$(OBJEXT) \
+	libmpers_m32_a-perf_ioctl.$(OBJEXT) \
+	libmpers_m32_a-print_aio_sigset.$(OBJEXT) \
 	libmpers_m32_a-print_group_req.$(OBJEXT) \
 	libmpers_m32_a-print_mq_attr.$(OBJEXT) \
 	libmpers_m32_a-print_msgbuf.$(OBJEXT) \
@@ -241,12 +252,12 @@
 	fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
 	fetch_struct_msghdr.c fetch_struct_stat.c \
 	fetch_struct_stat64.c fetch_struct_statfs.c hdio.c \
-	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_group_req.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
+	ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c \
+	print_aio_sigset.c print_group_req.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
 am__objects_2 = libmpers_mx32_a-block.$(OBJEXT) \
 	libmpers_mx32_a-btrfs.$(OBJEXT) \
 	libmpers_mx32_a-dirent.$(OBJEXT) \
@@ -263,6 +274,8 @@
 	libmpers_mx32_a-ipc_msgctl.$(OBJEXT) \
 	libmpers_mx32_a-ipc_shmctl.$(OBJEXT) \
 	libmpers_mx32_a-loop.$(OBJEXT) libmpers_mx32_a-mtd.$(OBJEXT) \
+	libmpers_mx32_a-perf_ioctl.$(OBJEXT) \
+	libmpers_mx32_a-print_aio_sigset.$(OBJEXT) \
 	libmpers_mx32_a-print_group_req.$(OBJEXT) \
 	libmpers_mx32_a-print_mq_attr.$(OBJEXT) \
 	libmpers_mx32_a-print_msgbuf.$(OBJEXT) \
@@ -291,6 +304,7 @@
 	libstrace_a-fetch_indirect_syscall_args.$(OBJEXT) \
 	libstrace_a-fstatfs.$(OBJEXT) libstrace_a-fstatfs64.$(OBJEXT) \
 	libstrace_a-getpagesize.$(OBJEXT) libstrace_a-ipc.$(OBJEXT) \
+	libstrace_a-mmap_cache.$(OBJEXT) \
 	libstrace_a-sigreturn.$(OBJEXT) \
 	libstrace_a-socketcall.$(OBJEXT) libstrace_a-statfs.$(OBJEXT) \
 	libstrace_a-statfs64.$(OBJEXT) \
@@ -309,39 +323,42 @@
 	copy_file_range.c count.c defs.h delay.c delay.h desc.c \
 	dirent.c dirent64.c dm.c dyxlat.c empty.h epoll.c \
 	error_prints.c error_prints.h evdev.c evdev_mpers.c eventfd.c \
-	execve.c fadvise.c fallocate.c fanotify.c fchownat.c fcntl.c \
-	fetch_bpf_fprog.c fetch_struct_flock.c \
+	execve.c f_owner_ex.h fadvise.c fallocate.c fanotify.c \
+	fchownat.c fcntl.c fetch_bpf_fprog.c fetch_struct_flock.c \
 	fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c \
 	fetch_struct_msghdr.c fetch_struct_stat.c \
 	fetch_struct_stat64.c fetch_struct_statfs.c file_handle.c \
 	file_ioctl.c filter_qualify.c filter.h flock.c flock.h \
 	fs_x_ioctl.c futex.c gcc_compat.h get_robust_list.c getcpu.c \
-	getcwd.c getrandom.c hdio.c hostname.c inotify.c io.c ioctl.c \
-	ioperm.c iopl.c ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
-	ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_types.h kexec.c \
-	keyctl.c keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c \
-	link.c linux/asm_stat.h linux/x32/asm_stat.h \
+	getcwd.c getrandom.c hdio.c hostname.c inotify.c \
+	inotify_ioctl.c io.c ioctl.c ioperm.c iopl.c ioprio.c \
+	ipc_defs.h ipc_msg.c ipc_msgctl.c ipc_sem.c ipc_shm.c \
+	ipc_shmctl.c kcmp.c kernel_types.h kexec.c keyctl.c \
+	keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c link.c \
+	linux/asm_stat.h linux/linux/signal.h linux/x32/asm_stat.h \
 	linux/x86_64/asm_stat.h listen.c lookup_dcookie.c loop.c \
 	lseek.c macros.h mem.c membarrier.c memfd_create.c mknod.c \
-	mmap_cache.c mmap_cache.h mmsghdr.c mount.c mpers_type.h mq.c \
-	msghdr.c msghdr.h mtd.c native_defs.h negated_errno.h net.c \
-	netlink.c netlink.h netlink_crypto.c netlink_sock_diag.h \
-	netlink_inet_diag.c netlink_netfilter.c netlink_netlink_diag.c \
-	netlink_packet_diag.c netlink_route.c netlink_route.h \
-	netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
-	netlink_unix_diag.c nlattr.c nlattr.h nsfs.c nsfs.h nsig.h \
-	numa.c number_set.c number_set.h oldstat.c open.c \
-	or1k_atomic.c pathtrace.c perf.c perf_event_struct.h \
-	personality.c pkeys.c poll.c prctl.c print_dev_t.c \
-	print_group_req.c print_fields.h print_ifindex.c \
-	print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
-	print_sigevent.c print_statfs.c print_struct_stat.c \
-	print_time.c print_timespec.c print_timeval.c print_timex.c \
-	printmode.c printrusage.c printsiginfo.c printsiginfo.h \
-	process.c process_vm.c ptp.c ptrace.h quota.c readahead.c \
-	readlink.c reboot.c regs.h renameat.c resource.c retval.c \
-	retval.h riscv.c rt_sigframe.c rt_sigreturn.c rtc.c \
-	rtnl_addr.c rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
+	mmap_notify.c mmap_notify.h mmsghdr.c mount.c mpers_type.h \
+	mq.c msghdr.c msghdr.h mtd.c native_defs.h negated_errno.h \
+	net.c netlink.c netlink.h netlink_crypto.c \
+	netlink_kobject_uevent.c netlink_kobject_uevent.h \
+	netlink_sock_diag.h netlink_inet_diag.c netlink_netfilter.c \
+	netlink_netlink_diag.c netlink_packet_diag.c netlink_route.c \
+	netlink_route.h netlink_selinux.c netlink_smc_diag.c \
+	netlink_sock_diag.c netlink_unix_diag.c nlattr.c nlattr.h \
+	nsfs.c nsfs.h nsig.h numa.c number_set.c number_set.h \
+	oldstat.c open.c or1k_atomic.c pathtrace.c perf.c \
+	perf_event_struct.h perf_ioctl.c personality.c pkeys.c poll.c \
+	prctl.c print_aio_sigset.c print_dev_t.c print_group_req.c \
+	print_fields.h print_ifindex.c print_mac.c print_mq_attr.c \
+	print_msgbuf.c print_sg_req_info.c print_sigevent.c \
+	print_statfs.c print_struct_stat.c print_time.c \
+	print_timespec.c print_timeval.c print_timex.c printmode.c \
+	printrusage.c printsiginfo.c printsiginfo.h process.c \
+	process_vm.c ptp.c ptrace.h quota.c readahead.c readlink.c \
+	reboot.c regs.h renameat.c resource.c retval.c retval.h \
+	riscv.c rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \
+	rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
 	rtnl_neigh.c rtnl_neightbl.c rtnl_netconf.c rtnl_nsid.c \
 	rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
 	sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
@@ -355,10 +372,12 @@
 	truncate.c ubi.c ucopy.c uid.c uid16.c umask.c umount.c \
 	uname.c userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c \
 	wait.c xattr.c xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \
-	bpf_attr_check.c unwind.c unwind.h unwind-libunwind.c
+	bpf_attr_check.c unwind.c unwind.h unwind-libdw.c \
+	unwind-libunwind.c
 am__objects_3 = strace-bpf_attr_check.$(OBJEXT)
-@USE_LIBUNWIND_TRUE@am__objects_4 = strace-unwind.$(OBJEXT) \
-@USE_LIBUNWIND_TRUE@	strace-unwind-libunwind.$(OBJEXT)
+@ENABLE_STACKTRACE_TRUE@am__objects_4 = strace-unwind.$(OBJEXT)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__objects_5 = strace-unwind-libdw.$(OBJEXT)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__objects_6 = strace-unwind-libunwind.$(OBJEXT)
 am_strace_OBJECTS = strace-access.$(OBJEXT) strace-affinity.$(OBJEXT) \
 	strace-aio.$(OBJEXT) strace-alpha.$(OBJEXT) \
 	strace-basic_filters.$(OBJEXT) strace-bind.$(OBJEXT) \
@@ -392,23 +411,25 @@
 	strace-get_robust_list.$(OBJEXT) strace-getcpu.$(OBJEXT) \
 	strace-getcwd.$(OBJEXT) strace-getrandom.$(OBJEXT) \
 	strace-hdio.$(OBJEXT) strace-hostname.$(OBJEXT) \
-	strace-inotify.$(OBJEXT) strace-io.$(OBJEXT) \
-	strace-ioctl.$(OBJEXT) strace-ioperm.$(OBJEXT) \
-	strace-iopl.$(OBJEXT) strace-ioprio.$(OBJEXT) \
-	strace-ipc_msg.$(OBJEXT) strace-ipc_msgctl.$(OBJEXT) \
-	strace-ipc_sem.$(OBJEXT) strace-ipc_shm.$(OBJEXT) \
-	strace-ipc_shmctl.$(OBJEXT) strace-kcmp.$(OBJEXT) \
-	strace-kexec.$(OBJEXT) strace-keyctl.$(OBJEXT) \
-	strace-kvm.$(OBJEXT) strace-ldt.$(OBJEXT) \
-	strace-link.$(OBJEXT) strace-listen.$(OBJEXT) \
-	strace-lookup_dcookie.$(OBJEXT) strace-loop.$(OBJEXT) \
-	strace-lseek.$(OBJEXT) strace-mem.$(OBJEXT) \
-	strace-membarrier.$(OBJEXT) strace-memfd_create.$(OBJEXT) \
-	strace-mknod.$(OBJEXT) strace-mmap_cache.$(OBJEXT) \
-	strace-mmsghdr.$(OBJEXT) strace-mount.$(OBJEXT) \
-	strace-mq.$(OBJEXT) strace-msghdr.$(OBJEXT) \
-	strace-mtd.$(OBJEXT) strace-net.$(OBJEXT) \
-	strace-netlink.$(OBJEXT) strace-netlink_crypto.$(OBJEXT) \
+	strace-inotify.$(OBJEXT) strace-inotify_ioctl.$(OBJEXT) \
+	strace-io.$(OBJEXT) strace-ioctl.$(OBJEXT) \
+	strace-ioperm.$(OBJEXT) strace-iopl.$(OBJEXT) \
+	strace-ioprio.$(OBJEXT) strace-ipc_msg.$(OBJEXT) \
+	strace-ipc_msgctl.$(OBJEXT) strace-ipc_sem.$(OBJEXT) \
+	strace-ipc_shm.$(OBJEXT) strace-ipc_shmctl.$(OBJEXT) \
+	strace-kcmp.$(OBJEXT) strace-kexec.$(OBJEXT) \
+	strace-keyctl.$(OBJEXT) strace-kvm.$(OBJEXT) \
+	strace-ldt.$(OBJEXT) strace-link.$(OBJEXT) \
+	strace-listen.$(OBJEXT) strace-lookup_dcookie.$(OBJEXT) \
+	strace-loop.$(OBJEXT) strace-lseek.$(OBJEXT) \
+	strace-mem.$(OBJEXT) strace-membarrier.$(OBJEXT) \
+	strace-memfd_create.$(OBJEXT) strace-mknod.$(OBJEXT) \
+	strace-mmap_notify.$(OBJEXT) strace-mmsghdr.$(OBJEXT) \
+	strace-mount.$(OBJEXT) strace-mq.$(OBJEXT) \
+	strace-msghdr.$(OBJEXT) strace-mtd.$(OBJEXT) \
+	strace-net.$(OBJEXT) strace-netlink.$(OBJEXT) \
+	strace-netlink_crypto.$(OBJEXT) \
+	strace-netlink_kobject_uevent.$(OBJEXT) \
 	strace-netlink_inet_diag.$(OBJEXT) \
 	strace-netlink_netfilter.$(OBJEXT) \
 	strace-netlink_netlink_diag.$(OBJEXT) \
@@ -422,11 +443,12 @@
 	strace-number_set.$(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-perf_ioctl.$(OBJEXT) strace-personality.$(OBJEXT) \
+	strace-pkeys.$(OBJEXT) strace-poll.$(OBJEXT) \
+	strace-prctl.$(OBJEXT) strace-print_aio_sigset.$(OBJEXT) \
 	strace-print_dev_t.$(OBJEXT) strace-print_group_req.$(OBJEXT) \
-	strace-print_ifindex.$(OBJEXT) strace-print_mq_attr.$(OBJEXT) \
-	strace-print_msgbuf.$(OBJEXT) \
+	strace-print_ifindex.$(OBJEXT) strace-print_mac.$(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) \
@@ -471,16 +493,18 @@
 	strace-utimes.$(OBJEXT) strace-v4l2.$(OBJEXT) \
 	strace-wait.$(OBJEXT) strace-xattr.$(OBJEXT) \
 	strace-xlat.$(OBJEXT) strace-xmalloc.$(OBJEXT) \
-	$(am__objects_3) $(am__objects_4)
+	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
+	$(am__objects_6)
 strace_OBJECTS = $(am_strace_OBJECTS)
 am__DEPENDENCIES_1 =
-@USE_LIBUNWIND_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@am__DEPENDENCIES_3 =  \
-@USE_DEMANGLE_TRUE@@USE_LIBUNWIND_TRUE@	$(am__DEPENDENCIES_1)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@am__DEPENDENCIES_2 =  \
+@ENABLE_STACKTRACE_TRUE@@USE_LIBDW_TRUE@	$(am__DEPENDENCIES_1)
+@ENABLE_STACKTRACE_TRUE@@USE_LIBUNWIND_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1)
+@ENABLE_STACKTRACE_TRUE@@USE_DEMANGLE_TRUE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
 strace_DEPENDENCIES = libstrace.a $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
-	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) $(am__append_8) \
-	$(am__append_12)
+	$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4) \
+	$(am__DEPENDENCIES_1) $(am__append_14) $(am__append_18)
 strace_LINK = $(CCLD) $(strace_CFLAGS) $(CFLAGS) $(strace_LDFLAGS) \
 	$(LDFLAGS) -o $@
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -762,6 +786,10 @@
 infodir = @infodir@
 install_sh = @install_sh@
 libdir = @libdir@
+libdw_CFLAGS = @libdw_CFLAGS@
+libdw_CPPFLAGS = @libdw_CPPFLAGS@
+libdw_LDFLAGS = @libdw_LDFLAGS@
+libdw_LIBS = @libdw_LIBS@
 libexecdir = @libexecdir@
 libiberty_CPPFLAGS = @libiberty_CPPFLAGS@
 libiberty_LDFLAGS = @libiberty_LDFLAGS@
@@ -814,21 +842,23 @@
 	xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in \
 	xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in \
 	xlat/at_statx_sync_types.in xlat/atomic_ops.in \
-	xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in \
-	xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in \
-	xlat/bpf_attach_flags.in xlat/bpf_attach_type.in \
-	xlat/bpf_class.in xlat/bpf_commands.in \
+	xlat/audit_arch.in xlat/baud_options.in xlat/bdaddr_types.in \
+	xlat/blkpg_ops.in xlat/bluetooth_l2_cid.in \
+	xlat/bluetooth_l2_psm.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_file_mode_flags.in xlat/bpf_map_flags.in \
 	xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in \
 	xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in \
 	xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in \
-	xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in \
-	xlat/bpf_src.in xlat/bsg_flags.in xlat/bsg_protocol.in \
-	xlat/bsg_subprotocol.in xlat/bt_protocols.in \
-	xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in \
-	xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in \
-	xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in \
-	xlat/btrfs_dev_replace_cmds.in \
+	xlat/bpf_prog_types.in xlat/bpf_query_flags.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_cont_reading_from_srcdev_mode.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 \
@@ -841,12 +871,15 @@
 	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/cacheflush_scope.in xlat/caif_protocols.in \
+	xlat/can_protocols.in xlat/cap.in xlat/cap_mask0.in \
 	xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in \
 	xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in \
 	xlat/crypto_nl_attrs.in xlat/dcb_commands.in \
 	xlat/delete_module_flags.in xlat/dirent_types.in \
-	xlat/dm_flags.in xlat/efd_flags.in xlat/epollctls.in \
+	xlat/dm_flags.in xlat/ebpf_class.in xlat/ebpf_mode.in \
+	xlat/ebpf_op_alu.in xlat/ebpf_op_jmp.in xlat/ebpf_regs.in \
+	xlat/ebpf_size.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 \
@@ -857,27 +890,31 @@
 	xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in \
 	xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in \
 	xlat/fan_event_flags.in xlat/fan_init_flags.in \
-	xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in \
-	xlat/fdflags.in xlat/fib_rule_actions.in \
-	xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in \
-	xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in \
-	xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in \
-	xlat/getrandom_flags.in xlat/getsockipoptions.in \
-	xlat/getsockipv6options.in xlat/hci_channels.in \
-	xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in \
-	xlat/icmpfilterflags.in xlat/if_dqblk_valid.in \
-	xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in \
-	xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in \
-	xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in \
-	xlat/inet_diag_req_attrs.in xlat/inet_protocols.in \
-	xlat/inotify_flags.in xlat/inotify_init_flags.in \
-	xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in \
-	xlat/ip_cmsg_types.in xlat/ip_type_of_services.in \
-	xlat/ipc_msg_flags.in xlat/ipccalls.in xlat/itimer_which.in \
-	xlat/kcmp_types.in xlat/kexec_arch_values.in \
-	xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in \
-	xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in \
-	xlat/keyctl_commands.in xlat/kvm_mem_flags.in \
+	xlat/fan_mark_flags.in xlat/fcntlcmds.in xlat/fdflags.in \
+	xlat/fib_rule_actions.in xlat/fib_rule_flags.in \
+	xlat/fiemap_extent_flags.in xlat/fiemap_flags.in \
+	xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in \
+	xlat/futexwakecmps.in xlat/futexwakeops.in \
+	xlat/getrandom_flags.in xlat/getsock_ip_options.in \
+	xlat/getsock_ipv6_options.in xlat/getsock_options.in \
+	xlat/hci_channels.in xlat/hw_breakpoint_len.in \
+	xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in \
+	xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in \
+	xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in \
+	xlat/in6_addr_gen_mode.in xlat/inet6_devconf_indices.in \
+	xlat/inet6_if_flags.in xlat/inet_devconf_indices.in \
+	xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in \
+	xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in \
+	xlat/inet_protocols.in xlat/inotify_flags.in \
+	xlat/inotify_init_flags.in xlat/ioctl_dirs.in \
+	xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in \
+	xlat/ip_type_of_services.in xlat/ipc_msg_flags.in \
+	xlat/ipc_private.in xlat/ipccalls.in xlat/irda_protocols.in \
+	xlat/isdn_protocols.in xlat/itimer_which.in \
+	xlat/kcm_protocols.in xlat/kcmp_types.in \
+	xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in \
+	xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in \
+	xlat/key_spec.in xlat/keyctl_commands.in xlat/kvm_mem_flags.in \
 	xlat/lockfcmds.in xlat/loop_cmds.in \
 	xlat/loop_crypt_type_options.in xlat/loop_flags_options.in \
 	xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in \
@@ -899,6 +936,7 @@
 	xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in \
 	xlat/netlink_flags.in xlat/netlink_get_flags.in \
 	xlat/netlink_new_flags.in xlat/netlink_protocols.in \
+	xlat/netlink_sk_meminfo_indices.in \
 	xlat/netlink_socket_flags.in xlat/netlink_states.in \
 	xlat/netlink_types.in xlat/nf_acct_msg_types.in \
 	xlat/nf_cthelper_msg_types.in \
@@ -907,12 +945,13 @@
 	xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in \
 	xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in \
 	xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in \
-	xlat/nl_audit_types.in xlat/nl_crypto_types.in \
-	xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in \
-	xlat/nl_route_types.in xlat/nl_selinux_types.in \
-	xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in \
-	xlat/nlmsgerr_attrs.in xlat/notifyflags.in \
-	xlat/nt_descriptor_types.in xlat/open_access_modes.in \
+	xlat/nfc_protocols.in xlat/nl_audit_types.in \
+	xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in \
+	xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in \
+	xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in \
+	xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in \
+	xlat/notifyflags.in xlat/nt_descriptor_types.in \
+	xlat/numa_node.in xlat/open_access_modes.in \
 	xlat/open_mode_flags.in xlat/packet_diag_attrs.in \
 	xlat/packet_diag_info_flags.in xlat/packet_diag_show.in \
 	xlat/packet_mreq_type.in xlat/perf_attr_size.in \
@@ -920,13 +959,17 @@
 	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/perf_hw_id.in xlat/perf_ioctl_cmds.in \
+	xlat/perf_ioctl_flags.in xlat/perf_sw_ids.in \
+	xlat/perf_type_id.in xlat/personality_flags.in \
+	xlat/personality_types.in xlat/phonet_protocols.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_sve_vl_flags.in xlat/pr_tsc.in \
-	xlat/pr_unalign_flags.in xlat/prctl_options.in \
+	xlat/pr_set_mm.in xlat/pr_spec_cmds.in \
+	xlat/pr_spec_get_store_bypass_flags.in \
+	xlat/pr_spec_set_store_bypass_flags.in xlat/pr_sve_vl_flags.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 \
@@ -938,11 +981,16 @@
 	xlat/routing_scopes.in xlat/routing_table_ids.in \
 	xlat/routing_types.in xlat/rtnl_addr_attrs.in \
 	xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in \
+	xlat/rtnl_ifla_af_spec_inet6_attrs.in \
+	xlat/rtnl_ifla_af_spec_inet_attrs.in \
 	xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_events.in \
-	xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in \
-	xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in \
-	xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in \
-	xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in \
+	xlat/rtnl_ifla_info_attrs.in \
+	xlat/rtnl_ifla_info_data_bridge_attrs.in \
+	xlat/rtnl_ifla_info_data_tun_attrs.in \
+	xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in \
+	xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in \
+	xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in \
+	xlat/rtnl_mdba_mdb_eattr_attrs.in \
 	xlat/rtnl_mdba_mdb_entry_attrs.in \
 	xlat/rtnl_mdba_router_attrs.in \
 	xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in \
@@ -960,31 +1008,42 @@
 	xlat/seccomp_filter_flags.in xlat/seccomp_mode.in \
 	xlat/seccomp_ops.in xlat/seccomp_ret_action.in \
 	xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in \
-	xlat/setsockipoptions.in xlat/setsockipv6options.in \
-	xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in \
-	xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in \
-	xlat/shm_flags.in xlat/shm_resource_flags.in \
-	xlat/shmctl_flags.in xlat/shutdown_modes.in \
-	xlat/sigact_flags.in xlat/sigaltstack_flags.in \
-	xlat/sigbus_codes.in xlat/sigchld_codes.in \
-	xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in \
-	xlat/sigill_codes.in xlat/siginfo_codes.in \
-	xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in \
-	xlat/sigprof_codes.in xlat/sigsegv_codes.in \
-	xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in \
+	xlat/setsock_ip_options.in xlat/setsock_ipv6_options.in \
+	xlat/setsock_options.in xlat/sfd_flags.in \
+	xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in \
+	xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in \
+	xlat/shm_resource_flags.in xlat/shmctl_flags.in \
+	xlat/shutdown_modes.in xlat/sigact_flags.in \
+	xlat/sigaltstack_flags.in xlat/sigbus_codes.in \
+	xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in \
+	xlat/sigfpe_codes.in xlat/sigill_codes.in \
+	xlat/siginfo_codes.in xlat/sigpoll_codes.in \
+	xlat/sigprocmaskcmds.in xlat/sigprof_codes.in \
+	xlat/sigsegv_codes.in xlat/sigsys_codes.in \
+	xlat/sigtrap_codes.in xlat/skf_ad.in xlat/skf_off.in \
 	xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in \
-	xlat/smc_link_group_roles.in xlat/smc_states.in \
-	xlat/sock_type_flags.in xlat/socketcalls.in \
-	xlat/socketlayers.in xlat/sockipoptions.in \
-	xlat/sockipv6options.in xlat/sockipxoptions.in \
-	xlat/socknetlinkoptions.in xlat/sockoptions.in \
-	xlat/sockpacketoptions.in xlat/sockrawoptions.in \
-	xlat/socksctpoptions.in xlat/socktcpoptions.in \
-	xlat/socktypes.in xlat/sparc_kern_features.in \
-	xlat/splice_flags.in xlat/sram_alloc_flags.in \
-	xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in \
-	xlat/swap_flags.in xlat/sync_file_range_flags.in \
-	xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in \
+	xlat/smc_link_group_roles.in xlat/smc_protocols.in \
+	xlat/smc_states.in xlat/snmp_icmp6_stats.in \
+	xlat/snmp_ip_stats.in xlat/sock_alg_options.in \
+	xlat/sock_bluetooth_options.in xlat/sock_caif_options.in \
+	xlat/sock_dccp_options.in xlat/sock_ip_options.in \
+	xlat/sock_ipv6_options.in xlat/sock_ipx_options.in \
+	xlat/sock_irda_options.in xlat/sock_iucv_options.in \
+	xlat/sock_kcm_options.in xlat/sock_llc_options.in \
+	xlat/sock_netlink_options.in xlat/sock_nfcllcp_options.in \
+	xlat/sock_options.in xlat/sock_packet_options.in \
+	xlat/sock_pnp_options.in xlat/sock_pppol2tp_options.in \
+	xlat/sock_raw_options.in xlat/sock_rds_options.in \
+	xlat/sock_rxrpc_options.in xlat/sock_sctp_options.in \
+	xlat/sock_tcp_options.in xlat/sock_tipc_options.in \
+	xlat/sock_tls_options.in xlat/sock_type_flags.in \
+	xlat/sock_udp_options.in xlat/socketcalls.in \
+	xlat/socketlayers.in xlat/socktypes.in \
+	xlat/sparc_kern_features.in xlat/splice_flags.in \
+	xlat/sram_alloc_flags.in xlat/statfs_flags.in \
+	xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in \
+	xlat/sync_file_range_flags.in xlat/sysctl_kern.in \
+	xlat/sysctl_net.in xlat/sysctl_net_core.in \
 	xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in \
 	xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in \
 	xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in \
@@ -992,17 +1051,18 @@
 	xlat/syslog_action_type.in xlat/sysmips_operations.in \
 	xlat/tcflsh_options.in xlat/tcp_state_flags.in \
 	xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in \
-	xlat/ubi_volume_props.in xlat/ubi_volume_types.in \
-	xlat/uffd_api_features.in xlat/uffd_api_flags.in \
-	xlat/uffd_copy_flags.in xlat/uffd_flags.in \
-	xlat/uffd_register_ioctl_flags.in \
+	xlat/tun_device_types.in xlat/ubi_volume_props.in \
+	xlat/ubi_volume_types.in xlat/uffd_api_features.in \
+	xlat/uffd_api_flags.in xlat/uffd_copy_flags.in \
+	xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in \
 	xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in \
 	xlat/umount_flags.in xlat/unix_diag_attrs.in \
 	xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in \
 	xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in \
 	xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in \
 	xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in \
-	xlat/v4l2_control_ids.in xlat/v4l2_control_types.in \
+	xlat/v4l2_control_id_bases.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 \
@@ -1020,18 +1080,22 @@
 	xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h \
 	xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h \
 	xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h \
-	xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h \
-	xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h \
-	xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h \
+	xlat/baud_options.h xlat/bdaddr_types.h xlat/blkpg_ops.h \
+	xlat/bluetooth_l2_cid.h xlat/bluetooth_l2_psm.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_file_mode_flags.h xlat/bpf_map_flags.h \
 	xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h \
 	xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h \
 	xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h \
-	xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h \
-	xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h \
-	xlat/bt_protocols.h xlat/btrfs_balance_args.h \
-	xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h \
-	xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h \
+	xlat/bpf_query_flags.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_cont_reading_from_srcdev_mode.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 \
@@ -1043,11 +1107,14 @@
 	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/cacheflush_scope.h xlat/caif_protocols.h \
+	xlat/can_protocols.h xlat/cap.h xlat/cap_mask0.h \
 	xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h \
 	xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h \
 	xlat/crypto_nl_attrs.h xlat/dcb_commands.h \
 	xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h \
+	xlat/ebpf_class.h xlat/ebpf_mode.h xlat/ebpf_op_alu.h \
+	xlat/ebpf_op_jmp.h xlat/ebpf_regs.h xlat/ebpf_size.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 \
@@ -1057,23 +1124,27 @@
 	xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h \
 	xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h \
 	xlat/fan_event_flags.h xlat/fan_init_flags.h \
-	xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h \
-	xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h \
+	xlat/fan_mark_flags.h xlat/fcntlcmds.h xlat/fdflags.h \
+	xlat/fib_rule_actions.h xlat/fib_rule_flags.h \
 	xlat/fiemap_extent_flags.h xlat/fiemap_flags.h \
 	xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h \
 	xlat/futexwakecmps.h xlat/futexwakeops.h \
-	xlat/getrandom_flags.h xlat/getsockipoptions.h \
-	xlat/getsockipv6options.h xlat/hci_channels.h \
-	xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h \
-	xlat/icmpfilterflags.h xlat/if_dqblk_valid.h \
-	xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h \
-	xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h \
-	xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h \
-	xlat/inet_diag_req_attrs.h xlat/inet_protocols.h \
-	xlat/inotify_flags.h xlat/inotify_init_flags.h \
-	xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h \
-	xlat/ip_cmsg_types.h xlat/ip_type_of_services.h \
-	xlat/ipc_msg_flags.h xlat/ipccalls.h xlat/itimer_which.h \
+	xlat/getrandom_flags.h xlat/getsock_ip_options.h \
+	xlat/getsock_ipv6_options.h xlat/getsock_options.h \
+	xlat/hci_channels.h xlat/hw_breakpoint_len.h \
+	xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h \
+	xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h \
+	xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h \
+	xlat/in6_addr_gen_mode.h xlat/inet6_devconf_indices.h \
+	xlat/inet6_if_flags.h xlat/inet_devconf_indices.h \
+	xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h \
+	xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h \
+	xlat/inet_protocols.h xlat/inotify_flags.h \
+	xlat/inotify_init_flags.h xlat/ioctl_dirs.h \
+	xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h \
+	xlat/ip_type_of_services.h xlat/ipc_msg_flags.h \
+	xlat/ipc_private.h xlat/ipccalls.h xlat/irda_protocols.h \
+	xlat/isdn_protocols.h xlat/itimer_which.h xlat/kcm_protocols.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 \
@@ -1098,34 +1169,38 @@
 	xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h \
 	xlat/netlink_flags.h xlat/netlink_get_flags.h \
 	xlat/netlink_new_flags.h xlat/netlink_protocols.h \
-	xlat/netlink_socket_flags.h xlat/netlink_states.h \
-	xlat/netlink_types.h xlat/nf_acct_msg_types.h \
-	xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h \
+	xlat/netlink_sk_meminfo_indices.h xlat/netlink_socket_flags.h \
+	xlat/netlink_states.h xlat/netlink_types.h \
+	xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h \
+	xlat/nf_ctnetlink_exp_msg_types.h \
 	xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h \
 	xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h \
 	xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h \
 	xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h \
-	xlat/nl_audit_types.h xlat/nl_crypto_types.h \
-	xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h \
-	xlat/nl_route_types.h xlat/nl_selinux_types.h \
-	xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h \
-	xlat/nlmsgerr_attrs.h xlat/notifyflags.h \
-	xlat/nt_descriptor_types.h xlat/open_access_modes.h \
-	xlat/open_mode_flags.h xlat/packet_diag_attrs.h \
-	xlat/packet_diag_info_flags.h xlat/packet_diag_show.h \
-	xlat/packet_mreq_type.h xlat/perf_attr_size.h \
-	xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h \
-	xlat/perf_event_read_format.h xlat/perf_event_sample_format.h \
-	xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h \
-	xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h \
-	xlat/perf_sw_ids.h xlat/perf_type_id.h \
+	xlat/nfc_protocols.h xlat/nl_audit_types.h \
+	xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h \
+	xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h \
+	xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h \
+	xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h \
+	xlat/nt_descriptor_types.h xlat/numa_node.h \
+	xlat/open_access_modes.h xlat/open_mode_flags.h \
+	xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h \
+	xlat/packet_diag_show.h xlat/packet_mreq_type.h \
+	xlat/perf_attr_size.h xlat/perf_branch_sample_type.h \
+	xlat/perf_event_open_flags.h xlat/perf_event_read_format.h \
+	xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h \
+	xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h \
+	xlat/perf_hw_id.h xlat/perf_ioctl_cmds.h \
+	xlat/perf_ioctl_flags.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_sve_vl_flags.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/phonet_protocols.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_spec_cmds.h \
+	xlat/pr_spec_get_store_bypass_flags.h \
+	xlat/pr_spec_set_store_bypass_flags.h xlat/pr_sve_vl_flags.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 \
@@ -1135,11 +1210,16 @@
 	xlat/routing_scopes.h xlat/routing_table_ids.h \
 	xlat/routing_types.h xlat/rtnl_addr_attrs.h \
 	xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h \
+	xlat/rtnl_ifla_af_spec_inet6_attrs.h \
+	xlat/rtnl_ifla_af_spec_inet_attrs.h \
 	xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_events.h \
-	xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h \
-	xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h \
-	xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h \
-	xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h \
+	xlat/rtnl_ifla_info_attrs.h \
+	xlat/rtnl_ifla_info_data_bridge_attrs.h \
+	xlat/rtnl_ifla_info_data_tun_attrs.h \
+	xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h \
+	xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h \
+	xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h \
+	xlat/rtnl_mdba_mdb_eattr_attrs.h \
 	xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h \
 	xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h \
 	xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h \
@@ -1156,24 +1236,35 @@
 	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/setsock_ip_options.h xlat/setsock_ipv6_options.h \
+	xlat/setsock_options.h xlat/sfd_flags.h \
+	xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h \
+	xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h \
+	xlat/shm_resource_flags.h xlat/shmctl_flags.h \
 	xlat/shutdown_modes.h xlat/sigact_flags.h \
 	xlat/sigaltstack_flags.h xlat/sigbus_codes.h \
 	xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h \
 	xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h \
 	xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h \
 	xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h \
-	xlat/sigtrap_codes.h xlat/skf_ad.h xlat/smc_diag_attrs.h \
-	xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h \
-	xlat/smc_states.h xlat/sock_type_flags.h xlat/socketcalls.h \
-	xlat/socketlayers.h xlat/sockipoptions.h \
-	xlat/sockipv6options.h xlat/sockipxoptions.h \
-	xlat/socknetlinkoptions.h xlat/sockoptions.h \
-	xlat/sockpacketoptions.h xlat/sockrawoptions.h \
-	xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h \
+	xlat/sigtrap_codes.h xlat/skf_ad.h xlat/skf_off.h \
+	xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h \
+	xlat/smc_link_group_roles.h xlat/smc_protocols.h \
+	xlat/smc_states.h xlat/snmp_icmp6_stats.h xlat/snmp_ip_stats.h \
+	xlat/sock_alg_options.h xlat/sock_bluetooth_options.h \
+	xlat/sock_caif_options.h xlat/sock_dccp_options.h \
+	xlat/sock_ip_options.h xlat/sock_ipv6_options.h \
+	xlat/sock_ipx_options.h xlat/sock_irda_options.h \
+	xlat/sock_iucv_options.h xlat/sock_kcm_options.h \
+	xlat/sock_llc_options.h xlat/sock_netlink_options.h \
+	xlat/sock_nfcllcp_options.h xlat/sock_options.h \
+	xlat/sock_packet_options.h xlat/sock_pnp_options.h \
+	xlat/sock_pppol2tp_options.h xlat/sock_raw_options.h \
+	xlat/sock_rds_options.h xlat/sock_rxrpc_options.h \
+	xlat/sock_sctp_options.h xlat/sock_tcp_options.h \
+	xlat/sock_tipc_options.h xlat/sock_tls_options.h \
+	xlat/sock_type_flags.h xlat/sock_udp_options.h \
+	xlat/socketcalls.h xlat/socketlayers.h xlat/socktypes.h \
 	xlat/sparc_kern_features.h xlat/splice_flags.h \
 	xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h \
 	xlat/statx_masks.h xlat/swap_flags.h \
@@ -1185,9 +1276,10 @@
 	xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h \
 	xlat/sysmips_operations.h xlat/tcflsh_options.h \
 	xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h \
-	xlat/timerfdflags.h xlat/ubi_volume_props.h \
-	xlat/ubi_volume_types.h xlat/uffd_api_features.h \
-	xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h \
+	xlat/timerfdflags.h xlat/tun_device_types.h \
+	xlat/ubi_volume_props.h xlat/ubi_volume_types.h \
+	xlat/uffd_api_features.h xlat/uffd_api_flags.h \
+	xlat/uffd_copy_flags.h xlat/uffd_flags.h \
 	xlat/uffd_register_ioctl_flags.h \
 	xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h \
 	xlat/umount_flags.h xlat/unix_diag_attrs.h \
@@ -1195,7 +1287,8 @@
 	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_control_id_bases.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 \
@@ -1207,14 +1300,14 @@
 	xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h \
 	xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h \
 	xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
-strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_2) $(am__append_5) \
-	$(CODE_COVERAGE_CPPFLAGS)
-strace_CFLAGS = $(AM_CFLAGS) $(CODE_COVERAGE_CFLAGS)
-strace_LDFLAGS = $(am__append_3) $(am__append_6)
-strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS) $(am__append_4) \
-	$(am__append_7) $(CODE_COVERAGE_LIBS) $(am__append_8) \
-	$(am__append_12)
-noinst_LIBRARIES = libstrace.a $(am__append_9) $(am__append_13)
+strace_CPPFLAGS = $(AM_CPPFLAGS) $(am__append_3) $(am__append_8) \
+	$(am__append_11) $(CODE_COVERAGE_CPPFLAGS)
+strace_CFLAGS = $(AM_CFLAGS) $(am__append_4) $(CODE_COVERAGE_CFLAGS)
+strace_LDFLAGS = $(am__append_5) $(am__append_9) $(am__append_12)
+strace_LDADD = libstrace.a $(clock_LIBS) $(timer_LIBS) $(am__append_6) \
+	$(am__append_10) $(am__append_13) $(CODE_COVERAGE_LIBS) \
+	$(am__append_14) $(am__append_18)
+noinst_LIBRARIES = libstrace.a $(am__append_15) $(am__append_19)
 libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
 libstrace_a_CFLAGS = $(strace_CFLAGS)
 libstrace_a_SOURCES = \
@@ -1223,6 +1316,8 @@
 	fstatfs64.c \
 	getpagesize.c \
 	ipc.c \
+	mmap_cache.c	\
+	mmap_cache.h	\
 	sigreturn.c	\
 	socketcall.c \
 	statfs.c \
@@ -1240,40 +1335,43 @@
 	caps1.h chdir.c chmod.c clone.c copy_file_range.c count.c \
 	defs.h delay.c delay.h desc.c dirent.c dirent64.c dm.c \
 	dyxlat.c empty.h epoll.c error_prints.c error_prints.h evdev.c \
-	evdev_mpers.c eventfd.c execve.c fadvise.c fallocate.c \
-	fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
+	evdev_mpers.c eventfd.c execve.c f_owner_ex.h fadvise.c \
+	fallocate.c fanotify.c fchownat.c fcntl.c fetch_bpf_fprog.c \
 	fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c \
 	fetch_struct_mmsghdr.c fetch_struct_msghdr.c \
 	fetch_struct_stat.c fetch_struct_stat64.c \
 	fetch_struct_statfs.c file_handle.c file_ioctl.c \
 	filter_qualify.c filter.h flock.c flock.h fs_x_ioctl.c futex.c \
 	gcc_compat.h get_robust_list.c getcpu.c getcwd.c getrandom.c \
-	hdio.c hostname.c inotify.c io.c ioctl.c ioperm.c iopl.c \
-	ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c ipc_sem.c ipc_shm.c \
-	ipc_shmctl.c kcmp.c kernel_types.h kexec.c keyctl.c \
-	keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c link.c \
-	linux/asm_stat.h linux/x32/asm_stat.h linux/x86_64/asm_stat.h \
-	listen.c lookup_dcookie.c loop.c lseek.c macros.h mem.c \
-	membarrier.c memfd_create.c mknod.c mmap_cache.c mmap_cache.h \
-	mmsghdr.c mount.c mpers_type.h mq.c msghdr.c msghdr.h mtd.c \
+	hdio.c hostname.c inotify.c inotify_ioctl.c io.c ioctl.c \
+	ioperm.c iopl.c ioprio.c ipc_defs.h ipc_msg.c ipc_msgctl.c \
+	ipc_sem.c ipc_shm.c ipc_shmctl.c kcmp.c kernel_types.h kexec.c \
+	keyctl.c keyctl_kdf_params.h kvm.c largefile_wrappers.h ldt.c \
+	link.c linux/asm_stat.h linux/linux/signal.h \
+	linux/x32/asm_stat.h linux/x86_64/asm_stat.h listen.c \
+	lookup_dcookie.c loop.c lseek.c macros.h mem.c membarrier.c \
+	memfd_create.c mknod.c mmap_notify.c mmap_notify.h mmsghdr.c \
+	mount.c mpers_type.h mq.c msghdr.c msghdr.h mtd.c \
 	native_defs.h negated_errno.h net.c netlink.c netlink.h \
-	netlink_crypto.c netlink_sock_diag.h netlink_inet_diag.c \
-	netlink_netfilter.c netlink_netlink_diag.c \
+	netlink_crypto.c netlink_kobject_uevent.c \
+	netlink_kobject_uevent.h netlink_sock_diag.h \
+	netlink_inet_diag.c netlink_netfilter.c netlink_netlink_diag.c \
 	netlink_packet_diag.c netlink_route.c netlink_route.h \
 	netlink_selinux.c netlink_smc_diag.c netlink_sock_diag.c \
 	netlink_unix_diag.c nlattr.c nlattr.h nsfs.c nsfs.h nsig.h \
 	numa.c number_set.c number_set.h oldstat.c open.c \
 	or1k_atomic.c pathtrace.c perf.c perf_event_struct.h \
-	personality.c pkeys.c poll.c prctl.c print_dev_t.c \
-	print_group_req.c print_fields.h print_ifindex.c \
-	print_mq_attr.c print_msgbuf.c print_sg_req_info.c \
-	print_sigevent.c print_statfs.c print_struct_stat.c \
-	print_time.c print_timespec.c print_timeval.c print_timex.c \
-	printmode.c printrusage.c printsiginfo.c printsiginfo.h \
-	process.c process_vm.c ptp.c ptrace.h quota.c readahead.c \
-	readlink.c reboot.c regs.h renameat.c resource.c retval.c \
-	retval.h riscv.c rt_sigframe.c rt_sigreturn.c rtc.c \
-	rtnl_addr.c rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
+	perf_ioctl.c personality.c pkeys.c poll.c prctl.c \
+	print_aio_sigset.c print_dev_t.c print_group_req.c \
+	print_fields.h print_ifindex.c print_mac.c print_mq_attr.c \
+	print_msgbuf.c print_sg_req_info.c print_sigevent.c \
+	print_statfs.c print_struct_stat.c print_time.c \
+	print_timespec.c print_timeval.c print_timex.c printmode.c \
+	printrusage.c printsiginfo.c printsiginfo.h process.c \
+	process_vm.c ptp.c ptrace.h quota.c readahead.c readlink.c \
+	reboot.c regs.h renameat.c resource.c retval.c retval.h \
+	riscv.c rt_sigframe.c rt_sigreturn.c rtc.c rtnl_addr.c \
+	rtnl_addrlabel.c rtnl_dcb.c rtnl_link.c rtnl_mdb.c \
 	rtnl_neigh.c rtnl_neightbl.c rtnl_netconf.c rtnl_nsid.c \
 	rtnl_route.c rtnl_rule.c rtnl_tc.c rtnl_tc_action.c s390.c \
 	sched.c sched_attr.h scsi.c seccomp.c sendfile.c sg_io_v3.c \
@@ -1287,7 +1385,8 @@
 	truncate.c ubi.c ucopy.c uid.c uid16.c umask.c umount.c \
 	uname.c userfaultfd.c ustat.c util.c utime.c utimes.c v4l2.c \
 	wait.c xattr.c xlat.c xlat.h xmalloc.c xmalloc.h xstring.h \
-	$(strace_SOURCES_check) $(am__append_1)
+	$(strace_SOURCES_check) $(am__append_1) $(am__append_2) \
+	$(am__append_7)
 strace_SOURCES_check = bpf_attr_check.c
 CODE_COVERAGE_BRANCH_COVERAGE = 1
 CODE_COVERAGE_GENHTML_OPTIONS = $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) \
@@ -1335,7 +1434,6 @@
 	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	\
 	linux/aarch64/get_scno.c	\
 	linux/aarch64/get_syscall_args.c	\
@@ -1348,7 +1446,6 @@
 	linux/aarch64/set_error.c	\
 	linux/aarch64/set_scno.c	\
 	linux/aarch64/shuffle_scno.c	\
-	linux/aarch64/signalent1.h	\
 	linux/aarch64/syscallent.h	\
 	linux/aarch64/syscallent1.h	\
 	linux/alpha/arch_defs_.h	\
@@ -1606,7 +1703,6 @@
 	linux/powerpc64/arch_rt_sigframe.c	\
 	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	\
@@ -1620,7 +1716,6 @@
 	linux/powerpc64/rt_sigframe.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	\
@@ -1629,7 +1724,6 @@
 	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		\
 	linux/riscv/get_syscall_args.c	\
@@ -1640,7 +1734,6 @@
 	linux/riscv/raw_syscall.h	\
 	linux/riscv/set_error.c		\
 	linux/riscv/set_scno.c		\
-	linux/riscv/signalent1.h	\
 	linux/riscv/syscallent.h	\
 	linux/riscv/syscallent1.h	\
 	linux/rt_sigframe.h		\
@@ -1667,7 +1760,6 @@
 	linux/s390x/arch_regs.h		\
 	linux/s390x/arch_rt_sigframe.c	\
 	linux/s390x/arch_sigreturn.c	\
-	linux/s390x/errnoent1.h		\
 	linux/s390x/get_error.c		\
 	linux/s390x/get_scno.c		\
 	linux/s390x/get_syscall_args.c	\
@@ -1679,7 +1771,6 @@
 	linux/s390x/rt_sigframe.h	\
 	linux/s390x/set_error.c		\
 	linux/s390x/set_scno.c		\
-	linux/s390x/signalent1.h	\
 	linux/s390x/syscallent.h	\
 	linux/s390x/syscallent1.h	\
 	linux/s390x/userent.h		\
@@ -1745,7 +1836,6 @@
 	linux/sparc64/arch_rt_sigframe.c	\
 	linux/sparc64/arch_sigreturn.c	\
 	linux/sparc64/errnoent.h	\
-	linux/sparc64/errnoent1.h	\
 	linux/sparc64/get_error.c	\
 	linux/sparc64/get_scno.c	\
 	linux/sparc64/get_syscall_args.c	\
@@ -1758,7 +1848,6 @@
 	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		\
@@ -1769,7 +1858,6 @@
 	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		\
 	linux/tile/get_scno.c		\
 	linux/tile/get_syscall_args.c	\
@@ -1781,7 +1869,6 @@
 	linux/tile/rt_sigframe.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		\
@@ -1794,7 +1881,6 @@
 	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		\
 	linux/x32/get_scno.c		\
 	linux/x32/get_syscall_args.c	\
@@ -1807,7 +1893,6 @@
 	linux/x32/set_error.c		\
 	linux/x32/set_scno.c		\
 	linux/x32/shuffle_scno.c	\
-	linux/x32/signalent1.h		\
 	linux/x32/syscallent.h		\
 	linux/x32/syscallent1.h		\
 	linux/x32/userent.h		\
@@ -1817,8 +1902,6 @@
 	linux/x86_64/arch_regs.h	\
 	linux/x86_64/arch_rt_sigframe.c	\
 	linux/x86_64/arch_sigreturn.c	\
-	linux/x86_64/errnoent1.h	\
-	linux/x86_64/errnoent2.h	\
 	linux/x86_64/get_error.c	\
 	linux/x86_64/get_scno.c		\
 	linux/x86_64/get_syscall_args.c	\
@@ -1835,8 +1918,6 @@
 	linux/x86_64/set_error.c	\
 	linux/x86_64/set_scno.c		\
 	linux/x86_64/shuffle_scno.c	\
-	linux/x86_64/signalent1.h	\
-	linux/x86_64/signalent2.h	\
 	linux/x86_64/syscallent.h	\
 	linux/x86_64/syscallent1.h	\
 	linux/x86_64/syscallent2.h	\
@@ -1876,7 +1957,7 @@
 
 syscallent_patterns = $(patsubst %,\%/%,$(syscallent_names))
 syscallent_files = $(filter $(syscallent_patterns),$(EXTRA_DIST))
-today = $(shell date +%Y-%m-%d)
+today = $(shell LC_TIME=C date -u +%Y-%m-%d)
 version_regexp = $(subst .,\.,$(VERSION))
 news_check_regexp = 'Noteworthy changes in release $(version_regexp) ($(today))'
 ioctlsort_CC = $(CC_FOR_BUILD)
@@ -1890,12 +1971,12 @@
 ioctl_redefs_h = $(filter-out ioctl_redefs0.h,$(subst ioctlent,ioctl_redefs,$(ioctlent_h)))
 BUILT_SOURCES = $(ioctl_redefs_h) $(ioctlent_h) bpf_attr_check.c \
 	native_printer_decls.h native_printer_defs.h printers.h sen.h \
-	sys_func.h .version scno.h $(am__append_10) $(am__append_14)
+	sys_func.h .version scno.h $(am__append_16) $(am__append_20)
 CLEANFILES = $(ioctl_redefs_h) $(ioctlent_h) $(mpers_preproc_files) \
 	ioctl_iocdef.h ioctl_iocdef.i bpf_attr_check.c \
 	native_printer_decls.h native_printer_defs.h printers.h sen.h \
-	sys_func.h syscallent.i scno.h $(am__append_11) \
-	$(am__append_15)
+	sys_func.h syscallent.i scno.h $(am__append_17) \
+	$(am__append_21)
 DISTCLEANFILES = gnu/stubs-32.h gnu/stubs-x32.h
 SCNO_CPPFLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 		$(ARCH_MFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS)
@@ -1905,7 +1986,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_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c print_group_req.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 
+mpers_source_files = block.c btrfs.c dirent.c evdev_mpers.c fetch_bpf_fprog.c fetch_struct_flock.c fetch_struct_keyctl_kdf_params.c fetch_struct_mmsghdr.c fetch_struct_msghdr.c fetch_struct_stat.c fetch_struct_stat64.c fetch_struct_statfs.c hdio.c ipc_msgctl.c ipc_shmctl.c loop.c mtd.c perf_ioctl.c print_aio_sigset.c print_group_req.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))
@@ -2114,6 +2195,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-ipc_shmctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-loop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-mtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-perf_ioctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_aio_sigset.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_group_req.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_mq_attr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_m32_a-print_msgbuf.Po@am__quote@
@@ -2152,6 +2235,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-ipc_shmctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-loop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-mtd.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-perf_ioctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_group_req.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_mq_attr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmpers_mx32_a-print_msgbuf.Po@am__quote@
@@ -2178,6 +2263,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-fstatfs64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-getpagesize.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-ipc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libstrace_a-mmap_cache.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@
@@ -2245,6 +2331,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-hdio.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-hostname.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-inotify.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-inotify_ioctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-io.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ioctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-ioperm.Po@am__quote@
@@ -2269,7 +2356,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-membarrier.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-memfd_create.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mknod.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mmap_cache.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mmap_notify.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mmsghdr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mount.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-mq.Po@am__quote@
@@ -2279,6 +2366,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_crypto.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_inet_diag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_kobject_uevent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_netfilter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_netlink_diag.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-netlink_packet_diag.Po@am__quote@
@@ -2296,13 +2384,16 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-or1k_atomic.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-pathtrace.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-perf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-perf_ioctl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-personality.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-pkeys.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-poll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-prctl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_aio_sigset.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_dev_t.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_group_req.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_ifindex.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_mac.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_mq_attr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_msgbuf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-print_sg_req_info.Po@am__quote@
@@ -2382,6 +2473,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-umask.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-umount.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-uname.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-unwind-libdw.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-unwind-libunwind.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-unwind.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strace-userfaultfd.Po@am__quote@
@@ -2647,6 +2739,34 @@
 @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-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
 
+libmpers_m32_a-perf_ioctl.o: perf_ioctl.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-perf_ioctl.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo -c -o libmpers_m32_a-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_m32_a-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_m32_a-perf_ioctl.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-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+
+libmpers_m32_a-perf_ioctl.obj: perf_ioctl.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-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo -c -o libmpers_m32_a-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_m32_a-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_m32_a-perf_ioctl.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-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+
+libmpers_m32_a-print_aio_sigset.o: print_aio_sigset.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-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo -c -o libmpers_m32_a-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_m32_a-print_aio_sigset.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-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+
+libmpers_m32_a-print_aio_sigset.obj: print_aio_sigset.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-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo -c -o libmpers_m32_a-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_m32_a-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_m32_a-print_aio_sigset.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-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+
 libmpers_m32_a-print_group_req.o: print_group_req.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-print_group_req.o -MD -MP -MF $(DEPDIR)/libmpers_m32_a-print_group_req.Tpo -c -o libmpers_m32_a-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_m32_a-print_group_req.Tpo $(DEPDIR)/libmpers_m32_a-print_group_req.Po
@@ -3179,6 +3299,34 @@
 @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-mtd.obj `if test -f 'mtd.c'; then $(CYGPATH_W) 'mtd.c'; else $(CYGPATH_W) '$(srcdir)/mtd.c'; fi`
 
+libmpers_mx32_a-perf_ioctl.o: perf_ioctl.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-perf_ioctl.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo -c -o libmpers_mx32_a-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_mx32_a-perf_ioctl.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-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+
+libmpers_mx32_a-perf_ioctl.obj: perf_ioctl.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-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo -c -o libmpers_mx32_a-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Tpo $(DEPDIR)/libmpers_mx32_a-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='perf_ioctl.c' object='libmpers_mx32_a-perf_ioctl.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-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+
+libmpers_mx32_a-print_aio_sigset.o: print_aio_sigset.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-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo -c -o libmpers_mx32_a-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_mx32_a-print_aio_sigset.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-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+
+libmpers_mx32_a-print_aio_sigset.obj: print_aio_sigset.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-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo -c -o libmpers_mx32_a-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Tpo $(DEPDIR)/libmpers_mx32_a-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_aio_sigset.c' object='libmpers_mx32_a-print_aio_sigset.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-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+
 libmpers_mx32_a-print_group_req.o: print_group_req.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-print_group_req.o -MD -MP -MF $(DEPDIR)/libmpers_mx32_a-print_group_req.Tpo -c -o libmpers_mx32_a-print_group_req.o `test -f 'print_group_req.c' || echo '$(srcdir)/'`print_group_req.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmpers_mx32_a-print_group_req.Tpo $(DEPDIR)/libmpers_mx32_a-print_group_req.Po
@@ -3543,6 +3691,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-mmap_cache.o: mmap_cache.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.o -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.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-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+
+libstrace_a-mmap_cache.obj: mmap_cache.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libstrace_a_CPPFLAGS) $(CPPFLAGS) $(libstrace_a_CFLAGS) $(CFLAGS) -MT libstrace_a-mmap_cache.obj -MD -MP -MF $(DEPDIR)/libstrace_a-mmap_cache.Tpo -c -o libstrace_a-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libstrace_a-mmap_cache.Tpo $(DEPDIR)/libstrace_a-mmap_cache.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mmap_cache.c' object='libstrace_a-mmap_cache.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-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.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
@@ -4467,6 +4629,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-inotify.obj `if test -f 'inotify.c'; then $(CYGPATH_W) 'inotify.c'; else $(CYGPATH_W) '$(srcdir)/inotify.c'; fi`
 
+strace-inotify_ioctl.o: inotify_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify_ioctl.o -MD -MP -MF $(DEPDIR)/strace-inotify_ioctl.Tpo -c -o strace-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify_ioctl.Tpo $(DEPDIR)/strace-inotify_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='inotify_ioctl.c' object='strace-inotify_ioctl.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-inotify_ioctl.o `test -f 'inotify_ioctl.c' || echo '$(srcdir)/'`inotify_ioctl.c
+
+strace-inotify_ioctl.obj: inotify_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-inotify_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-inotify_ioctl.Tpo -c -o strace-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-inotify_ioctl.Tpo $(DEPDIR)/strace-inotify_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='inotify_ioctl.c' object='strace-inotify_ioctl.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-inotify_ioctl.obj `if test -f 'inotify_ioctl.c'; then $(CYGPATH_W) 'inotify_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/inotify_ioctl.c'; fi`
+
 strace-io.o: io.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-io.o -MD -MP -MF $(DEPDIR)/strace-io.Tpo -c -o strace-io.o `test -f 'io.c' || echo '$(srcdir)/'`io.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-io.Tpo $(DEPDIR)/strace-io.Po
@@ -4803,19 +4979,19 @@
 @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-mknod.obj `if test -f 'mknod.c'; then $(CYGPATH_W) 'mknod.c'; else $(CYGPATH_W) '$(srcdir)/mknod.c'; fi`
 
-strace-mmap_cache.o: mmap_cache.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_cache.o -MD -MP -MF $(DEPDIR)/strace-mmap_cache.Tpo -c -o strace-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_cache.Tpo $(DEPDIR)/strace-mmap_cache.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mmap_cache.c' object='strace-mmap_cache.o' libtool=no @AMDEPBACKSLASH@
+strace-mmap_notify.o: mmap_notify.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_notify.o -MD -MP -MF $(DEPDIR)/strace-mmap_notify.Tpo -c -o strace-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_notify.Tpo $(DEPDIR)/strace-mmap_notify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mmap_notify.c' object='strace-mmap_notify.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-mmap_cache.o `test -f 'mmap_cache.c' || echo '$(srcdir)/'`mmap_cache.c
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmap_notify.o `test -f 'mmap_notify.c' || echo '$(srcdir)/'`mmap_notify.c
 
-strace-mmap_cache.obj: mmap_cache.c
-@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_cache.obj -MD -MP -MF $(DEPDIR)/strace-mmap_cache.Tpo -c -o strace-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_cache.Tpo $(DEPDIR)/strace-mmap_cache.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mmap_cache.c' object='strace-mmap_cache.obj' libtool=no @AMDEPBACKSLASH@
+strace-mmap_notify.obj: mmap_notify.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmap_notify.obj -MD -MP -MF $(DEPDIR)/strace-mmap_notify.Tpo -c -o strace-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-mmap_notify.Tpo $(DEPDIR)/strace-mmap_notify.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='mmap_notify.c' object='strace-mmap_notify.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-mmap_cache.obj `if test -f 'mmap_cache.c'; then $(CYGPATH_W) 'mmap_cache.c'; else $(CYGPATH_W) '$(srcdir)/mmap_cache.c'; fi`
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -c -o strace-mmap_notify.obj `if test -f 'mmap_notify.c'; then $(CYGPATH_W) 'mmap_notify.c'; else $(CYGPATH_W) '$(srcdir)/mmap_notify.c'; fi`
 
 strace-mmsghdr.o: mmsghdr.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-mmsghdr.o -MD -MP -MF $(DEPDIR)/strace-mmsghdr.Tpo -c -o strace-mmsghdr.o `test -f 'mmsghdr.c' || echo '$(srcdir)/'`mmsghdr.c
@@ -4929,6 +5105,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_crypto.obj `if test -f 'netlink_crypto.c'; then $(CYGPATH_W) 'netlink_crypto.c'; else $(CYGPATH_W) '$(srcdir)/netlink_crypto.c'; fi`
 
+strace-netlink_kobject_uevent.o: netlink_kobject_uevent.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_kobject_uevent.o -MD -MP -MF $(DEPDIR)/strace-netlink_kobject_uevent.Tpo -c -o strace-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_kobject_uevent.Tpo $(DEPDIR)/strace-netlink_kobject_uevent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netlink_kobject_uevent.c' object='strace-netlink_kobject_uevent.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-netlink_kobject_uevent.o `test -f 'netlink_kobject_uevent.c' || echo '$(srcdir)/'`netlink_kobject_uevent.c
+
+strace-netlink_kobject_uevent.obj: netlink_kobject_uevent.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_kobject_uevent.obj -MD -MP -MF $(DEPDIR)/strace-netlink_kobject_uevent.Tpo -c -o strace-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_kobject_uevent.Tpo $(DEPDIR)/strace-netlink_kobject_uevent.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='netlink_kobject_uevent.c' object='strace-netlink_kobject_uevent.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-netlink_kobject_uevent.obj `if test -f 'netlink_kobject_uevent.c'; then $(CYGPATH_W) 'netlink_kobject_uevent.c'; else $(CYGPATH_W) '$(srcdir)/netlink_kobject_uevent.c'; fi`
+
 strace-netlink_inet_diag.o: netlink_inet_diag.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-netlink_inet_diag.o -MD -MP -MF $(DEPDIR)/strace-netlink_inet_diag.Tpo -c -o strace-netlink_inet_diag.o `test -f 'netlink_inet_diag.c' || echo '$(srcdir)/'`netlink_inet_diag.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-netlink_inet_diag.Tpo $(DEPDIR)/strace-netlink_inet_diag.Po
@@ -5181,6 +5371,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-perf.obj `if test -f 'perf.c'; then $(CYGPATH_W) 'perf.c'; else $(CYGPATH_W) '$(srcdir)/perf.c'; fi`
 
+strace-perf_ioctl.o: perf_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf_ioctl.o -MD -MP -MF $(DEPDIR)/strace-perf_ioctl.Tpo -c -o strace-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf_ioctl.Tpo $(DEPDIR)/strace-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='perf_ioctl.c' object='strace-perf_ioctl.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-perf_ioctl.o `test -f 'perf_ioctl.c' || echo '$(srcdir)/'`perf_ioctl.c
+
+strace-perf_ioctl.obj: perf_ioctl.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-perf_ioctl.obj -MD -MP -MF $(DEPDIR)/strace-perf_ioctl.Tpo -c -o strace-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-perf_ioctl.Tpo $(DEPDIR)/strace-perf_ioctl.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='perf_ioctl.c' object='strace-perf_ioctl.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-perf_ioctl.obj `if test -f 'perf_ioctl.c'; then $(CYGPATH_W) 'perf_ioctl.c'; else $(CYGPATH_W) '$(srcdir)/perf_ioctl.c'; fi`
+
 strace-personality.o: personality.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-personality.o -MD -MP -MF $(DEPDIR)/strace-personality.Tpo -c -o strace-personality.o `test -f 'personality.c' || echo '$(srcdir)/'`personality.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-personality.Tpo $(DEPDIR)/strace-personality.Po
@@ -5237,6 +5441,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-prctl.obj `if test -f 'prctl.c'; then $(CYGPATH_W) 'prctl.c'; else $(CYGPATH_W) '$(srcdir)/prctl.c'; fi`
 
+strace-print_aio_sigset.o: print_aio_sigset.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_aio_sigset.o -MD -MP -MF $(DEPDIR)/strace-print_aio_sigset.Tpo -c -o strace-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_aio_sigset.Tpo $(DEPDIR)/strace-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_aio_sigset.c' object='strace-print_aio_sigset.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-print_aio_sigset.o `test -f 'print_aio_sigset.c' || echo '$(srcdir)/'`print_aio_sigset.c
+
+strace-print_aio_sigset.obj: print_aio_sigset.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_aio_sigset.obj -MD -MP -MF $(DEPDIR)/strace-print_aio_sigset.Tpo -c -o strace-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_aio_sigset.Tpo $(DEPDIR)/strace-print_aio_sigset.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_aio_sigset.c' object='strace-print_aio_sigset.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-print_aio_sigset.obj `if test -f 'print_aio_sigset.c'; then $(CYGPATH_W) 'print_aio_sigset.c'; else $(CYGPATH_W) '$(srcdir)/print_aio_sigset.c'; fi`
+
 strace-print_dev_t.o: print_dev_t.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_dev_t.o -MD -MP -MF $(DEPDIR)/strace-print_dev_t.Tpo -c -o strace-print_dev_t.o `test -f 'print_dev_t.c' || echo '$(srcdir)/'`print_dev_t.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_dev_t.Tpo $(DEPDIR)/strace-print_dev_t.Po
@@ -5279,6 +5497,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-print_ifindex.obj `if test -f 'print_ifindex.c'; then $(CYGPATH_W) 'print_ifindex.c'; else $(CYGPATH_W) '$(srcdir)/print_ifindex.c'; fi`
 
+strace-print_mac.o: print_mac.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mac.o -MD -MP -MF $(DEPDIR)/strace-print_mac.Tpo -c -o strace-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mac.Tpo $(DEPDIR)/strace-print_mac.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_mac.c' object='strace-print_mac.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-print_mac.o `test -f 'print_mac.c' || echo '$(srcdir)/'`print_mac.c
+
+strace-print_mac.obj: print_mac.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mac.obj -MD -MP -MF $(DEPDIR)/strace-print_mac.Tpo -c -o strace-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mac.Tpo $(DEPDIR)/strace-print_mac.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='print_mac.c' object='strace-print_mac.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-print_mac.obj `if test -f 'print_mac.c'; then $(CYGPATH_W) 'print_mac.c'; else $(CYGPATH_W) '$(srcdir)/print_mac.c'; fi`
+
 strace-print_mq_attr.o: print_mq_attr.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-print_mq_attr.o -MD -MP -MF $(DEPDIR)/strace-print_mq_attr.Tpo -c -o strace-print_mq_attr.o `test -f 'print_mq_attr.c' || echo '$(srcdir)/'`print_mq_attr.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-print_mq_attr.Tpo $(DEPDIR)/strace-print_mq_attr.Po
@@ -6553,6 +6785,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-unwind.obj `if test -f 'unwind.c'; then $(CYGPATH_W) 'unwind.c'; else $(CYGPATH_W) '$(srcdir)/unwind.c'; fi`
 
+strace-unwind-libdw.o: unwind-libdw.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libdw.o -MD -MP -MF $(DEPDIR)/strace-unwind-libdw.Tpo -c -o strace-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libdw.Tpo $(DEPDIR)/strace-unwind-libdw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='unwind-libdw.c' object='strace-unwind-libdw.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-unwind-libdw.o `test -f 'unwind-libdw.c' || echo '$(srcdir)/'`unwind-libdw.c
+
+strace-unwind-libdw.obj: unwind-libdw.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libdw.obj -MD -MP -MF $(DEPDIR)/strace-unwind-libdw.Tpo -c -o strace-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libdw.Tpo $(DEPDIR)/strace-unwind-libdw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='unwind-libdw.c' object='strace-unwind-libdw.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-unwind-libdw.obj `if test -f 'unwind-libdw.c'; then $(CYGPATH_W) 'unwind-libdw.c'; else $(CYGPATH_W) '$(srcdir)/unwind-libdw.c'; fi`
+
 strace-unwind-libunwind.o: unwind-libunwind.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(strace_CPPFLAGS) $(CPPFLAGS) $(strace_CFLAGS) $(CFLAGS) -MT strace-unwind-libunwind.o -MD -MP -MF $(DEPDIR)/strace-unwind-libunwind.Tpo -c -o strace-unwind-libunwind.o `test -f 'unwind-libunwind.c' || echo '$(srcdir)/'`unwind-libunwind.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/strace-unwind-libunwind.Tpo $(DEPDIR)/strace-unwind-libunwind.Po
@@ -7105,8 +7351,14 @@
 	$(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/bdaddr_types.h: $(top_srcdir)/xlat/bdaddr_types.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/bluetooth_l2_cid.h: $(top_srcdir)/xlat/bluetooth_l2_cid.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/bluetooth_l2_psm.h: $(top_srcdir)/xlat/bluetooth_l2_psm.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
@@ -7141,6 +7393,8 @@
 	$(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_query_flags.h: $(top_srcdir)/xlat/bpf_query_flags.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
@@ -7165,6 +7419,8 @@
 	$(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_cont_reading_from_srcdev_mode.h: $(top_srcdir)/xlat/btrfs_cont_reading_from_srcdev_mode.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
@@ -7207,6 +7463,10 @@
 	$(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/caif_protocols.h: $(top_srcdir)/xlat/caif_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/can_protocols.h: $(top_srcdir)/xlat/can_protocols.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
@@ -7233,6 +7493,18 @@
 	$(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/ebpf_class.h: $(top_srcdir)/xlat/ebpf_class.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_mode.h: $(top_srcdir)/xlat/ebpf_mode.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_op_alu.h: $(top_srcdir)/xlat/ebpf_op_alu.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_op_jmp.h: $(top_srcdir)/xlat/ebpf_op_jmp.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_regs.h: $(top_srcdir)/xlat/ebpf_regs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/ebpf_size.h: $(top_srcdir)/xlat/ebpf_size.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
@@ -7285,8 +7557,6 @@
 	$(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
@@ -7311,9 +7581,11 @@
 	$(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
+$(top_srcdir)/xlat/getsock_ip_options.h: $(top_srcdir)/xlat/getsock_ip_options.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
+$(top_srcdir)/xlat/getsock_ipv6_options.h: $(top_srcdir)/xlat/getsock_ipv6_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/getsock_options.h: $(top_srcdir)/xlat/getsock_options.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 $< $@
@@ -7333,6 +7605,14 @@
 	$(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/in6_addr_gen_mode.h: $(top_srcdir)/xlat/in6_addr_gen_mode.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet6_devconf_indices.h: $(top_srcdir)/xlat/inet6_devconf_indices.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet6_if_flags.h: $(top_srcdir)/xlat/inet6_if_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/inet_devconf_indices.h: $(top_srcdir)/xlat/inet_devconf_indices.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/inet_diag_attrs.h: $(top_srcdir)/xlat/inet_diag_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/inet_diag_bytecodes.h: $(top_srcdir)/xlat/inet_diag_bytecodes.in $(top_srcdir)/xlat/gen.sh
@@ -7359,10 +7639,18 @@
 	$(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/ipc_private.h: $(top_srcdir)/xlat/ipc_private.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/irda_protocols.h: $(top_srcdir)/xlat/irda_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/isdn_protocols.h: $(top_srcdir)/xlat/isdn_protocols.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/kcm_protocols.h: $(top_srcdir)/xlat/kcm_protocols.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
@@ -7471,6 +7759,8 @@
 	$(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_sk_meminfo_indices.h: $(top_srcdir)/xlat/netlink_sk_meminfo_indices.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/netlink_socket_flags.h: $(top_srcdir)/xlat/netlink_socket_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/netlink_states.h: $(top_srcdir)/xlat/netlink_states.in $(top_srcdir)/xlat/gen.sh
@@ -7499,6 +7789,8 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/nf_ulog_msg_types.h: $(top_srcdir)/xlat/nf_ulog_msg_types.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nfc_protocols.h: $(top_srcdir)/xlat/nfc_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/nl_audit_types.h: $(top_srcdir)/xlat/nl_audit_types.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/nl_crypto_types.h: $(top_srcdir)/xlat/nl_crypto_types.in $(top_srcdir)/xlat/gen.sh
@@ -7521,6 +7813,8 @@
 	$(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/numa_node.h: $(top_srcdir)/xlat/numa_node.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
@@ -7551,6 +7845,10 @@
 	$(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_ioctl_cmds.h: $(top_srcdir)/xlat/perf_ioctl_cmds.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/perf_ioctl_flags.h: $(top_srcdir)/xlat/perf_ioctl_flags.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
@@ -7559,6 +7857,8 @@
 	$(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/phonet_protocols.h: $(top_srcdir)/xlat/phonet_protocols.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
@@ -7577,6 +7877,12 @@
 	$(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_spec_cmds.h: $(top_srcdir)/xlat/pr_spec_cmds.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/pr_spec_get_store_bypass_flags.h: $(top_srcdir)/xlat/pr_spec_get_store_bypass_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/pr_spec_set_store_bypass_flags.h: $(top_srcdir)/xlat/pr_spec_set_store_bypass_flags.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/pr_sve_vl_flags.h: $(top_srcdir)/xlat/pr_sve_vl_flags.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
@@ -7629,12 +7935,20 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_dcb_attrs.h: $(top_srcdir)/xlat/rtnl_dcb_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_af_spec_inet6_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_af_spec_inet6_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_af_spec_inet_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_af_spec_inet_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_brport_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_brport_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_events.h: $(top_srcdir)/xlat/rtnl_ifla_events.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_info_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_info_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_info_data_bridge_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_info_data_bridge_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_ifla_info_data_tun_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_info_data_tun_attrs.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_port_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_port_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/rtnl_ifla_vf_port_attrs.h: $(top_srcdir)/xlat/rtnl_ifla_vf_port_attrs.in $(top_srcdir)/xlat/gen.sh
@@ -7713,9 +8027,11 @@
 	$(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
+$(top_srcdir)/xlat/setsock_ip_options.h: $(top_srcdir)/xlat/setsock_ip_options.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
+$(top_srcdir)/xlat/setsock_ipv6_options.h: $(top_srcdir)/xlat/setsock_ipv6_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/setsock_options.h: $(top_srcdir)/xlat/setsock_options.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 $< $@
@@ -7767,38 +8083,78 @@
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/skf_ad.h: $(top_srcdir)/xlat/skf_ad.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/skf_off.h: $(top_srcdir)/xlat/skf_off.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_diag_attrs.h: $(top_srcdir)/xlat/smc_diag_attrs.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_diag_extended_flags.h: $(top_srcdir)/xlat/smc_diag_extended_flags.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_link_group_roles.h: $(top_srcdir)/xlat/smc_link_group_roles.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/smc_protocols.h: $(top_srcdir)/xlat/smc_protocols.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
 $(top_srcdir)/xlat/smc_states.h: $(top_srcdir)/xlat/smc_states.in $(top_srcdir)/xlat/gen.sh
 	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/snmp_icmp6_stats.h: $(top_srcdir)/xlat/snmp_icmp6_stats.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/snmp_ip_stats.h: $(top_srcdir)/xlat/snmp_ip_stats.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_alg_options.h: $(top_srcdir)/xlat/sock_alg_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_bluetooth_options.h: $(top_srcdir)/xlat/sock_bluetooth_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_caif_options.h: $(top_srcdir)/xlat/sock_caif_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_dccp_options.h: $(top_srcdir)/xlat/sock_dccp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_ip_options.h: $(top_srcdir)/xlat/sock_ip_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_ipv6_options.h: $(top_srcdir)/xlat/sock_ipv6_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_ipx_options.h: $(top_srcdir)/xlat/sock_ipx_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_irda_options.h: $(top_srcdir)/xlat/sock_irda_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_iucv_options.h: $(top_srcdir)/xlat/sock_iucv_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_kcm_options.h: $(top_srcdir)/xlat/sock_kcm_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_llc_options.h: $(top_srcdir)/xlat/sock_llc_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_netlink_options.h: $(top_srcdir)/xlat/sock_netlink_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_nfcllcp_options.h: $(top_srcdir)/xlat/sock_nfcllcp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_options.h: $(top_srcdir)/xlat/sock_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_packet_options.h: $(top_srcdir)/xlat/sock_packet_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_pnp_options.h: $(top_srcdir)/xlat/sock_pnp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_pppol2tp_options.h: $(top_srcdir)/xlat/sock_pppol2tp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_raw_options.h: $(top_srcdir)/xlat/sock_raw_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_rds_options.h: $(top_srcdir)/xlat/sock_rds_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_rxrpc_options.h: $(top_srcdir)/xlat/sock_rxrpc_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_sctp_options.h: $(top_srcdir)/xlat/sock_sctp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_tcp_options.h: $(top_srcdir)/xlat/sock_tcp_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_tipc_options.h: $(top_srcdir)/xlat/sock_tipc_options.in $(top_srcdir)/xlat/gen.sh
+	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/sock_tls_options.h: $(top_srcdir)/xlat/sock_tls_options.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/sock_udp_options.h: $(top_srcdir)/xlat/sock_udp_options.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/socknetlinkoptions.h: $(top_srcdir)/xlat/socknetlinkoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sockoptions.h: $(top_srcdir)/xlat/sockoptions.in $(top_srcdir)/xlat/gen.sh
-	$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
-$(top_srcdir)/xlat/sockpacketoptions.h: $(top_srcdir)/xlat/sockpacketoptions.in $(top_srcdir)/xlat/gen.sh
-	$(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/sparc_kern_features.h: $(top_srcdir)/xlat/sparc_kern_features.in $(top_srcdir)/xlat/gen.sh
@@ -7853,6 +8209,8 @@
 	$(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/tun_device_types.h: $(top_srcdir)/xlat/tun_device_types.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
@@ -7893,6 +8251,8 @@
 	$(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_id_bases.h: $(top_srcdir)/xlat/v4l2_control_id_bases.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
diff --git a/NEWS b/NEWS
index f1035c7..29602be 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,56 @@
+Noteworthy changes in release 4.23 (2018-06-14)
+===============================================
+
+* Changes in behaviour
+  * On x32 personality, 64-bit syscalls (such as readv) are now shown with "#64"
+    suffix instead of "64:" prefix.  Unlike the old names, these new names
+    can be used in syscall qualification expressions.
+  * Changed error number output format: error numbers are consistently
+    printed as "-1 ECONST (Error description)"
+    for known errors and as "-1 (errno 123)" for unknown errors,
+    regardless of -e raw qualification settings.  One can specify
+    -X raw for displaying raw error numbers unconditionally.
+  * Unfetchable addresses inside arrays are now printed as comments.
+  * Obsolete IA-32 mode syscall names are no longer printed on ia64.
+
+* Improvements
+  * Implemented libdw backend for -k option, configured at build time
+    using --with-libdw option.
+    Whether -k option is compiled is now configured at build time
+    using --enable-stacktrace option.
+  * Added -X option for configuring xlat output formatting (addresses
+    Debian bug #692915).
+  * Added support for personality designation ("64", "32", or "x32") to syscall
+    qualifications in -e trace expressions.
+  * Implemented injection of syscalls with no side effects as an alternative
+    to injection of an invalid syscall (-e inject=SET:syscall= expression).
+  * Improved support for reproducible builds (addresses Debian bug #896016).
+  * Implemented decoding of BPF_PROG_QUERY and BPF_RAW_TRACEPOINT_OPEN bpf
+    syscall commands.
+  * Implemented decoding of INOTIFY_IOC_SETNEXTWD and PERF_EVENT_IOC_* ioctl
+    commands.
+  * Implemented decoding of PR_GET_SPECULATION_CTRL and PR_SET_SPECULATION_CTRL
+    prctl syscall options.
+  * Enhanced decoding of bpf, getsockopt, setsockopt, and socket syscalls.
+  * Enhanced decoding of NETLINK_KOBJECT_UEVENT and NETLINK_ROUTE protocols.
+  * Enhanced decoding of *_DIAG_MEMINFO netlink attributes.
+  * Enhanced decoding of BTRFS_*, FS_IOC_*, SIOCGIFHWADDR, and SIOCSIFHWADDR
+    ioctl commands.
+  * Enhanced decoding of AF_BLUETOOTH socket addresses.
+  * Implemented decoding of io_pgetevent syscall.
+  * Wired up rseq syscall.
+  * Updated lists of ADJ_*, BPF_*, BPF_F_*, BPF_PROG_TYPE_*, ETH_P_*, FPE_*,
+    IFF_*, IPPROTO_*, MAP_*, MS_*, MSG_*, NETLINK_*, PACKET_*, PROT_*, SCTP_*,
+    SECCOMP_FILTER_FLAG_*, SEGV_*, SEM_*, SHM_*, SW_*, V4L2_CID_*,
+    V4L2_CTRL_CLASS_*, and V4L2_PIX_FMT_* constants.
+  * Updated lists of ioctl commands from Linux 4.17.
+
+* Bug fixes
+  * Fixed decoding of msgtyp argument of msgrcv syscall.
+  * Fixed fallback definitions for F_*, MCL_*, MSG_ZEROCOPY, SI_*,
+    and SOL_SOCKET constants.
+  * Fixed -e trace=%pure expression on mips.
+
 Noteworthy changes in release 4.22 (2018-04-05)
 ===============================================
 
diff --git a/aclocal.m4 b/aclocal.m4
index 1d2ff00..6cc46ab 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1205,6 +1205,10 @@
 m4_include([m4/ax_valgrind_check.m4])
 m4_include([m4/bpf_attr.m4])
 m4_include([m4/mpers.m4])
+m4_include([m4/st_demangle.m4])
+m4_include([m4/st_libdw.m4])
+m4_include([m4/st_libunwind.m4])
 m4_include([m4/st_save_restore_var.m4])
+m4_include([m4/st_stacktrace.m4])
 m4_include([m4/st_warn_cflags.m4])
 m4_include([m4/warnings.m4])
diff --git a/aio.c b/aio.c
index 600f88e..8a6741b 100644
--- a/aio.c
+++ b/aio.c
@@ -3,7 +3,7 @@
  * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
  * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
  * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
- * Copyright (c) 1999-2017 The strace developers.
+ * Copyright (c) 1999-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -196,7 +196,7 @@
 		printaddr(addr);
 	else
 		print_array(tcp, addr, nr, &iocbp, current_wordsize,
-			    umoven_or_printaddr, print_iocbp, 0);
+			    tfetch_mem, print_iocbp, 0);
 
 	return RVAL_DECODED;
 }
@@ -238,7 +238,8 @@
 	return 0;
 }
 
-SYS_FUNC(io_getevents)
+static int
+print_io_getevents(struct tcb *tcp, bool has_usig)
 {
 	if (entering(tcp)) {
 		printaddr(tcp->u_arg[0]);
@@ -248,16 +249,30 @@
 	} else {
 		struct io_event buf;
 		print_array(tcp, tcp->u_arg[3], tcp->u_rval, &buf, sizeof(buf),
-			    umoven_or_printaddr, print_io_event, 0);
+			    tfetch_mem, print_io_event, 0);
 		tprints(", ");
 		/*
-		 * Since the timeout parameter is read by the kernel
+		 * Since the timeout and usig parameters are read by the kernel
 		 * on entering syscall, it has to be decoded the same way
 		 * whether the syscall has failed or not.
 		 */
 		temporarily_clear_syserror(tcp);
 		print_timespec(tcp, tcp->u_arg[4]);
+		if (has_usig) {
+			tprints(", ");
+			print_aio_sigset(tcp, tcp->u_arg[5]);
+		}
 		restore_cleared_syserror(tcp);
 	}
 	return 0;
 }
+
+SYS_FUNC(io_getevents)
+{
+	return print_io_getevents(tcp, false);
+}
+
+SYS_FUNC(io_pgetevents)
+{
+	return print_io_getevents(tcp, true);
+}
diff --git a/basic_filters.c b/basic_filters.c
index 4ea23b5..6071a67 100644
--- a/basic_filters.c
+++ b/basic_filters.c
@@ -27,25 +27,82 @@
  */
 
 #include "defs.h"
-#include "number_set.h"
-#include "filter.h"
+
 #include <regex.h>
 
+#include "filter.h"
+#include "number_set.h"
+#include "xstring.h"
+
+
+/**
+ * Checks whether a @-separated personality specification suffix is present.
+ * Personality suffix is a one of strings stored in personality_designators
+ * array.
+ *
+ * @param[in]  s Specification string to check.
+ * @param[out] p Where to store personality number if it is found.
+ * @return       If personality is found, the provided string is copied without
+ *               suffix and returned as a result (callee should de-alllocate it
+ *               with free() after use), and personality number is written to p.
+ *               Otherwise, NULL is returned and p is untouched.
+ */
+static char *
+qualify_syscall_separate_personality(const char *s, unsigned int *p)
+{
+	char *pos = strchr(s, '@');
+
+	if (!pos)
+		return NULL;
+
+	for (unsigned int i = 0; i < SUPPORTED_PERSONALITIES; i++) {
+		if (!strcmp(pos + 1, personality_designators[i])) {
+			*p = i;
+			return xstrndup(s, pos - s);
+		}
+	}
+
+	error_msg_and_help("incorrect personality designator '%s'"
+			   " in qualification '%s'", pos + 1, s);
+}
+
+static bool
+qualify_syscall_number_personality(int n, unsigned int p,
+				   struct number_set *set)
+{
+	if ((unsigned int) n >= nsyscall_vec[p])
+		return false;
+
+	add_number_to_set_array(n, set, p);
+
+	return true;
+}
+
 static bool
 qualify_syscall_number(const char *s, struct number_set *set)
 {
-	int n = string_to_uint(s);
+	unsigned int p;
+	char *num_str = qualify_syscall_separate_personality(s, &p);
+	int n;
+
+	if (num_str) {
+		n = string_to_uint(num_str);
+		free(num_str);
+
+		if (n < 0)
+			return false;
+
+		return qualify_syscall_number_personality(n, p, set);
+	}
+
+	n = string_to_uint(s);
 	if (n < 0)
 		return false;
 
 	bool done = false;
 
-	for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
-		if ((unsigned) n >= nsyscall_vec[p])
-			continue;
-		add_number_to_set_array(n, set, p);
-		done = true;
-	}
+	for (p = 0; p < SUPPORTED_PERSONALITIES; ++p)
+		done |= qualify_syscall_number_personality(n, p, set);
 
 	return done;
 }
@@ -75,12 +132,26 @@
 		for (unsigned int i = 0; i < nsyscall_vec[p]; ++i) {
 			if (!sysent_vec[p][i].sys_name)
 				continue;
+
 			rc = regexec(&preg, sysent_vec[p][i].sys_name,
 				     0, NULL, 0);
+
+			if (rc == REG_NOMATCH) {
+				char name_buf[128];
+				char *pos = stpcpy(name_buf,
+						   sysent_vec[p][i].sys_name);
+
+				(void) xappendstr(name_buf, pos, "@%s",
+						  personality_designators[p]);
+
+				rc = regexec(&preg, name_buf, 0, NULL, 0);
+			}
+
 			if (rc == REG_NOMATCH)
 				continue;
 			else if (rc)
 				regerror_msg_and_die(rc, &preg, "regexec", s);
+
 			add_number_to_set_array(i, set, p);
 			found = true;
 		}
@@ -164,23 +235,41 @@
 }
 
 static bool
-qualify_syscall_name(const char *s, struct number_set *set)
+qualify_syscall_name_personality(const char *s, unsigned int p,
+				 struct number_set *set)
 {
 	bool found = false;
 
-	for (unsigned int p = 0; p < SUPPORTED_PERSONALITIES; ++p) {
-		for (kernel_long_t scno = 0;
-		     (scno = scno_by_name(s, p, scno)) >= 0;
-		     ++scno) {
-			add_number_to_set_array(scno, set, p);
-			found = true;
-		}
+	for (kernel_long_t scno = 0; (scno = scno_by_name(s, p, scno)) >= 0;
+	     ++scno) {
+		add_number_to_set_array(scno, set, p);
+		found = true;
 	}
 
 	return found;
 }
 
 static bool
+qualify_syscall_name(const char *s, struct number_set *set)
+{
+	unsigned int p;
+	char *name_str = qualify_syscall_separate_personality(s, &p);
+	bool found = false;
+
+	if (name_str) {
+		found = qualify_syscall_name_personality(name_str, p, set);
+		free(name_str);
+
+		return found;
+	}
+
+	for (p = 0; p < SUPPORTED_PERSONALITIES; ++p)
+		found |= qualify_syscall_name_personality(s, p, set);
+
+	return found;
+}
+
+static bool
 qualify_syscall(const char *token, struct number_set *set)
 {
 	bool ignore_fail = false;
diff --git a/bpf.c b/bpf.c
index 5b9071e..e5dc4ee 100644
--- a/bpf.c
+++ b/bpf.c
@@ -33,6 +33,7 @@
 #ifdef HAVE_LINUX_BPF_H
 # include <linux/bpf.h>
 #endif
+#include <linux/filter.h>
 
 #include "bpf_attr.h"
 
@@ -45,6 +46,9 @@
 #include "xlat/bpf_map_update_elem_flags.h"
 #include "xlat/bpf_attach_type.h"
 #include "xlat/bpf_attach_flags.h"
+#include "xlat/bpf_query_flags.h"
+#include "xlat/ebpf_regs.h"
+#include "xlat/numa_node.h"
 
 #define DECL_BPF_CMD_DECODER(bpf_cmd_decoder)				\
 int									\
@@ -117,59 +121,160 @@
 	return 0;
 }
 
+struct ebpf_insn {
+	uint8_t code;
+	uint8_t dst_reg:4;
+	uint8_t src_reg:4;
+	int16_t off;
+	int32_t imm;
+};
+
+struct ebpf_insns_data {
+	unsigned int count;
+};
+
+static bool
+print_ebpf_insn(struct tcb * const tcp, void * const elem_buf,
+		const size_t elem_size, void * const data)
+{
+	struct ebpf_insns_data *eid = data;
+	struct ebpf_insn *insn = elem_buf;
+
+	if (eid->count++ >= BPF_MAXINSNS) {
+		tprints("...");
+		return false;
+	}
+
+	tprints("{code=");
+	print_bpf_filter_code(insn->code, true);
+
+	/* We can't use PRINT_FIELD_XVAL on bit fields */
+	tprints(", dst_reg=");
+	printxval_index(ebpf_regs, insn->dst_reg, "BPF_REG_???");
+	tprints(", src_reg=");
+	printxval_index(ebpf_regs, insn->src_reg, "BPF_REG_???");
+
+	PRINT_FIELD_D(", ", *insn, off);
+	PRINT_FIELD_X(", ", *insn, imm);
+	tprints("}");
+
+	return true;
+}
+
+static void
+print_ebpf_prog(struct tcb *const tcp, const uint64_t addr, const uint32_t len)
+{
+	print_big_u64_addr(addr);
+	if (abbrev(tcp)) {
+		printaddr(addr);
+	} else {
+		struct ebpf_insns_data eid = {};
+		struct ebpf_insn insn;
+
+		print_array(tcp, addr, len, &insn, sizeof(insn),
+			    tfetch_mem, print_ebpf_insn, &eid);
+	}
+}
+
 BEGIN_BPF_CMD_DECODER(BPF_MAP_CREATE)
 {
-	PRINT_FIELD_XVAL("{", attr, map_type, bpf_map_types,
-			 "BPF_MAP_TYPE_???");
+	PRINT_FIELD_XVAL_INDEX("{", attr, map_type, bpf_map_types,
+			       "BPF_MAP_TYPE_???");
 	PRINT_FIELD_U(", ", attr, key_size);
 	PRINT_FIELD_U(", ", attr, value_size);
 	PRINT_FIELD_U(", ", attr, max_entries);
+
+	/* map_flags field was added in Linux commit v4.6-rc1~91^2~108^2~6. */
+	if (len <= offsetof(struct BPF_MAP_CREATE_struct, map_flags))
+		break;
 	PRINT_FIELD_FLAGS(", ", attr, map_flags, bpf_map_flags, "BPF_F_???");
+
+	/*
+	 * inner_map_fd field was added in Linux commit
+	 * v4.12-rc1~64^3~373^2~2.
+	 */
+	if (len <= offsetof(struct BPF_MAP_CREATE_struct, inner_map_fd))
+		break;
 	PRINT_FIELD_FD(", ", attr, inner_map_fd, tcp);
-	if (attr.map_flags & BPF_F_NUMA_NODE)
-		PRINT_FIELD_U(", ", attr, numa_node);
+
+	/* numa_node field was added in Linux commit v4.14-rc1~130^2~196^2~1. */
+	if (len <= offsetof(struct BPF_MAP_CREATE_struct, numa_node))
+		break;
+	if (attr.map_flags & BPF_F_NUMA_NODE) {
+		/*
+		 * Kernel uses the value of -1 as a designation for "no NUMA
+		 * node specified", and even uses NUMA_NO_NODE constant;
+		 * however, the constant definition is not a part of UAPI
+		 * headers, thus we can't simply print this named constant
+		 * instead of the value. Let's force verbose xlat style instead
+		 * in order to provide the information for the user while
+		 * not hampering the availability to derive the actual value
+		 * without the access to the kernel headers.
+		 */
+		tprints(", numa_node=");
+		printxvals_ex(attr.numa_node, NULL,
+			      XLAT_STYLE_FMT_U | XLAT_STYLE_VERBOSE,
+			      numa_node, NULL);
+	}
+
+	/* map_name field was added in Linux commit v4.15-rc1~84^2~605^2~3. */
+	if (len <= offsetof(struct BPF_MAP_CREATE_struct, map_name))
+		break;
+	PRINT_FIELD_CSTRING_SZ(", ", attr, map_name,
+			       MIN(sizeof(attr.map_name),
+				   len - offsetof(struct BPF_MAP_CREATE_struct,
+						  map_name)));
+
+	/*
+	 * map_ifindex field was added in Linux commit
+	 * v4.16-rc1~123^2~145^2~5^2~8.
+	 */
+	if (len <= offsetof(struct BPF_MAP_CREATE_struct, map_ifindex))
+		break;
+	PRINT_FIELD_IFINDEX(", ", attr, map_ifindex);
 }
 END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD)
 
 BEGIN_BPF_CMD_DECODER(BPF_MAP_LOOKUP_ELEM)
 {
 	PRINT_FIELD_FD("{", attr, map_fd, tcp);
-	PRINT_FIELD_X(", ", attr, key);
-	PRINT_FIELD_X(", ", attr, value);
+	PRINT_FIELD_ADDR64(", ", attr, key);
+	PRINT_FIELD_ADDR64(", ", attr, value);
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
 BEGIN_BPF_CMD_DECODER(BPF_MAP_UPDATE_ELEM)
 {
 	PRINT_FIELD_FD("{", attr, map_fd, tcp);
-	PRINT_FIELD_X(", ", attr, key);
-	PRINT_FIELD_X(", ", attr, value);
-	PRINT_FIELD_XVAL(", ", attr, flags, bpf_map_update_elem_flags,
-			 "BPF_???");
+	PRINT_FIELD_ADDR64(", ", attr, key);
+	PRINT_FIELD_ADDR64(", ", attr, value);
+	PRINT_FIELD_XVAL_INDEX(", ", attr, flags, bpf_map_update_elem_flags,
+			       "BPF_???");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
 BEGIN_BPF_CMD_DECODER(BPF_MAP_DELETE_ELEM)
 {
 	PRINT_FIELD_FD("{", attr, map_fd, tcp);
-	PRINT_FIELD_X(", ", attr, key);
+	PRINT_FIELD_ADDR64(", ", attr, key);
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
 BEGIN_BPF_CMD_DECODER(BPF_MAP_GET_NEXT_KEY)
 {
 	PRINT_FIELD_FD("{", attr, map_fd, tcp);
-	PRINT_FIELD_X(", ", attr, key);
-	PRINT_FIELD_X(", ", attr, next_key);
+	PRINT_FIELD_ADDR64(", ", attr, key);
+	PRINT_FIELD_ADDR64(", ", attr, next_key);
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
 BEGIN_BPF_CMD_DECODER(BPF_PROG_LOAD)
 {
-	PRINT_FIELD_XVAL("{", attr, prog_type, bpf_prog_types,
-			 "BPF_PROG_TYPE_???");
+	PRINT_FIELD_XVAL_INDEX("{", attr, prog_type, bpf_prog_types,
+			       "BPF_PROG_TYPE_???");
 	PRINT_FIELD_U(", ", attr, insn_cnt);
-	PRINT_FIELD_X(", ", attr, insns);
+	tprints(", insns=");
+	print_ebpf_prog(tcp, attr.insns, attr.insn_cnt);
 
 	tprintf(", license=");
 	print_big_u64_addr(attr.license);
@@ -180,7 +285,9 @@
 		break;
 	PRINT_FIELD_U(", ", attr, log_level);
 	PRINT_FIELD_U(", ", attr, log_size);
-	PRINT_FIELD_X(", ", attr, log_buf);
+	tprintf(", log_buf=");
+	print_big_u64_addr(attr.log_buf);
+	printstr_ex(tcp, attr.log_buf, attr.log_size, QUOTE_0_TERMINATED);
 
 	/* kern_version field was added in Linux commit v4.1-rc1~84^2~50.  */
 	if (len <= offsetof(struct BPF_PROG_LOAD_struct, kern_version))
@@ -194,6 +301,32 @@
 	if (len <= offsetof(struct BPF_PROG_LOAD_struct, prog_flags))
 		break;
 	PRINT_FIELD_FLAGS(", ", attr, prog_flags, bpf_prog_flags, "BPF_F_???");
+
+	/* prog_name field was added in Linux commit v4.15-rc1~84^2~605^2~4. */
+	if (len <= offsetof(struct BPF_PROG_LOAD_struct, prog_name))
+		break;
+	PRINT_FIELD_CSTRING_SZ(", ", attr, prog_name,
+			       MIN(sizeof(attr.prog_name),
+				   len - offsetof(struct BPF_PROG_LOAD_struct,
+						   prog_name)));
+
+	/*
+	 * prog_ifindex field was added as prog_target_ifindex in Linux commit
+	 * v4.15-rc1~84^2~127^2~13 and renamed to its current name in
+	 * v4.15-rc1~15^2~5^2~3^2~7.
+	 */
+	if (len <= offsetof(struct BPF_PROG_LOAD_struct, prog_ifindex))
+		break;
+	PRINT_FIELD_IFINDEX(", ", attr, prog_ifindex);
+
+	/*
+	 * expected_attach_type was added in Linux commit
+	 * v4.17-rc1~148^2~19^2^2~8.
+	 */
+	if (len <= offsetof(struct BPF_PROG_LOAD_struct, expected_attach_type))
+		break;
+	PRINT_FIELD_XVAL(", ", attr, expected_attach_type, bpf_attach_type,
+			 "BPF_???");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD)
 
@@ -204,10 +337,10 @@
 	printpath(tcp, attr.pathname);
 
 	PRINT_FIELD_FD(", ", attr, bpf_fd, tcp);
-	if (len <= offsetofend(struct BPF_OBJ_PIN_struct, bpf_fd))
-		break;
 
 	/* file_flags field was added in Linux v4.15-rc1~84^2~384^2~4 */
+	if (len <= offsetof(struct BPF_OBJ_PIN_struct, file_flags))
+		break;
 	PRINT_FIELD_FLAGS(", ", attr, file_flags, bpf_file_mode_flags,
 			  "BPF_F_???");
 }
@@ -219,7 +352,8 @@
 {
 	PRINT_FIELD_FD("{", attr, target_fd, tcp);
 	PRINT_FIELD_FD(", ", attr, attach_bpf_fd, tcp);
-	PRINT_FIELD_XVAL(", ", attr, attach_type, bpf_attach_type, "BPF_???");
+	PRINT_FIELD_XVAL_INDEX(", ", attr, attach_type, bpf_attach_type,
+			       "BPF_???");
 	PRINT_FIELD_FLAGS(", ", attr, attach_flags, bpf_attach_flags,
 			  "BPF_F_???");
 }
@@ -228,7 +362,8 @@
 BEGIN_BPF_CMD_DECODER(BPF_PROG_DETACH)
 {
 	PRINT_FIELD_FD("{", attr, target_fd, tcp);
-	PRINT_FIELD_XVAL(", ", attr, attach_type, bpf_attach_type, "BPF_???");
+	PRINT_FIELD_XVAL_INDEX(", ", attr, attach_type, bpf_attach_type,
+			       "BPF_???");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
@@ -238,8 +373,8 @@
 	PRINT_FIELD_U(", ", attr, retval);
 	PRINT_FIELD_U(", ", attr, data_size_in);
 	PRINT_FIELD_U(", ", attr, data_size_out);
-	PRINT_FIELD_X(", ", attr, data_in);
-	PRINT_FIELD_X(", ", attr, data_out);
+	PRINT_FIELD_ADDR64(", ", attr, data_in);
+	PRINT_FIELD_ADDR64(", ", attr, data_out);
 	PRINT_FIELD_U(", ", attr, repeat);
 	PRINT_FIELD_U(", ", attr, duration);
 	tprints("}");
@@ -250,10 +385,10 @@
 {
 	PRINT_FIELD_U("{", attr, start_id);
 	PRINT_FIELD_U(", ", attr, next_id);
-	if (len <= offsetofend(struct BPF_PROG_GET_NEXT_ID_struct, next_id))
-		break;
 
 	/* open_flags field has been added in Linux v4.15-rc1~84^2~384^2~4 */
+	if (len <= offsetof(struct BPF_PROG_GET_NEXT_ID_struct, open_flags))
+		break;
 	PRINT_FIELD_FLAGS(", ", attr, open_flags, bpf_file_mode_flags,
 			  "BPF_F_???");
 }
@@ -265,10 +400,10 @@
 {
 	PRINT_FIELD_U("{", attr, prog_id);
 	PRINT_FIELD_U(", ", attr, next_id);
-	if (len <= offsetofend(struct BPF_PROG_GET_FD_BY_ID_struct, next_id))
-		break;
 
 	/* open_flags field has been added in Linux v4.15-rc1~84^2~384^2~4 */
+	if (len <= offsetof(struct BPF_PROG_GET_FD_BY_ID_struct, open_flags))
+		break;
 	PRINT_FIELD_FLAGS(", ", attr, open_flags, bpf_file_mode_flags,
 			  "BPF_F_???");
 }
@@ -278,23 +413,299 @@
 {
 	PRINT_FIELD_U("{", attr, map_id);
 	PRINT_FIELD_U(", ", attr, next_id);
-	if (len <= offsetofend(struct BPF_MAP_GET_FD_BY_ID_struct, next_id))
-		break;
 
 	/* open_flags field has been added in Linux v4.15-rc1~84^2~384^2~4 */
+	if (len <= offsetof(struct BPF_MAP_GET_FD_BY_ID_struct, open_flags))
+		break;
 	PRINT_FIELD_FLAGS(", ", attr, open_flags, bpf_file_mode_flags,
 			  "BPF_F_???");
 }
 END_BPF_CMD_DECODER(RVAL_DECODED)
 
-BEGIN_BPF_CMD_DECODER(BPF_OBJ_GET_INFO_BY_FD)
+struct obj_get_info_saved;
+typedef void (*print_bpf_obj_info_fn)(struct tcb *,
+				      uint32_t bpf_fd,
+				      const char *info_buf,
+				      uint32_t size,
+				      struct obj_get_info_saved *saved);
+
+struct obj_get_info_saved {
+	print_bpf_obj_info_fn print_fn;
+
+	uint32_t info_len;
+
+	uint32_t jited_prog_len;
+	uint32_t xlated_prog_len;
+	uint32_t nr_map_ids;
+};
+
+static void
+print_bpf_map_info(struct tcb * const tcp, uint32_t bpf_fd,
+		   const char *info_buf, uint32_t size,
+		   struct obj_get_info_saved *saved)
 {
-	PRINT_FIELD_FD("{info={", attr, bpf_fd, tcp);
-	PRINT_FIELD_U(", ", attr, info_len);
-	PRINT_FIELD_X(", ", attr, info);
+	if (entering(tcp))
+		return;
+
+	struct bpf_map_info_struct info = { 0 };
+	const unsigned int len = MIN(size, bpf_map_info_struct_size);
+
+	memcpy(&info, info_buf, len);
+
+	PRINT_FIELD_XVAL("{", info, type, bpf_map_types, "BPF_MAP_TYPE_???");
+	PRINT_FIELD_U(", ", info, id);
+	PRINT_FIELD_U(", ", info, key_size);
+	PRINT_FIELD_U(", ", info, value_size);
+	PRINT_FIELD_U(", ", info, max_entries);
+	PRINT_FIELD_FLAGS(", ", info, map_flags, bpf_map_flags, "BPF_F_???");
+
+	/*
+	 * "name" field was introduced by Linux commit v4.15-rc1~84^2~605^2~3.
+	 */
+	if (len <= offsetof(struct bpf_map_info_struct, name))
+		goto print_bpf_map_info_end;
+	PRINT_FIELD_CSTRING(", ", info, name);
+
+	/*
+	 * ifindex, netns_dev, and netns_ino fields were introduced
+	 * by Linux commit v4.16-rc1~123^2~109^2~5^2~4.
+	 */
+	if (len <= offsetof(struct bpf_map_info_struct, ifindex))
+		goto print_bpf_map_info_end;
+	PRINT_FIELD_IFINDEX(", ", info, ifindex);
+	PRINT_FIELD_DEV(", ", info, netns_dev);
+	PRINT_FIELD_U(", ", info, netns_ino);
+
+	decode_attr_extra_data(tcp, info_buf, size, bpf_map_info_struct_size);
+
+print_bpf_map_info_end:
 	tprints("}");
 }
-END_BPF_CMD_DECODER(RVAL_DECODED | RVAL_FD)
+
+static void
+print_bpf_prog_info(struct tcb * const tcp, uint32_t bpf_fd,
+		    const char *info_buf, uint32_t size,
+		    struct obj_get_info_saved *saved)
+{
+	struct bpf_prog_info_struct info = { 0 };
+	const unsigned int len = MIN(size, bpf_prog_info_struct_size);
+	uint64_t map_id_buf;
+
+	memcpy(&info, info_buf, len);
+
+	if (entering(tcp)) {
+		saved->jited_prog_len = info.jited_prog_len;
+		saved->xlated_prog_len = info.xlated_prog_len;
+		saved->nr_map_ids = info.nr_map_ids;
+
+		return;
+	}
+
+	PRINT_FIELD_XVAL("{", info, type, bpf_prog_types, "BPF_PROG_TYPE_???");
+	PRINT_FIELD_U(", ", info, id);
+	PRINT_FIELD_HEX_ARRAY(", ", info, tag);
+
+	tprints(", jited_prog_len=");
+	if (saved->jited_prog_len != info.jited_prog_len)
+		tprintf("%" PRIu32 " => ", saved->jited_prog_len);
+	tprintf("%" PRIu32, info.jited_prog_len);
+
+	tprints(", jited_prog_insns=");
+	print_big_u64_addr(info.jited_prog_insns);
+	printstr_ex(tcp, info.jited_prog_insns, info.jited_prog_len,
+		    QUOTE_FORCE_HEX);
+
+	tprints(", xlated_prog_len=");
+	if (saved->xlated_prog_len != info.xlated_prog_len)
+		tprintf("%" PRIu32 " => ", saved->xlated_prog_len);
+	tprintf("%" PRIu32, info.xlated_prog_len);
+
+	tprints(", xlated_prog_insns=");
+	print_ebpf_prog(tcp, info.xlated_prog_insns,
+			MIN(saved->xlated_prog_len, info.xlated_prog_len) / 8);
+
+	/*
+	 * load_time, created_by_uid, nr_map_ids, map_ids, and name fields
+	 * were introduced by Linux commit v4.15-rc1~84^2~605^2~4.
+	 */
+	if (len <= offsetof(struct bpf_prog_info_struct, load_time))
+		goto print_bpf_prog_info_end;
+	PRINT_FIELD_U(", ", info, load_time);
+	PRINT_FIELD_UID(", ", info, created_by_uid);
+
+	tprints(", nr_map_ids=");
+	if (saved->nr_map_ids != info.nr_map_ids)
+		tprintf("%" PRIu32 " => ", saved->nr_map_ids);
+	tprintf("%" PRIu32, info.nr_map_ids);
+
+	tprints(", map_ids=");
+	print_big_u64_addr(info.map_ids);
+	print_array(tcp, info.map_ids, MIN(saved->nr_map_ids, info.nr_map_ids),
+		    &map_id_buf, sizeof(map_id_buf),
+		    tfetch_mem, print_uint32_array_member, 0);
+
+	PRINT_FIELD_CSTRING(", ", info, name);
+
+	/*
+	 * ifindex, netns_dev, and netns_ino fields were introduced
+	 * by Linux commit v4.16-rc1~123^2~227^2~5^2~2.
+	 */
+	if (len <= offsetof(struct bpf_prog_info_struct, ifindex))
+		goto print_bpf_prog_info_end;
+	PRINT_FIELD_IFINDEX(", ", info, ifindex);
+	PRINT_FIELD_DEV(", ", info, netns_dev);
+	PRINT_FIELD_U(", ", info, netns_ino);
+
+	decode_attr_extra_data(tcp, info_buf, size, bpf_prog_info_struct_size);
+
+print_bpf_prog_info_end:
+	tprints("}");
+}
+
+static const char *
+fetch_bpf_obj_info(struct tcb * const tcp, uint64_t info, uint32_t size)
+{
+	static char *info_buf;
+
+	if (!info_buf)
+		info_buf = xmalloc(get_pagesize());
+
+	memset(info_buf, 0, get_pagesize());
+
+	if (size > 0 && size <= get_pagesize()
+	    && !umoven(tcp, info, size, info_buf))
+		return info_buf;
+
+	return NULL;
+}
+
+static void
+print_bpf_obj_info_addr(struct tcb * const tcp, uint64_t addr)
+{
+	if (exiting(tcp))
+		printaddr64(addr);
+}
+
+static void
+print_bpf_obj_info(struct tcb * const tcp, uint32_t bpf_fd, uint64_t info,
+		   uint32_t size, struct obj_get_info_saved *saved)
+{
+	if (abbrev(tcp)) {
+		print_bpf_obj_info_addr(tcp, info);
+		return;
+	}
+
+	static struct {
+		const char *id;
+		print_bpf_obj_info_fn print_fn;
+	} obj_printers[] = {
+		{ "anon_inode:bpf-map", print_bpf_map_info },
+		{ "anon_inode:bpf-prog", print_bpf_prog_info }
+	};
+
+	if (entering(tcp)) {
+		char path[PATH_MAX + 1];
+
+		if (getfdpath(tcp, bpf_fd, path, sizeof(path)) > 0) {
+			for (size_t i = 0; i < ARRAY_SIZE(obj_printers); ++i) {
+				if (!strcmp(path, obj_printers[i].id)) {
+					saved->print_fn =
+						obj_printers[i].print_fn;
+					break;
+				}
+			}
+		}
+	}
+
+	if (!saved || !saved->print_fn) {
+		print_bpf_obj_info_addr(tcp, info);
+		return;
+	}
+
+	const char *info_buf = fetch_bpf_obj_info(tcp, info, size);
+
+	if (info_buf)
+		saved->print_fn(tcp, bpf_fd, info_buf, size, saved);
+	else
+		print_bpf_obj_info_addr(tcp, info);
+}
+
+BEGIN_BPF_CMD_DECODER(BPF_OBJ_GET_INFO_BY_FD)
+{
+	struct obj_get_info_saved *saved;
+
+	if (entering(tcp)) {
+		saved = xcalloc(1, sizeof(*saved));
+		saved->info_len = attr.info_len;
+		set_tcb_priv_data(tcp, saved, free);
+
+		PRINT_FIELD_FD("{info={", attr, bpf_fd, tcp);
+		PRINT_FIELD_U(", ", attr, info_len);
+	} else {
+		saved = get_tcb_priv_data(tcp);
+
+		if (saved && (saved->info_len != attr.info_len))
+			tprintf(" => %u", attr.info_len);
+
+		tprintf(", info=");
+	}
+
+	print_bpf_obj_info(tcp, attr.bpf_fd, attr.info, attr.info_len, saved);
+
+	if (entering(tcp))
+		return 0;
+
+	tprints("}");
+}
+END_BPF_CMD_DECODER(RVAL_DECODED)
+
+BEGIN_BPF_CMD_DECODER(BPF_PROG_QUERY)
+{
+	uint32_t prog_id_buf;
+
+	if (entering(tcp)) {
+		PRINT_FIELD_FD("{query={", attr, target_fd, tcp);
+		PRINT_FIELD_XVAL_INDEX(", ", attr, attach_type, bpf_attach_type,
+				       "BPF_???");
+		PRINT_FIELD_FLAGS(", ", attr, query_flags, bpf_query_flags,
+				  "BPF_F_QUERY_???");
+		PRINT_FIELD_FLAGS(", ", attr, attach_flags, bpf_attach_flags,
+				  "BPF_F_???");
+
+		tprints(", prog_ids=");
+
+		set_tcb_priv_ulong(tcp, attr.prog_cnt);
+
+		return 0;
+	}
+
+	print_big_u64_addr(attr.prog_ids);
+	print_array(tcp, attr.prog_ids, attr.prog_cnt, &prog_id_buf,
+		    sizeof(prog_id_buf), tfetch_mem,
+		    print_uint32_array_member, 0);
+
+	tprints(", prog_cnt=");
+	const uint32_t prog_cnt_entering = get_tcb_priv_ulong(tcp);
+	if (prog_cnt_entering != attr.prog_cnt)
+		tprintf("%" PRIu32 " => ", prog_cnt_entering);
+	tprintf("%" PRIu32, attr.prog_cnt);
+	tprints("}");
+}
+END_BPF_CMD_DECODER(RVAL_DECODED)
+
+BEGIN_BPF_CMD_DECODER(BPF_RAW_TRACEPOINT_OPEN)
+{
+	enum { TP_NAME_SIZE = 128 };
+
+	tprintf("{raw_tracepoint={name=");
+	print_big_u64_addr(attr.name);
+	printstr_ex(tcp, attr.name, TP_NAME_SIZE, QUOTE_0_TERMINATED);
+
+	PRINT_FIELD_FD(", ", attr, prog_fd, tcp);
+
+	tprints("}");
+}
+END_BPF_CMD_DECODER(RVAL_DECODED)
 
 SYS_FUNC(bpf)
 {
@@ -315,38 +726,36 @@
 		BPF_CMD_ENTRY(BPF_PROG_GET_FD_BY_ID),
 		BPF_CMD_ENTRY(BPF_MAP_GET_FD_BY_ID),
 		BPF_CMD_ENTRY(BPF_OBJ_GET_INFO_BY_FD),
+		BPF_CMD_ENTRY(BPF_PROG_QUERY),
+		BPF_CMD_ENTRY(BPF_RAW_TRACEPOINT_OPEN),
 	};
 
 	const unsigned int cmd = tcp->u_arg[0];
 	const kernel_ulong_t addr = tcp->u_arg[1];
 	const unsigned int size = tcp->u_arg[2];
-	int rc;
+	int rc = RVAL_DECODED;
 
 	if (entering(tcp)) {
+		printxval_index(bpf_commands, cmd, "BPF_???");
+		tprints(", ");
+	}
+
+	if (size > 0
+	    && size <= get_pagesize()
+	    && cmd < ARRAY_SIZE(bpf_cmd_decoders)
+	    && bpf_cmd_decoders[cmd]) {
 		static char *buf;
 
 		if (!buf)
 			buf = xmalloc(get_pagesize());
 
-		printxval(bpf_commands, cmd, "BPF_???");
-		tprints(", ");
-
-		if (size > 0
-		    && size <= get_pagesize()
-		    && cmd < ARRAY_SIZE(bpf_cmd_decoders)
-		    && bpf_cmd_decoders[cmd]) {
-			rc = umoven_or_printaddr(tcp, addr, size, buf)
-			     ? RVAL_DECODED
-			     : bpf_cmd_decoders[cmd](tcp, addr, size, buf);
-		} else {
-			printaddr(addr);
-			rc = RVAL_DECODED;
-		}
+		if (!umoven_or_printaddr_ignore_syserror(tcp, addr, size, buf))
+			rc = bpf_cmd_decoders[cmd](tcp, addr, size, buf);
 	} else {
-		rc = bpf_cmd_decoders[cmd](tcp, addr, size, NULL) | RVAL_DECODED;
+		printaddr(addr);
 	}
 
-	if (rc & RVAL_DECODED)
+	if (exiting(tcp) || (rc & RVAL_DECODED))
 		tprintf(", %u", size);
 
 	return rc;
diff --git a/bpf_attr.h b/bpf_attr.h
index 6649683..45bb30a 100644
--- a/bpf_attr.h
+++ b/bpf_attr.h
@@ -28,6 +28,33 @@
 #ifndef STRACE_BPF_ATTR_H
 #define STRACE_BPF_ATTR_H
 
+/*
+ * The policy is that all fields of type uint64_t in this header file
+ * must have ATTRIBUTE_ALIGNED(8).
+ *
+ * This should not cause any contradictions with <linux/bpf.h>
+ * unless the latter is buggy.
+ *
+ * By word "buggy" I mean containing such changes as Linux kernel commit
+ * v4.16-rc1~123^2~109^2~5^2~4.
+ */
+
+#ifndef BPF_OBJ_NAME_LEN
+# define BPF_OBJ_NAME_LEN 16U
+#else
+# if BPF_OBJ_NAME_LEN != 16U
+#  error "Unexpected value of BPF_OBJ_NAME_LEN"
+# endif
+#endif
+
+#ifndef BPF_TAG_SIZE
+# define BPF_TAG_SIZE 8
+#else
+# if BPF_TAG_SIZE != 8
+#  error "Unexpected value of BPF_TAG_SIZE"
+# endif
+#endif
+
 struct BPF_MAP_CREATE_struct {
 	uint32_t map_type;
 	uint32_t key_size;
@@ -36,11 +63,13 @@
 	uint32_t map_flags;
 	uint32_t inner_map_fd;
 	uint32_t numa_node;
+	char     map_name[BPF_OBJ_NAME_LEN];
+	uint32_t map_ifindex;
 };
 
 #define BPF_MAP_CREATE_struct_size \
 	sizeof(struct BPF_MAP_CREATE_struct)
-#define expected_BPF_MAP_CREATE_struct_size 28
+#define expected_BPF_MAP_CREATE_struct_size 48
 
 struct BPF_MAP_LOOKUP_ELEM_struct {
 	uint32_t map_fd;
@@ -56,7 +85,7 @@
 	uint32_t map_fd;
 	uint64_t ATTRIBUTE_ALIGNED(8) key;
 	uint64_t ATTRIBUTE_ALIGNED(8) value;
-	uint64_t flags;
+	uint64_t ATTRIBUTE_ALIGNED(8) flags;
 };
 
 #define BPF_MAP_UPDATE_ELEM_struct_size \
@@ -92,11 +121,14 @@
 	uint64_t ATTRIBUTE_ALIGNED(8) log_buf;
 	uint32_t kern_version;
 	uint32_t prog_flags;
+	char     prog_name[BPF_OBJ_NAME_LEN];
+	uint32_t prog_ifindex;
+	uint32_t expected_attach_type;
 };
 
 #define BPF_PROG_LOAD_struct_size \
-	sizeof(struct BPF_PROG_LOAD_struct)
-#define expected_BPF_PROG_LOAD_struct_size 48
+	offsetofend(struct BPF_PROG_LOAD_struct, expected_attach_type)
+#define expected_BPF_PROG_LOAD_struct_size 72
 
 struct BPF_OBJ_PIN_struct {
 	uint64_t ATTRIBUTE_ALIGNED(8) pathname;
@@ -190,4 +222,73 @@
 	sizeof(struct BPF_OBJ_GET_INFO_BY_FD_struct)
 #define expected_BPF_OBJ_GET_INFO_BY_FD_struct_size 16
 
+struct BPF_PROG_QUERY_struct /* query */ {
+	uint32_t target_fd;
+	uint32_t attach_type;
+	uint32_t query_flags;
+	uint32_t attach_flags;
+	uint64_t ATTRIBUTE_ALIGNED(8) prog_ids;
+	uint32_t prog_cnt;
+};
+
+#define BPF_PROG_QUERY_struct_size \
+	offsetofend(struct BPF_PROG_QUERY_struct, prog_cnt)
+#define expected_BPF_PROG_QUERY_struct_size 28
+
+struct BPF_RAW_TRACEPOINT_OPEN_struct /* raw_tracepoint */ {
+	uint64_t ATTRIBUTE_ALIGNED(8) name;
+	uint32_t prog_fd;
+};
+
+#define BPF_RAW_TRACEPOINT_OPEN_struct_size \
+	offsetofend(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd)
+#define expected_BPF_RAW_TRACEPOINT_OPEN_struct_size 12
+
+struct bpf_map_info_struct {
+	uint32_t type;
+	uint32_t id;
+	uint32_t key_size;
+	uint32_t value_size;
+	uint32_t max_entries;
+	uint32_t map_flags;
+	char     name[BPF_OBJ_NAME_LEN];
+	uint32_t ifindex;
+	/*
+	 * The kernel UAPI is broken by Linux commit
+	 * v4.16-rc1~123^2~109^2~5^2~4 .
+	 */
+	uint64_t ATTRIBUTE_ALIGNED(8) netns_dev; /* skip check */
+	uint64_t ATTRIBUTE_ALIGNED(8) netns_ino; /* skip check */
+};
+
+#define bpf_map_info_struct_size \
+	sizeof(struct bpf_map_info_struct)
+#define expected_bpf_map_info_struct_size 64
+
+struct bpf_prog_info_struct {
+	uint32_t type;
+	uint32_t id;
+	uint8_t  tag[BPF_TAG_SIZE];
+	uint32_t jited_prog_len;
+	uint32_t xlated_prog_len;
+	uint64_t ATTRIBUTE_ALIGNED(8) jited_prog_insns;
+	uint64_t ATTRIBUTE_ALIGNED(8) xlated_prog_insns;
+	uint64_t ATTRIBUTE_ALIGNED(8) load_time;
+	uint32_t created_by_uid;
+	uint32_t nr_map_ids;
+	uint64_t ATTRIBUTE_ALIGNED(8) map_ids;
+	char     name[BPF_OBJ_NAME_LEN];
+	uint32_t ifindex;
+	/*
+	 * The kernel UAPI is broken by Linux commit
+	 * v4.16-rc1~123^2~227^2~5^2~2 .
+	 */
+	uint64_t ATTRIBUTE_ALIGNED(8) netns_dev; /* skip check */
+	uint64_t ATTRIBUTE_ALIGNED(8) netns_ino; /* skip check */
+};
+
+#define bpf_prog_info_struct_size \
+	sizeof(struct bpf_prog_info_struct)
+#define expected_bpf_prog_info_struct_size 104
+
 #endif /* !STRACE_BPF_ATTR_H */
diff --git a/bpf_attr_check.c b/bpf_attr_check.c
index ea0d66d..cae1e71 100644
--- a/bpf_attr_check.c
+++ b/bpf_attr_check.c
@@ -56,6 +56,20 @@
 		      "BPF_MAP_CREATE_struct.numa_node offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_NUMA_NODE */
 
+# ifdef HAVE_UNION_BPF_ATTR_MAP_NAME
+	static_assert(SoM(struct BPF_MAP_CREATE_struct, map_name) == SoM(union bpf_attr, map_name),
+		      "BPF_MAP_CREATE_struct.map_name size mismatch");
+	static_assert(offsetof(struct BPF_MAP_CREATE_struct, map_name) == offsetof(union bpf_attr, map_name),
+		      "BPF_MAP_CREATE_struct.map_name offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_MAP_NAME */
+
+# ifdef HAVE_UNION_BPF_ATTR_MAP_IFINDEX
+	static_assert(SoM(struct BPF_MAP_CREATE_struct, map_ifindex) == SoM(union bpf_attr, map_ifindex),
+		      "BPF_MAP_CREATE_struct.map_ifindex size mismatch");
+	static_assert(offsetof(struct BPF_MAP_CREATE_struct, map_ifindex) == offsetof(union bpf_attr, map_ifindex),
+		      "BPF_MAP_CREATE_struct.map_ifindex offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_MAP_IFINDEX */
+
 static_assert(BPF_MAP_CREATE_struct_size == expected_BPF_MAP_CREATE_struct_size,
 	      "BPF_MAP_CREATE_struct_size mismatch");
 
@@ -218,6 +232,27 @@
 		      "BPF_PROG_LOAD_struct.prog_flags offset mismatch");
 # endif /* HAVE_UNION_BPF_ATTR_PROG_FLAGS */
 
+# ifdef HAVE_UNION_BPF_ATTR_PROG_NAME
+	static_assert(SoM(struct BPF_PROG_LOAD_struct, prog_name) == SoM(union bpf_attr, prog_name),
+		      "BPF_PROG_LOAD_struct.prog_name size mismatch");
+	static_assert(offsetof(struct BPF_PROG_LOAD_struct, prog_name) == offsetof(union bpf_attr, prog_name),
+		      "BPF_PROG_LOAD_struct.prog_name offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_PROG_NAME */
+
+# ifdef HAVE_UNION_BPF_ATTR_PROG_IFINDEX
+	static_assert(SoM(struct BPF_PROG_LOAD_struct, prog_ifindex) == SoM(union bpf_attr, prog_ifindex),
+		      "BPF_PROG_LOAD_struct.prog_ifindex size mismatch");
+	static_assert(offsetof(struct BPF_PROG_LOAD_struct, prog_ifindex) == offsetof(union bpf_attr, prog_ifindex),
+		      "BPF_PROG_LOAD_struct.prog_ifindex offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_PROG_IFINDEX */
+
+# ifdef HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE
+	static_assert(SoM(struct BPF_PROG_LOAD_struct, expected_attach_type) == SoM(union bpf_attr, expected_attach_type),
+		      "BPF_PROG_LOAD_struct.expected_attach_type size mismatch");
+	static_assert(offsetof(struct BPF_PROG_LOAD_struct, expected_attach_type) == offsetof(union bpf_attr, expected_attach_type),
+		      "BPF_PROG_LOAD_struct.expected_attach_type offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE */
+
 static_assert(BPF_PROG_LOAD_struct_size == expected_BPF_PROG_LOAD_struct_size,
 	      "BPF_PROG_LOAD_struct_size mismatch");
 
@@ -455,4 +490,219 @@
 static_assert(BPF_OBJ_GET_INFO_BY_FD_struct_size == expected_BPF_OBJ_GET_INFO_BY_FD_struct_size,
 	      "BPF_OBJ_GET_INFO_BY_FD_struct_size mismatch");
 
+# ifdef HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD
+	static_assert(SoM(struct BPF_PROG_QUERY_struct, target_fd) == SoM(union bpf_attr, query.target_fd),
+		      "BPF_PROG_QUERY_struct.target_fd size mismatch");
+	static_assert(offsetof(struct BPF_PROG_QUERY_struct, target_fd) == offsetof(union bpf_attr, query.target_fd),
+		      "BPF_PROG_QUERY_struct.target_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD */
+
+# ifdef HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE
+	static_assert(SoM(struct BPF_PROG_QUERY_struct, attach_type) == SoM(union bpf_attr, query.attach_type),
+		      "BPF_PROG_QUERY_struct.attach_type size mismatch");
+	static_assert(offsetof(struct BPF_PROG_QUERY_struct, attach_type) == offsetof(union bpf_attr, query.attach_type),
+		      "BPF_PROG_QUERY_struct.attach_type offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE */
+
+# ifdef HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS
+	static_assert(SoM(struct BPF_PROG_QUERY_struct, query_flags) == SoM(union bpf_attr, query.query_flags),
+		      "BPF_PROG_QUERY_struct.query_flags size mismatch");
+	static_assert(offsetof(struct BPF_PROG_QUERY_struct, query_flags) == offsetof(union bpf_attr, query.query_flags),
+		      "BPF_PROG_QUERY_struct.query_flags offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS */
+
+# ifdef HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS
+	static_assert(SoM(struct BPF_PROG_QUERY_struct, attach_flags) == SoM(union bpf_attr, query.attach_flags),
+		      "BPF_PROG_QUERY_struct.attach_flags size mismatch");
+	static_assert(offsetof(struct BPF_PROG_QUERY_struct, attach_flags) == offsetof(union bpf_attr, query.attach_flags),
+		      "BPF_PROG_QUERY_struct.attach_flags offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS */
+
+# ifdef HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS
+	static_assert(SoM(struct BPF_PROG_QUERY_struct, prog_ids) == SoM(union bpf_attr, query.prog_ids),
+		      "BPF_PROG_QUERY_struct.prog_ids size mismatch");
+	static_assert(offsetof(struct BPF_PROG_QUERY_struct, prog_ids) == offsetof(union bpf_attr, query.prog_ids),
+		      "BPF_PROG_QUERY_struct.prog_ids offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS */
+
+# ifdef HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT
+	static_assert(SoM(struct BPF_PROG_QUERY_struct, prog_cnt) == SoM(union bpf_attr, query.prog_cnt),
+		      "BPF_PROG_QUERY_struct.prog_cnt size mismatch");
+	static_assert(offsetof(struct BPF_PROG_QUERY_struct, prog_cnt) == offsetof(union bpf_attr, query.prog_cnt),
+		      "BPF_PROG_QUERY_struct.prog_cnt offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT */
+
+static_assert(BPF_PROG_QUERY_struct_size == expected_BPF_PROG_QUERY_struct_size,
+	      "BPF_PROG_QUERY_struct_size mismatch");
+
+# ifdef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME
+	static_assert(SoM(struct BPF_RAW_TRACEPOINT_OPEN_struct, name) == SoM(union bpf_attr, raw_tracepoint.name),
+		      "BPF_RAW_TRACEPOINT_OPEN_struct.name size mismatch");
+	static_assert(offsetof(struct BPF_RAW_TRACEPOINT_OPEN_struct, name) == offsetof(union bpf_attr, raw_tracepoint.name),
+		      "BPF_RAW_TRACEPOINT_OPEN_struct.name offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME */
+
+# ifdef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD
+	static_assert(SoM(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd) == SoM(union bpf_attr, raw_tracepoint.prog_fd),
+		      "BPF_RAW_TRACEPOINT_OPEN_struct.prog_fd size mismatch");
+	static_assert(offsetof(struct BPF_RAW_TRACEPOINT_OPEN_struct, prog_fd) == offsetof(union bpf_attr, raw_tracepoint.prog_fd),
+		      "BPF_RAW_TRACEPOINT_OPEN_struct.prog_fd offset mismatch");
+# endif /* HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD */
+
+static_assert(BPF_RAW_TRACEPOINT_OPEN_struct_size == expected_BPF_RAW_TRACEPOINT_OPEN_struct_size,
+	      "BPF_RAW_TRACEPOINT_OPEN_struct_size mismatch");
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_TYPE
+	static_assert(SoM(struct bpf_map_info_struct, type) == SoM(struct bpf_map_info, type),
+		      "bpf_map_info_struct.type size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, type) == offsetof(struct bpf_map_info, type),
+		      "bpf_map_info_struct.type offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_TYPE */
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_ID
+	static_assert(SoM(struct bpf_map_info_struct, id) == SoM(struct bpf_map_info, id),
+		      "bpf_map_info_struct.id size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, id) == offsetof(struct bpf_map_info, id),
+		      "bpf_map_info_struct.id offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_ID */
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE
+	static_assert(SoM(struct bpf_map_info_struct, key_size) == SoM(struct bpf_map_info, key_size),
+		      "bpf_map_info_struct.key_size size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, key_size) == offsetof(struct bpf_map_info, key_size),
+		      "bpf_map_info_struct.key_size offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE */
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE
+	static_assert(SoM(struct bpf_map_info_struct, value_size) == SoM(struct bpf_map_info, value_size),
+		      "bpf_map_info_struct.value_size size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, value_size) == offsetof(struct bpf_map_info, value_size),
+		      "bpf_map_info_struct.value_size offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE */
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES
+	static_assert(SoM(struct bpf_map_info_struct, max_entries) == SoM(struct bpf_map_info, max_entries),
+		      "bpf_map_info_struct.max_entries size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, max_entries) == offsetof(struct bpf_map_info, max_entries),
+		      "bpf_map_info_struct.max_entries offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES */
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS
+	static_assert(SoM(struct bpf_map_info_struct, map_flags) == SoM(struct bpf_map_info, map_flags),
+		      "bpf_map_info_struct.map_flags size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, map_flags) == offsetof(struct bpf_map_info, map_flags),
+		      "bpf_map_info_struct.map_flags offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS */
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_NAME
+	static_assert(SoM(struct bpf_map_info_struct, name) == SoM(struct bpf_map_info, name),
+		      "bpf_map_info_struct.name size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, name) == offsetof(struct bpf_map_info, name),
+		      "bpf_map_info_struct.name offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_NAME */
+
+# ifdef HAVE_STRUCT_BPF_MAP_INFO_IFINDEX
+	static_assert(SoM(struct bpf_map_info_struct, ifindex) == SoM(struct bpf_map_info, ifindex),
+		      "bpf_map_info_struct.ifindex size mismatch");
+	static_assert(offsetof(struct bpf_map_info_struct, ifindex) == offsetof(struct bpf_map_info, ifindex),
+		      "bpf_map_info_struct.ifindex offset mismatch");
+# endif /* HAVE_STRUCT_BPF_MAP_INFO_IFINDEX */
+
+static_assert(bpf_map_info_struct_size == expected_bpf_map_info_struct_size,
+	      "bpf_map_info_struct_size mismatch");
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_TYPE
+	static_assert(SoM(struct bpf_prog_info_struct, type) == SoM(struct bpf_prog_info, type),
+		      "bpf_prog_info_struct.type size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, type) == offsetof(struct bpf_prog_info, type),
+		      "bpf_prog_info_struct.type offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_TYPE */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_ID
+	static_assert(SoM(struct bpf_prog_info_struct, id) == SoM(struct bpf_prog_info, id),
+		      "bpf_prog_info_struct.id size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, id) == offsetof(struct bpf_prog_info, id),
+		      "bpf_prog_info_struct.id offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_ID */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_TAG
+	static_assert(SoM(struct bpf_prog_info_struct, tag) == SoM(struct bpf_prog_info, tag),
+		      "bpf_prog_info_struct.tag size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, tag) == offsetof(struct bpf_prog_info, tag),
+		      "bpf_prog_info_struct.tag offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_TAG */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN
+	static_assert(SoM(struct bpf_prog_info_struct, jited_prog_len) == SoM(struct bpf_prog_info, jited_prog_len),
+		      "bpf_prog_info_struct.jited_prog_len size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, jited_prog_len) == offsetof(struct bpf_prog_info, jited_prog_len),
+		      "bpf_prog_info_struct.jited_prog_len offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN
+	static_assert(SoM(struct bpf_prog_info_struct, xlated_prog_len) == SoM(struct bpf_prog_info, xlated_prog_len),
+		      "bpf_prog_info_struct.xlated_prog_len size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, xlated_prog_len) == offsetof(struct bpf_prog_info, xlated_prog_len),
+		      "bpf_prog_info_struct.xlated_prog_len offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS
+	static_assert(SoM(struct bpf_prog_info_struct, jited_prog_insns) == SoM(struct bpf_prog_info, jited_prog_insns),
+		      "bpf_prog_info_struct.jited_prog_insns size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, jited_prog_insns) == offsetof(struct bpf_prog_info, jited_prog_insns),
+		      "bpf_prog_info_struct.jited_prog_insns offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS
+	static_assert(SoM(struct bpf_prog_info_struct, xlated_prog_insns) == SoM(struct bpf_prog_info, xlated_prog_insns),
+		      "bpf_prog_info_struct.xlated_prog_insns size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, xlated_prog_insns) == offsetof(struct bpf_prog_info, xlated_prog_insns),
+		      "bpf_prog_info_struct.xlated_prog_insns offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME
+	static_assert(SoM(struct bpf_prog_info_struct, load_time) == SoM(struct bpf_prog_info, load_time),
+		      "bpf_prog_info_struct.load_time size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, load_time) == offsetof(struct bpf_prog_info, load_time),
+		      "bpf_prog_info_struct.load_time offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID
+	static_assert(SoM(struct bpf_prog_info_struct, created_by_uid) == SoM(struct bpf_prog_info, created_by_uid),
+		      "bpf_prog_info_struct.created_by_uid size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, created_by_uid) == offsetof(struct bpf_prog_info, created_by_uid),
+		      "bpf_prog_info_struct.created_by_uid offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS
+	static_assert(SoM(struct bpf_prog_info_struct, nr_map_ids) == SoM(struct bpf_prog_info, nr_map_ids),
+		      "bpf_prog_info_struct.nr_map_ids size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, nr_map_ids) == offsetof(struct bpf_prog_info, nr_map_ids),
+		      "bpf_prog_info_struct.nr_map_ids offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS
+	static_assert(SoM(struct bpf_prog_info_struct, map_ids) == SoM(struct bpf_prog_info, map_ids),
+		      "bpf_prog_info_struct.map_ids size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, map_ids) == offsetof(struct bpf_prog_info, map_ids),
+		      "bpf_prog_info_struct.map_ids offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_NAME
+	static_assert(SoM(struct bpf_prog_info_struct, name) == SoM(struct bpf_prog_info, name),
+		      "bpf_prog_info_struct.name size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, name) == offsetof(struct bpf_prog_info, name),
+		      "bpf_prog_info_struct.name offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_NAME */
+
+# ifdef HAVE_STRUCT_BPF_PROG_INFO_IFINDEX
+	static_assert(SoM(struct bpf_prog_info_struct, ifindex) == SoM(struct bpf_prog_info, ifindex),
+		      "bpf_prog_info_struct.ifindex size mismatch");
+	static_assert(offsetof(struct bpf_prog_info_struct, ifindex) == offsetof(struct bpf_prog_info, ifindex),
+		      "bpf_prog_info_struct.ifindex offset mismatch");
+# endif /* HAVE_STRUCT_BPF_PROG_INFO_IFINDEX */
+
+static_assert(bpf_prog_info_struct_size == expected_bpf_prog_info_struct_size,
+	      "bpf_prog_info_struct_size mismatch");
+
 #endif /* HAVE_LINUX_BPF_H */
diff --git a/bpf_filter.c b/bpf_filter.c
index 32fd435..a102e14 100644
--- a/bpf_filter.c
+++ b/bpf_filter.c
@@ -34,6 +34,7 @@
 #include "bpf_fprog.h"
 
 #include <linux/filter.h>
+
 #include "xlat/bpf_class.h"
 #include "xlat/bpf_miscop.h"
 #include "xlat/bpf_mode.h"
@@ -43,56 +44,85 @@
 #include "xlat/bpf_size.h"
 #include "xlat/bpf_src.h"
 
-static void
-print_bpf_filter_code(const uint16_t code)
+#include "xlat/ebpf_class.h"
+#include "xlat/ebpf_mode.h"
+#include "xlat/ebpf_op_alu.h"
+#include "xlat/ebpf_op_jmp.h"
+#include "xlat/ebpf_size.h"
+
+void
+print_bpf_filter_code(const uint16_t code, bool extended)
 {
+	const struct xlat *mode = extended ? ebpf_mode : bpf_mode;
 	uint16_t i = code & ~BPF_CLASS(code);
 
-	printxval(bpf_class, BPF_CLASS(code), "BPF_???");
+	if (extended)
+		printxval_index(ebpf_class, BPF_CLASS(code), "BPF_???");
+	else
+		printxval_index(bpf_class, BPF_CLASS(code), "BPF_???");
 	switch (BPF_CLASS(code)) {
+	case BPF_ST:
+	case BPF_STX:
+		if (!extended) {
+			if (i) {
+				tprintf("|%#x", i);
+				tprints_comment("BPF_???");
+			}
+			break;
+		}
+		ATTRIBUTE_FALLTHROUGH; /* extended == true */
+
 	case BPF_LD:
 	case BPF_LDX:
 		tprints("|");
-		printxval(bpf_size, BPF_SIZE(code), "BPF_???");
+		printxvals(BPF_SIZE(code), "BPF_???",
+			   bpf_size, extended ? ebpf_size : NULL, NULL);
 		tprints("|");
-		printxval(bpf_mode, BPF_MODE(code), "BPF_???");
+		printxval(mode, BPF_MODE(code), "BPF_???");
 		break;
-	case BPF_ST:
-	case BPF_STX:
-		if (i) {
-			tprintf("|%#x", i);
-			tprints_comment("BPF_???");
+
+	case BPF_MISC: /* BPF_ALU64 in eBPF */
+		if (!extended) {
+			tprints("|");
+			printxval(bpf_miscop, BPF_MISCOP(code), "BPF_???");
+			i &= ~BPF_MISCOP(code);
+			if (i) {
+				tprintf("|%#x", i);
+				tprints_comment("BPF_???");
+			}
+			break;
 		}
-		break;
+		ATTRIBUTE_FALLTHROUGH; /* extended == true */
+
 	case BPF_ALU:
 		tprints("|");
 		printxval(bpf_src, BPF_SRC(code), "BPF_???");
 		tprints("|");
-		printxval(bpf_op_alu, BPF_OP(code), "BPF_???");
+		printxvals(BPF_OP(code), "BPF_???",
+			   bpf_op_alu,
+			   extended ? ebpf_op_alu : NULL, NULL);
 		break;
+
 	case BPF_JMP:
 		tprints("|");
 		printxval(bpf_src, BPF_SRC(code), "BPF_???");
 		tprints("|");
-		printxval(bpf_op_jmp, BPF_OP(code), "BPF_???");
+		printxvals(BPF_OP(code), "BPF_???",
+			   bpf_op_jmp, extended ? ebpf_op_jmp : NULL, NULL);
 		break;
-	case BPF_RET:
-		tprints("|");
-		printxval(bpf_rval, BPF_RVAL(code), "BPF_???");
-		i &= ~BPF_RVAL(code);
+
+	case BPF_RET: /* Reserved in eBPF */
+		if (!extended) {
+			tprints("|");
+			printxval(bpf_rval, BPF_RVAL(code), "BPF_???");
+			i &= ~BPF_RVAL(code);
+		}
+
 		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", i);
-			tprints_comment("BPF_???");
-		}
+
 		break;
 	}
 }
@@ -102,7 +132,7 @@
 		      const print_bpf_filter_fn print_k)
 {
 	tprints("BPF_STMT(");
-	print_bpf_filter_code(filter->code);
+	print_bpf_filter_code(filter->code, false);
 	tprints(", ");
 	if (!print_k || !print_k(filter))
 		tprintf("%#x", filter->k);
@@ -113,7 +143,7 @@
 print_bpf_filter_jump(const struct bpf_filter_block *const filter)
 {
 	tprints("BPF_JUMP(");
-	print_bpf_filter_code(filter->code);
+	print_bpf_filter_code(filter->code, false);
 	tprintf(", %#x, %#x, %#x)", filter->k, filter->jt, filter->jf);
 }
 
@@ -153,7 +183,7 @@
 		struct bpf_filter_block filter;
 
 		print_array(tcp, addr, len, &filter, sizeof(filter),
-			    umoven_or_printaddr, print_bpf_filter_block, &fbd);
+			    tfetch_mem, print_bpf_filter_block, &fbd);
 	}
 }
 
diff --git a/bpf_sock_filter.c b/bpf_sock_filter.c
index 7f8e16a..f3d38a0 100644
--- a/bpf_sock_filter.c
+++ b/bpf_sock_filter.c
@@ -2,6 +2,7 @@
  * Decoder of socket filter programs.
  *
  * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2017-2018 The strace developers.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -33,23 +34,25 @@
 
 #include <linux/filter.h>
 #include "xlat/skf_ad.h"
+#include "xlat/skf_off.h"
 
 static bool
 print_sock_filter_k(const struct bpf_filter_block *const fp)
 {
 	if (BPF_CLASS(fp->code) == BPF_LD && BPF_MODE(fp->code) == BPF_ABS) {
 		if (fp->k >= (unsigned int) SKF_AD_OFF) {
-			tprints("SKF_AD_OFF+");
+			print_xlat32(SKF_AD_OFF);
+			tprints("+");
 			printxval(skf_ad, fp->k - (unsigned int) SKF_AD_OFF,
 				  "SKF_AD_???");
 			return true;
 		} else if (fp->k >= (unsigned int) SKF_NET_OFF) {
-			tprintf("%s+%u", "SKF_NET_OFF",
-				fp->k - (unsigned int) SKF_NET_OFF);
+			print_xlat32(SKF_NET_OFF);
+			tprintf("+%u", fp->k - (unsigned int) SKF_NET_OFF);
 			return true;
 		} else if (fp->k >= (unsigned int) SKF_LL_OFF) {
-			tprintf("%s+%u", "SKF_LL_OFF",
-				fp->k - (unsigned int) SKF_LL_OFF);
+			print_xlat32(SKF_LL_OFF);
+			tprintf("+%u", fp->k - (unsigned int) SKF_LL_OFF);
 			return true;
 		}
 	}
diff --git a/btrfs.c b/btrfs.c
index ff10d69..7ab0171 100644
--- a/btrfs.c
+++ b/btrfs.c
@@ -84,10 +84,6 @@
 # define BTRFS_LABEL_SIZE 256
 #endif
 
-#ifndef BTRFS_FIRST_FREE_OBJECTID
-# define BTRFS_FIRST_FREE_OBJECTID 256ULL
-#endif
-
 #ifndef BTRFS_IOC_QUOTA_RESCAN
 struct btrfs_ioctl_quota_rescan_args {
 	uint64_t flags, progress, reserved[6];
@@ -128,6 +124,7 @@
 #include "xlat/btrfs_balance_flags.h"
 #include "xlat/btrfs_balance_state.h"
 #include "xlat/btrfs_compress_types.h"
+#include "xlat/btrfs_cont_reading_from_srcdev_mode.h"
 #include "xlat/btrfs_defrag_flags.h"
 #include "xlat/btrfs_dev_replace_cmds.h"
 #include "xlat/btrfs_dev_replace_results.h"
@@ -179,30 +176,20 @@
 }
 
 static void
-print_u64(const char *name, uint64_t value)
-{
-	tprintf(", %s=%" PRIu64, name, value);
-	if (value == UINT64_MAX)
-		tprints_comment("UINT64_MAX");
-}
-
-#define print_member_u64(obj, name) print_u64(#name, obj->name)
-
-static void
 btrfs_print_balance_args(const char *name, const struct btrfs_balance_args *bba)
 {
-	tprintf(", %s={profiles=", name);
-	printflags64(btrfs_space_info_flags, bba->profiles,
-		     "BTRFS_BLOCK_GROUP_???");
-	print_member_u64(bba, usage);
-	print_member_u64(bba, devid);
-	print_member_u64(bba, pstart);
-	print_member_u64(bba, pend);
-	print_member_u64(bba, vstart);
-	print_member_u64(bba, vend);
-	print_member_u64(bba, target);
-	tprints(", flags=");
-	printflags64(btrfs_balance_args, bba->flags, "BTRFS_BALANCE_ARGS_???");
+	tprintf(", %s=", name);
+	PRINT_FIELD_FLAGS("{", *bba, profiles, btrfs_space_info_flags,
+			  "BTRFS_BLOCK_GROUP_???");
+	PRINT_FIELD_U64(", ", *bba, usage);
+	PRINT_FIELD_DEV(", ", *bba, devid);
+	PRINT_FIELD_U64(", ", *bba, pstart);
+	PRINT_FIELD_U64(", ", *bba, pend);
+	PRINT_FIELD_U64(", ", *bba, vstart);
+	PRINT_FIELD_U64(", ", *bba, vend);
+	PRINT_FIELD_U64(", ", *bba, target);
+	PRINT_FIELD_FLAGS(", ", *bba, flags, btrfs_balance_args,
+			  "BTRFS_BALANCE_ARGS_???");
 	tprints("}");
 }
 
@@ -214,14 +201,12 @@
 	if (umove_or_printaddr(tcp, arg, &balance_args))
 		return;
 
-	tprints("{flags=");
-	printflags64(btrfs_balance_flags, balance_args.flags,
-		     "BTRFS_BALANCE_???");
-	if (out) {
-		tprints(", state=");
-		printflags64(btrfs_balance_state, balance_args.state,
-			     "BTRFS_BALANCE_STATE_???");
-	}
+	PRINT_FIELD_FLAGS("{", balance_args, flags, btrfs_balance_flags,
+			  "BTRFS_BALANCE_???");
+	if (out)
+		PRINT_FIELD_FLAGS(", ", balance_args, state,
+				  btrfs_balance_state,
+				  "BTRFS_BALANCE_STATE_???");
 
 	if (balance_args.flags & BTRFS_BALANCE_DATA)
 		btrfs_print_balance_args("data", &balance_args.data);
@@ -235,53 +220,41 @@
 static void
 btrfs_print_features(const struct btrfs_ioctl_feature_flags *flags)
 {
-	tprints("{compat_flags=");
-	printflags64(btrfs_features_compat, flags->compat_flags,
-		     "BTRFS_FEATURE_COMPAT_???");
-
-	tprints(", compat_ro_flags=");
-	printflags64(btrfs_features_compat_ro, flags->compat_ro_flags,
-		     "BTRFS_FEATURE_COMPAT_RO_???");
-
-	tprints(", incompat_flags=");
-	printflags64(btrfs_features_incompat, flags->incompat_flags,
-		     "BTRFS_FEATURE_INCOMPAT_???");
+	PRINT_FIELD_FLAGS("{", *flags, compat_flags, btrfs_features_compat,
+			  "BTRFS_FEATURE_COMPAT_???");
+	PRINT_FIELD_FLAGS(", ", *flags, compat_ro_flags,
+			  btrfs_features_compat_ro,
+			  "BTRFS_FEATURE_COMPAT_RO_???");
+	PRINT_FIELD_FLAGS(", ", *flags, incompat_flags, btrfs_features_incompat,
+			  "BTRFS_FEATURE_INCOMPAT_???");
 	tprints("}");
 }
 
 static void
 btrfs_print_qgroup_limit(const struct btrfs_qgroup_limit *lim)
 {
-	tprints("{flags=");
-	printflags64(btrfs_qgroup_limit_flags, lim->flags,
-		     "BTRFS_QGROUP_LIMIT_???");
-	tprintf(", max_rfer=%" PRI__u64 ", max_excl=%" PRI__u64
-		", rsv_rfer=%" PRI__u64 ", rsv_excl=%" PRI__u64 "}",
-		lim->max_rfer, lim->max_excl,
-		lim->rsv_rfer, lim->rsv_excl);
+	PRINT_FIELD_FLAGS(", lim={", *lim, flags, btrfs_qgroup_limit_flags,
+			  "BTRFS_QGROUP_LIMIT_???");
+	PRINT_FIELD_U(", ", *lim, max_rfer);
+	PRINT_FIELD_U(", ", *lim, max_excl);
+	PRINT_FIELD_U(", ", *lim, rsv_rfer);
+	PRINT_FIELD_U(", ", *lim, rsv_excl);
+	tprints("}");
 }
 
-static void
-btrfs_print_key_type(uint32_t type)
-{
-	tprintf("%u", type);
-	tprints_comment(xlookup(btrfs_key_types, type));
-}
-
-static void
-btrfs_print_objectid(uint64_t objectid)
-{
-	tprintf("%" PRIu64, objectid);
-	tprints_comment(xlookup(btrfs_tree_objectids, objectid));
-}
+#define btrfs_print_key_type(prefix_, where_, field_) \
+	PRINT_FIELD_XVAL_U((prefix_), (where_), field_, btrfs_key_types, NULL)
+#define btrfs_print_objectid(prefix_, where_, field_) \
+	PRINT_FIELD_XVAL_U((prefix_), (where_), field_, btrfs_tree_objectids, \
+			   NULL)
 
 static void
 btrfs_print_data_container_header(const struct btrfs_data_container *container)
 {
-	tprintf("{bytes_left=%u, bytes_missing=%u"
-		", elem_cnt=%u, elem_missed=%u, val=",
-		container->bytes_left, container->bytes_missing,
-		container->elem_cnt, container->elem_missed);
+	PRINT_FIELD_U("{", *container, bytes_left);
+	PRINT_FIELD_U(", ", *container, bytes_missing);
+	PRINT_FIELD_U(", ", *container, elem_cnt);
+	PRINT_FIELD_U(", ", *container, elem_missed);
 }
 
 static void
@@ -294,10 +267,16 @@
 print_btrfs_data_container_logical_ino(struct tcb *tcp, void *elem_buf,
 				       size_t elem_size, void *data)
 {
-	const uint64_t *const record = elem_buf;
+	const struct {
+		uint64_t inum;
+		uint64_t offset;
+		uint64_t root;
+	} *const record = elem_buf;
 
-	tprintf("{inum=%" PRIu64 ", offset=%" PRIu64 ", root=%" PRIu64 "}",
-		record[0], record[1], record[2]);
+	PRINT_FIELD_U("{", *record, inum);
+	PRINT_FIELD_U(", ", *record, offset);
+	PRINT_FIELD_U(", ", *record, root);
+	tprints("}");
 
 	return true;
 }
@@ -314,14 +293,15 @@
 	btrfs_print_data_container_header(&container);
 
 	if (abbrev(tcp)) {
-		tprints("...");
+		tprints(", ...");
 	} else {
 		const uint64_t val_addr =
 			inodes_addr + offsetof(typeof(container), val);
 		uint64_t record[3];
+		tprints(", val=");
 		print_array(tcp, val_addr, container.elem_cnt / 3,
 			    record, sizeof(record),
-			    umoven_or_printaddr,
+			    tfetch_mem,
 			    print_btrfs_data_container_logical_ino, 0);
 	}
 
@@ -352,28 +332,21 @@
 	btrfs_print_data_container_header(&container);
 
 	if (abbrev(tcp)) {
-		tprints("...");
+		tprints(", ...");
 	} else {
 		uint64_t val_addr =
 			fspath_addr + offsetof(typeof(container), val);
 		uint64_t offset;
+		tprints(", val=");
 		print_array(tcp, val_addr, container.elem_cnt,
 			    &offset, sizeof(offset),
-			    umoven_or_printaddr,
+			    tfetch_mem,
 			    print_btrfs_data_container_ino_path, &val_addr);
 	}
 
 	btrfs_print_data_container_footer();
 }
 
-static bool
-print_uint64(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
-{
-	tprintf("%" PRIu64, *(uint64_t *) elem_buf);
-
-	return true;
-}
-
 static void
 btrfs_print_qgroup_inherit(struct tcb *const tcp, const kernel_ulong_t qgi_addr)
 {
@@ -382,101 +355,84 @@
 	if (umove_or_printaddr(tcp, qgi_addr, &inherit))
 		return;
 
-	tprints("{flags=");
-	printflags64(btrfs_qgroup_inherit_flags, inherit.flags,
-		     "BTRFS_QGROUP_INHERIT_???");
-	tprintf(", num_qgroups=%" PRI__u64 ", num_ref_copies=%" PRI__u64
-		", num_excl_copies=%" PRI__u64 ", lim=",
-		inherit.num_qgroups, inherit.num_ref_copies,
-		inherit.num_excl_copies);
+	PRINT_FIELD_FLAGS("{", inherit, flags, btrfs_qgroup_inherit_flags,
+			  "BTRFS_QGROUP_INHERIT_???");
+	PRINT_FIELD_U(", ", inherit, num_qgroups);
+	PRINT_FIELD_U(", ", inherit, num_ref_copies);
+	PRINT_FIELD_U(", ", inherit, num_excl_copies);
 
 	btrfs_print_qgroup_limit(&inherit.lim);
 
-	tprints(", qgroups=");
-
 	if (abbrev(tcp)) {
-		tprints("...");
+		tprints(", ...");
 	} else {
 		uint64_t record;
+		tprints(", qgroups=");
 		print_array(tcp, qgi_addr + offsetof(typeof(inherit), qgroups),
 			    inherit.num_qgroups, &record, sizeof(record),
-			    umoven_or_printaddr, print_uint64, 0);
+			    tfetch_mem, print_uint64_array_member, 0);
 	}
 	tprints("}");
 }
 
 static void
-print_key_value_internal(struct tcb *tcp, const char *name, uint64_t value)
-{
-	if (value) {
-		tprintf(", %s=%" PRIu64, name, value);
-		if (value == UINT64_MAX)
-			tprints_comment("UINT64_MAX");
-	}
-}
-#define print_key_value(tcp, key, name)					\
-	print_key_value_internal((tcp), #name, (key)->name)
-
-static void
 btrfs_print_tree_search(struct tcb *tcp, struct btrfs_ioctl_search_key *key,
 			uint64_t buf_addr, uint64_t buf_size, bool print_size)
 {
 	if (entering(tcp)) {
-		tprints("{key={tree_id=");
-		btrfs_print_objectid(key->tree_id);
+		btrfs_print_objectid("{key={", *key, tree_id);
 
 		if (key->min_objectid != BTRFS_FIRST_FREE_OBJECTID ||
-		    !abbrev(tcp)) {
-			tprints(", min_objectid=");
-			btrfs_print_objectid(key->min_objectid);
-		}
+		    !abbrev(tcp))
+			btrfs_print_objectid(", ", *key, min_objectid);
 
 		if (key->max_objectid != BTRFS_LAST_FREE_OBJECTID ||
-		    !abbrev(tcp)) {
-			tprints(", max_objectid=");
-			btrfs_print_objectid(key->max_objectid);
-		}
+		    !abbrev(tcp))
+			btrfs_print_objectid(", ", *key, max_objectid);
 
-		print_key_value(tcp, key, min_offset);
-		print_key_value(tcp, key, max_offset);
-		print_key_value(tcp, key, min_transid);
-		print_key_value(tcp, key, max_transid);
+		PRINT_FIELD_U64(", ", *key, min_offset);
+		PRINT_FIELD_U64(", ", *key, max_offset);
+		PRINT_FIELD_U64(", ", *key, min_transid);
+		PRINT_FIELD_U64(", ", *key, max_transid);
 
-		tprints(", min_type=");
-		btrfs_print_key_type(key->min_type);
-		tprints(", max_type=");
-		btrfs_print_key_type(key->max_type);
-		tprintf(", nr_items=%u}", key->nr_items);
+		btrfs_print_key_type(", ", *key, min_type);
+		btrfs_print_key_type(", ", *key, max_type);
+		PRINT_FIELD_U(", ", *key, nr_items);
+		tprints("}");
 		if (print_size)
 			tprintf(", buf_size=%" PRIu64, buf_size);
 		tprints("}");
 	} else {
-		tprintf("{key={nr_items=%u}", key->nr_items);
+		PRINT_FIELD_U("{key={", *key, nr_items);
+		tprints("}");
 		if (print_size)
 			tprintf(", buf_size=%" PRIu64, buf_size);
-		tprints(", buf=");
-		if (abbrev(tcp))
-			tprints("...");
-		else {
+		if (abbrev(tcp)) {
+			tprints(", ...");
+		} else {
 			uint64_t i;
 			uint64_t off = 0;
-			tprints("[");
+			tprints(", buf=[");
 			for (i = 0; i < key->nr_items; i++) {
 				struct btrfs_ioctl_search_header sh;
 				uint64_t addr = buf_addr + off;
 				if (i)
 					tprints(", ");
-				if (i > max_strlen ||
-				    umove(tcp, addr, &sh)) {
+				if (i > max_strlen) {
 					tprints("...");
 					break;
 				}
-				tprintf("{transid=%" PRI__u64 ", objectid=",
-					sh.transid);
-				btrfs_print_objectid(sh.objectid);
-				tprintf(", offset=%" PRI__u64 ", type=", sh.offset);
-				btrfs_print_key_type(sh.type);
-				tprintf(", len=%u}", sh.len);
+				if (umove(tcp, addr, &sh)) {
+					tprints("...");
+					printaddr_comment(addr);
+					break;
+				}
+				PRINT_FIELD_U("{", sh, transid);
+				btrfs_print_objectid(", ", sh, objectid);
+				PRINT_FIELD_U(", ", sh, offset);
+				btrfs_print_key_type(", ", sh, type);
+				PRINT_FIELD_U(", ", sh, len);
+				tprints("}");
 				off += sizeof(sh) + sh.len;
 
 			}
@@ -490,7 +446,8 @@
 print_objectid_callback(struct tcb *tcp, void *elem_buf,
 			size_t elem_size, void *data)
 {
-	btrfs_print_objectid(*(uint64_t *) elem_buf);
+	printxvals_ex(*(uint64_t *) elem_buf, NULL, XLAT_STYLE_FMT_U,
+		      btrfs_tree_objectids, NULL);
 
 	return true;
 }
@@ -501,15 +458,22 @@
 {
 	const struct btrfs_ioctl_space_info *info = elem_buf;
 
-	tprints("{flags=");
-	printflags64(btrfs_space_info_flags, info->flags,
-		     "BTRFS_SPACE_INFO_???");
-	tprintf(", total_bytes=%" PRI__u64 ", used_bytes=%" PRI__u64 "}",
-		info->total_bytes, info->used_bytes);
+	PRINT_FIELD_FLAGS("{", *info, flags, btrfs_space_info_flags,
+			  "BTRFS_SPACE_INFO_???");
+	PRINT_FIELD_U(", ", *info, total_bytes);
+	PRINT_FIELD_U(", ", *info, used_bytes);
+	tprints("}");
 
 	return true;
 }
 
+static void
+print_btrfs_timespec(const char *prefix, uint64_t sec, uint32_t nsec)
+{
+	tprintf("%s{sec=%" PRIu64 ", nsec=%u}", prefix, sec, nsec);
+	tprints_comment(sprinttime_nsec(sec, nsec));
+}
+
 MPERS_PRINTER_DECL(int, btrfs_ioctl,
 		   struct tcb *const tcp, const unsigned int code,
 		   const kernel_ulong_t arg)
@@ -605,19 +569,14 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprintf("{start=%" PRIu64 ", len=", (uint64_t)args.start);
+		PRINT_FIELD_U("{", args, start);
+		PRINT_FIELD_U64(", ", args, len);
 
-		tprintf("%" PRIu64, (uint64_t) args.len);
-		if (args.len == UINT64_MAX)
-			tprints_comment("UINT64_MAX");
-
-		tprints(", flags=");
-		printflags64(btrfs_defrag_flags, args.flags,
-			     "BTRFS_DEFRAG_RANGE_???");
-		tprintf(", extent_thresh=%u, compress_type=",
-			args.extent_thresh);
-		printxval(btrfs_compress_types, args.compress_type,
-			  "BTRFS_COMPRESS_???");
+		PRINT_FIELD_FLAGS(", ", args, flags, btrfs_defrag_flags,
+				  "BTRFS_DEFRAG_RANGE_???");
+		PRINT_FIELD_U(", ", args, extent_thresh);
+		PRINT_FIELD_XVAL(", ", args, compress_type,
+				 btrfs_compress_types, "BTRFS_COMPRESS_???");
 		tprints("}");
 		break;
 	}
@@ -635,23 +594,25 @@
 			tprints(" => ");
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
-		tprints("{");
 
 		valid = btrfs_unparse_uuid(args.uuid, uuid);
 		if (entering(tcp)) {
-			tprintf("devid=%" PRI__u64, args.devid);
+			PRINT_FIELD_DEV("{", args, devid);
 			if (valid)
 				tprintf(", uuid=%s", uuid);
 			tprints("}");
 			return 0;
 		}
+
+		tprints("{");
 		if (valid)
 			tprintf("uuid=%s, ", uuid);
-		tprintf("bytes_used=%" PRI__u64
-			", total_bytes=%" PRI__u64,
-			args.bytes_used, args.total_bytes);
+
+		PRINT_FIELD_U("", args, bytes_used);
+		PRINT_FIELD_U(", ", args, total_bytes);
 		PRINT_FIELD_CSTRING(", ", args, path);
 		tprints("}");
+
 		break;
 	}
 
@@ -669,24 +630,20 @@
 			break;
 
 		if (entering(tcp)) {
-			tprints("{cmd=");
-			printxval64(btrfs_dev_replace_cmds, args.cmd,
-				    "BTRFS_IOCTL_DEV_REPLACE_CMD_???");
+			PRINT_FIELD_XVAL("{", args, cmd, btrfs_dev_replace_cmds,
+					 "BTRFS_IOCTL_DEV_REPLACE_CMD_???");
 			if (args.cmd == BTRFS_IOCTL_DEV_REPLACE_CMD_START) {
-				const char *str;
-				tprintf(", start={srcdevid=%" PRIu64
-				   ", cont_reading_from_srcdev_mode=%" PRIu64
-				   ", srcdev_name=",
-				   (uint64_t) args.start.srcdevid,
-				   (uint64_t) args.start.cont_reading_from_srcdev_mode);
-
-				str = (const char *) args.start.srcdev_name;
-				print_quoted_cstring(str,
-						sizeof(args.start.srcdev_name));
-				tprints(", tgtdev_name=");
-				str = (const char *) args.start.tgtdev_name;
-				print_quoted_cstring(str,
-						sizeof(args.start.tgtdev_name));
+				PRINT_FIELD_DEV(", start={", args.start,
+					      srcdevid);
+				PRINT_FIELD_XVAL(", ", args.start,
+					cont_reading_from_srcdev_mode,
+					btrfs_cont_reading_from_srcdev_mode,
+					"BTRFS_IOCTL_DEV_REPLACE_CONT_READING"
+					"_FROM_SRCDEV_MODE_???");
+				PRINT_FIELD_CSTRING(", ", args.start,
+						    srcdev_name);
+				PRINT_FIELD_CSTRING(", ", args.start,
+						    tgtdev_name);
 				tprints("}");
 
 			}
@@ -694,34 +651,28 @@
 			return 0;
 		}
 
-		tprints("{result=");
-		printxval64(btrfs_dev_replace_results, args.result,
-			    "BTRFS_IOCTL_DEV_REPLACE_RESULT_???");
+		PRINT_FIELD_XVAL("{", args, result, btrfs_dev_replace_results,
+				 "BTRFS_IOCTL_DEV_REPLACE_RESULT_???");
 		if (args.cmd == BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS) {
-			tprints(", ");
-			printxval64(btrfs_dev_replace_state,
-				   args.status.replace_state,
-				   "BTRFS_IOCTL_DEV_REPLACE_STATE_???");
-			tprintf(", progress_1000=%" PRIu64,
-				(uint64_t) args.status.progress_1000);
+			PRINT_FIELD_XVAL(", status={", args.status,
+					 replace_state, btrfs_dev_replace_state,
+					 "BTRFS_IOCTL_DEV_REPLACE_STATE_???");
 
+			PRINT_FIELD_U(", ", args.status, progress_1000);
 			if (args.status.progress_1000 <= 1000)
 				tprintf_comment("%u.%u%%",
 					(unsigned) args.status.progress_1000 / 10,
 					(unsigned) args.status.progress_1000 % 10);
 
-			tprintf(", time_started=%" PRIu64,
-				(uint64_t) args.status.time_started);
+			PRINT_FIELD_U(", ", args.status, time_started);
 			tprints_comment(sprinttime(args.status.time_started));
 
-			tprintf(", time_stopped=%" PRIu64,
-				(uint64_t) args.status.time_stopped);
+			PRINT_FIELD_U(", ", args.status, time_stopped);
 			tprints_comment(sprinttime(args.status.time_stopped));
 
-			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);
+			PRINT_FIELD_U(", ", args.status, num_write_errors);
+			PRINT_FIELD_U(", ", args.status,
+				      num_uncorrectable_read_errors);
 		}
 		tprints("}");
 		break;
@@ -810,12 +761,11 @@
 #endif
 		btrfs_unparse_uuid(args.fsid, uuid);
 
-		tprints("{");
-		tprintf("max_id=%" PRI__u64 ", num_devices=%" PRI__u64
-			", fsid=%s, nodesize=%u, sectorsize=%u"
+		PRINT_FIELD_U("{", args, max_id);
+		PRINT_FIELD_U(", ", args, num_devices);
+		tprintf(", fsid=%s, nodesize=%u, sectorsize=%u"
 			", clone_alignment=%u",
-			args.max_id, args.num_devices, uuid,
-			nodesize, sectorsize, clone_alignment);
+			uuid, nodesize, sectorsize, clone_alignment);
 		tprints("}");
 		break;
 	}
@@ -835,12 +785,14 @@
 
 		tprints("{");
 
-		if (entering(tcp))
-			tprintf("devid=%" PRI__u64 ", ", args.devid);
+		if (entering(tcp)) {
+			PRINT_FIELD_DEV("", args, devid);
+			tprints(", ");
+		}
 
-		tprintf("nr_items=%" PRI__u64 ", flags=", args.nr_items);
-		printflags64(btrfs_dev_stats_flags, args.flags,
-			     "BTRFS_DEV_STATS_???");
+		PRINT_FIELD_U("", args, nr_items);
+		PRINT_FIELD_FLAGS(", ", args, flags, btrfs_dev_stats_flags,
+				  "BTRFS_DEV_STATS_???");
 
 		if (entering(tcp)) {
 			tprints("}");
@@ -860,8 +812,10 @@
 				tprints("...");
 				break;
 			}
-			tprintf("%" PRI__u64, args.values[i]);
-			tprints_comment(xlookup(btrfs_dev_stats_values, i));
+
+			tprints("[");
+			printxval_u(btrfs_dev_stats_values, i, NULL);
+			tprintf("] = %" PRI__u64, args.values[i]);
 		}
 		tprints("]}");
 		break;
@@ -885,18 +839,15 @@
 			if (args.treeid == 0)
 				set_tcb_priv_ulong(tcp, 1);
 
-			tprints("{treeid=");
-			btrfs_print_objectid(args.treeid);
-			tprints(", objectid=");
-			btrfs_print_objectid(args.objectid);
+			btrfs_print_objectid("{", args, treeid);
+			btrfs_print_objectid(", ", args, objectid);
 			tprints("}");
 			return 0;
 		}
 
 		tprints("{");
 		if (get_tcb_priv_ulong(tcp)) {
-			tprints("treeid=");
-			btrfs_print_objectid(args.treeid);
+			btrfs_print_objectid("", args, treeid);
 			tprints(", ");
 		}
 
@@ -918,18 +869,15 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprints("{");
-
 		if (entering(tcp)) {
-			tprintf("inum=%" PRI__u64 ", size=%" PRI__u64,
-				args.inum, args.size);
-			tprints(", fspath=");
-			printaddr64(args.fspath);
+			PRINT_FIELD_U("{", args, inum);
+			PRINT_FIELD_U(", ", args, size);
+			PRINT_FIELD_ADDR64(", ", args, fspath);
 			tprints("}");
 			return 0;
 		}
 
-		tprints("fspath=");
+		tprints("{fspath=");
 		btrfs_print_ino_path_container(tcp, args.fspath);
 
 		tprints("}");
@@ -949,11 +897,9 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprints("{");
-
 		if (entering(tcp)) {
-			tprintf("logical=%" PRI__u64 ", size=%" PRI__u64,
-				args.logical, args.size);
+			PRINT_FIELD_U("{", args, logical);
+			PRINT_FIELD_U(", ", args, size);
 
 			if (!IS_ARRAY_ZERO(args.reserved)) {
 				tprints(", reserved=[");
@@ -972,13 +918,12 @@
 				     args.reserved[3]
 #endif
 				     , "BTRFS_LOGICAL_INO_ARGS_???");
-			tprints(", inodes=");
-			printaddr64(args.inodes);
+			PRINT_FIELD_ADDR64(", ", args, inodes);
 			tprints("}");
 			return 0;
 		}
 
-		tprints("inodes=");
+		tprints("{inodes=");
 		btrfs_print_logical_ino_container(tcp, args.inodes);
 
 		tprints("}");
@@ -992,9 +937,10 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprintf("{assign=%" PRI__u64 ", src=%" PRI__u64
-			", dst=%" PRI__u64 "}",
-			args.assign, args.src, args.dst);
+		PRINT_FIELD_U("{", args, assign);
+		PRINT_FIELD_U(", ", args, src);
+		PRINT_FIELD_U(", ", args, dst);
+		tprints("}");
 		break;
 	}
 
@@ -1005,8 +951,9 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprintf("{create=%" PRI__u64 ", qgroupid=%" PRI__u64 "}",
-			args.create, args.qgroupid);
+		PRINT_FIELD_U("{", args, create);
+		PRINT_FIELD_U(", ", args, qgroupid);
+		tprints("}");
 		break;
 	}
 
@@ -1020,7 +967,7 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprintf("{qgroupid=%" PRI__u64 ", lim=", args.qgroupid);
+		PRINT_FIELD_U("{", args, qgroupid);
 		btrfs_print_qgroup_limit(&args.lim);
 		tprints("}");
 		break;
@@ -1033,8 +980,8 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		printxval64(btrfs_qgroup_ctl_cmds, args.cmd,
-			    "BTRFS_QUOTA_CTL_???");
+		PRINT_FIELD_XVAL("{", args, cmd, btrfs_qgroup_ctl_cmds,
+				 "BTRFS_QUOTA_CTL_???");
 		tprints("}");
 
 		break;
@@ -1047,7 +994,8 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprintf("{flags=%" PRIu64 "}", (uint64_t) args.flags);
+		PRINT_FIELD_U("{", args, flags);
+		tprints("}");
 		break;
 	}
 
@@ -1061,8 +1009,8 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprintf("{flags=%" PRIu64 ", progress=", (uint64_t) args.flags);
-		btrfs_print_objectid(args.progress);
+		PRINT_FIELD_U("{", args, flags);
+		btrfs_print_objectid(", ", args, progress);
 		tprints("}");
 		break;
 	}
@@ -1083,16 +1031,18 @@
 
 		if (entering(tcp)) {
 			btrfs_unparse_uuid((unsigned char *)args.uuid, uuid);
-			tprintf("{uuid=%s, stransid=%" PRIu64
-				", stime=%" PRIu64 ".%u, flags=%" PRIu64
-				"}", uuid, (uint64_t) args.stransid,
-				(uint64_t) args.stime.sec, args.stime.nsec,
-				(uint64_t) args.flags);
+			tprintf("{uuid=%s", uuid);
+			PRINT_FIELD_U(", ", args, stransid);
+			print_btrfs_timespec(", stime=",
+					     args.stime.sec, args.stime.nsec);
+			PRINT_FIELD_U(", ", args, flags);
+			tprints("}");
 			return 0;
 		}
-		tprintf("{rtransid=%" PRIu64 ", rtime=%" PRIu64 ".%u}",
-			(uint64_t) args.rtransid, (uint64_t) args.rtime.sec,
-			args.rtime.nsec);
+		PRINT_FIELD_U("{", args, rtransid);
+		print_btrfs_timespec(", rtime=",
+				     args.rtime.sec, args.rtime.nsec);
+		tprints("}");
 		break;
 	}
 
@@ -1111,50 +1061,34 @@
 			break;
 
 		if (entering(tcp)) {
-			tprintf("{devid=%" PRI__u64, args.devid);
+			PRINT_FIELD_DEV("{", args, devid);
 			if (code == BTRFS_IOC_SCRUB) {
-				tprintf(", start=%" PRI__u64 ", end=",
-					args.start);
-				tprintf("%" PRI__u64, args.end);
-				if (args.end == UINT64_MAX)
-					tprints_comment("UINT64_MAX");
-				tprints(", flags=");
-				printflags64(btrfs_scrub_flags, args.flags,
-					     "BTRFS_SCRUB_???");
+				PRINT_FIELD_U(", ", args, start);
+				PRINT_FIELD_U64(", ", args, end);
+				PRINT_FIELD_FLAGS(", ", args, flags,
+						  btrfs_scrub_flags,
+						  "BTRFS_SCRUB_???");
 			}
 			tprints("}");
 			return 0;
 		}
-		tprintf("{data_extents_scrubbed=%" PRI__u64
-			", tree_extents_scrubbed=%" PRI__u64
-			", data_bytes_scrubbed=%" PRI__u64
-			", tree_bytes_scrubbed=%" PRI__u64
-			", read_errors=%" PRI__u64
-			", csum_errors=%" PRI__u64
-			", verify_errors=%" PRI__u64
-			", no_csum=%" PRI__u64
-			", csum_discards=%" PRI__u64
-			", super_errors=%" PRI__u64
-			", malloc_errors=%" PRI__u64
-			", uncorrectable_errors=%" PRI__u64
-			", corrected_errors=%" PRI__u64
-			", last_physical=%" PRI__u64
-			", unverified_errors=%" PRI__u64 "}",
-			args.progress.data_extents_scrubbed,
-			args.progress.tree_extents_scrubbed,
-			args.progress.data_bytes_scrubbed,
-			args.progress.tree_bytes_scrubbed,
-			args.progress.read_errors,
-			args.progress.csum_errors,
-			args.progress.verify_errors,
-			args.progress.no_csum,
-			args.progress.csum_discards,
-			args.progress.super_errors,
-			args.progress.malloc_errors,
-			args.progress.uncorrectable_errors,
-			args.progress.corrected_errors,
-			args.progress.last_physical,
-			args.progress.unverified_errors);
+		PRINT_FIELD_U("{progress={", args.progress,
+			      data_extents_scrubbed);
+		PRINT_FIELD_U(", ", args.progress, tree_extents_scrubbed);
+		PRINT_FIELD_U(", ", args.progress, data_bytes_scrubbed);
+		PRINT_FIELD_U(", ", args.progress, tree_bytes_scrubbed);
+		PRINT_FIELD_U(", ", args.progress, read_errors);
+		PRINT_FIELD_U(", ", args.progress, csum_errors);
+		PRINT_FIELD_U(", ", args.progress, verify_errors);
+		PRINT_FIELD_U(", ", args.progress, no_csum);
+		PRINT_FIELD_U(", ", args.progress, csum_discards);
+		PRINT_FIELD_U(", ", args.progress, super_errors);
+		PRINT_FIELD_U(", ", args.progress, malloc_errors);
+		PRINT_FIELD_U(", ", args.progress, uncorrectable_errors);
+		PRINT_FIELD_U(", ", args.progress, corrected_errors);
+		PRINT_FIELD_U(", ", args.progress, last_physical);
+		PRINT_FIELD_U(", ", args.progress, unverified_errors);
+		tprints("}}");
 		break;
 	}
 
@@ -1189,11 +1123,11 @@
 		else if (syserror(tcp)) {
 			if (tcp->u_error == EOVERFLOW) {
 				tprints(" => ");
-				tcp->u_error = 0;
-				if (!umove_or_printaddr(tcp, arg, &args))
-					tprintf("{buf_size=%" PRIu64 "}",
-						(uint64_t)args.buf_size);
-				tcp->u_error = EOVERFLOW;
+				if (!umove_or_printaddr_ignore_syserror(tcp,
+				    arg, &args)) {
+					PRINT_FIELD_U("{", args, buf_size);
+					tprints("}");
+				}
 			}
 			break;
 		} else
@@ -1217,26 +1151,23 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprints("{send_fd=");
-		printfd(tcp, args.send_fd);
-		tprintf(", clone_sources_count=%" PRIu64 ", clone_sources=",
-			(uint64_t) args.clone_sources_count);
+		PRINT_FIELD_FD("{", args, send_fd, tcp);
+		PRINT_FIELD_U(", ", args, clone_sources_count);
 
+		tprints(", clone_sources=");
 		if (abbrev(tcp))
-			tprints("...");
+			printaddr((uintptr_t) args.clone_sources);
 		else {
 			uint64_t record;
 			print_array(tcp, ptr_to_kulong(args.clone_sources),
 				    args.clone_sources_count,
 				    &record, sizeof(record),
-				    umoven_or_printaddr,
+				    tfetch_mem,
 				    print_objectid_callback, 0);
 		}
-		tprints(", parent_root=");
-		btrfs_print_objectid(args.parent_root);
-		tprints(", flags=");
-		printflags64(btrfs_send_flags, args.flags,
-			     "BTRFS_SEND_FLAGS_???");
+		btrfs_print_objectid(", ", args, parent_root);
+		PRINT_FIELD_FLAGS(", ", args, flags, btrfs_send_flags,
+				  "BTRFS_SEND_FLAGS_???");
 		tprints("}");
 		break;
 	}
@@ -1254,28 +1185,27 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprints("{");
 		if (entering(tcp)) {
-			tprintf("space_slots=%" PRI__u64 "}", args.space_slots);
+			PRINT_FIELD_U("{", args, space_slots);
+			tprints("}");
 			return 0;
 		}
 
-		tprintf("total_spaces=%" PRI__u64, args.total_spaces);
+		PRINT_FIELD_U("{", args, total_spaces);
 
 		if (args.space_slots == 0 && args.total_spaces) {
 			tprints("}");
 			break;
 		}
 
-		tprints(", spaces=");
-
-		if (abbrev(tcp))
-			tprints("...");
-		else {
+		if (abbrev(tcp)) {
+			tprints(", ...");
+		} else {
 			struct btrfs_ioctl_space_info info;
+			tprints(", spaces=");
 			print_array(tcp, arg + offsetof(typeof(args), spaces),
 				    args.total_spaces,
-				    &info, sizeof(info), umoven_or_printaddr,
+				    &info, sizeof(info), tfetch_mem,
 				    print_btrfs_ioctl_space_info, 0);
 		}
 		tprints("}");
@@ -1296,8 +1226,7 @@
 		if (umove_or_printaddr(tcp, arg, &args))
 			break;
 
-		tprints("{fd=");
-		printfd(tcp, args.fd);
+		PRINT_FIELD_FD("{", args, fd, tcp);
 		PRINT_FIELD_CSTRING(", ", args, name);
 		tprints("}");
 		break;
@@ -1318,15 +1247,13 @@
 			break;
 
 		if (entering(tcp)) {
-			tprints("{fd=");
-			printfd(tcp, args.fd);
-			tprints(", flags=");
-			printflags64(btrfs_snap_flags_v2, args.flags,
-				     "BTRFS_SUBVOL_???");
+			PRINT_FIELD_FD("{", args, fd, tcp);
+			PRINT_FIELD_FLAGS(", ", args, flags,
+					  btrfs_snap_flags_v2,
+					  "BTRFS_SUBVOL_???");
 			if (args.flags & BTRFS_SUBVOL_QGROUP_INHERIT) {
-				tprintf(", size=%" PRIu64 ", qgroup_inherit=",
-					(uint64_t) args.size);
-
+				PRINT_FIELD_U(", ", args, size);
+				tprints(", qgroup_inherit=");
 				btrfs_print_qgroup_inherit(tcp,
 					ptr_to_kulong(args.qgroup_inherit));
 			}
@@ -1334,7 +1261,8 @@
 			tprints("}");
 			return 0;
 		}
-		tprintf("{transid=%" PRIu64 "}", (uint64_t) args.transid);
+		PRINT_FIELD_U("{", args, transid);
+		tprints("}");
 		break;
 	}
 
diff --git a/config.h b/config.h
index f23eaaf..168c34b 100644
--- a/config.h
+++ b/config.h
@@ -31,6 +31,9 @@
 /* Define to 1 if you want OABI support on ARM EABI. */
 #define ENABLE_ARM_OABI 0
 
+/* Define to enable stack tracing support */
+/* #undef ENABLE_STACKTRACE */
+
 /* Define to 1 if you have the `accept4' function. */
 #define HAVE_ACCEPT4 1
 
@@ -91,6 +94,22 @@
    don't. */
 #define HAVE_DECL_CTL_SUNRPC 1
 
+/* Define to 1 if you have the declaration of `IFLA_AF_SPEC', and to 0 if you
+   don't. */
+#define HAVE_DECL_IFLA_AF_SPEC 1
+
+/* Define to 1 if you have the declaration of `IFLA_PORT_SELF', and to 0 if
+   you don't. */
+#define HAVE_DECL_IFLA_PORT_SELF 1
+
+/* Define to 1 if you have the declaration of `IFLA_PROTINFO', and to 0 if you
+   don't. */
+#define HAVE_DECL_IFLA_PROTINFO 1
+
+/* Define to 1 if you have the declaration of `IFLA_XDP', and to 0 if you
+   don't. */
+#define HAVE_DECL_IFLA_XDP 1
+
 /* Define to 1 if you have the declaration of `KERN_ACPI_VIDEO_FLAGS', and to
    0 if you don't. */
 #define HAVE_DECL_KERN_ACPI_VIDEO_FLAGS 1
@@ -391,6 +410,10 @@
    don't. */
 #define HAVE_DECL_SYS_ERRLIST 0
 
+/* Define to 1 if you have the declaration of `TCA_STAB_DATA', and to 0 if you
+   don't. */
+#define HAVE_DECL_TCA_STAB_DATA 1
+
 /* Define to 1 if you have the declaration of `V4L2_BUF_TYPE_SDR_CAPTURE', and
    to 0 if you don't. */
 #define HAVE_DECL_V4L2_BUF_TYPE_SDR_CAPTURE 1
@@ -649,6 +672,9 @@
 /* Define to 1 if the system provides dladdr */
 #define HAVE_DLADDR 1
 
+/* Define to 1 if you have the <elfutils/libdwfl.h> header file. */
+/* #undef HAVE_ELFUTILS_LIBDWFL_H */
+
 /* Define to 1 if you have the <elf.h> header file. */
 #define HAVE_ELF_H 1
 
@@ -686,7 +712,7 @@
 /* #undef HAVE_GNU_STUBS_X32_H */
 
 /* Define to 1 if you have the <iconv.h> header file. */
-/* #undef HAVE_ICONV_H */
+#define HAVE_ICONV_H 1
 
 /* Define to 1 if you have the `iconv_open' function. */
 /* #undef HAVE_ICONV_OPEN */
@@ -947,7 +973,7 @@
 #define HAVE_SIG_ATOMIC_T 1
 
 /* Define to 1 if the system provides static_assert */
-/* #define HAVE_STATIC_ASSERT 1 */
+/* #undef HAVE_STATIC_ASSERT */
 
 /* Define to 1 if you have the <stdint.h> header file. */
 #define HAVE_STDINT_H 1
@@ -982,6 +1008,76 @@
 /* Define to 1 if the system has the type `struct bpf_insn'. */
 #define HAVE_STRUCT_BPF_INSN 1
 
+/* Define to 1 if the system has the type `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO 1
+
+/* Define to 1 if `id' is a member of `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO_ID 1
+
+/* Define to 1 if `ifindex' is a member of `struct bpf_map_info'. */
+/* #undef HAVE_STRUCT_BPF_MAP_INFO_IFINDEX */
+
+/* Define to 1 if `key_size' is a member of `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE 1
+
+/* Define to 1 if `map_flags' is a member of `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS 1
+
+/* Define to 1 if `max_entries' is a member of `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES 1
+
+/* Define to 1 if `name' is a member of `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO_NAME 1
+
+/* Define to 1 if `type' is a member of `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO_TYPE 1
+
+/* Define to 1 if `value_size' is a member of `struct bpf_map_info'. */
+#define HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE 1
+
+/* Define to 1 if the system has the type `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO 1
+
+/* Define to 1 if `created_by_uid' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID 1
+
+/* Define to 1 if `id' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_ID 1
+
+/* Define to 1 if `ifindex' is a member of `struct bpf_prog_info'. */
+/* #undef HAVE_STRUCT_BPF_PROG_INFO_IFINDEX */
+
+/* Define to 1 if `jited_prog_insns' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS 1
+
+/* Define to 1 if `jited_prog_len' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN 1
+
+/* Define to 1 if `load_time' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME 1
+
+/* Define to 1 if `map_ids' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS 1
+
+/* Define to 1 if `name' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_NAME 1
+
+/* Define to 1 if `nr_map_ids' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS 1
+
+/* Define to 1 if `tag' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_TAG 1
+
+/* Define to 1 if `type' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_TYPE 1
+
+/* Define to 1 if `xlated_prog_insns' is a member of `struct bpf_prog_info'.
+   */
+#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS 1
+
+/* Define to 1 if `xlated_prog_len' is a member of `struct bpf_prog_info'. */
+#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN 1
+
 /* Define to 1 if the system has the type `struct br_mdb_entry'. */
 #define HAVE_STRUCT_BR_MDB_ENTRY 1
 
@@ -1032,6 +1128,9 @@
 /* Define to 1 if the system has the type `struct dcbmsg'. */
 #define HAVE_STRUCT_DCBMSG 1
 
+/* Define to 1 if the system has the type `struct fib_rule_port_range'. */
+/* #undef HAVE_STRUCT_FIB_RULE_PORT_RANGE */
+
 /* Define to 1 if the system has the type `struct fib_rule_uid_range'. */
 #define HAVE_STRUCT_FIB_RULE_UID_RANGE 1
 
@@ -1041,6 +1140,9 @@
 /* Define to 1 if the system has the type `struct flock64'. */
 #define HAVE_STRUCT_FLOCK64 1
 
+/* Define to 1 if the system has the type `struct f_owner_ex'. */
+#define HAVE_STRUCT_F_OWNER_EX 1
+
 /* Define to 1 if the system has the type `struct gnet_stats_basic'. */
 #define HAVE_STRUCT_GNET_STATS_BASIC 1
 
@@ -1062,6 +1164,9 @@
 /* Define to 1 if the system has the type `struct ifla_bridge_id'. */
 #define HAVE_STRUCT_IFLA_BRIDGE_ID 1
 
+/* Define to 1 if the system has the type `struct ifla_cacheinfo'. */
+#define HAVE_STRUCT_IFLA_CACHEINFO 1
+
 /* Define to 1 if the system has the type `struct ifla_port_vsi'. */
 #define HAVE_STRUCT_IFLA_PORT_VSI 1
 
@@ -1069,7 +1174,7 @@
 #define HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION 1
 
 /* Define to 1 if the system has the type `struct kcmp_epoll_slot'. */
-/* #undef HAVE_STRUCT_KCMP_EPOLL_SLOT */
+#define HAVE_STRUCT_KCMP_EPOLL_SLOT 1
 
 /* Define to 1 if the system has the type `struct keyctl_kdf_params'. */
 #define HAVE_STRUCT_KEYCTL_KDF_PARAMS 1
@@ -1202,6 +1307,9 @@
 /* Define to 1 if the system has the type `struct sigcontext'. */
 #define HAVE_STRUCT_SIGCONTEXT 1
 
+/* Define to 1 if `l2_bdaddr_type' is a member of `struct sockaddr_l2'. */
+/* #undef HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE */
+
 /* Define to 1 if the system has the type `struct stat64'. */
 /* #undef HAVE_STRUCT_STAT64 */
 
@@ -1265,12 +1373,18 @@
 /* Define to 1 if `global_alpha' is a member of `struct v4l2_window'. */
 #define HAVE_STRUCT_V4L2_WINDOW_GLOBAL_ALPHA 1
 
+/* Define to 1 if the system has the type `struct __aio_sigset'. */
+/* #undef HAVE_STRUCT___AIO_SIGSET */
+
 /* Define to 1 if the system has the type `struct __kernel_flock'. */
 /* #undef HAVE_STRUCT___KERNEL_FLOCK */
 
 /* Define to 1 if the system has the type `struct __kernel_flock64'. */
 /* #undef HAVE_STRUCT___KERNEL_FLOCK64 */
 
+/* Define to 1 if the system has the type `struct __kernel_f_owner_ex'. */
+/* #undef HAVE_STRUCT___KERNEL_F_OWNER_EX */
+
 /* Define to 1 if the system has the type `struct __old_kernel_stat'. */
 /* #undef HAVE_STRUCT___OLD_KERNEL_STAT */
 
@@ -1331,20 +1445,23 @@
 /* Define to 1 if `dummy' is a member of `union bpf_attr'. */
 /* #undef HAVE_UNION_BPF_ATTR_DUMMY */
 
+/* Define to 1 if `expected_attach_type' is a member of `union bpf_attr'. */
+/* #undef HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE */
+
 /* Define to 1 if `file_flags' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_FILE_FLAGS */
+#define HAVE_UNION_BPF_ATTR_FILE_FLAGS 1
 
 /* Define to 1 if `flags' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_FLAGS 1
 
 /* Define to 1 if `info.bpf_fd' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_INFO_BPF_FD */
+#define HAVE_UNION_BPF_ATTR_INFO_BPF_FD 1
 
 /* Define to 1 if `info.info' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_INFO_INFO */
+#define HAVE_UNION_BPF_ATTR_INFO_INFO 1
 
 /* Define to 1 if `info.info_len' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_INFO_INFO_LEN */
+#define HAVE_UNION_BPF_ATTR_INFO_INFO_LEN 1
 
 /* Define to 1 if `inner_map_fd' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_INNER_MAP_FD 1
@@ -1383,7 +1500,13 @@
 #define HAVE_UNION_BPF_ATTR_MAP_FLAGS 1
 
 /* Define to 1 if `map_id' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_MAP_ID */
+#define HAVE_UNION_BPF_ATTR_MAP_ID 1
+
+/* Define to 1 if `map_ifindex' is a member of `union bpf_attr'. */
+/* #undef HAVE_UNION_BPF_ATTR_MAP_IFINDEX */
+
+/* Define to 1 if `map_name' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_MAP_NAME 1
 
 /* Define to 1 if `map_type' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_MAP_TYPE 1
@@ -1392,16 +1515,16 @@
 #define HAVE_UNION_BPF_ATTR_MAX_ENTRIES 1
 
 /* Define to 1 if `next_id' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_NEXT_ID */
+#define HAVE_UNION_BPF_ATTR_NEXT_ID 1
 
 /* Define to 1 if `next_key' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_NEXT_KEY 1
 
 /* Define to 1 if `numa_node' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_NUMA_NODE */
+#define HAVE_UNION_BPF_ATTR_NUMA_NODE 1
 
 /* Define to 1 if `open_flags' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_OPEN_FLAGS */
+#define HAVE_UNION_BPF_ATTR_OPEN_FLAGS 1
 
 /* Define to 1 if `pathname' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_PATHNAME 1
@@ -1410,13 +1533,43 @@
 #define HAVE_UNION_BPF_ATTR_PROG_FLAGS 1
 
 /* Define to 1 if `prog_id' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_PROG_ID */
+#define HAVE_UNION_BPF_ATTR_PROG_ID 1
+
+/* Define to 1 if `prog_ifindex' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_PROG_IFINDEX 1
+
+/* Define to 1 if `prog_name' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_PROG_NAME 1
 
 /* Define to 1 if `prog_type' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_PROG_TYPE 1
 
+/* Define to 1 if `query.attach_flags' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS 1
+
+/* Define to 1 if `query.attach_type' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE 1
+
+/* Define to 1 if `query.prog_cnt' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT 1
+
+/* Define to 1 if `query.prog_ids' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS 1
+
+/* Define to 1 if `query.query_flags' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS 1
+
+/* Define to 1 if `query.target_fd' is a member of `union bpf_attr'. */
+#define HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD 1
+
+/* Define to 1 if `raw_tracepoint.name' is a member of `union bpf_attr'. */
+/* #undef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME */
+
+/* Define to 1 if `raw_tracepoint.prog_fd' is a member of `union bpf_attr'. */
+/* #undef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD */
+
 /* Define to 1 if `start_id' is a member of `union bpf_attr'. */
-/* #undef HAVE_UNION_BPF_ATTR_START_ID */
+#define HAVE_UNION_BPF_ATTR_START_ID 1
 
 /* Define to 1 if `target_fd' is a member of `union bpf_attr'. */
 #define HAVE_UNION_BPF_ATTR_TARGET_FD 1
@@ -1460,6 +1613,9 @@
 /* Define to 1 if you have the `utimensat' function. */
 #define HAVE_UTIMENSAT 1
 
+/* Define to 1 if the system provides _Static_assert */
+/* #undef HAVE__STATIC_ASSERT */
+
 /* Define to 1 if the system provides __builtin_popcount function */
 #define HAVE___BUILTIN_POPCOUNT 1
 
@@ -1497,7 +1653,7 @@
 /* #undef M68K */
 
 /* Date */
-#define MANPAGE_DATE "2018-04-04"
+#define MANPAGE_DATE "2018-06-13"
 
 /* Define for the Meta architecture. */
 /* #undef METAG */
@@ -1530,7 +1686,7 @@
 #define PACKAGE_NAME "strace"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "strace 4.22"
+#define PACKAGE_STRING "strace 4.23"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "strace"
@@ -1539,7 +1695,7 @@
 #define PACKAGE_URL "https://strace.io"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "4.22"
+#define PACKAGE_VERSION "4.23"
 
 /* Define for the PowerPC architecture. */
 /* #undef POWERPC */
@@ -1585,10 +1741,13 @@
 /* Define for the Tile architecture */
 /* #undef TILE */
 
-/* Do demangling symbols in stack trace */
+/* Do symbols demangling in stack trace */
 /* #undef USE_DEMANGLE */
 
-/* Compile stack tracing functionality */
+/* Whether to use libdw for stack tracing */
+/* #undef USE_LIBDW */
+
+/* Whether to use libunwind for stack tracing */
 /* #undef USE_LIBUNWIND */
 
 /* Enable extensions on AIX 3, Interix.  */
@@ -1613,8 +1772,11 @@
 #endif
 
 
+/* The unwinder to use for stack tracing support */
+/* #undef USE_UNWINDER */
+
 /* Version number of package */
-#define VERSION "4.22"
+#define VERSION "4.23"
 
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
diff --git a/config.h.in b/config.h.in
index 610c5cb..24255b6 100644
--- a/config.h.in
+++ b/config.h.in
@@ -33,6 +33,9 @@
 /* Define to 1 if you want OABI support on ARM EABI. */
 #undef ENABLE_ARM_OABI
 
+/* Define to enable stack tracing support */
+#undef ENABLE_STACKTRACE
+
 /* Define to 1 if you have the `accept4' function. */
 #undef HAVE_ACCEPT4
 
@@ -93,6 +96,22 @@
    don't. */
 #undef HAVE_DECL_CTL_SUNRPC
 
+/* Define to 1 if you have the declaration of `IFLA_AF_SPEC', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_AF_SPEC
+
+/* Define to 1 if you have the declaration of `IFLA_PORT_SELF', and to 0 if
+   you don't. */
+#undef HAVE_DECL_IFLA_PORT_SELF
+
+/* Define to 1 if you have the declaration of `IFLA_PROTINFO', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_PROTINFO
+
+/* Define to 1 if you have the declaration of `IFLA_XDP', and to 0 if you
+   don't. */
+#undef HAVE_DECL_IFLA_XDP
+
 /* Define to 1 if you have the declaration of `KERN_ACPI_VIDEO_FLAGS', and to
    0 if you don't. */
 #undef HAVE_DECL_KERN_ACPI_VIDEO_FLAGS
@@ -393,6 +412,10 @@
    don't. */
 #undef HAVE_DECL_SYS_ERRLIST
 
+/* Define to 1 if you have the declaration of `TCA_STAB_DATA', and to 0 if you
+   don't. */
+#undef HAVE_DECL_TCA_STAB_DATA
+
 /* 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
@@ -651,6 +674,9 @@
 /* Define to 1 if the system provides dladdr */
 #undef HAVE_DLADDR
 
+/* Define to 1 if you have the <elfutils/libdwfl.h> header file. */
+#undef HAVE_ELFUTILS_LIBDWFL_H
+
 /* Define to 1 if you have the <elf.h> header file. */
 #undef HAVE_ELF_H
 
@@ -984,6 +1010,76 @@
 /* Define to 1 if the system has the type `struct bpf_insn'. */
 #undef HAVE_STRUCT_BPF_INSN
 
+/* Define to 1 if the system has the type `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO
+
+/* Define to 1 if `id' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_ID
+
+/* Define to 1 if `ifindex' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_IFINDEX
+
+/* Define to 1 if `key_size' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE
+
+/* Define to 1 if `map_flags' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS
+
+/* Define to 1 if `max_entries' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES
+
+/* Define to 1 if `name' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_NAME
+
+/* Define to 1 if `type' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_TYPE
+
+/* Define to 1 if `value_size' is a member of `struct bpf_map_info'. */
+#undef HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE
+
+/* Define to 1 if the system has the type `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO
+
+/* Define to 1 if `created_by_uid' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID
+
+/* Define to 1 if `id' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_ID
+
+/* Define to 1 if `ifindex' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_IFINDEX
+
+/* Define to 1 if `jited_prog_insns' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS
+
+/* Define to 1 if `jited_prog_len' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN
+
+/* Define to 1 if `load_time' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME
+
+/* Define to 1 if `map_ids' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS
+
+/* Define to 1 if `name' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_NAME
+
+/* Define to 1 if `nr_map_ids' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS
+
+/* Define to 1 if `tag' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_TAG
+
+/* Define to 1 if `type' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_TYPE
+
+/* Define to 1 if `xlated_prog_insns' is a member of `struct bpf_prog_info'.
+   */
+#undef HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS
+
+/* Define to 1 if `xlated_prog_len' is a member of `struct bpf_prog_info'. */
+#undef HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN
+
 /* Define to 1 if the system has the type `struct br_mdb_entry'. */
 #undef HAVE_STRUCT_BR_MDB_ENTRY
 
@@ -1034,6 +1130,9 @@
 /* Define to 1 if the system has the type `struct dcbmsg'. */
 #undef HAVE_STRUCT_DCBMSG
 
+/* Define to 1 if the system has the type `struct fib_rule_port_range'. */
+#undef HAVE_STRUCT_FIB_RULE_PORT_RANGE
+
 /* Define to 1 if the system has the type `struct fib_rule_uid_range'. */
 #undef HAVE_STRUCT_FIB_RULE_UID_RANGE
 
@@ -1043,6 +1142,9 @@
 /* Define to 1 if the system has the type `struct flock64'. */
 #undef HAVE_STRUCT_FLOCK64
 
+/* Define to 1 if the system has the type `struct f_owner_ex'. */
+#undef HAVE_STRUCT_F_OWNER_EX
+
 /* Define to 1 if the system has the type `struct gnet_stats_basic'. */
 #undef HAVE_STRUCT_GNET_STATS_BASIC
 
@@ -1064,6 +1166,9 @@
 /* Define to 1 if the system has the type `struct ifla_bridge_id'. */
 #undef HAVE_STRUCT_IFLA_BRIDGE_ID
 
+/* Define to 1 if the system has the type `struct ifla_cacheinfo'. */
+#undef HAVE_STRUCT_IFLA_CACHEINFO
+
 /* Define to 1 if the system has the type `struct ifla_port_vsi'. */
 #undef HAVE_STRUCT_IFLA_PORT_VSI
 
@@ -1204,6 +1309,9 @@
 /* Define to 1 if the system has the type `struct sigcontext'. */
 #undef HAVE_STRUCT_SIGCONTEXT
 
+/* Define to 1 if `l2_bdaddr_type' is a member of `struct sockaddr_l2'. */
+#undef HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE
+
 /* Define to 1 if the system has the type `struct stat64'. */
 #undef HAVE_STRUCT_STAT64
 
@@ -1267,12 +1375,18 @@
 /* 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 __aio_sigset'. */
+#undef HAVE_STRUCT___AIO_SIGSET
+
 /* Define to 1 if the system has the type `struct __kernel_flock'. */
 #undef HAVE_STRUCT___KERNEL_FLOCK
 
 /* Define to 1 if the system has the type `struct __kernel_flock64'. */
 #undef HAVE_STRUCT___KERNEL_FLOCK64
 
+/* Define to 1 if the system has the type `struct __kernel_f_owner_ex'. */
+#undef HAVE_STRUCT___KERNEL_F_OWNER_EX
+
 /* Define to 1 if the system has the type `struct __old_kernel_stat'. */
 #undef HAVE_STRUCT___OLD_KERNEL_STAT
 
@@ -1333,6 +1447,9 @@
 /* Define to 1 if `dummy' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_DUMMY
 
+/* Define to 1 if `expected_attach_type' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE
+
 /* Define to 1 if `file_flags' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_FILE_FLAGS
 
@@ -1387,6 +1504,12 @@
 /* Define to 1 if `map_id' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_MAP_ID
 
+/* Define to 1 if `map_ifindex' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_MAP_IFINDEX
+
+/* Define to 1 if `map_name' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_MAP_NAME
+
 /* Define to 1 if `map_type' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_MAP_TYPE
 
@@ -1414,9 +1537,39 @@
 /* Define to 1 if `prog_id' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_PROG_ID
 
+/* Define to 1 if `prog_ifindex' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_PROG_IFINDEX
+
+/* Define to 1 if `prog_name' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_PROG_NAME
+
 /* Define to 1 if `prog_type' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_PROG_TYPE
 
+/* Define to 1 if `query.attach_flags' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS
+
+/* Define to 1 if `query.attach_type' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE
+
+/* Define to 1 if `query.prog_cnt' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT
+
+/* Define to 1 if `query.prog_ids' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS
+
+/* Define to 1 if `query.query_flags' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS
+
+/* Define to 1 if `query.target_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD
+
+/* Define to 1 if `raw_tracepoint.name' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME
+
+/* Define to 1 if `raw_tracepoint.prog_fd' is a member of `union bpf_attr'. */
+#undef HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD
+
 /* Define to 1 if `start_id' is a member of `union bpf_attr'. */
 #undef HAVE_UNION_BPF_ATTR_START_ID
 
@@ -1462,6 +1615,9 @@
 /* Define to 1 if you have the `utimensat' function. */
 #undef HAVE_UTIMENSAT
 
+/* Define to 1 if the system provides _Static_assert */
+#undef HAVE__STATIC_ASSERT
+
 /* Define to 1 if the system provides __builtin_popcount function */
 #undef HAVE___BUILTIN_POPCOUNT
 
@@ -1591,10 +1747,13 @@
 /* Define for the Tile architecture */
 #undef TILE
 
-/* Do demangling symbols in stack trace */
+/* Do symbols demangling in stack trace */
 #undef USE_DEMANGLE
 
-/* Compile stack tracing functionality */
+/* Whether to use libdw for stack tracing */
+#undef USE_LIBDW
+
+/* Whether to use libunwind for stack tracing */
 #undef USE_LIBUNWIND
 
 /* Enable extensions on AIX 3, Interix.  */
@@ -1619,6 +1778,9 @@
 #endif
 
 
+/* The unwinder to use for stack tracing support */
+#undef USE_UNWINDER
+
 /* Version number of package */
 #undef VERSION
 
diff --git a/configure b/configure
index 4dfded7..141ac3c 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.22.
+# Generated by GNU Autoconf 2.69 for strace 4.23.
 #
 # Report bugs to <strace-devel@lists.strace.io>.
 #
@@ -582,8 +582,8 @@
 # Identity of this package.
 PACKAGE_NAME='strace'
 PACKAGE_TARNAME='strace'
-PACKAGE_VERSION='4.22'
-PACKAGE_STRING='strace 4.22'
+PACKAGE_VERSION='4.23'
+PACKAGE_STRING='strace 4.23'
 PACKAGE_BUGREPORT='strace-devel@lists.strace.io'
 PACKAGE_URL='https://strace.io'
 
@@ -654,9 +654,17 @@
 libiberty_LIBS
 USE_LIBUNWIND_FALSE
 USE_LIBUNWIND_TRUE
+USE_LIBDW_FALSE
+USE_LIBDW_TRUE
+ENABLE_STACKTRACE_FALSE
+ENABLE_STACKTRACE_TRUE
 libunwind_CPPFLAGS
 libunwind_LDFLAGS
 libunwind_LIBS
+libdw_LIBS
+libdw_LDFLAGS
+libdw_CFLAGS
+libdw_CPPFLAGS
 READELF
 PERL
 mq_LIBS
@@ -806,6 +814,8 @@
 with_gcov
 enable_code_coverage
 enable_arm_oabi
+enable_stacktrace
+with_libdw
 with_libunwind
 with_libiberty
 enable_mpers
@@ -1364,7 +1374,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.22 to adapt to many kinds of systems.
+\`configure' configures strace 4.23 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1434,7 +1444,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of strace 4.22:";;
+     short | recursive ) echo "Configuration of strace 4.23:";;
    esac
   cat <<\_ACEOF
 
@@ -1454,6 +1464,9 @@
   --enable-gcc-Werror     turn on gcc's -Werror option
   --enable-code-coverage  Whether to enable code coverage support
   --enable-arm-oabi       enable OABI support on ARM EABI
+  --enable-stacktrace=yes|no|check
+                          whether to enable stack tracing support, default is
+                          check
   --enable-mpers=yes|no|check|m32|mx32
                           whether to enable multiple personalities support
                           required for proper decoding of structures used by
@@ -1472,6 +1485,8 @@
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --with-gcov=GCOV        use given GCOV for coverage (GCOV=gcov).
+  --with-libdw            use libdw to implement stack tracing support
+
   --with-libunwind        use libunwind to implement stack tracing support
   --with-libiberty        use libiberty to demangle symbols in stack trace
 
@@ -1552,7 +1567,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-strace configure 4.22
+strace configure 4.23
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2292,7 +2307,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.22, which was
+It was created by strace $as_me 4.23, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3163,7 +3178,7 @@
 
 # Define the identity of the package.
  PACKAGE='strace'
- VERSION='4.22'
+ VERSION='4.23'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3350,9 +3365,9 @@
 
 
 
-RPM_CHANGELOGTIME="$(LC_TIME=C date '+%a %b %d %Y')"
+RPM_CHANGELOGTIME="$(LC_TIME=C date -u '+%a %b %d %Y')"
 
-DEB_CHANGELOGTIME="$(LC_TIME=C date -R)"
+DEB_CHANGELOGTIME="$(LC_TIME=C date -u -R)"
 
 
 ac_ext=c
@@ -8984,9 +8999,9 @@
 
 
 
-$as_echo "#define MANPAGE_DATE \"2018-04-04\"" >>confdefs.h
+$as_echo "#define MANPAGE_DATE \"2018-06-13\"" >>confdefs.h
 
-MANPAGE_DATE=2018-04-04
+MANPAGE_DATE=2018-06-13
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported architecture" >&5
@@ -9866,6 +9881,28 @@
 
 
 fi
+ac_fn_c_check_type "$LINENO" "struct f_owner_ex" "ac_cv_type_struct_f_owner_ex" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct_f_owner_ex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_F_OWNER_EX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct __kernel_f_owner_ex" "ac_cv_type_struct___kernel_f_owner_ex" "#include <sys/types.h>
+#include <linux/fcntl.h>
+"
+if test "x$ac_cv_type_struct___kernel_f_owner_ex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___KERNEL_F_OWNER_EX 1
+_ACEOF
+
+
+fi
 
 
 ac_fn_c_check_type "$LINENO" "struct crypto_report_aead" "ac_cv_type_struct_crypto_report_aead" "#include <linux/cryptouser.h>
@@ -10222,7 +10259,7 @@
 fi
 
 
-for ac_header in asm/cachectl.h asm/guarded_storage.h asm/sysmips.h bluetooth/bluetooth.h elf.h iconv.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/kvm.h linux/memfd.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/ipset/ip_set.h linux/netfilter/nf_tables.h linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h linux/netfilter/nfnetlink_acct.h linux/netfilter/nfnetlink_conntrack.h linux/netfilter/nfnetlink_cthelper.h linux/netfilter/nfnetlink_cttimeout.h linux/netfilter/nfnetlink_log.h linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h paths.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h
+for ac_header in asm/cachectl.h asm/guarded_storage.h asm/sysmips.h elf.h iconv.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/kvm.h linux/memfd.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/ipset/ip_set.h linux/netfilter/nf_tables.h linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h linux/netfilter/nfnetlink_acct.h linux/netfilter/nfnetlink_conntrack.h linux/netfilter/nfnetlink_cthelper.h linux/netfilter/nfnetlink_cttimeout.h linux/netfilter/nfnetlink_log.h linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h paths.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/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"
@@ -10353,8 +10390,238 @@
 
 
 fi
+ac_fn_c_check_type "$LINENO" "struct bpf_map_info" "ac_cv_type_struct_bpf_map_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_type_struct_bpf_map_info" = xyes; then :
 
-		ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_bpf_fd" "ac_cv_member_union_bpf_attr_attach_bpf_fd" "#include <linux/bpf.h>
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct bpf_prog_info" "ac_cv_type_struct_bpf_prog_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_type_struct_bpf_prog_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO 1
+_ACEOF
+
+
+fi
+
+		ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "id" "ac_cv_member_struct_bpf_map_info_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "ifindex" "ac_cv_member_struct_bpf_map_info_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "key_size" "ac_cv_member_struct_bpf_map_info_key_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_key_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_KEY_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "map_flags" "ac_cv_member_struct_bpf_map_info_map_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_map_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_MAP_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "max_entries" "ac_cv_member_struct_bpf_map_info_max_entries" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_max_entries" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_MAX_ENTRIES 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "name" "ac_cv_member_struct_bpf_map_info_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "type" "ac_cv_member_struct_bpf_map_info_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_map_info" "value_size" "ac_cv_member_struct_bpf_map_info_value_size" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_map_info_value_size" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_MAP_INFO_VALUE_SIZE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "created_by_uid" "ac_cv_member_struct_bpf_prog_info_created_by_uid" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_created_by_uid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_CREATED_BY_UID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "id" "ac_cv_member_struct_bpf_prog_info_id" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_id" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_ID 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "ifindex" "ac_cv_member_struct_bpf_prog_info_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_prog_insns" "ac_cv_member_struct_bpf_prog_info_jited_prog_insns" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_prog_insns" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_INSNS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "jited_prog_len" "ac_cv_member_struct_bpf_prog_info_jited_prog_len" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_jited_prog_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_JITED_PROG_LEN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "load_time" "ac_cv_member_struct_bpf_prog_info_load_time" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_load_time" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_LOAD_TIME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "map_ids" "ac_cv_member_struct_bpf_prog_info_map_ids" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_map_ids" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_MAP_IDS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "name" "ac_cv_member_struct_bpf_prog_info_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "nr_map_ids" "ac_cv_member_struct_bpf_prog_info_nr_map_ids" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_nr_map_ids" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_NR_MAP_IDS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "tag" "ac_cv_member_struct_bpf_prog_info_tag" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_tag" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_TAG 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "type" "ac_cv_member_struct_bpf_prog_info_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "xlated_prog_insns" "ac_cv_member_struct_bpf_prog_info_xlated_prog_insns" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_xlated_prog_insns" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_INSNS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct bpf_prog_info" "xlated_prog_len" "ac_cv_member_struct_bpf_prog_info_xlated_prog_len" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_struct_bpf_prog_info_xlated_prog_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BPF_PROG_INFO_XLATED_PROG_LEN 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "attach_bpf_fd" "ac_cv_member_union_bpf_attr_attach_bpf_fd" "#include <linux/bpf.h>
 "
 if test "x$ac_cv_member_union_bpf_attr_attach_bpf_fd" = xyes; then :
 
@@ -10404,6 +10671,16 @@
 
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "expected_attach_type" "ac_cv_member_union_bpf_attr_expected_attach_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_expected_attach_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_EXPECTED_ATTACH_TYPE 1
+_ACEOF
+
+
+fi
 ac_fn_c_check_member "$LINENO" "union bpf_attr" "file_flags" "ac_cv_member_union_bpf_attr_file_flags" "#include <linux/bpf.h>
 "
 if test "x$ac_cv_member_union_bpf_attr_file_flags" = xyes; then :
@@ -10424,6 +10701,36 @@
 
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.bpf_fd" "ac_cv_member_union_bpf_attr_info_bpf_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_info_bpf_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INFO_BPF_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info" "ac_cv_member_union_bpf_attr_info_info" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_info_info" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INFO_INFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info_len" "ac_cv_member_union_bpf_attr_info_info_len" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_info_info_len" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_INFO_INFO_LEN 1
+_ACEOF
+
+
+fi
 ac_fn_c_check_member "$LINENO" "union bpf_attr" "inner_map_fd" "ac_cv_member_union_bpf_attr_inner_map_fd" "#include <linux/bpf.h>
 "
 if test "x$ac_cv_member_union_bpf_attr_inner_map_fd" = xyes; then :
@@ -10554,6 +10861,26 @@
 
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_ifindex" "ac_cv_member_union_bpf_attr_map_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_name" "ac_cv_member_union_bpf_attr_map_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_map_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_MAP_NAME 1
+_ACEOF
+
+
+fi
 ac_fn_c_check_member "$LINENO" "union bpf_attr" "map_type" "ac_cv_member_union_bpf_attr_map_type" "#include <linux/bpf.h>
 "
 if test "x$ac_cv_member_union_bpf_attr_map_type" = xyes; then :
@@ -10644,6 +10971,26 @@
 
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_ifindex" "ac_cv_member_union_bpf_attr_prog_ifindex" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_ifindex" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_IFINDEX 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_name" "ac_cv_member_union_bpf_attr_prog_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_prog_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_PROG_NAME 1
+_ACEOF
+
+
+fi
 ac_fn_c_check_member "$LINENO" "union bpf_attr" "prog_type" "ac_cv_member_union_bpf_attr_prog_type" "#include <linux/bpf.h>
 "
 if test "x$ac_cv_member_union_bpf_attr_prog_type" = xyes; then :
@@ -10654,6 +11001,86 @@
 
 
 fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.attach_flags" "ac_cv_member_union_bpf_attr_query_attach_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_attach_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.attach_type" "ac_cv_member_union_bpf_attr_query_attach_type" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_attach_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_ATTACH_TYPE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.prog_cnt" "ac_cv_member_union_bpf_attr_query_prog_cnt" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_prog_cnt" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_PROG_CNT 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.prog_ids" "ac_cv_member_union_bpf_attr_query_prog_ids" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_prog_ids" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_PROG_IDS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.query_flags" "ac_cv_member_union_bpf_attr_query_query_flags" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_query_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_QUERY_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "query.target_fd" "ac_cv_member_union_bpf_attr_query_target_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_query_target_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_QUERY_TARGET_FD 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "raw_tracepoint.name" "ac_cv_member_union_bpf_attr_raw_tracepoint_name" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_raw_tracepoint_name" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_NAME 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "raw_tracepoint.prog_fd" "ac_cv_member_union_bpf_attr_raw_tracepoint_prog_fd" "#include <linux/bpf.h>
+"
+if test "x$ac_cv_member_union_bpf_attr_raw_tracepoint_prog_fd" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_UNION_BPF_ATTR_RAW_TRACEPOINT_PROG_FD 1
+_ACEOF
+
+
+fi
 ac_fn_c_check_member "$LINENO" "union bpf_attr" "start_id" "ac_cv_member_union_bpf_attr_start_id" "#include <linux/bpf.h>
 "
 if test "x$ac_cv_member_union_bpf_attr_start_id" = xyes; then :
@@ -10674,26 +11101,6 @@
 
 
 fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "value" "ac_cv_member_union_bpf_attr_value" "#include <linux/bpf.h>
-"
-if test "x$ac_cv_member_union_bpf_attr_value" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_VALUE 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "value_size" "ac_cv_member_union_bpf_attr_value_size" "#include <linux/bpf.h>
-"
-if test "x$ac_cv_member_union_bpf_attr_value_size" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_VALUE_SIZE 1
-_ACEOF
-
-
-fi
 ac_fn_c_check_member "$LINENO" "union bpf_attr" "test.data_in" "ac_cv_member_union_bpf_attr_test_data_in" "#include <linux/bpf.h>
 "
 if test "x$ac_cv_member_union_bpf_attr_test_data_in" = xyes; then :
@@ -10774,32 +11181,22 @@
 
 
 fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.bpf_fd" "ac_cv_member_union_bpf_attr_info_bpf_fd" "#include <linux/bpf.h>
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "value" "ac_cv_member_union_bpf_attr_value" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_info_bpf_fd" = xyes; then :
+if test "x$ac_cv_member_union_bpf_attr_value" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INFO_BPF_FD 1
+#define HAVE_UNION_BPF_ATTR_VALUE 1
 _ACEOF
 
 
 fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info" "ac_cv_member_union_bpf_attr_info_info" "#include <linux/bpf.h>
+ac_fn_c_check_member "$LINENO" "union bpf_attr" "value_size" "ac_cv_member_union_bpf_attr_value_size" "#include <linux/bpf.h>
 "
-if test "x$ac_cv_member_union_bpf_attr_info_info" = xyes; then :
+if test "x$ac_cv_member_union_bpf_attr_value_size" = xyes; then :
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INFO_INFO 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "union bpf_attr" "info.info_len" "ac_cv_member_union_bpf_attr_info_info_len" "#include <linux/bpf.h>
-"
-if test "x$ac_cv_member_union_bpf_attr_info_info_len" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_UNION_BPF_ATTR_INFO_INFO_LEN 1
+#define HAVE_UNION_BPF_ATTR_VALUE_SIZE 1
 _ACEOF
 
 
@@ -10822,6 +11219,32 @@
 done
 
 
+for ac_header in bluetooth/bluetooth.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default"
+if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BLUETOOTH_BLUETOOTH_H 1
+_ACEOF
+
+	ac_fn_c_check_member "$LINENO" "struct sockaddr_l2" "l2_bdaddr_type" "ac_cv_member_struct_sockaddr_l2_l2_bdaddr_type" "#include <bluetooth/bluetooth.h>
+			 #include <bluetooth/l2cap.h>
+"
+if test "x$ac_cv_member_struct_sockaddr_l2_l2_bdaddr_type" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_L2_L2_BDADDR_TYPE 1
+_ACEOF
+
+
+fi
+
+
+fi
+
+done
+
+
 ac_fn_c_check_type "$LINENO" "struct br_mdb_entry" "ac_cv_type_struct_br_mdb_entry" "#include <linux/if_bridge.h>
 "
 if test "x$ac_cv_type_struct_br_mdb_entry" = xyes; then :
@@ -10899,7 +11322,8 @@
 fi
 
 
-ac_fn_c_check_type "$LINENO" "struct rta_mfc_stats" "ac_cv_type_struct_rta_mfc_stats" "#include <linux/rtnetlink.h>
+ac_fn_c_check_type "$LINENO" "struct rta_mfc_stats" "ac_cv_type_struct_rta_mfc_stats" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 "
 if test "x$ac_cv_type_struct_rta_mfc_stats" = xyes; then :
 
@@ -10909,7 +11333,8 @@
 
 
 fi
-ac_fn_c_check_type "$LINENO" "struct rtvia" "ac_cv_type_struct_rtvia" "#include <linux/rtnetlink.h>
+ac_fn_c_check_type "$LINENO" "struct rtvia" "ac_cv_type_struct_rtvia" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 "
 if test "x$ac_cv_type_struct_rtvia" = xyes; then :
 
@@ -10954,7 +11379,8 @@
 fi
 
 
-ac_fn_c_check_type "$LINENO" "struct ifla_bridge_id" "ac_cv_type_struct_ifla_bridge_id" "#include <linux/if_link.h>
+ac_fn_c_check_type "$LINENO" "struct ifla_bridge_id" "ac_cv_type_struct_ifla_bridge_id" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 "
 if test "x$ac_cv_type_struct_ifla_bridge_id" = xyes; then :
 
@@ -10964,7 +11390,19 @@
 
 
 fi
-ac_fn_c_check_type "$LINENO" "struct ifla_port_vsi" "ac_cv_type_struct_ifla_port_vsi" "#include <linux/if_link.h>
+ac_fn_c_check_type "$LINENO" "struct ifla_cacheinfo" "ac_cv_type_struct_ifla_cacheinfo" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_type_struct_ifla_cacheinfo" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_IFLA_CACHEINFO 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct ifla_port_vsi" "ac_cv_type_struct_ifla_port_vsi" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 "
 if test "x$ac_cv_type_struct_ifla_port_vsi" = xyes; then :
 
@@ -10974,7 +11412,8 @@
 
 
 fi
-ac_fn_c_check_type "$LINENO" "struct rtnl_link_stats64" "ac_cv_type_struct_rtnl_link_stats64" "#include <linux/if_link.h>
+ac_fn_c_check_type "$LINENO" "struct rtnl_link_stats64" "ac_cv_type_struct_rtnl_link_stats64" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 "
 if test "x$ac_cv_type_struct_rtnl_link_stats64" = xyes; then :
 
@@ -10985,7 +11424,8 @@
 
 fi
 
-ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats_rx_nohandler" "#include <linux/if_link.h>
+ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats_rx_nohandler" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 "
 if test "x$ac_cv_member_struct_rtnl_link_stats_rx_nohandler" = xyes; then :
 
@@ -10995,7 +11435,8 @@
 
 
 fi
-ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats64" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats64_rx_nohandler" "#include <linux/if_link.h>
+ac_fn_c_check_member "$LINENO" "struct rtnl_link_stats64" "rx_nohandler" "ac_cv_member_struct_rtnl_link_stats64_rx_nohandler" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
 "
 if test "x$ac_cv_member_struct_rtnl_link_stats64_rx_nohandler" = xyes; then :
 
@@ -11006,6 +11447,55 @@
 
 fi
 
+ac_fn_c_check_decl "$LINENO" "IFLA_PORT_SELF" "ac_cv_have_decl_IFLA_PORT_SELF" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_have_decl_IFLA_PORT_SELF" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PORT_SELF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_PROTINFO" "ac_cv_have_decl_IFLA_PROTINFO" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_have_decl_IFLA_PROTINFO" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_PROTINFO $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_AF_SPEC" "ac_cv_have_decl_IFLA_AF_SPEC" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_have_decl_IFLA_AF_SPEC" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_AF_SPEC $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "IFLA_XDP" "ac_cv_have_decl_IFLA_XDP" "#include <sys/socket.h>
+#include <linux/rtnetlink.h>
+"
+if test "x$ac_cv_have_decl_IFLA_XDP" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IFLA_XDP $ac_have_decl
+_ACEOF
+
 
 ac_fn_c_check_type "$LINENO" "struct gnet_stats_basic" "ac_cv_type_struct_gnet_stats_basic" "#include <linux/gen_stats.h>
 "
@@ -11049,7 +11539,8 @@
 fi
 
 
-ac_fn_c_check_type "$LINENO" "struct tc_sizespec" "ac_cv_type_struct_tc_sizespec" "#include <linux/pkt_sched.h>
+ac_fn_c_check_type "$LINENO" "struct tc_sizespec" "ac_cv_type_struct_tc_sizespec" "#include <linux/types.h>
+#include <linux/pkt_sched.h>
 "
 if test "x$ac_cv_type_struct_tc_sizespec" = xyes; then :
 
@@ -11060,6 +11551,19 @@
 
 fi
 
+ac_fn_c_check_decl "$LINENO" "TCA_STAB_DATA" "ac_cv_have_decl_TCA_STAB_DATA" "#include <linux/types.h>
+#include <linux/pkt_sched.h>
+"
+if test "x$ac_cv_have_decl_TCA_STAB_DATA" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_TCA_STAB_DATA $ac_have_decl
+_ACEOF
+
 
 ac_fn_c_check_type "$LINENO" "struct fib_rule_uid_range" "ac_cv_type_struct_fib_rule_uid_range" "#include <linux/fib_rules.h>
 "
@@ -11071,6 +11575,16 @@
 
 
 fi
+ac_fn_c_check_type "$LINENO" "struct fib_rule_port_range" "ac_cv_type_struct_fib_rule_port_range" "#include <linux/fib_rules.h>
+"
+if test "x$ac_cv_type_struct_fib_rule_port_range" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_FIB_RULE_PORT_RANGE 1
+_ACEOF
+
+
+fi
 
 
 ac_fn_c_check_type "$LINENO" "struct statfs" "ac_cv_type_struct_statfs" "#include <linux/types.h>
@@ -11271,6 +11785,21 @@
 fi
 
 
+saved_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS -I$srcdir/linux"
+ac_fn_c_check_type "$LINENO" "struct __aio_sigset" "ac_cv_type_struct___aio_sigset" "#include <linux/aio_abi.h>
+"
+if test "x$ac_cv_type_struct___aio_sigset" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT___AIO_SIGSET 1
+_ACEOF
+
+
+fi
+
+CPPFLAGS="$saved_CPPFLAGS"
+
 for ac_header in linux/btrfs.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "linux/btrfs.h" "ac_cv_header_linux_btrfs_h" "$ac_includes_default"
@@ -13560,25 +14089,58 @@
 main ()
 {
 static_assert(1,"")
+
   ;
   return 0;
 }
+
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   st_cv_have_static_assert=yes
 else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+_Static_assert(1,"")
+
+  ;
+  return 0;
+}
+
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  st_cv_have_static_assert=_Static_assert
+else
   st_cv_have_static_assert=no
+
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+
+
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_have_static_assert" >&5
 $as_echo "$st_cv_have_static_assert" >&6; }
-if test "x$st_cv_have_static_assert" = xyes; then
+case "x$st_cv_have_static_assert" in
+	xyes)
 
 $as_echo "#define HAVE_STATIC_ASSERT 1" >>confdefs.h
 
-fi
+		;;
+	x_Static_assert)
+
+$as_echo "#define HAVE__STATIC_ASSERT 1" >>confdefs.h
+
+		;;
+esac
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dladdr in -ldl" >&5
 $as_echo_n "checking for dladdr in -ldl... " >&6; }
@@ -13963,9 +14525,47 @@
 fi
 
 
-libunwind_CPPFLAGS=
-libunwind_LDFLAGS=
-libunwind_LIBS=
+
+# Check whether --enable-stacktrace was given.
+if test "${enable_stacktrace+set}" = set; then :
+  enableval=$enable_stacktrace; case "$enableval" in
+		yes|no|check) enable_stacktrace="$enableval" ;;
+		*) as_fn_error $? "bad value $enableval for enable-stacktrace option.
+				 Valid options are: yes, no, check." "$LINENO" 5
+		;;
+	 esac
+else
+  enable_stacktrace=check
+fi
+
+
+use_unwinder=
+
+if test x"$enable_stacktrace" != xno; then :
+
+: ${libdw_CPPFLAGS=}
+: ${libdw_CFLAGS=}
+: ${libdw_LDFLAGS=}
+: ${libdw_LIBS=}
+
+
+# Check whether --with-libdw was given.
+if test "${with_libdw+set}" = set; then :
+  withval=$with_libdw; case "${withval}" in
+	     yes|no|check) ;;
+	     *) libdw_CPPFLAGS="-I${withval}/include"
+		libdw_LDFLAGS="-L${withval}/lib"
+		with_libdw=yes ;;
+	     esac
+
+else
+  with_libdw=check
+
+fi
+
+
+
+
 
 # Check whether --with-libunwind was given.
 if test "${with_libunwind+set}" = set; then :
@@ -13981,8 +14581,154 @@
 fi
 
 
-use_libunwind=no
-if test "x$with_libunwind" != xno; then :
+
+       if test "x$with_libdw" = xyes && test "x$with_libunwind" = xyes; then :
+  as_fn_error $? "--with-libdw=yes and --with-libunwind=yes are mutually exclusive" "$LINENO" 5
+elif test "x$with_libdw" = xyes; then :
+  with_libunwind=no
+elif test "x$with_libunwind" = xyes; then :
+  with_libdw=no
+
+fi
+       if test "x$use_unwinder" = x; then :
+
+have_libdw=
+
+if test "x$with_libdw" != xno && test "x$use_unwinder" = x; then :
+  saved_CPPFLAGS="$CPPFLAGS"
+       saved_CFLAGS="$CFLAGS"
+       CPPFLAGS="$CPPFLAGS $libdw_CPPFLAGS"
+       CFLAGS="$CFLAGS $libdw_CFLAGS"
+
+       for ac_header in elfutils/libdwfl.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "elfutils/libdwfl.h" "ac_cv_header_elfutils_libdwfl_h" "$ac_includes_default"
+if test "x$ac_cv_header_elfutils_libdwfl_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_ELFUTILS_LIBDWFL_H 1
+_ACEOF
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dwfl_linux_proc_attach in -ldw" >&5
+$as_echo_n "checking for dwfl_linux_proc_attach in -ldw... " >&6; }
+if ${ac_cv_lib_dw_dwfl_linux_proc_attach+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldw $libdw_LDFLAGS $libdw_LIBS
+				      $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dwfl_linux_proc_attach ();
+int
+main ()
+{
+return dwfl_linux_proc_attach ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dw_dwfl_linux_proc_attach=yes
+else
+  ac_cv_lib_dw_dwfl_linux_proc_attach=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dw_dwfl_linux_proc_attach" >&5
+$as_echo "$ac_cv_lib_dw_dwfl_linux_proc_attach" >&6; }
+if test "x$ac_cv_lib_dw_dwfl_linux_proc_attach" = xyes; then :
+  libdw_LIBS="-ldw $libdw_LIBS"
+				       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elfutils version" >&5
+$as_echo_n "checking for elfutils version... " >&6; }
+if ${st_cv_ELFUTILS_VERSION+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  st_cv_ELFUTILS_VERSION="$(echo _ELFUTILS_VERSION |
+										  $CPP $CPPFLAGS -P -imacros elfutils/version.h - |
+										  grep '^[0-9]')"
+							test -n "$st_cv_ELFUTILS_VERSION" ||
+								st_cv_ELFUTILS_VERSION=0
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $st_cv_ELFUTILS_VERSION" >&5
+$as_echo "$st_cv_ELFUTILS_VERSION" >&6; }
+				       if test "$st_cv_ELFUTILS_VERSION" -ge 164; then :
+  have_libdw=yes
+else
+  if test "x$with_libdw" = xyes; then :
+  as_fn_error $? "elfutils version >= 164 is required for stack tracing support" "$LINENO" 5
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: elfutils version >= 164 is required for stack tracing support" >&5
+$as_echo "$as_me: WARNING: elfutils version >= 164 is required for stack tracing support" >&2;}
+
+fi
+
+
+fi
+
+else
+  if test "x$with_libdw" = xyes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find dwfl_linux_proc_attach in libdw
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+fi
+
+
+else
+  if test "x$with_libdw" = xyes; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to find elfutils/libdwfl.h
+See \`config.log' for more details" "$LINENO" 5; }
+
+fi
+
+
+fi
+
+done
+
+
+       CFLAGS="$saved_CFLAGS"
+       CPPFLAGS="$saved_CPPFLAGS"
+
+
+fi
+
+if test "x$have_libdw" = xyes; then :
+  use_unwinder=libdw
+
+$as_echo "#define USE_LIBDW 1" >>confdefs.h
+
+
+
+
+
+
+
+fi
+
+
+fi
+       if test "x$use_unwinder" = x; then :
+
+libunwind_CPPFLAGS=
+libunwind_LDFLAGS=
+libunwind_LIBS=
+
+if test "x$with_libunwind" != xno && test "x$use_unwinder" = x; then :
   saved_CPPFLAGS="$CPPFLAGS"
        CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS"
 
@@ -14097,7 +14843,7 @@
 $as_echo "$ac_cv_lib_unwind_ptrace__UPT_create" >&6; }
 if test "x$ac_cv_lib_unwind_ptrace__UPT_create" = xyes; then :
   libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS"
-		   use_libunwind=yes
+		   use_unwinder=libunwind
 
 else
   if test "x$with_libunwind" != xcheck; then
@@ -14159,9 +14905,7 @@
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable stack tracing support using libunwind" >&5
-$as_echo_n "checking whether to enable stack tracing support using libunwind... " >&6; }
-if test "x$use_libunwind" = xyes; then
+if test "x$use_unwinder" = xlibunwind; then
 
 $as_echo "#define USE_LIBUNWIND 1" >>confdefs.h
 
@@ -14169,7 +14913,36 @@
 
 
 fi
- if test "x$use_libunwind" = xyes; then
+
+
+fi
+       if test x"$enable_stacktrace$use_unwinder" = xyes; then :
+  as_fn_error $? "stack tracing support requires an unwinder" "$LINENO" 5
+
+fi
+
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable stack tracing support" >&5
+$as_echo_n "checking whether to enable stack tracing support... " >&6; }
+ if test "x$use_unwinder" != x; then
+  ENABLE_STACKTRACE_TRUE=
+  ENABLE_STACKTRACE_FALSE='#'
+else
+  ENABLE_STACKTRACE_TRUE='#'
+  ENABLE_STACKTRACE_FALSE=
+fi
+
+ if test "x$use_unwinder" = xlibdw; then
+  USE_LIBDW_TRUE=
+  USE_LIBDW_FALSE='#'
+else
+  USE_LIBDW_TRUE='#'
+  USE_LIBDW_FALSE=
+fi
+
+ if test "x$use_unwinder" = xlibunwind; then
   USE_LIBUNWIND_TRUE=
   USE_LIBUNWIND_FALSE='#'
 else
@@ -14177,12 +14950,20 @@
   USE_LIBUNWIND_FALSE=
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_libunwind" >&5
-$as_echo "$use_libunwind" >&6; }
 
-libiberty_CPPFLAGS=
-libiberty_LDFLAGS=
-libiberty_LIBS=
+use_libiberty=
+if test "x$use_unwinder" != x; then :
+
+$as_echo "#define ENABLE_STACKTRACE 1" >>confdefs.h
+
+
+cat >>confdefs.h <<_ACEOF
+#define USE_UNWINDER "$use_unwinder"
+_ACEOF
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, using $use_unwinder" >&5
+$as_echo "yes, using $use_unwinder" >&6; }
+
 
 # Check whether --with-libiberty was given.
 if test "${with_libiberty+set}" = set; then :
@@ -14198,8 +14979,12 @@
 fi
 
 
+libiberty_CPPFLAGS=
+libiberty_LDFLAGS=
+libiberty_LIBS=
 use_libiberty=no
-if test "x$use_libunwind" = xyes && test "x$with_libiberty" != xno; then :
+
+if test "x$with_libiberty" != xno; then :
   saved_CPPFLAGS="$CPPFLAGS"
        CPPFLAGS="$CPPFLAGS $libiberty_CPPFLAGS"
        for ac_header in demangle.h libiberty/demangle.h
@@ -14283,8 +15068,8 @@
 
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable demangling symbols in stack trace" >&5
-$as_echo_n "checking whether to enable demangling symbols in stack trace... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable symbols demangling in stack trace" >&5
+$as_echo_n "checking whether to enable symbols demangling in stack trace... " >&6; }
 if test "x$use_libiberty" = xyes; then
 
 $as_echo "#define USE_DEMANGLE 1" >>confdefs.h
@@ -14293,6 +15078,15 @@
 
 
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_libiberty" >&5
+$as_echo "$use_libiberty" >&6; }
+
+
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
  if test "x$use_libiberty" = xyes; then
   USE_DEMANGLE_TRUE=
   USE_DEMANGLE_FALSE='#'
@@ -14301,8 +15095,8 @@
   USE_DEMANGLE_FALSE=
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $use_libiberty" >&5
-$as_echo "$use_libiberty" >&6; }
+
+
 
 if test "$arch" = mips && test "$no_create" != yes; then
 	mkdir -p linux/mips
@@ -15885,6 +16679,14 @@
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
+if test -z "${ENABLE_STACKTRACE_TRUE}" && test -z "${ENABLE_STACKTRACE_FALSE}"; then
+  as_fn_error $? "conditional \"ENABLE_STACKTRACE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${USE_LIBDW_TRUE}" && test -z "${USE_LIBDW_FALSE}"; then
+  as_fn_error $? "conditional \"USE_LIBDW\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${USE_LIBUNWIND_TRUE}" && test -z "${USE_LIBUNWIND_FALSE}"; then
   as_fn_error $? "conditional \"USE_LIBUNWIND\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -16310,7 +17112,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.22, which was
+This file was extended by strace $as_me 4.23, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16377,7 +17179,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.22
+strace config.status 4.23
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 6e53f98..9dec1b2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -46,9 +46,9 @@
 AM_MAINTAINER_MODE
 AC_CANONICAL_HOST
 
-RPM_CHANGELOGTIME="$(LC_TIME=C date '+%a %b %d %Y')"
+RPM_CHANGELOGTIME="$(LC_TIME=C date -u '+%a %b %d %Y')"
 AC_SUBST(RPM_CHANGELOGTIME)
-DEB_CHANGELOGTIME="$(LC_TIME=C date -R)"
+DEB_CHANGELOGTIME="$(LC_TIME=C date -u -R)"
 AC_SUBST(DEB_CHANGELOGTIME)
 
 AC_PROG_CC
@@ -322,7 +322,9 @@
 	struct flock,
 	struct flock64,
 	struct __kernel_flock,
-	struct __kernel_flock64
+	struct __kernel_flock64,
+	struct f_owner_ex,
+	struct __kernel_f_owner_ex
 ]),,,
 [#include <sys/types.h>
 #include <linux/fcntl.h>])
@@ -382,7 +384,6 @@
 	asm/cachectl.h
 	asm/guarded_storage.h
 	asm/sysmips.h
-	bluetooth/bluetooth.h
 	elf.h
 	iconv.h
 	inttypes.h
@@ -465,10 +466,20 @@
 ])
 
 AC_CHECK_HEADERS([linux/bpf.h], [
-	AC_CHECK_TYPES([struct bpf_insn],,, [#include <linux/bpf.h>])
+	AC_CHECK_TYPES(m4_normalize([
+		struct bpf_insn,
+		struct bpf_map_info,
+		struct bpf_prog_info
+	]),,, [#include <linux/bpf.h>])
 	st_BPF_ATTR
 ])
 
+AC_CHECK_HEADERS([bluetooth/bluetooth.h], [
+	AC_CHECK_MEMBERS([struct sockaddr_l2.l2_bdaddr_type],,,
+			 [#include <bluetooth/bluetooth.h>
+			 #include <bluetooth/l2cap.h>])
+])
+
 AC_CHECK_TYPES(m4_normalize([
 	struct br_mdb_entry,
 	struct br_port_msg
@@ -485,7 +496,8 @@
 AC_CHECK_TYPES(m4_normalize([
 	struct rta_mfc_stats,
 	struct rtvia
-]),,, [#include <linux/rtnetlink.h>])
+]),,, [#include <sys/socket.h>
+#include <linux/rtnetlink.h>])
 
 AC_CHECK_MEMBERS([struct ndt_stats.ndts_table_fulls],,, [#include <linux/neighbour.h>])
 AC_CHECK_TYPES(m4_normalize([
@@ -495,13 +507,23 @@
 
 AC_CHECK_TYPES(m4_normalize([
 	struct ifla_bridge_id,
+	struct ifla_cacheinfo,
 	struct ifla_port_vsi,
 	struct rtnl_link_stats64
-]),,, [#include <linux/if_link.h>])
+]),,, [#include <sys/socket.h>
+#include <linux/rtnetlink.h>])
 AC_CHECK_MEMBERS(m4_normalize([
 	struct rtnl_link_stats.rx_nohandler,
 	struct rtnl_link_stats64.rx_nohandler
-]),,, [#include <linux/if_link.h>])
+]),,, [#include <sys/socket.h>
+#include <linux/rtnetlink.h>])
+AC_CHECK_DECLS(m4_normalize([
+	IFLA_PORT_SELF,
+	IFLA_PROTINFO,
+	IFLA_AF_SPEC,
+	IFLA_XDP
+]),,, [#include <sys/socket.h>
+#include <linux/rtnetlink.h>])
 
 AC_CHECK_TYPES(m4_normalize([
 	struct gnet_stats_basic,
@@ -510,9 +532,15 @@
 	struct gnet_stats_rate_est64
 ]),,, [#include <linux/gen_stats.h>])
 
-AC_CHECK_TYPES([struct tc_sizespec],,, [#include <linux/pkt_sched.h>])
+AC_CHECK_TYPES([struct tc_sizespec],,, [#include <linux/types.h>
+#include <linux/pkt_sched.h>])
+AC_CHECK_DECLS([TCA_STAB_DATA],,, [#include <linux/types.h>
+#include <linux/pkt_sched.h>])
 
-AC_CHECK_TYPES([struct fib_rule_uid_range],,, [#include <linux/fib_rules.h>])
+AC_CHECK_TYPES(m4_normalize([
+	struct fib_rule_uid_range,
+	struct fib_rule_port_range
+]),,, [#include <linux/fib_rules.h>])
 
 AC_CHECK_TYPES([struct statfs], [
 	AC_CHECK_MEMBERS(m4_normalize([
@@ -552,6 +580,11 @@
 	struct kvm_userspace_memory_region
 ]),,, [#include <linux/kvm.h>])
 
+saved_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS -I$srcdir/linux"
+AC_CHECK_TYPES([struct __aio_sigset],,, [#include <linux/aio_abi.h>])
+CPPFLAGS="$saved_CPPFLAGS"
+
 AC_CHECK_HEADERS([linux/btrfs.h], [
 	AC_CHECK_MEMBERS(m4_normalize([
 		struct btrfs_ioctl_feature_flags.compat_flags,
@@ -797,13 +830,31 @@
 
 AC_CACHE_CHECK([for static_assert], [st_cv_have_static_assert],
 	       [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <assert.h>]],
-						[[static_assert(1,"")]])],
+						[[static_assert(1,"")]]
+					       )
+			       ],
 			       [st_cv_have_static_assert=yes],
-			       [st_cv_have_static_assert=no])])
-if test "x$st_cv_have_static_assert" = xyes; then
-	AC_DEFINE([HAVE_STATIC_ASSERT], [1],
-		  [Define to 1 if the system provides static_assert])
-fi
+			       [AC_LINK_IFELSE([AC_LANG_PROGRAM([],
+								[[_Static_assert(1,"")]]
+							       )
+					       ],
+					       [st_cv_have_static_assert=_Static_assert],
+					       [st_cv_have_static_assert=no]
+					      )
+			       ]
+			      )
+	       ]
+	      )
+case "x$st_cv_have_static_assert" in
+	xyes)
+		AC_DEFINE([HAVE_STATIC_ASSERT], [1],
+			  [Define to 1 if the system provides static_assert])
+		;;
+	x_Static_assert)
+		AC_DEFINE([HAVE__STATIC_ASSERT], [1],
+			  [Define to 1 if the system provides _Static_assert])
+		;;
+esac
 
 AC_CHECK_LIB([dl], [dladdr], [dl_LIBS='-ldl'], [dl_LIBS=])
 if test "x$ac_cv_lib_dl_dladdr" = xyes; then
@@ -844,148 +895,7 @@
 
 AC_CHECK_TOOL([READELF], [readelf])
 
-dnl stack trace with libunwind
-libunwind_CPPFLAGS=
-libunwind_LDFLAGS=
-libunwind_LIBS=
-AC_ARG_WITH([libunwind],
-	    [AS_HELP_STRING([--with-libunwind],
-			    [use libunwind to implement stack tracing support])],
-	    [case "${withval}" in
-	     yes|no|check) ;;
-	     *) with_libunwind=yes
-		libunwind_CPPFLAGS="-I${withval}/include"
-		libunwind_LDFLAGS="-L${withval}/lib" ;;
-	     esac],
-	    [with_libunwind=check]
-)
-
-use_libunwind=no
-AS_IF([test "x$with_libunwind" != xno],
-      [saved_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS"
-
-       AC_CHECK_HEADERS([libunwind-ptrace.h],
-	 [saved_LDFLAGS="$LDFLAGS"
-	  LDFLAGS="$LDFLAGS $libunwind_LDFLAGS"
-
-	  AC_CHECK_LIB([unwind], [backtrace],
-	    [libunwind_LIBS="-lunwind $libunwind_LIBS"
-
-	     AC_MSG_CHECKING([for unw_create_addr_space in libunwind-generic])
-	     saved_LIBS="$LIBS"
-	     LIBS="-lunwind-generic $libunwind_LIBS $LIBS"
-
-	     AC_LINK_IFELSE(
-	       [AC_LANG_PROGRAM([[#include <libunwind-ptrace.h>]],
-				[[return !unw_create_addr_space(0, 0)]])
-	       ],
-	       [AC_MSG_RESULT([yes])
-		libunwind_LIBS="-lunwind-generic $libunwind_LIBS"
-
-		AC_CHECK_LIB([unwind-ptrace], [_UPT_create],
-		  [libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS"
-		   use_libunwind=yes
-		  ],
-		  [if test "x$with_libunwind" != xcheck; then
-		     AC_MSG_FAILURE([failed to find _UPT_create in libunwind-ptrace])
-		   fi
-		  ],
-		  [$libunwind_LIBS]
-		)
-	       ],
-	       [AC_MSG_RESULT([no])
-		if test "x$with_libunwind" != xcheck; then
-		  AC_MSG_FAILURE([failed to find unw_create_addr_space in libunwind-generic])
-		fi
-	       ]
-	     )
-
-	     LIBS="$saved_LIBS"
-	    ],
-	    [if test "x$with_libunwind" != xcheck; then
-	       AC_MSG_FAILURE([failed to find libunwind])
-	     fi
-	    ],
-	    [$libunwind_LIBS]
-	  )
-
-	  LDFLAGS="$saved_LDFLAGS"
-	 ],
-	 [if test "x$with_libunwind" != xcheck; then
-	    AC_MSG_FAILURE([failed to find libunwind-ptrace.h])
-	  fi
-	 ]
-       )
-
-       CPPFLAGS="$saved_CPPFLAGS"
-      ]
-)
-
-dnl enable libunwind
-AC_MSG_CHECKING([whether to enable stack tracing support using libunwind])
-if test "x$use_libunwind" = xyes; then
-	AC_DEFINE([USE_LIBUNWIND], 1, [Compile stack tracing functionality])
-	AC_SUBST(libunwind_LIBS)
-	AC_SUBST(libunwind_LDFLAGS)
-	AC_SUBST(libunwind_CPPFLAGS)
-fi
-AM_CONDITIONAL([USE_LIBUNWIND], [test "x$use_libunwind" = xyes])
-AC_MSG_RESULT([$use_libunwind])
-
-dnl demangling symbols in the stack trace
-libiberty_CPPFLAGS=
-libiberty_LDFLAGS=
-libiberty_LIBS=
-AC_ARG_WITH([libiberty],
-	    [AS_HELP_STRING([--with-libiberty],
-			    [use libiberty to demangle symbols in stack trace])],
-	    [case "${withval}" in
-	     yes|no|check) ;;
-	     *) with_libiberty=yes
-		libiberty_CPPFLAGS="-I${withval}/include"
-		libiberty_LDFLAGS="-L${withval}/lib" ;;
-	     esac],
-	    [with_libiberty=check]
-)
-
-use_libiberty=no
-AS_IF([test "x$use_libunwind" = xyes && test "x$with_libiberty" != xno],
-      [saved_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CPPFLAGS $libiberty_CPPFLAGS"
-       AC_CHECK_HEADERS([demangle.h libiberty/demangle.h],
-	 [saved_LDFLAGS="$LDFLAGS"
-	  LDFLAGS="$LDFLAGS $libiberty_LDFLAGS"
-	  AC_CHECK_LIB([iberty],[cplus_demangle],
-	    [libiberty_LIBS="-liberty"
-	     use_libiberty=yes
-	    ],
-	    [if test "x$with_libiberty" != xcheck; then
-	       AC_MSG_FAILURE([failed to find cplus_demangle in libiberty])
-	     fi
-	    ]
-	  )
-	  LDFLAGS="$saved_LDFLAGS"
-	 ],
-	 [if test "x$with_libiberty" != xcheck; then
-	      AC_MSG_FAILURE([failed to find demangle.h])
-	  fi
-	 ]
-       )
-       CPPFLAGS="$saved_CPPFLAGS"
-      ]
-)
-
-dnl enable libiberty
-AC_MSG_CHECKING([whether to enable demangling symbols in stack trace])
-if test "x$use_libiberty" = xyes; then
-	AC_DEFINE([USE_DEMANGLE], 1, [Do demangling symbols in stack trace])
-	AC_SUBST(libiberty_LIBS)
-	AC_SUBST(libiberty_LDFLAGS)
-	AC_SUBST(libiberty_CPPFLAGS)
-fi
-AM_CONDITIONAL([USE_DEMANGLE], [test "x$use_libiberty" = xyes])
-AC_MSG_RESULT([$use_libiberty])
+st_STACKTRACE
 
 if test "$arch" = mips && test "$no_create" != yes; then
 	mkdir -p linux/mips
diff --git a/debian/changelog b/debian/changelog
index a93aed6..2b09968 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,14 @@
-strace (4.22-1) experimental; urgency=low
+strace (4.23-1) experimental; urgency=low
 
-  * strace 4.22 snapshot.
+  * strace 4.23 snapshot.
 
- -- Strace <strace-devel@lists.strace.io>  Thu, 14 Jun 2018 16:29:09 -0700
+ -- Strace <strace-devel@lists.strace.io>  Fri, 15 Jun 2018 17:54:18 +0000
+
+strace (4.22-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 05 Apr 2018 04:05:06 +0000
 
 strace (4.21-1) unstable; urgency=medium
 
diff --git a/debian/changelog.in b/debian/changelog.in
index f9f7c20..833f2cf 100644
--- a/debian/changelog.in
+++ b/debian/changelog.in
@@ -4,6 +4,12 @@
 
  -- Strace <@PACKAGE_BUGREPORT@>  @DEB_CHANGELOGTIME@
 
+strace (4.22-1) unstable; urgency=medium
+
+  * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org>  Thu, 05 Apr 2018 04:05:06 +0000
+
 strace (4.21-1) unstable; urgency=medium
 
   * New upstream version.
diff --git a/debian/control b/debian/control
index 3caffd1..38e13a1 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@
 Maintainer: Steve McIntyre <93sam@debian.org>
 Section: utils
 Priority: optional
-Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc sparc64 x32], debhelper (>= 7.0.0), gawk, libunwind-dev [amd64], libiberty-dev [amd64], libbluetooth-dev
+Build-Depends: libc6-dev (>= 2.2.2) [!alpha !ia64], libc6.1-dev (>= 2.2.2) [alpha ia64], gcc-multilib [amd64 i386 powerpc ppc64 ppc64el s390 s390x sparc sparc64 x32], debhelper (>= 7.0.0), gawk, libdw-dev, libiberty-dev, libbluetooth-dev
 Standards-Version: 4.1.3
 Homepage: https://strace.io
 Vcs-Git: https://salsa.debian.org/debian/strace.git
diff --git a/debian/rules b/debian/rules
index f335fed..b22767a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -61,7 +61,7 @@
 build-udeb/Makefile: configure
 	mkdir -p $(@D)
 	cd $(@D); sh ../configure --enable-mpers=check --prefix=/usr \
-		--without-libunwind --without-libiberty $(CONFIG_OPTS)
+		--without-stacktrace --without-libiberty $(CONFIG_OPTS)
 
 build64/Makefile: configure
 	mkdir -p $(@D)
diff --git a/defs.h b/defs.h
index 62aa11c..4437d6f 100644
--- a/defs.h
+++ b/defs.h
@@ -166,6 +166,12 @@
 # define HAVE_PERSONALITY_2_MPERS 0
 #endif
 
+#ifdef WORDS_BIGENDIAN
+# define is_bigendian true
+#else
+# define is_bigendian false
+#endif
+
 typedef struct ioctlent {
 	const char *symbol;
 	unsigned int code;
@@ -176,12 +182,22 @@
 #define INJECT_F_RETVAL		0x04
 #define INJECT_F_DELAY_ENTER	0x08
 #define INJECT_F_DELAY_EXIT	0x10
+#define INJECT_F_SYSCALL	0x20
+
+#define INJECT_ACTION_FLAGS	\
+	(INJECT_F_SIGNAL	\
+	|INJECT_F_ERROR		\
+	|INJECT_F_RETVAL	\
+	|INJECT_F_DELAY_ENTER	\
+	|INJECT_F_DELAY_EXIT	\
+	)
 
 struct inject_data {
-	uint8_t flags;		/* 5 of 8 flags are used so far */
+	uint8_t flags;		/* 6 of 8 flags are used so far */
 	uint8_t signo;		/* NSIG <= 128 */
 	uint16_t rval_idx;	/* index in retval_vec */
 	uint16_t delay_idx;	/* index in delay_data_vec */
+	uint16_t scno;		/* syscall to be injected instead of -1 */
 };
 
 struct inject_opts {
@@ -219,10 +235,8 @@
 	struct timespec delay_expiration_time; /* When does the delay end */
 
 	struct mmap_cache_t *mmap_cache;
-	unsigned int mmap_cache_size;
-	unsigned int mmap_cache_generation;
 
-#ifdef USE_LIBUNWIND
+#ifdef ENABLE_STACKTRACE
 	void *unwind_ctx;
 	struct unwind_queue_t *unwind_queue;
 #endif
@@ -257,6 +271,8 @@
 #define TCB_INJECT_DELAY_EXIT	0x800	/* Current syscall needs to be delayed
 					   on exit */
 #define TCB_DELAYED	0x1000	/* Current syscall has been delayed */
+#define TCB_TAMPERED_NO_FAIL 0x2000	/* We tamper tcb with syscall
+					   that should not fail. */
 
 /* qualifier flags */
 #define QUAL_TRACE	0x001	/* this system call should be traced */
@@ -281,24 +297,38 @@
 #define recovering(tcp)	((tcp)->flags & TCB_RECOVERING)
 #define inject_delay_exit(tcp)	((tcp)->flags & TCB_INJECT_DELAY_EXIT)
 #define syscall_delayed(tcp)	((tcp)->flags & TCB_DELAYED)
+#define syscall_tampered_nofail(tcp) ((tcp)->flags & TCB_TAMPERED_NO_FAIL)
 
 #include "xlat.h"
 
 extern const struct xlat addrfams[];
+
+/** Protocol hardware identifiers array, sorted, defined in sockaddr.c. */
 extern const struct xlat arp_hardware_types[];
+/** Protocol hardware identifiers array size without terminating record. */
+extern const size_t arp_hardware_types_size;
+
 extern const struct xlat at_flags[];
 extern const struct xlat clocknames[];
 extern const struct xlat dirent_types[];
 
-/** Ethernet protocols list, sorted and unterminated, defined in sockaddr.c. */
+/** Ethernet protocols list, sorted, defined in sockaddr.c. */
 extern const struct xlat ethernet_protocols[];
 /** Ethernet protocols array size without terminating record. */
 extern const size_t ethernet_protocols_size;
 
-extern const struct xlat evdev_abs[];
-extern const struct xlat iffflags[];
+/** IP protocols list, sorted, defined in net.c. */
 extern const struct xlat inet_protocols[];
+/** IP protocols array size without terminating record. */
+extern const size_t inet_protocols_size;
+
+extern const struct xlat evdev_abs[];
+/** Number of elements in evdev_abs array without the terminating record. */
+extern const size_t evdev_abs_size;
+
+extern const struct xlat iffflags[];
 extern const struct xlat ip_type_of_services[];
+extern const struct xlat ipc_private[];
 extern const struct xlat msg_flags[];
 extern const struct xlat netlink_protocols[];
 extern const struct xlat nl_netfilter_msg_types[];
@@ -377,7 +407,7 @@
 #define tracing_paths (global_path_set.num_selected != 0)
 extern unsigned xflag;
 extern unsigned followfork;
-#ifdef USE_LIBUNWIND
+#ifdef ENABLE_STACKTRACE
 /* if this is true do the stack trace for every system call */
 extern bool stack_trace_enabled;
 #endif
@@ -456,43 +486,90 @@
 	return set_tcb_priv_data(tcp, (void *) val, 0);
 }
 
+/**
+ * @return 0 on success, -1 on error.
+ */
 extern int
 umoven(struct tcb *, kernel_ulong_t addr, unsigned int len, void *laddr);
 #define umove(pid, addr, objp)	\
 	umoven((pid), (addr), sizeof(*(objp)), (void *) (objp))
 
+/**
+ * @return true on success, false on error.
+ */
+extern bool
+tfetch_mem64(struct tcb *, uint64_t addr, unsigned int len, void *laddr);
+
+static inline bool
+tfetch_mem(struct tcb *tcp, const kernel_ulong_t addr,
+	   unsigned int len, void *laddr)
+{
+	return tfetch_mem64(tcp, addr, len, laddr);
+}
+#define tfetch_obj(pid, addr, objp)	\
+	tfetch_mem((pid), (addr), sizeof(*(objp)), (void *) (objp))
+
+/**
+ * @return true on success, false on error.
+ */
+extern bool
+tfetch_mem64_ignore_syserror(struct tcb *, uint64_t addr,
+			     unsigned int len, void *laddr);
+
+static inline bool
+tfetch_mem_ignore_syserror(struct tcb *tcp, const kernel_ulong_t addr,
+			   unsigned int len, void *laddr)
+{
+	return tfetch_mem64_ignore_syserror(tcp, addr, len, laddr);
+}
+
+/**
+ * @return 0 on success, -1 on error (and print addr).
+ */
 extern int
-umoven_or_printaddr(struct tcb *, kernel_ulong_t addr,
-		    unsigned int len, void *laddr);
+umoven_or_printaddr64(struct tcb *, uint64_t addr,
+		      unsigned int len, void *laddr);
+#define umove_or_printaddr64(pid, addr, objp)	\
+	umoven_or_printaddr64((pid), (addr), sizeof(*(objp)), (void *) (objp))
+
+static inline int
+umoven_or_printaddr(struct tcb *tcp, const kernel_ulong_t addr,
+		    unsigned int len, void *laddr)
+{
+	return umoven_or_printaddr64(tcp, addr, len, laddr);
+}
 #define umove_or_printaddr(pid, addr, objp)	\
 	umoven_or_printaddr((pid), (addr), sizeof(*(objp)), (void *) (objp))
 
+/**
+ * @return 0 on success, -1 on error (and print addr).
+ */
 extern int
-umoven_or_printaddr_ignore_syserror(struct tcb *, kernel_ulong_t addr,
-				    unsigned int len, void *laddr);
+umoven_or_printaddr64_ignore_syserror(struct tcb *, uint64_t addr,
+				      unsigned int len, void *laddr);
+#define umove_or_printaddr64_ignore_syserror(pid, addr, objp)	\
+	umoven_or_printaddr64_ignore_syserror((pid), (addr), sizeof(*(objp)), \
+					      (void *) (objp))
 
+static inline int
+umoven_or_printaddr_ignore_syserror(struct tcb *tcp, const kernel_ulong_t addr,
+				    unsigned int len, void *laddr)
+{
+	return umoven_or_printaddr64_ignore_syserror(tcp, addr, len, laddr);
+}
+#define umove_or_printaddr_ignore_syserror(pid, addr, objp)	\
+	umoven_or_printaddr_ignore_syserror((pid), (addr), sizeof(*(objp)), \
+					    (void *) (objp))
+
+/**
+ * @return strlen + 1 on success, 0 on success and no NUL seen, -1 on error.
+ */
 extern int
 umovestr(struct tcb *, kernel_ulong_t addr, unsigned int len, char *laddr);
 
 extern int upeek(struct tcb *tcp, unsigned long, kernel_ulong_t *);
 extern int upoke(struct tcb *tcp, unsigned long, kernel_ulong_t);
 
-extern bool
-print_array(struct tcb *,
-	    kernel_ulong_t start_addr,
-	    size_t nmemb,
-	    void *elem_buf,
-	    size_t elem_size,
-	    int (*umoven_func)(struct tcb *,
-				     kernel_ulong_t,
-				     unsigned int,
-				     void *),
-	    bool (*print_func)(struct tcb *,
-				     void *elem_buf,
-				     size_t elem_size,
-				     void *opaque_data),
-	    void *opaque_data);
-
 #if HAVE_ARCH_GETRVAL2
 extern long getrval2(struct tcb *);
 #endif
@@ -500,16 +577,26 @@
 extern const char *signame(const int);
 extern void pathtrace_select_set(const char *, struct path_set *);
 extern bool pathtrace_match_set(struct tcb *, struct path_set *);
-#define pathtrace_select(tcp)	\
-	pathtrace_select_set(tcp, &global_path_set)
-#define pathtrace_match(tcp)	\
-	pathtrace_match_set(tcp, &global_path_set)
+
+static inline void
+pathtrace_select(const char *path)
+{
+	return pathtrace_select_set(path, &global_path_set);
+}
+
+static inline bool
+pathtrace_match(struct tcb *tcp)
+{
+	return pathtrace_match_set(tcp, &global_path_set);
+}
+
 extern int getfdpath(struct tcb *, int, char *, unsigned);
 extern unsigned long getfdinode(struct tcb *, int);
 extern enum sock_proto getfdproto(struct tcb *, int);
 
 extern const char *xlookup(const struct xlat *, const uint64_t);
 extern const char *xlat_search(const struct xlat *, const size_t, const uint64_t);
+extern const char *xlat_idx(const struct xlat *xlat, size_t nmemb, uint64_t val);
 
 struct dyxlat;
 struct dyxlat *dyxlat_alloc(size_t nmemb);
@@ -564,11 +651,36 @@
 	ATTRIBUTE_FORMAT((printf, 2, 0));
 
 extern void printaddr64(uint64_t addr);
-extern void printaddr(kernel_ulong_t addr);
-extern int printxvals(const uint64_t, const char *, const struct xlat *, ...)
+
+static inline void
+printaddr(const kernel_ulong_t addr)
+{
+	printaddr64(addr);
+}
+
+#define xlat_verbose(style_) ((style_) & XLAT_STYLE_VERBOSITY_MASK)
+#define xlat_format(style_)  ((style_) & XLAT_STYLE_FORMAT_MASK)
+
+extern enum xlat_style xlat_verbosity;
+
+extern int printxvals_ex(uint64_t val, const char *dflt,
+			 enum xlat_style, const struct xlat *, ...)
 	ATTRIBUTE_SENTINEL;
-extern int printxval_searchn(const struct xlat *xlat, size_t xlat_size,
-	uint64_t val, const char *dflt);
+#define printxvals(val_, dflt_, ...) \
+	printxvals_ex((val_), (dflt_), XLAT_STYLE_DEFAULT, __VA_ARGS__)
+
+extern int printxval_searchn_ex(const struct xlat *, size_t xlat_size,
+				uint64_t val, const char *dflt,
+				enum xlat_style);
+
+static inline int
+printxval_searchn(const struct xlat *xlat, size_t xlat_size, uint64_t val,
+		  const char *dflt)
+{
+	return printxval_searchn_ex(xlat, xlat_size, val, dflt,
+				    XLAT_STYLE_DEFAULT);
+}
+
 /**
  * Wrapper around printxval_searchn that passes ARRAY_SIZE - 1
  * as the array size, as all arrays are XLAT_END-terminated and
@@ -576,24 +688,148 @@
  */
 #define printxval_search(xlat__, val__, dflt__) \
 	printxval_searchn(xlat__, ARRAY_SIZE(xlat__) - 1, val__, dflt__)
-extern int sprintxval(char *buf, size_t size, const struct xlat *,
-	unsigned int val, const char *dflt);
+#define printxval_search_ex(xlat__, val__, dflt__) \
+	printxval_searchn_ex((xlat__), ARRAY_SIZE(xlat__) - 1, (val__), \
+			     (dflt__), XLAT_STYLE_DEFAULT)
+
+extern int printxval_indexn_ex(const struct xlat *, size_t xlat_size,
+			       uint64_t val, const char *dflt, enum xlat_style);
+
+static inline int
+printxval_indexn(const struct xlat *xlat, size_t xlat_size, uint64_t val,
+		 const char *dflt)
+{
+	return printxval_indexn_ex(xlat, xlat_size, val, dflt,
+				   XLAT_STYLE_DEFAULT);
+}
+
+#define printxval_index(xlat__, val__, dflt__) \
+	printxval_indexn(xlat__, ARRAY_SIZE(xlat__) - 1, val__, dflt__)
+#define printxval_index_ex(xlat__, val__, dflt__) \
+	printxval_indexn_ex((xlat__), ARRAY_SIZE(xlat__) - 1, (val__), \
+			    (dflt__), XLAT_STYLE_DEFAULT)
+
+extern int sprintxval_ex(char *buf, size_t size, const struct xlat *,
+			 unsigned int val, const char *dflt, enum xlat_style);
+
+static inline int
+sprintxval(char *buf, size_t size, const struct xlat *xlat, unsigned int val,
+	   const char *dflt)
+{
+	return sprintxval_ex(buf, size, xlat, val, dflt, XLAT_STYLE_DEFAULT);
+}
+
+extern void printxval_dispatch_ex(const struct xlat *, size_t xlat_size,
+				  uint64_t val, const char *dflt,
+				  enum xlat_type, enum xlat_style);
+static inline void
+printxval_dispatch(const struct xlat *xlat, size_t xlat_size, uint64_t val,
+		   const char *dflt, enum xlat_type xt)
+{
+	return printxval_dispatch_ex(xlat, xlat_size, val, dflt, xt,
+				     XLAT_STYLE_DEFAULT);
+}
+
+/** Print a value in accordance with xlat formatting settings. */
+extern void print_xlat_ex(uint64_t val, const char *str, enum xlat_style style);
+#define print_xlat(val_) \
+	print_xlat_ex((val_), #val_, XLAT_STYLE_DEFAULT)
+#define print_xlat32(val_) \
+	print_xlat_ex((uint32_t) (val_), #val_, XLAT_STYLE_DEFAULT)
+#define print_xlat_u(val_) \
+	print_xlat_ex((val_), #val_, XLAT_STYLE_FMT_U)
+#define print_xlat_d(val_) \
+	print_xlat_ex((val_), #val_, XLAT_STYLE_FMT_D)
+
 extern int printargs(struct tcb *);
 extern int printargs_u(struct tcb *);
 extern int printargs_d(struct tcb *);
 
-extern int printflags_ex(uint64_t, const char *, const struct xlat *, ...)
+extern int printflags_ex(uint64_t flags, const char *dflt,
+			 enum xlat_style, const struct xlat *, ...)
 	ATTRIBUTE_SENTINEL;
-extern const char *sprintflags(const char *, const struct xlat *, uint64_t);
+extern const char *sprintflags_ex(const char *prefix, const struct xlat *,
+				  uint64_t flags, enum xlat_style);
+
+static inline const char *
+sprintflags(const char *prefix, const struct xlat *xlat, uint64_t flags)
+{
+	return sprintflags_ex(prefix, xlat, flags, XLAT_STYLE_DEFAULT);
+}
+
 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 const char *sprint_mac_addr(const uint8_t addr[], size_t size);
+
 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 bool print_int32_array_member(struct tcb *, void *elem_buf,
+				     size_t elem_size, void *data);
+extern bool print_uint32_array_member(struct tcb *, void *elem_buf,
+				      size_t elem_size, void *data);
+extern bool print_uint64_array_member(struct tcb *, void *elem_buf,
+				      size_t elem_size, void *data);
+
+typedef bool (*tfetch_mem_fn)(struct tcb *, kernel_ulong_t addr,
+			      unsigned int size, void *dest);
+typedef bool (*print_fn)(struct tcb *, void *elem_buf,
+			 size_t elem_size, void *opaque_data);
+
+enum print_array_flag_bits {
+	PAF_PRINT_INDICES_BIT = XLAT_STYLE_SPEC_BITS + 1,
+	PAF_INDEX_XLAT_SORTED_BIT,
+	PAF_INDEX_XLAT_VALUE_INDEXED_BIT,
+};
+
+#define FLAG_(name_) name_ = 1 << name_##_BIT
+
+enum print_array_flags {
+	FLAG_(PAF_PRINT_INDICES),
+	FLAG_(PAF_INDEX_XLAT_SORTED),
+	FLAG_(PAF_INDEX_XLAT_VALUE_INDEXED),
+};
+
+#undef FLAG_
+
+/**
+ * @param flags Combination of xlat style settings and additional flags from
+ *              enum print_array_flags.
+ */
+extern bool