aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2017-11-16 21:11:04 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-11-16 21:11:04 +0000
commit10c524dc7533628f28dbb9dd14de406475675312 (patch)
treecfddf13024e3917e17a9debc8b7391c9fe1559ed
parent8d944ebe543a96248ec4f6be2cd84ad3df418ae7 (diff)
parentf174ca62c552149d51472717a480e2a571885b9a (diff)
downloadstrace-10c524dc7533628f28dbb9dd14de406475675312.tar.gz
Merge "Update strace to 4.20." am: 18120556c1
am: f174ca62c5 Change-Id: Ieb202f299496500af91274b8fcbc0680d688ab87
-rw-r--r--CREDITS52
-rw-r--r--ChangeLog783
-rw-r--r--Makefile.am7
-rw-r--r--Makefile.in170
-rw-r--r--NEWS16
-rw-r--r--bpf_seccomp_filter.c6
-rw-r--r--config.h89
-rw-r--r--config.h.in80
-rwxr-xr-xconfigure429
-rw-r--r--configure.ac36
-rw-r--r--debian/changelog12
-rw-r--r--debian/changelog.in6
-rw-r--r--debian/compat2
-rw-r--r--debian/control2
-rwxr-xr-xdebian/rules34
-rw-r--r--defs.h10
-rw-r--r--dm.c11
-rw-r--r--error_prints.c2
-rw-r--r--ioctlent0.h14
-rw-r--r--ioctlent1.h38
-rw-r--r--ioctlent2.h36
-rw-r--r--kcmp.c48
-rw-r--r--kernel_types.h2
-rw-r--r--linux/32/ioctls_inc_align16.h14
-rw-r--r--linux/32/ioctls_inc_align32.h14
-rw-r--r--linux/32/ioctls_inc_align64.h15
-rw-r--r--linux/64/ioctls_inc.h14
-rw-r--r--linux/arm/ioctls_arch0.h23
-rw-r--r--linux/hppa/syscallent.h1
-rw-r--r--linux/i386/ioctls_arch0.h22
-rw-r--r--linux/inet_diag.h1
-rw-r--r--linux/powerpc/arch_sigreturn.c33
-rw-r--r--linux/powerpc/get_syscall_args.c27
-rw-r--r--linux/powerpc/ioctls_arch0.h19
-rw-r--r--linux/s390/ioctls_arch0.h11
-rw-r--r--linux/s390x/ioctls_arch0.h11
-rw-r--r--linux/x32/ioctls_inc0.h14
-rw-r--r--linux/x86_64/ioctls_arch0.h22
-rw-r--r--loop.c1
-rw-r--r--m4/mpers.m419
-rw-r--r--macros.h8
-rw-r--r--netlink.c283
-rw-r--r--netlink.h3
-rw-r--r--netlink_inet_diag.c3
-rw-r--r--nlattr.h1
-rw-r--r--rtnl_mdb.c166
-rw-r--r--rtnl_tc.c262
-rw-r--r--rtnl_tc_action.c12
-rw-r--r--seccomp.c34
-rw-r--r--strace.12
-rw-r--r--strace.spec9
-rw-r--r--strace.spec.in3
-rw-r--r--tests-m32/Makefile.am7
-rw-r--r--tests-m32/Makefile.in579
-rw-r--r--tests-m32/check_sigblock.c49
-rw-r--r--tests-m32/check_sigign.c49
-rw-r--r--tests-m32/futex.c42
-rw-r--r--tests-m32/gen_tests.am53
-rw-r--r--tests-m32/gen_tests.in19
-rw-r--r--tests-m32/ioctl_dm.c5
-rw-r--r--tests-m32/ioctl_loop.c11
-rw-r--r--tests-m32/kcmp-y.c3
-rwxr-xr-xtests-m32/kcmp-y.gen.test4
-rw-r--r--tests-m32/kcmp.c149
-rwxr-xr-xtests-m32/kcmp.gen.test4
-rw-r--r--tests-m32/list_sigaction_signum.c57
-rw-r--r--tests-m32/membarrier.c28
-rw-r--r--tests-m32/memfd_create.c7
-rw-r--r--tests-m32/netlink_crypto.c10
-rw-r--r--tests-m32/netlink_netfilter.c14
-rw-r--r--tests-m32/netlink_route.c7
-rw-r--r--tests-m32/netlink_xfrm.c10
-rw-r--r--tests-m32/nfnetlink_acct.c120
-rwxr-xr-xtests-m32/nfnetlink_acct.gen.test3
-rw-r--r--tests-m32/nfnetlink_cthelper.c120
-rwxr-xr-xtests-m32/nfnetlink_cthelper.gen.test3
-rw-r--r--tests-m32/nfnetlink_ctnetlink.c120
-rwxr-xr-xtests-m32/nfnetlink_ctnetlink.gen.test3
-rw-r--r--tests-m32/nfnetlink_ctnetlink_exp.c120
-rwxr-xr-xtests-m32/nfnetlink_ctnetlink_exp.gen.test3
-rw-r--r--tests-m32/nfnetlink_cttimeout.c124
-rwxr-xr-xtests-m32/nfnetlink_cttimeout.gen.test3
-rw-r--r--tests-m32/nfnetlink_ipset.c83
-rwxr-xr-xtests-m32/nfnetlink_ipset.gen.test3
-rw-r--r--tests-m32/nfnetlink_nft_compat.c102
-rwxr-xr-xtests-m32/nfnetlink_nft_compat.gen.test3
-rw-r--r--tests-m32/nfnetlink_nftables.c120
-rwxr-xr-xtests-m32/nfnetlink_nftables.gen.test3
-rw-r--r--tests-m32/nfnetlink_osf.c85
-rwxr-xr-xtests-m32/nfnetlink_osf.gen.test3
-rw-r--r--tests-m32/nfnetlink_queue.c83
-rwxr-xr-xtests-m32/nfnetlink_queue.gen.test3
-rw-r--r--tests-m32/nfnetlink_ulog.c83
-rwxr-xr-xtests-m32/nfnetlink_ulog.gen.test3
-rw-r--r--tests-m32/nlattr_inet_diag_msg.c5
-rw-r--r--tests-m32/nlattr_mdba_mdb_entry.c182
-rwxr-xr-xtests-m32/nlattr_mdba_mdb_entry.gen.test3
-rw-r--r--tests-m32/nlattr_mdba_router_port.c128
-rwxr-xr-xtests-m32/nlattr_mdba_router_port.gen.test3
-rw-r--r--tests-m32/nlattr_tc_stats.c151
-rwxr-xr-xtests-m32/nlattr_tc_stats.gen.test3
-rw-r--r--tests-m32/nlattr_tca_stab.c127
-rwxr-xr-xtests-m32/nlattr_tca_stab.gen.test3
-rw-r--r--tests-m32/nlattr_tcmsg.c38
-rwxr-xr-xtests-m32/options-syntax.test19
-rw-r--r--tests-m32/prctl-seccomp-filter-v.c2
-rw-r--r--tests-m32/pure_executables.am17
-rwxr-xr-xtests-m32/pure_executables.list17
-rw-r--r--tests-m32/seccomp-filter-v.c5
-rw-r--r--tests-m32/seccomp-filter.c7
-rw-r--r--tests-m32/seccomp_get_action_avail.c125
-rwxr-xr-xtests-m32/seccomp_get_action_avail.gen.test4
-rw-r--r--tests-m32/set_sigblock.c53
-rw-r--r--tests-m32/set_sigign.c49
-rwxr-xr-xtests-m32/sigblock.test22
-rwxr-xr-xtests-m32/sigign.test22
-rw-r--r--tests-m32/test_nlattr.h103
-rw-r--r--tests-mx32/Makefile.am7
-rw-r--r--tests-mx32/Makefile.in579
-rw-r--r--tests-mx32/check_sigblock.c49
-rw-r--r--tests-mx32/check_sigign.c49
-rw-r--r--tests-mx32/futex.c42
-rw-r--r--tests-mx32/gen_tests.am53
-rw-r--r--tests-mx32/gen_tests.in19
-rw-r--r--tests-mx32/ioctl_dm.c5
-rw-r--r--tests-mx32/ioctl_loop.c11
-rw-r--r--tests-mx32/kcmp-y.c3
-rwxr-xr-xtests-mx32/kcmp-y.gen.test4
-rw-r--r--tests-mx32/kcmp.c149
-rwxr-xr-xtests-mx32/kcmp.gen.test4
-rw-r--r--tests-mx32/list_sigaction_signum.c57
-rw-r--r--tests-mx32/membarrier.c28
-rw-r--r--tests-mx32/memfd_create.c7
-rw-r--r--tests-mx32/netlink_crypto.c10
-rw-r--r--tests-mx32/netlink_netfilter.c14
-rw-r--r--tests-mx32/netlink_route.c7
-rw-r--r--tests-mx32/netlink_xfrm.c10
-rw-r--r--tests-mx32/nfnetlink_acct.c120
-rwxr-xr-xtests-mx32/nfnetlink_acct.gen.test3
-rw-r--r--tests-mx32/nfnetlink_cthelper.c120
-rwxr-xr-xtests-mx32/nfnetlink_cthelper.gen.test3
-rw-r--r--tests-mx32/nfnetlink_ctnetlink.c120
-rwxr-xr-xtests-mx32/nfnetlink_ctnetlink.gen.test3
-rw-r--r--tests-mx32/nfnetlink_ctnetlink_exp.c120
-rwxr-xr-xtests-mx32/nfnetlink_ctnetlink_exp.gen.test3
-rw-r--r--tests-mx32/nfnetlink_cttimeout.c124
-rwxr-xr-xtests-mx32/nfnetlink_cttimeout.gen.test3
-rw-r--r--tests-mx32/nfnetlink_ipset.c83
-rwxr-xr-xtests-mx32/nfnetlink_ipset.gen.test3
-rw-r--r--tests-mx32/nfnetlink_nft_compat.c102
-rwxr-xr-xtests-mx32/nfnetlink_nft_compat.gen.test3
-rw-r--r--tests-mx32/nfnetlink_nftables.c120
-rwxr-xr-xtests-mx32/nfnetlink_nftables.gen.test3
-rw-r--r--tests-mx32/nfnetlink_osf.c85
-rwxr-xr-xtests-mx32/nfnetlink_osf.gen.test3
-rw-r--r--tests-mx32/nfnetlink_queue.c83
-rwxr-xr-xtests-mx32/nfnetlink_queue.gen.test3
-rw-r--r--tests-mx32/nfnetlink_ulog.c83
-rwxr-xr-xtests-mx32/nfnetlink_ulog.gen.test3
-rw-r--r--tests-mx32/nlattr_inet_diag_msg.c5
-rw-r--r--tests-mx32/nlattr_mdba_mdb_entry.c182
-rwxr-xr-xtests-mx32/nlattr_mdba_mdb_entry.gen.test3
-rw-r--r--tests-mx32/nlattr_mdba_router_port.c128
-rwxr-xr-xtests-mx32/nlattr_mdba_router_port.gen.test3
-rw-r--r--tests-mx32/nlattr_tc_stats.c151
-rwxr-xr-xtests-mx32/nlattr_tc_stats.gen.test3
-rw-r--r--tests-mx32/nlattr_tca_stab.c127
-rwxr-xr-xtests-mx32/nlattr_tca_stab.gen.test3
-rw-r--r--tests-mx32/nlattr_tcmsg.c38
-rwxr-xr-xtests-mx32/options-syntax.test19
-rw-r--r--tests-mx32/prctl-seccomp-filter-v.c2
-rw-r--r--tests-mx32/pure_executables.am17
-rwxr-xr-xtests-mx32/pure_executables.list17
-rw-r--r--tests-mx32/seccomp-filter-v.c5
-rw-r--r--tests-mx32/seccomp-filter.c7
-rw-r--r--tests-mx32/seccomp_get_action_avail.c125
-rwxr-xr-xtests-mx32/seccomp_get_action_avail.gen.test4
-rw-r--r--tests-mx32/set_sigblock.c53
-rw-r--r--tests-mx32/set_sigign.c49
-rwxr-xr-xtests-mx32/sigblock.test22
-rwxr-xr-xtests-mx32/sigign.test22
-rw-r--r--tests-mx32/test_nlattr.h103
-rw-r--r--tests/Makefile.am7
-rw-r--r--tests/Makefile.in579
-rw-r--r--tests/check_sigblock.c49
-rw-r--r--tests/check_sigign.c49
-rw-r--r--tests/futex.c42
-rw-r--r--tests/gen_tests.am53
-rw-r--r--tests/gen_tests.in19
-rw-r--r--tests/ioctl_dm.c5
-rw-r--r--tests/ioctl_loop.c11
-rw-r--r--tests/kcmp-y.c3
-rwxr-xr-xtests/kcmp-y.gen.test4
-rw-r--r--tests/kcmp.c149
-rwxr-xr-xtests/kcmp.gen.test4
-rw-r--r--tests/list_sigaction_signum.c57
-rw-r--r--tests/membarrier.c28
-rw-r--r--tests/memfd_create.c7
-rw-r--r--tests/netlink_crypto.c10
-rw-r--r--tests/netlink_netfilter.c14
-rw-r--r--tests/netlink_route.c7
-rw-r--r--tests/netlink_xfrm.c10
-rw-r--r--tests/nfnetlink_acct.c120
-rwxr-xr-xtests/nfnetlink_acct.gen.test3
-rw-r--r--tests/nfnetlink_cthelper.c120
-rwxr-xr-xtests/nfnetlink_cthelper.gen.test3
-rw-r--r--tests/nfnetlink_ctnetlink.c120
-rwxr-xr-xtests/nfnetlink_ctnetlink.gen.test3
-rw-r--r--tests/nfnetlink_ctnetlink_exp.c120
-rwxr-xr-xtests/nfnetlink_ctnetlink_exp.gen.test3
-rw-r--r--tests/nfnetlink_cttimeout.c124
-rwxr-xr-xtests/nfnetlink_cttimeout.gen.test3
-rw-r--r--tests/nfnetlink_ipset.c83
-rwxr-xr-xtests/nfnetlink_ipset.gen.test3
-rw-r--r--tests/nfnetlink_nft_compat.c102
-rwxr-xr-xtests/nfnetlink_nft_compat.gen.test3
-rw-r--r--tests/nfnetlink_nftables.c120
-rwxr-xr-xtests/nfnetlink_nftables.gen.test3
-rw-r--r--tests/nfnetlink_osf.c85
-rwxr-xr-xtests/nfnetlink_osf.gen.test3
-rw-r--r--tests/nfnetlink_queue.c83
-rwxr-xr-xtests/nfnetlink_queue.gen.test3
-rw-r--r--tests/nfnetlink_ulog.c83
-rwxr-xr-xtests/nfnetlink_ulog.gen.test3
-rw-r--r--tests/nlattr_inet_diag_msg.c5
-rw-r--r--tests/nlattr_mdba_mdb_entry.c182
-rwxr-xr-xtests/nlattr_mdba_mdb_entry.gen.test3
-rw-r--r--tests/nlattr_mdba_router_port.c128
-rwxr-xr-xtests/nlattr_mdba_router_port.gen.test3
-rw-r--r--tests/nlattr_tc_stats.c151
-rwxr-xr-xtests/nlattr_tc_stats.gen.test3
-rw-r--r--tests/nlattr_tca_stab.c127
-rwxr-xr-xtests/nlattr_tca_stab.gen.test3
-rw-r--r--tests/nlattr_tcmsg.c38
-rwxr-xr-xtests/options-syntax.test19
-rw-r--r--tests/prctl-seccomp-filter-v.c2
-rw-r--r--tests/pure_executables.am17
-rwxr-xr-xtests/pure_executables.list17
-rw-r--r--tests/seccomp-filter-v.c5
-rw-r--r--tests/seccomp-filter.c7
-rw-r--r--tests/seccomp_get_action_avail.c125
-rwxr-xr-xtests/seccomp_get_action_avail.gen.test4
-rw-r--r--tests/set_sigblock.c53
-rw-r--r--tests/set_sigign.c49
-rwxr-xr-xtests/sigblock.test22
-rwxr-xr-xtests/sigign.test22
-rw-r--r--tests/test_nlattr.h103
-rw-r--r--xlat/Makemodule.am48
-rw-r--r--xlat/arp_hardware_types.h3
-rw-r--r--xlat/arp_hardware_types.in1
-rw-r--r--xlat/bpf_attach_type.h8
-rw-r--r--xlat/bpf_attach_type.in2
-rw-r--r--xlat/bpf_map_flags.h8
-rw-r--r--xlat/bpf_map_flags.in2
-rw-r--r--xlat/bpf_map_types.h8
-rw-r--r--xlat/bpf_map_types.in2
-rw-r--r--xlat/bpf_op_jmp.h12
-rw-r--r--xlat/bpf_op_jmp.in4
-rw-r--r--xlat/bpf_prog_types.h4
-rw-r--r--xlat/bpf_prog_types.in1
-rw-r--r--xlat/ethernet_protocols.h12
-rw-r--r--xlat/ethernet_protocols.in4
-rwxr-xr-xxlat/gen.sh18
-rw-r--r--xlat/inet_diag_attrs.h1
-rw-r--r--xlat/inet_diag_attrs.in1
-rw-r--r--xlat/inet_diag_extended_flags.h1
-rw-r--r--xlat/inet_diag_extended_flags.in1
-rw-r--r--xlat/kcmp_types.h4
-rw-r--r--xlat/kcmp_types.in1
-rw-r--r--xlat/loop_cmds.h3
-rw-r--r--xlat/loop_cmds.in1
-rw-r--r--xlat/madvise_cmds.h6
-rw-r--r--xlat/madvise_cmds.in2
-rw-r--r--xlat/mdb_flags.h17
-rw-r--r--xlat/mdb_flags.in1
-rw-r--r--xlat/mdb_states.h20
-rw-r--r--xlat/mdb_states.in2
-rw-r--r--xlat/membarrier_cmds.h8
-rw-r--r--xlat/membarrier_cmds.in6
-rw-r--r--xlat/memfd_create_flags.h4
-rw-r--r--xlat/memfd_create_flags.in1
-rw-r--r--xlat/multicast_router_types.h30
-rw-r--r--xlat/multicast_router_types.in4
-rw-r--r--xlat/netlink_delete_flags.h17
-rw-r--r--xlat/netlink_delete_flags.in1
-rw-r--r--xlat/nf_acct_msg_types.h34
-rw-r--r--xlat/nf_acct_msg_types.in5
-rw-r--r--xlat/nf_cthelper_msg_types.h26
-rw-r--r--xlat/nf_cthelper_msg_types.in3
-rw-r--r--xlat/nf_ctnetlink_exp_msg_types.h30
-rw-r--r--xlat/nf_ctnetlink_exp_msg_types.in4
-rw-r--r--xlat/nf_ctnetlink_msg_types.h46
-rw-r--r--xlat/nf_ctnetlink_msg_types.in8
-rw-r--r--xlat/nf_cttimeout_msg_types.h34
-rw-r--r--xlat/nf_cttimeout_msg_types.in5
-rw-r--r--xlat/nf_ipset_msg_types.h92
-rw-r--r--xlat/nf_ipset_msg_types.in21
-rw-r--r--xlat/nf_nft_compat_msg_types.h18
-rw-r--r--xlat/nf_nft_compat_msg_types.in1
-rw-r--r--xlat/nf_nftables_msg_types.h102
-rw-r--r--xlat/nf_nftables_msg_types.in22
-rw-r--r--xlat/nf_osf_msg_types.h22
-rw-r--r--xlat/nf_osf_msg_types.in2
-rw-r--r--xlat/nf_queue_msg_types.h30
-rw-r--r--xlat/nf_queue_msg_types.in4
-rw-r--r--xlat/nf_ulog_msg_types.h22
-rw-r--r--xlat/nf_ulog_msg_types.in2
-rw-r--r--xlat/rtnl_mdba_mdb_attrs.h22
-rw-r--r--xlat/rtnl_mdba_mdb_attrs.in2
-rw-r--r--xlat/rtnl_mdba_mdb_eattr_attrs.h22
-rw-r--r--xlat/rtnl_mdba_mdb_eattr_attrs.in2
-rw-r--r--xlat/rtnl_mdba_mdb_entry_attrs.h22
-rw-r--r--xlat/rtnl_mdba_mdb_entry_attrs.in2
-rw-r--r--xlat/rtnl_mdba_router_attrs.h22
-rw-r--r--xlat/rtnl_mdba_router_attrs.in2
-rw-r--r--xlat/rtnl_mdba_router_pattr_attrs.h26
-rw-r--r--xlat/rtnl_mdba_router_pattr_attrs.in3
-rw-r--r--xlat/rtnl_tca_stab_attrs.h26
-rw-r--r--xlat/rtnl_tca_stab_attrs.in3
-rw-r--r--xlat/rtnl_tca_stats_attrs.h42
-rw-r--r--xlat/rtnl_tca_stats_attrs.in7
-rw-r--r--xlat/seccomp_filter_flags.h4
-rw-r--r--xlat/seccomp_filter_flags.in1
-rw-r--r--xlat/seccomp_ops.h4
-rw-r--r--xlat/seccomp_ops.in1
-rw-r--r--xlat/seccomp_ret_action.h46
-rw-r--r--xlat/seccomp_ret_action.in12
-rw-r--r--xlat/socketlayers.h4
-rw-r--r--xlat/socketlayers.in1
-rw-r--r--xlat/sockoptions.h3
-rw-r--r--xlat/sockoptions.in1
-rw-r--r--xlat/socktcpoptions.h6
-rw-r--r--xlat/socktcpoptions.in2
-rw-r--r--xlat/uffd_api_features.h7
-rw-r--r--xlat/uffd_api_features.in3
335 files changed, 13152 insertions, 1044 deletions
diff --git a/CREDITS b/CREDITS
index ebad5e7e..f2e099a3 100644
--- a/CREDITS
+++ b/CREDITS
@@ -15,37 +15,51 @@ strace-devel@lists.sourceforge.net mailing list.
Aaron Ucko <ucko@vax1.rockhurst.edu>
Abhishek Tiwari <erabhishektiwarics@gmail.com>
Adrien Kunysz <adrien@kunysz.be>
+ Alexey Brodkin <Alexey.Brodkin@synopsys.com>
Alexey Neyman <stilor@att.net>
Ali Polatel <alip@exherbo.org>
+ Anatoly Pugachev <matorola@gmail.com>
Anchit Jain <anchitjain1234@gmail.com>
Andi Kleen <ak@linux.intel.com>
Andre McCurdy <armccurdy@gmail.com>
Andreas Schwab <schwab@linux-m68k.org>
+ Andrew Guertin <lists@dolphinling.net>
+ Angelo Castello <angelo.castello@st.com>
Anton Blanchard <anton@samba.org>
Arkadiusz Miskiewicz <misiek@pld.org.pl>
+ Arturo Borrero Gonzalez <arturo.borrero.glez@gmail.com>
Aurelien Jacobs <aurel@gnuage.org>
Bai Weidong <baiwd@cn.fujitsu.com>
Bart Van Assche <bart.vanassche@sandisk.com>
+ Baruch Siach <baruch@tkos.co.il>
Ben Noordhuis <info@bnoordhuis.nl>
Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Bo Kullmar <bk@kullmar.se>
+ Bryan Matsuo <bryan.matsuo@gmail.com>
+ Bryce Gibson <bryce@gibson-consulting.com.au>
Cai Fei <caifei@cn.fujitsu.com>
Carlos O'Donell <carlos@systemhalted.org>
- Carmelo AMOROSO <carmelo.amoroso@st.com>
+ Carmelo Amoroso <carmelo.amoroso@st.com>
+ Cheolung Lee <chpie@grayhash.com>
Chris Dearman <chris.dearman@imgtec.com>
Chris Metcalf <cmetcalf@tilera.com>
Chris Zankel <chris@zankel.net>
+ Christian Neukirchen <chneukirchen@gmail.com>
Christian Svensson <blue@cmd.nu>
+ Christopher Covington <cov@codeaurora.org>
D.J. Barrow <djbarrow@de.ibm.com>
Damien Profeta <damien.profeta@amadeus.com>
- Damir Shayhutdinov <damir@altlinux.ru>
+ Damir Shayhutdinov <damir@altlinux.org>
Daniel P. Berrange <berrange@redhat.com>
David Daney <ddaney@caviumnetworks.com>
David Mosberger-Tang <davidm@hpl.hp.com>
+ David Robins <dbrobins@i4031.net>
David S. Miller <davem@caip.rutgers.edu>
David Wilder <wilder@us.ibm.com>
David Woodhouse <dwmw2@redhat.com>
Denys Vlasenko <vda.linux@googlemail.com>
+ Dima Kogan <dima@secretsauce.net>
+ Dima Krasner <dima@dimakrasner.com>
Dmitry V. Levin <ldv@altlinux.org>
Douglas Mencken <dougmencken@gmail.com>
Dr. David Alan Gilbert <dgilbert@redhat.com>
@@ -63,6 +77,7 @@ strace-devel@lists.sourceforge.net mailing list.
Felix Janda <felix.janda@posteo.de>
Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
Florian Lohoff <flo@rfc822.org>
+ Fr. Br. George <george@altlinux.org>
Frederik Schüler <fs@debian.org>
Gabor Gombas <gombasg@sztaki.hu>
Gabriel Laskar <gabriel@lse.epita.fr>
@@ -73,6 +88,7 @@ strace-devel@lists.sourceforge.net mailing list.
Grant Edwards <grant.b.edwards@gmail.com>
Greg Banks <gbanks@pocketpenguins.com>
H.J. Lu <hongjiu.lu@intel.com>
+ Harald van Dijk <truedfx@gentoo.org>
Heiko Carstens <heiko.carstens@de.ibm.com>
Helge Deller <deller@gmx.de>
Henrik Storner <storner@osiris.ping.dk>
@@ -89,12 +105,17 @@ strace-devel@lists.sourceforge.net mailing list.
Jeff Mahoney <jeffm@suse.com>
Jian Zhen <zhenjl@gmail.com>
JingPiao Chen <chenjingpiao@gmail.com>
+ Jiri Slaby <jirislaby@gmail.com>
+ Joakim Bech <joakim.bech@linaro.org>
Joe Ilacqua <spike@world.std.com>
+ Joe Korty <joe.korty@ccur.com>
Johannes Stezenbach <js@sig21.net>
John Hughes <john@Calva.COM>
John Spencer <maillist-strace@barfooze.de>
- Ju"rgen Fluk <louis@marco.de>
- Juergen Weigert <jnweiger@immd4.informatik.uni-erlangen.de>
+ Josef T. Burger <bolo@cs.wisc.edu>
+ Joshua Neal <tinara@netpipeline.net>
+ Jürgen Fluk <louis@marco.de>
+ Jürgen Weigert <jnweiger@immd4.informatik.uni-erlangen.de>
Katerina Koukiou <k.koukiou@googlemail.com>
Keith Owens <kaos.ocs@gmail.com>
Keith Thompson <kst@alsys.com>
@@ -103,13 +124,15 @@ strace-devel@lists.sourceforge.net mailing list.
Kyle McMartin <kyle@mcmartin.ca>
Lai JiangShan <laijs@cn.fujitsu.com>
Lazar Trsic <Lazar.Trsic@imgtec.com>
+ Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
Leonard N. Zubkoff <lnz@dandelion.com>
+ Li Er <phoooyb@gmail.com>
Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>
Lubomir Rintel <lkundrak@v3.sk>
Luca Clementi <luca.clementi@gmail.com>
Lupe Christoph <lupe@alanya.isar.muc.de>
Maarten ter Huurne <maarten@treewalker.org>
- Mark Hills <Mark.Hills@framestore.com>
+ Mark Hills <mark.hills@framestore.com>
Mark Wielaard <mjw@redhat.com>
Marty Leisner <leisner@sdsp.mc.xerox.com>
Masatake YAMATO <yamato@redhat.com>
@@ -118,27 +141,32 @@ strace-devel@lists.sourceforge.net mailing list.
Max Filippov <jcmvbkbc@gmail.com>
Maxim Shchetynin <maxim@de.ibm.com>
Maxin B. John <maxin.john@enea.com>
+ Md Haris Iqbal <haris.phnx@gmail.com>
+ Michael A Fetterman <mafetter@nvidia.com>
Michael E Chastain <mec@duracef.shout.net>
Michael Holzheu <holzheu@de.ibm.com>
Michael Shigorin <mike@altlinux.org>
Michail Litvak <mci@owl.openwall.com>
Michal Ludvig <mludvig@suse.cz>
+ Michal Simek <monstr@monstr.eu>
Mike Frysinger <vapier@gentoo.org>
Mike Stroyan <mike.stroyan@hp.com>
Mikulas Patocka <mpatocka@redhat.com>
Miroslav Lichvar <mlichvar@redhat.com>
Muttley Meen <muttley.meen@gmail.com>
- Nahim El Atmani <naam@lse.epita.fr>
+ Nahim El Atmani <nahim+dev@naam.me>
Namhyung Kim <namhyung.kim@lge.com>
Nate Eldredge <nate@cartsys.com>
Nate Sammons <nate@users.sourceforge.net>
Neil Campbell <lists@thebatcave.org.uk>
Nikolay Marchuk <marchuk.nikolay.a@gmail.com>
+ Orion Poplawski <orion@cora.nwra.com>
Paolo Bonzini <pbonzini@redhat.com>
- Patrik Jakobsson <patrik.jakobsson@linux.intel.com>
+ Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Paul Mundt <lethal@linux-sh.org>
Pavel Machek <pavel@ucw.cz>
Peter Jones <pjones@redhat.com>
+ Peter Zotov <whitequark@whitequark.org>
Philippe De Muyter <phdm@macqel.be>
Philippe Ombredanne <pombredanne@nexb.com>
Pádraig Brady <P@draigBrady.com>
@@ -151,7 +179,9 @@ strace-devel@lists.sourceforge.net mailing list.
Richard Henderson <richard@twiddle.tamu.edu>
Richard Hirst <rhirst@linuxcare.com>
Richard W.M. Jones <rjones@redhat.com>
+ Rick Jones <rick.jones2@hp.com>
Rishi Bhatt <bhatt.rishi062@gmail.com>
+ Robin Hack <hack.robin@gmail.com>
Roland Borde <bo@uebemc.siemens.de>
Roland McGrath <roland@redhat.com>
Romain Naour <romain.naour@smile.fr>
@@ -162,13 +192,15 @@ strace-devel@lists.sourceforge.net mailing list.
Sebastian Pipping <sebastian@pipping.org>
Seraphime Kirkovski <kirkseraph@gmail.com>
Sergei Trofimovich <slyfox@gentoo.org>
+ Sergey Bolshakov <sbolshakov@altlinux.org>
Simon Murray <simon@transitive.com>
Solar Designer <solar@openwall.com>
Srinivasa Ds <srinivasa@in.ibm.com>
Stanislav Brabec <sbrabec@suse.cz>
Stefan Sørensen <stefan.sorensen@spectralink.com>
Steve Bennett <steveb@workware.net.au>
- Steve McIntyre <steve.mcintyre@linaro.org>
+ Steve McIntyre <steve@einval.com>
+ Steven Honeyman <stevenhoneyman@gmail.com>
Szabolcs Nagy <nsz@port70.net>
Thanh Ma <tma@encore.com>
Thiemo Seufer <ths@networkno.de>
@@ -184,10 +216,12 @@ strace-devel@lists.sourceforge.net mailing list.
Victor Krapivensky <krapivenskiy.va@phystech.edu>
Vineet Gupta <Vineet.Gupta1@synopsys.com>
Wang Chao <wang.chao@cn.fujitsu.com>
+ Weichuan Yan <wchyan@marvell.com>
Wichert Akkerman <wichert@deephackmode.org>
- William Manley <william.manley@youview.com>
+ William Manley <will@williammanley.net>
Xiaoning Ding <dingxn@gmail.com>
Yang Zhiguo <yzgcsu@cn.fujitsu.com>
+ Yun-Chih Chen <b03902074@ntu.edu.tw>
Zach Brown <zach.brown@oracle.com>
Zev Weiss <zev@bewilderbeest.net>
Zhang Le <zhilg@users.sourceforge.net>
diff --git a/ChangeLog b/ChangeLog
index b649b2e9..988b70b6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,786 @@
+2017-11-13 Dmitry V. Levin <ldv@altlinux.org>
+
+ Prepare for 4.20 release.
+ * NEWS: Update for 4.20 release.
+
+ CREDITS.in: remove entries listed by maint/gen-contributors-list.sh.
+
+2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ Makefile.am: use gen-contributors-list.sh for CREDITS.
+ * Makefile.am ($(srcdir)/CREDITS): Employ maint/gen-contributors-list.sh
+ for the contributor list generation.
+
+2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ maint: make gen-contributors-list.sh suitable for generation of CREDITS.
+ Implement various features in order to make it suitable for the
+ generation of the CREDITS file:
+ - add an option for including contributor e-mail;
+ - add an option to read additional list of contributors from stdin;
+ - add shorthand for referring to the initial commit of the branch;
+ - document all of the above in a help message.
+
+ * maint/gen-contributors-list.sh (print_help): New function.
+ (script): Rename to SCRIPT.
+ (SCRIPT_NORM_EMAILS, MATCH_OUT, OUT_EMAILS, OUT_NO_EMAILS, read_stdin,
+ include_email): New variables.
+ Add parsing of options, rewrite input processing.
+
+2017-11-13 Dmitry V. Levin <ldv@altlinux.org>
+
+ .mailmap: add more entries to avoid duplication in CREDITS.
+
+ .mailmap: sort entries.
+
+2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ .mailmap: more deduplication.
+ Of course there are no two persons in the whole world that share
+ the same name.
+
+2017-11-13 Dmitry V. Levin <ldv@altlinux.org>
+
+ CREDITS.in: use UTF-8 consistently.
+ In particular, do not use " symbols in names.
+
+2017-11-13 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ CREDITS.in: add Jiri Slaby as a contributor.
+ Unfortunately, he wasn't mentioned in the message of the commit
+ v4.19-68-g48cb633, so let's fix that omission.
+
+ References: https://github.com/strace/strace/pull/16
+
+2017-11-13 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
+
+ s390, s390x: update ioctl entries from linux 4.14.
+ * linux/s390/ioctls_arch0.h: Update from linux v4.14 using ioctls_gen.sh.
+ * linux/s390x/ioctls_arch0.h: Likewise.
+
+ s390x: remove some of non-s390 KVM ioctls.
+ * linux/s390x/ioctls_arch0.h: Regenerate.
+
+ maint: remove KVM_PPC_CONFIGURE_V3_MMU ioctl from non-powerpc arches.
+ * maint/ioctls_sym.sh (ppc_list): Update.
+
+2017-11-12 Dmitry V. Levin <ldv@altlinux.org>
+
+ Update copyright headers.
+ Headers updated semi-automatically using
+ maint/update_copyright_years.sh script.
+
+ * m4/mpers.m4: Update copyright years.
+ * tests/kcmp.c: Likewise.
+ * tests/membarrier.c: Likewise.
+
+2017-11-11 Dmitry V. Levin <ldv@altlinux.org>
+
+ maint/update_copyright_years.sh: fix typo in help output.
+ * maint/update_copyright_years.sh (print_help): Fix typo, disable
+ here-document expansion.
+
+2017-11-10 Eugene Syromiatnikov <esyr@redhat.com>
+
+ Move MIN, MAX, and CLAMP to macros.h.
+ We shouldn't have to include the whole defs.h to get them.
+
+ * defs.h (MIN, MAX, CLAMP): Move ...
+ * macros.h: ... here.
+
+2017-11-10 Eugene Syromiatnikov <esyr@redhat.com>
+
+ Update .mailmap.
+ * .mailmap (Eugene Syromyatnikov): Add work address.
+
+2017-11-07 Steve McIntyre <steve@einval.com>
+
+ debian: update debhelper compat level to 10, replace -s with -a in some calls
+
+ debian: update Standards-Version to 3.9.8.
+
+2017-11-06 Dmitry V. Levin <ldv@altlinux.org>
+
+ mpers.m4: check for size of long and kernel_long_t.
+ The primary purpose of this new check is diagnostics.
+
+ * m4/mpers.m4 (st_MPERS): Check for size of long and kernel_long_t.
+
+2017-11-06 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ xlat/gen.sh: speedup xlat generation.
+ This commit implements the following changes:
+ - increases the number of concurrent jobs to twice the CPU count;
+ - creates a circular buffer, so instead of running multiple jobs
+ at once, the generator tries to keep about the same number of jobs
+ being run concurrently;
+ - runs gen_git and gen_make concurrently in order to squeeze in
+ one more bit of concurrency.
+
+ With my deeply scientific measurements, this approach achieves
+ up to 15% speedup with dash and about 30-40% with bash as /bin/sh
+ on a 4-core machine.
+
+ * xlat/gen.sh (main): Declare pids local variable, append pid of every
+ run job to it; increase the limit of jobs to ncpus * 2; when the limit
+ is reached, wait for the first pid in pids instead of resetting jobs
+ to zero and waiting for all the run jobs; put gen_git and gen_make
+ into background.
+
+2017-11-05 Dmitry V. Levin <ldv@altlinux.org>
+
+ hppa: wire up statx syscall.
+ * linux/hppa/syscallent.h [349]: Add statx entry.
+
+2017-11-04 Dmitry V. Levin <ldv@altlinux.org>
+
+ tests: check signal mask transparency.
+ Starting with commit v4.17-5-gf83b49b strace is expected
+ to forward the signal mask to tracees unchanged.
+
+ * tests/check_sigblock.c: New file.
+ * tests/set_sigblock.c: Likewise.
+ * tests/sigblock.test: New test.
+ * tests/.gitignore: Add check_sigblock and set_sigblock.
+ * tests/Makefile.am (check_PROGRAMS): Likewise.
+ (MISC_TESTS): Add sigblock.test.
+
+2017-11-03 Dmitry V. Levin <ldv@altlinux.org>
+
+ tests: check signal disposition transparency.
+ Starting with commit v4.17-8-ge97a66f strace is expected
+ to forward the signal disposition to tracees unchanged.
+
+ * tests/check_sigign.c: New file.
+ * tests/list_sigaction_signum.c: Likewise.
+ * tests/set_sigign.c: Likewise.
+ * tests/sigign.test: New test.
+ * tests/.gitignore: Add check_sigign, list_sigaction_signum,
+ and set_sigign.
+ * tests/Makefile.am (check_PROGRAMS): Likewise.
+ (MISC_TESTS): Add sigign.test.
+
+2017-11-03 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ tests: update futex test to accommodate the recent kernel change.
+ Kernel commit v4.14-rc1~162^2~8 refactored futex implementation and
+ introduced checks for invalid shift sizes. Accommodate this change
+ by allowing EINVAL in the corresponding futex checks.
+
+ * tests/futex.c (CHECK_FUTEX_GENERIC): Reset errno before the syscall.
+ (main) <wake_ops>: Add err2 field, describe err/err2 fields.
+ Add EINVAL as a possible errno to the checks that contain invalid
+ shift values.
+ Update return value check so it checks that values are strictly
+ as expected.
+
+ Closes: https://github.com/strace/strace/pull/16
+
+2017-11-03 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ tests: cleanup futex test.
+ * tests/futex.c (main) <wake_ops>: Remove unused errstr field
+ from the structure type definition.
+
+2017-11-02 Dmitry V. Levin <ldv@altlinux.org>
+
+ seccomp: decode SECCOMP_GET_ACTION_AVAIL operation.
+ * defs.h (seccomp_ret_action): New xlat prototype.
+ * seccomp.c (decode_seccomp_set_mode_strict): Remove.
+ (SYS_FUNC(seccomp)): Decode SECCOMP_GET_ACTION_AVAIL operation.
+ * NEWS: Mention this.
+ * tests/seccomp_get_action_avail.c: New file.
+ * tests/gen_tests.in (seccomp_get_action_avail): New entry.
+ * tests/pure_executables.list: Add seccomp_get_action_avail.
+ * tests/.gitignore: Likewise.
+
+2017-11-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ Add SECCOMP_RET_KILL_PROCESS decoding support.
+ * bpf_seccomp_filter.c [!SECCOMP_RET_ACTION]: Remove.
+ [!SECCOMP_RET_ACTION_FULL] (SECCOMP_RET_ACTION_FULL): Define.
+ (print_seccomp_filter_k): Use SECCOMP_RET_ACTION_FULL
+ instead of SECCOMP_RET_ACTION.
+ * xlat/seccomp_ret_action.in: Add SECCOMP_RET_KILL_PROCESS introduced
+ by linux kernel commit v4.14-rc2~15^2~3.
+
+2017-11-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ Rename SECCOMP_RET_KILL to SECCOMP_RET_KILL_THREAD.
+ Follow linux kernel commit v4.14-rc2~15^2~4 and rename SECCOMP_RET_KILL
+ to SECCOMP_RET_KILL_THREAD.
+
+ * xlat/seccomp_ret_action.in (SECCOMP_RET_KILL): Rename
+ to SECCOMP_RET_KILL_THREAD.
+ * tests/prctl-seccomp-filter-v.c (main): Update expected output.
+ * tests/seccomp-filter-v.c (main): Likewise.
+
+2017-11-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ Update SECCOMP_* constants.
+ * xlat/seccomp_filter_flags.in: Add SECCOMP_FILTER_FLAG_LOG introduced
+ by kernel commit v4.14-rc2~15^2~6.
+ * xlat/seccomp_ops.in: Add SECCOMP_GET_ACTION_AVAIL introduced
+ by kernel commit v4.14-rc2~15^2~9.
+ * xlat/seccomp_ret_action.in: Add SECCOMP_RET_LOG introduced
+ by kernel commit v4.14-rc2~15^2~5.
+ * NEWS: Mention this.
+ * tests/seccomp-filter.c (main): Update expected output.
+ * tests/seccomp-filter-v.c (main): Likewise.
+
+ Provide fallback definitions for SECCOMP_RET_* constants.
+ * xlat/seccomp_ret_action.in: Add fallback definitions.
+
+2017-11-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ tests: robustify options-syntax.test against inquisitive musl.
+ Workaround musl >= 1.1.17 ability to use AT_EXECFN during
+ program_invocation_name initialization.
+
+ * tests/options-syntax.test: Check for two valid variants
+ of "zeroargc strace" expected output.
+
+2017-11-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ Update MEMBARRIER_CMD_* constants.
+ * xlat/membarrier_cmds.in: Add MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED
+ introduced by kernel commit v4.14-rc6~26.
+ * tests/membarrier.c (main): Update expected output.
+
+2017-10-31 JingPiao Chen <chenjingpiao@gmail.com>
+
+ tests: check decoding of NFNL_SUBSYS_NFT_COMPAT netlink message flags.
+ * tests/nfnetlink_nft_compat.c (test_nlmsg_flags): New function.
+ (main): Use it.
+
+ tests: check decoding of NFNL_SUBSYS_NFTABLES netlink message flags.
+ * tests/nfnetlink_nftables.c (test_nlmsg_flags): New function.
+ (main): Use it.
+
+ tests: check decoding of NFNL_SUBSYS_CTHELPER netlink message flags.
+ * tests/nfnetlink_cthelper.c (test_nlmsg_flags): New function.
+ (main): Use it.
+
+ tests: check decoding of NFNL_SUBSYS_CTNETLINK_TIMEOUT netlink message flags
+ * tests/nfnetlink_cttimeout.c (test_nlmsg_flags): New function.
+ (main): Use it.
+
+ tests: check decoding of NFNL_SUBSYS_ACCT netlink message flags.
+ * tests/nfnetlink_acct.c (test_nlmsg_flags): New function.
+ (main): Use it.
+
+ tests: check decoding of NFNL_SUBSYS_CTNETLINK_EXP netlink message flags
+ * tests/nfnetlink_ctnetlink_exp.c (test_nlmsg_flags): New function.
+ (main): Use it.
+
+ tests: check decoding of NFNL_SUBSYS_CTNETLINK netlink message flags.
+ * tests/nfnetlink_ctnetlink.c (test_nlmsg_flags): New function.
+ (main): Use it.
+
+2017-10-26 JingPiao Chen <chenjingpiao@gmail.com>
+
+ netlink: decode NETLINK_NETFILTER netlink message flags.
+ * netlink.c (decode_nlmsg_flags_netfilter): New function.
+ (nlmsg_flags): Add NETLINK_NETFILTER.
+ * NEWS: Mention this.
+
+ netlink: decode netlink message delete flags.
+ * netlink.c: Include "xlat/netlink_delete_flags.h".
+ (decode_nlmsg_flags_crypto, decode_nlmsg_flags_route,
+ decode_nlmsg_flags_xfrm): Decode delete flags.
+ * netlink.h (NLM_F_NONREC): New macro.
+ * xlat/netlink_delete_flags.in: New file.
+ * tests/netlink_crypto.c (test_nlmsg_flags): Check this.
+ * tests/netlink_route.c (test_nlmsg_flags): Likewise.
+ * tests/netlink_xfrm.c (test_nlmsg_flags): Likewise.
+
+2017-10-26 JingPiao Chen <chenjingpiao@gmail.com>
+
+ netlink: refactor decode_nlmsg_flags.
+ Refactor decode_nlmsg_flags to make it family-specific, just like
+ decode_nlmsg_type and decode_payload.
+
+ * netlink.c (decode_nlmsg_flags_crypto, decode_nlmsg_flags_route,
+ decode_nlmsg_flags_sock_diag, decode_nlmsg_flags_xfrm): New functions.
+ (nlmsg_flags_decoder_t): New typedef.
+ (nlmsg_flags): New array.
+ (decode_nlmsg_flags): Use it.
+
+2017-10-14 JingPiao Chen <chenjingpiao@gmail.com>
+
+ Workaround historic linux/netfilter/xt_osf.h deficiencies.
+ When using linux kernel headers without commit v4.5-rc1~128^2~115^2~22
+ ("netfilter: fix include files for compilation"), both <linux/ip.h>
+ and <linux/tcp.h> have to be included before <linux/netfilter/xt_osf.h>.
+
+ * configure.ac (AC_CHECK_HEADERS): Include <linux/ip.h>
+ and <linux/tcp.h> when checking for linux/netfilter/xt_osf.h header.
+ * tests/nfnetlink_osf.c: Include <linux/ip.h> and <linux/tcp.h>
+ before <linux/netfilter/xt_osf.h>.
+
+2017-09-24 JingPiao Chen <chenjingpiao@gmail.com>
+
+ tests: check decoding of NFNL_SUBSYS_NFT_COMPAT netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add
+ linux/netfilter/nf_tables_compat.h.
+ * tests/nfnetlink_nft_compat.c: New file.
+ * tests/gen_tests.in (nfnetlink_nft_compat): New entry.
+ * tests/pure_executables.list: Add nfnetlink_nft_compat.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_NFTABLES netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add linux/netfilter/nf_tables.h.
+ * tests/nfnetlink_nftables.c: New file.
+ * tests/gen_tests.in (nfnetlink_nftables): New entry.
+ * tests/pure_executables.list: Add nfnetlink_nftables.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_CTHELPER netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add
+ linux/netfilter/nfnetlink_cthelper.h.
+ * tests/nfnetlink_cthelper.c: New file.
+ * tests/gen_tests.in (nfnetlink_cthelper): New entry.
+ * tests/pure_executables.list: Add nfnetlink_cthelper.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_CTNETLINK_TIMEOUT netlink message types
+ * configure.ac (AC_CHECK_HEADERS): Add
+ linux/netfilter/nfnetlink_cttimeout.h.
+ * tests/nfnetlink_cttimeout.c: New file.
+ * tests/gen_tests.in (nfnetlink_cttimeout): New entry.
+ * tests/pure_executables.list: Add nfnetlink_cttimeout.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_ACCT netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add
+ linux/netfilter/nfnetlink_acct.h.
+ * tests/nfnetlink_acct.c: New file.
+ * tests/gen_tests.in (nfnetlink_acct): New entry.
+ * tests/pure_executables.list: Add nfnetlink_acct.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_IPSET netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add linux/netfilter/ipset/ip_set.h.
+ * tests/nfnetlink_ipset.c: New file.
+ * tests/gen_tests.in (nfnetlink_ipset): New entry.
+ * tests/pure_executables.list: Add nfnetlink_ipset.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_OSF netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add linux/netfilter/xt_osf.h.
+ * tests/nfnetlink_osf.c: New file.
+ * tests/gen_tests.in (nfnetlink_osf): New entry.
+ * tests/pure_executables.list: Add nfnetlink_osf.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_ULOG netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add
+ linux/netfilter/nfnetlink_log.h.
+ * tests/nfnetlink_ulog.c: New file.
+ * tests/gen_tests.in (nfnetlink_ulog): New entry.
+ * tests/pure_executables.list: Add nfnetlink_ulog.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_QUEUE netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add
+ linux/netfilter/nfnetlink_queue.h.
+ * tests/nfnetlink_queue.c: New file.
+ * tests/gen_tests.in (nfnetlink_queue): New entry.
+ * tests/pure_executables.list: Add nfnetlink_queue.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_CTNETLINK_EXP netlink message types
+ * tests/nfnetlink_ctnetlink_exp.c: New file.
+ * tests/gen_tests.in (nfnetlink_ctnetlink_exp): New entry.
+ * tests/pure_executables.list: Add nfnetlink_ctnetlink_exp.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of NFNL_SUBSYS_CTNETLINK netlink message types.
+ * configure.ac (AC_CHECK_HEADERS): Add
+ linux/netfilter/nfnetlink_conntrack.h.
+ * tests/nfnetlink_ctnetlink.c: New file.
+ * tests/gen_tests.in (nfnetlink_ctnetlink): New entry.
+ * tests/pure_executables.list: Add nfnetlink_ctnetlink.
+ * tests/.gitignore: Likewise.
+
+ netlink: decode NETLINK_NETFILTER netlink message types.
+ * netlink.c: Include "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", and "xlat/nf_ulog_msg_types.h".
+ (nf_nlmsg_types): New array.
+ (decode_nlmsg_type_netfilter): Use it.
+ * NEWS: Mention this.
+ * xlat/nf_acct_msg_types.in: New file.
+ * xlat/nf_cthelper_msg_types.in: Likewise.
+ * xlat/nf_ctnetlink_exp_msg_types.in: Likewise.
+ * xlat/nf_ctnetlink_msg_types.in: Likewise.
+ * xlat/nf_cttimeout_msg_types.in: Likewise.
+ * xlat/nf_ipset_msg_types.in: Likewise.
+ * xlat/nf_nft_compat_msg_types.in: Likewise.
+ * xlat/nf_nftables_msg_types.in: Likewise.
+ * xlat/nf_osf_msg_types.in: Likewise.
+ * xlat/nf_queue_msg_types.in: Likewise.
+ * xlat/nf_ulog_msg_types.in: Likewise.
+ * tests/netlink_netfilter.c (test_nlmsg_type): Update expected output.
+
+2017-09-20 Dmitry V. Levin <ldv@altlinux.org>
+
+ ppc64: fix sigreturn parser for ppc personality.
+ * linux/powerpc/arch_sigreturn.c (arch_sigreturn) [POWERPC64]: Rewrite.
+
+ ppc64: truncate syscall args for 32-bit personality tracees.
+ * linux/powerpc/get_syscall_args.c (get_syscall_args): Clear upper
+ 32 bits of syscall args for 32-bit personality tracees.
+ * NEWS: Mention this fix.
+
+ ppc64: fix PRI__64 macro definition when compiled with -m32.
+ * kernel_types.h [SIZEOF_LONG != 4]: Check for __powerpc64__ instead
+ of POWERPC to handle -m32 case properly.
+
+2017-09-19 Dmitry V. Levin <ldv@altlinux.org>
+
+ loop: decode LOOP_SET_BLOCK_SIZE.
+ * loop.c (loop_ioctl) <LOOP_SET_BLOCK_SIZE>: Handle LOOP_SET_BLOCK_SIZE.
+ * tests/ioctl_loop.c (main): Check it.
+
+ Update ioctl entries from linux v4.14-rc1.
+ * linux/32/ioctls_inc_align16.h: Update from linux v4.14-rc1
+ 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.
+ * xlat/loop_cmds.in: Add LOOP_SET_BLOCK_SIZE introduced
+ by kernel commit v4.13-rc7-176-g89e4fde.
+ * NEWS: Mention this.
+ * tests/ioctl_loop.c (main): Update.
+
+2017-09-19 Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org>
+
+ maint: generate ioctl entries without target architecture code execution
+ ioctls_sym.sh used to generate and invoke target architecture
+ executables that limited its applicability.
+ After this change, the generated code is just compiled to the target
+ architecture object files and all required information is obtained
+ from the dwarf sections.
+ This approach allows to generate ioctl entries for any target
+ architecture supported by compiler.
+
+ * maint/ioctls_sym.awk: New file.
+ * maint/ioctls_sym.sh (LC_ALL): Define to C and export.
+ (uname_m): Make configurable.
+ (CFLAGS): Add -gdwarf-2.
+ (LDFLAGS): Remove.
+ Do not use print_ioctlent.c.
+ Change asm-generic/ioctl.h and asm/ioctl.h hook.
+ Dump and process dwarf sections of generated object files.
+ * maint/print_ioctlent.c: Remove.
+
+2017-09-18 Dmitry V. Levin <ldv@altlinux.org>
+
+ Remove KVM_S390_* ioctls from non-s390 architectures.
+ * maint/ioctls_sym.sh <linux/kvm.h> (s390_list): New variable.
+ Use it to exclude KVM_S390_* ioctls on non-s390 architectures.
+ * linux/arm/ioctls_arch0.h: Regenerate.
+ * linux/i386/ioctls_arch0.h: Likewise.
+ * linux/powerpc/ioctls_arch0.h: Likewise.
+ * linux/s390/ioctls_arch0.h: Likewise.
+ * linux/x86_64/ioctls_arch0.h: Likewise.
+
+2017-09-17 Dmitry V. Levin <ldv@altlinux.org>
+
+ Remove some of arch-specific KVM ioctls from non-matching architectures.
+ * maint/ioctls_sym.sh (arm_list, ppc_list, x86_list): Use bracket
+ expressions to generalize arch-specific regular expressions.
+ * linux/arm/ioctls_arch0.h: Regenerate.
+ * linux/i386/ioctls_arch0.h: Likewise.
+ * linux/powerpc/ioctls_arch0.h: Likewise.
+ * linux/s390/ioctls_arch0.h: Likewise.
+ * linux/x86_64/ioctls_arch0.h: Likewise.
+
+2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ dm: add support for DM_DEV_ARM_POLL.
+ Added in Linux commit v4.13-rc1~137^2~14.
+
+ * dm.c [!DM_LIST_VERSIONS] (DM_LIST_VERSIONS): Add leading zero.
+ [!DM_TARGET_MSG] (DM_TARGET_MSG): Likewise.
+ [!DM_DEV_SET_GEOMETRY_CMD] (DM_DEV_SET_GEOMETRY_CMD): Likewise.
+ [!DM_DEV_ARM_POLL] (DM_DEV_ARM_POLL): New macro.
+ (dm_ioctl_has_params, dm_ioctl): Handle DM_DEV_ARM_POLL.
+ * tests/ioctl_dm.c [!DM_DEV_ARM_POLL] (DM_DEV_ARM_POLL): New macro.
+ (main) <dummy_check_cmds>: Add DM_DEV_ARM_POLL.
+
+2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ kcmp: add KCMP_EPOLL_TFD support.
+ * configure.ac (AC_CHECK_TYPES): Add check for struct kcmp_epoll_slot.
+ * kcmp.c (SYS_FUNC(kcmp)) <case KCMP_EPOLL_TFD>: Implement idx1/idx2
+ argument parsing.
+ * tests/kcmp.c: Update test.
+ * xlat/kcmp_types.in (KCMP_EPOLL_TFD): New entry.
+
+2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ tests: add kcmp-y test.
+ It is not very useful as of now, but it will allow tracking changes
+ in fd output once they are implemented.
+
+ * tests/gen_tests.in (kcmp-y): New test.
+ * tests/kcmp-y.c: New file, wrapper for kcmp.c
+ * tests/kcmp.c: Add opening of some files for which info may be printed
+ in the future.
+ * tests/pure_executables.list: Add kcmp-y.
+ * tests/.gitignore: Likewise.
+
+2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ kcmp: output fds using a separate function.
+ This is a preparation for the future introduction of cross-NS PID
+ derivation, which would enable us to print fd information for fds
+ related to all processes, not just traced ones.
+
+ Note the change in output type for idx1/idx2 in KCMP_FILE command from
+ unsigned to int, it follows printfd output format.
+
+ * kcmp.c (printpidfd): New function.
+ (PRINT_FIELD_PIDFD): New macro.
+ (SYS_FUNC(kcmp)) <case KCMP_FILE>: Use printpidfd for printing
+ idx1/idx2, as they are fds, after all.
+
+2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ tests/kcmp: add more checks.
+ Let's check all kcmp commands that they indeed do not print idx1/idx2.
+ Also, check that upper bits of pid arguments are ignored.
+
+ * tests/gen_tests.in (kcmp): Decrease -a argument's value from 27 to 22.
+ * tests/kcmp.c: Add checks for upper bits of pid1/pid2 and for all
+ kcmp types not tested before.
+
+2017-09-17 Eugene Syromyatnikov <evgsyr@gmail.com>
+
+ tests/kcmp: use <linux/kcmp.h> if it is available.
+ I see it as a good idea to stick to system headers whenever possible
+ in order to also check for possible discrepancies between strace's
+ internal definitions and definitions present in the system headers.
+
+ * configure.ac (AC_CHECK_HEADERS): Add linux/kcmp.h.
+ * tests/kcmp.h [HAVE_LINUX_KCMP_H]: Include <linux/kcmp.h>,
+ do not define KCMP_FILE and KCMP_SYSVSEM.
+
+2017-09-17 JingPiao Chen <chenjingpiao@gmail.com>
+
+ tests: check decoding of MDBA_ROUTER_PORT netlink attribute.
+ * tests/nlattr_mdba_router_port.c: New file.
+ * tests/gen_tests.in (nlattr_mdba_router_port): New entry.
+ * tests/pure_executables.list: Add nlattr_mdba_router_port.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of MDBA_MDB_ENTRY_INFO netlink attributes.
+ * tests/nlattr_mdba_mdb_entry.c: New file.
+ * tests/gen_tests.in (nlattr_mdba_mdb_entry): New entry.
+ * tests/pure_executables.list: Add nlattr_mdba_mdb_entry.
+ * tests/.gitignore: Likewise.
+
+2017-09-17 JingPiao Chen <chenjingpiao@gmail.com>
+
+ tests: extend TEST_NESTED_NLATTR_OBJECT macro.
+ Extend TEST_NESTED_NLATTR_OBJECT macro for multi-nested netlink
+ attributes, such as
+
+ [MDBA_MDB] = {
+ [MDBA_MDB_ENTRY] = {
+ [MDBA_MDB_ENTRY_INFO] {
+ struct br_mdb_entry
+ [MDBA_MDB_EATTR attributes]
+ }
+ }
+ }
+
+ * tests/test_nlattr.h (TEST_NESTED_NLATTR_OBJECT_EX_,
+ TEST_NESTED_NLATTR_OBJECT_EX): New macros.
+ (TEST_NESTED_NLATTR_OBJECT): Use TEST_NESTED_NLATTR_OBJECT_EX_.
+
+2017-09-17 JingPiao Chen <chenjingpiao@gmail.com>
+
+ rtnl_mdb: decode br_port_msg netlink attributes.
+ * configure.ac (AC_CHECK_TYPES): Check for struct br_mdb_entry
+ in <linux/if_bridge.h>.
+ (AC_CHECK_MEMBERS): Check for flags and vid fields in struct br_mdb_entry.
+ * rtnl_mdb.c: Include "xlat/mdb_flags.h", "xlat/mdb_states.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"
+ and "xlat/rtnl_mdba_router_pattr_attrs.h".
+ (decode_mdba_mdb_entry_info, decode_mdba_mdb_entry,
+ decode_mdba_mdb, decode_multicast_router_type,
+ decode_mdba_router_port, decode_mdba_router): New functions.
+ (mdba_mdb_eattr_nla_decoders, mdba_mdb_entry_nla_decoders,
+ mdba_mdb_nla_decoders, mdba_router_pattr_nla_decoders,
+ mdba_router_nla_decoders, br_port_msg_nla_decoders): New arrays.
+ (decode_br_port_msg): Use br_port_msg_nla_decoders.
+ * xlat/mdb_flags.in: New file.
+ * xlat/mdb_states.in: Likewise.
+ * xlat/multicast_router_types.in: Likewise.
+ * xlat/rtnl_mdba_mdb_attrs.in: Likewise.
+ * xlat/rtnl_mdba_mdb_eattr_attrs.in: Likewise.
+ * xlat/rtnl_mdba_mdb_entry_attrs.in: Likewise.
+ * xlat/rtnl_mdba_router_attrs.in: Likewise.
+ * xlat/rtnl_mdba_router_pattr_attrs.in: Likewise.
+
+2017-09-17 Dmitry V. Levin <ldv@altlinux.org>
+
+ netlink: implement decoding of INET_DIAG_CLASS_ID attribute.
+ This is a new netlink attribute introduced by linux kernel commit
+ v4.14-rc1~130^2~207.
+
+ * linux/inet_diag.h (INET_DIAG_CLASS_ID): New enum.
+ * netlink_inet_diag.c (inet_diag_msg_nla_decoders): Add
+ INET_DIAG_CLASS_ID.
+ * xlat/inet_diag_attrs.in: Add INET_DIAG_CLASS_ID.
+ * xlat/inet_diag_extended_flags.in: Add 1<<(INET_DIAG_CLASS_ID-1).
+ * tests/nlattr_inet_diag_msg.c (main): Check INET_DIAG_CLASS_ID
+ decoding.
+
+2017-09-17 Dmitry V. Levin <ldv@altlinux.org>
+
+ Update MEMBARRIER_CMD_* constants.
+ * xlat/membarrier_cmds.in: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED
+ introduced by kernel commit v4.14-rc1~174^2^2^4.
+ * NEWS: Mention this.
+ * tests/membarrier.c (main): Update expected output.
+
+ Update UFFD_FEATURE_* constants.
+ * xlat/memfd_create_flags.in: Remove UFFD_FEATURE_EVENT_EXIT removed
+ by kernel commit v4.11-rc2~15^2~18.
+ Add UFFD_FEATURE_SIGBUS and UFFD_FEATURE_THREAD_ID introduced by kernel
+ commits v4.14-rc1~126^2~28 and v4.14-rc1~126^2~23, repsectively.
+ * NEWS: Mention this.
+
+ Update MFD_* constants.
+ * xlat/memfd_create_flags.in: Add MFD_HUGETLB introduced
+ by kernel commit v4.14-rc1~126^2~17.
+ * NEWS: Mention this.
+ * tests/memfd_create.c (main): Update expected output.
+
+ Update ETH_P_* constants.
+ * xlat/ethernet_protocols.in: Add ETH_P_ERSPAN, ETH_P_NSH, ETH_P_IFE,
+ and ETH_P_MAP introduced by kernel commits v4.14-rc1~130^2~164,
+ v4.14-rc1~130^2~89^2~3, v4.14-rc1~130^2~90^2~2, and
+ v4.14-rc1~130^2~78^2~2, respectively.
+ * NEWS: Mention this.
+
+ Update ARPHRD_* constants.
+ * xlat/arp_hardware_types.in: Add ARPHRD_RAWIP introduced
+ by kernel commit v4.14-rc1~130^2~78^2~1.
+ * NEWS: Mention this.
+
+ Update BPF_* constants.
+ * xlat/bpf_attach_type.in: Add BPF_SK_SKB_STREAM_PARSER
+ and BPF_SK_SKB_STREAM_VERDICT introduced by kernel commit
+ v4.14-rc1~130^2~123^2~8.
+ * xlat/bpf_map_flags.in: Add BPF_F_NO_COMMON_LRU and BPF_F_NUMA_NODE
+ introduced by kernel commits v4.10-rc1~202^2~271^2~2
+ and v4.14-rc1~130^2~196^2~1, respectively.
+ * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_DEVMAP
+ and BPF_MAP_TYPE_SOCKMAP introduced by kernel commits
+ v4.14-rc1~130^2~497^2~4 and v4.14-rc1~130^2~234^2~4,
+ respectively.
+ * xlat/bpf_op_jmp.in: Add BPF_JLT, BPF_JLE, BPF_JSLT, and BPF_JSLE
+ introduced by kernel commit v4.14-rc1~130^2~309^2~8.
+ * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_SK_SKB introduced
+ by kernel commit v4.14-rc1~130^2~234^2~6.
+ * NEWS: Mention this.
+
+ Update SO_* constants.
+ * xlat/sockoptions.in: Add SO_ZEROCOPY introduced by kernel commit
+ v4.14-rc1~130^2~376^2~5.
+ * NEWS: Mention this.
+
+ Update MADV_* constants.
+ * xlat/madvise_cmds.in: Add MADV_WIPEONFORK and MADV_KEEPONFORK
+ introduced by kernel commit v4.14-rc1~126^2.
+ * NEWS: Mention this.
+
+2017-09-08 Baruch Siach <baruch@tkos.co.il>
+
+ error_prints: fix potential program_invocation_name type conflict.
+ uClibc-ng declares program_invocation_name as const.
+ This causes the build failure below:
+
+ error_prints.c:40:14: error: conflicting types for ‘program_invocation_name’
+ extern char *program_invocation_name;
+ ^~~~~~~~~~~~~~~~~~~~~~~
+ In file included from error_prints.c:32:0:
+ .../output/host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/errno.h:54:20: note: previous declaration of ‘program_invocation_name’ was here
+ extern const char *program_invocation_name, *program_invocation_short_name;
+ ^~~~~~~~~~~~~~~~~~~~~~~
+
+ * error_prints.c (program_invocation_name): Declare only in case
+ of [!HAVE_PROGRAM_INVOCATION_NAME].
+
+2017-09-07 JingPiao Chen <chenjingpiao@gmail.com>
+
+ rtnl_tc_action: decode tcamsg netlink attributes.
+ * rtnl_tc_action.c (tcamsg_nla_decoders): New array.
+ (decode_tcamsg): Use it.
+
+ tests: check decoding of TCA_STAB netlink attribute of tcmsg.
+ * tests/test_nlattr.h (TEST_NESTED_NLATTR_ARRAY): New macro.
+ * tests/nlattr_tca_stab.c: New file.
+ * tests/gen_tests.in (nlattr_tca_stab): New entry.
+ * tests/pure_executables.list: Add nlattr_tca_stab.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of TCA_STATS2 netlink attribute of tcmsg.
+ * tests/nlattr_tc_stats.c: New file.
+ * tests/gen_tests.in (nlattr_tc_stats): New entry.
+ * tests/pure_executables.list: Add nlattr_tc_stats.
+ * tests/.gitignore: Likewise.
+
+ tests: check decoding of tcmsg netlink attributes.
+ * tests/nlattr_tcmsg.c: Include <stddef.h> and <linux/pkt_sched.h>.
+ (main): Check decoding of TCA_STATS and TCA_RATE.
+
+ rtnl_tc: decode tcmsg netlink attributes.
+ * configure.ac (AC_CHECK_TYPES): Check for gnet_stats_basic,
+ gnet_stats_queue, gnet_stats_rate_est,
+ and gnet_stats_rate_est64 structures in <linux/gen_stats.h>.
+ And check for struct tc_sizespec in <linux/pkt_sched.h>.
+ * nlattr.h (tc_stats): New prototype.
+ * rtnl_tc.c: Include <linux/gen_stats.h>, <linux/pkt_sched.h>,
+ "xlat/rtnl_tca_stab_attrs.h" and "xlat/rtnl_tca_stats_attrs.h".
+ (decode_tc_stats, decode_tc_estimator, decode_gnet_stats_basic,
+ decode_gnet_stats_rate_est, decode_gnet_stats_queue,
+ decode_gnet_stats_rate_est64, decode_nla_tc_stats,
+ decode_tc_sizespec, print_stab_data, decode_tca_stab_data,
+ decode_tca_stab): New functions.
+ (tca_stats_nla_decoders, tca_stab_nla_decoders,
+ tcmsg_nla_decoders): New arrays.
+ (decode_tcmsg): Use tcmsg_nla_decoders.
+ * xlat/rtnl_tca_stab_attrs.in: New file.
+ * xlat/rtnl_tca_stats_attrs.in: Likewise.
+
+2017-09-07 Dmitry V. Levin <ldv@altlinux.org>
+
+ Update TCP_* constants.
+ * xlat/socktcpoptions.in: Add TCP_ULP and TCP_MD5SIG_EXT.
+ * NEWS: Mention this.
+
+ Update SOL_* constants.
+ * xlat/socketlayers.in: Add SOL_TLS.
+ * NEWS: Mention this.
+
+2017-09-06 Dmitry V. Levin <ldv@altlinux.org>
+
+ Post-release administrivia.
+ * NEWS: Add a header line for the next release.
+ * debian/changelog.in: Add a changelog entry for 4.19-1.
+ * strace.spec.in: Likewise.
+
2017-09-05 Dmitry V. Levin <ldv@altlinux.org>
Prepare for 4.19 release.
diff --git a/Makefile.am b/Makefile.am
index 4aa9846c..3ea56a14 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1102,10 +1102,9 @@ $(srcdir)/CREDITS: $(srcdir)/CREDITS.in $(srcdir)/.mailmap \
( \
cd $(srcdir); \
sed '/^##/,$$d' CREDITS.in; \
- { sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in; \
- git log --pretty=format:'%aN %aE'; \
- } | LC_ALL=C sort -u \
- | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}'; \
+ sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in \
+ | maint/gen-contributors-list.sh - -e HEAD --initial \
+ | sed 's/\t/ /g; s/^/\t/' \
) > $@-t && mv $@-t $@
export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX
diff --git a/Makefile.in b/Makefile.in
index 4bf763a7..2f14f434 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -844,7 +844,8 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in \
xlat/loop_crypt_type_options.in xlat/loop_flags_options.in \
xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in \
- xlat/mbindflags.in xlat/mctl_sync.in xlat/membarrier_cmds.in \
+ xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in \
+ xlat/mdb_states.in xlat/membarrier_cmds.in \
xlat/memfd_create_flags.in xlat/mempolicyflags.in \
xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in \
xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in \
@@ -854,24 +855,31 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in \
xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in \
xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in \
xlat/mtd_otp_options.in xlat/mtd_type_options.in \
- xlat/name_to_handle_at_flags.in \
+ xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in \
xlat/neighbor_cache_entry_flags.in \
xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in \
- xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in \
- xlat/netlink_flags.in xlat/netlink_get_flags.in \
- xlat/netlink_new_flags.in xlat/netlink_protocols.in \
- xlat/netlink_socket_flags.in xlat/netlink_states.in \
- xlat/netlink_types.in xlat/nl_audit_types.in \
- xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in \
- xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in \
- xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in \
- xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in \
- xlat/notifyflags.in xlat/nt_descriptor_types.in \
- xlat/open_access_modes.in xlat/open_mode_flags.in \
- xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in \
- xlat/packet_diag_show.in xlat/packet_mreq_type.in \
- xlat/perf_attr_size.in xlat/perf_branch_sample_type.in \
- xlat/perf_event_open_flags.in xlat/perf_event_read_format.in \
+ xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in \
+ xlat/netlink_diag_show.in xlat/netlink_flags.in \
+ xlat/netlink_get_flags.in xlat/netlink_new_flags.in \
+ xlat/netlink_protocols.in xlat/netlink_socket_flags.in \
+ xlat/netlink_states.in xlat/netlink_types.in \
+ xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in \
+ xlat/nf_ctnetlink_exp_msg_types.in \
+ xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in \
+ xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in \
+ xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in \
+ xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in \
+ xlat/nl_audit_types.in xlat/nl_crypto_types.in \
+ xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in \
+ xlat/nl_route_types.in xlat/nl_selinux_types.in \
+ xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in \
+ xlat/nlmsgerr_attrs.in xlat/notifyflags.in \
+ xlat/nt_descriptor_types.in xlat/open_access_modes.in \
+ xlat/open_mode_flags.in xlat/packet_diag_attrs.in \
+ xlat/packet_diag_info_flags.in xlat/packet_diag_show.in \
+ xlat/packet_mreq_type.in xlat/perf_attr_size.in \
+ xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in \
+ xlat/perf_event_read_format.in \
xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in \
xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in \
xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in \
@@ -894,17 +902,22 @@ XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.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_neigh_attrs.in xlat/rtnl_neightbl_attrs.in \
- xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in \
- xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in \
- xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in \
- xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in \
- xlat/rwf_flags.in xlat/sa_handler_values.in \
- xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in \
- xlat/scsi_sg_commands.in xlat/secbits.in \
- xlat/seccomp_filter_flags.in xlat/seccomp_mode.in \
- xlat/seccomp_ops.in xlat/seccomp_ret_action.in \
- xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in \
+ xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in \
+ xlat/rtnl_mdba_mdb_entry_attrs.in \
+ xlat/rtnl_mdba_router_attrs.in \
+ xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in \
+ xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in \
+ xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in \
+ xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in \
+ xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in \
+ xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in \
+ xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in \
+ xlat/sa_handler_values.in xlat/sched_flags.in \
+ xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in \
+ xlat/secbits.in xlat/seccomp_filter_flags.in \
+ xlat/seccomp_mode.in xlat/seccomp_ops.in \
+ xlat/seccomp_ret_action.in xlat/semctl_flags.in \
+ xlat/semop_flags.in xlat/setns_types.in \
xlat/setsockipoptions.in xlat/setsockipv6options.in \
xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in \
xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in \
@@ -1022,7 +1035,8 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \
xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h \
xlat/loop_crypt_type_options.h xlat/loop_flags_options.h \
xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h \
- xlat/mbindflags.h xlat/mctl_sync.h xlat/membarrier_cmds.h \
+ xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h \
+ xlat/mdb_states.h xlat/membarrier_cmds.h \
xlat/memfd_create_flags.h xlat/mempolicyflags.h \
xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h \
xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h \
@@ -1032,18 +1046,25 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h \
xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h \
xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h \
xlat/mtd_otp_options.h xlat/mtd_type_options.h \
- xlat/name_to_handle_at_flags.h \
+ xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h \
xlat/neighbor_cache_entry_flags.h \
xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h \
- xlat/netlink_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/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/netlink_delete_flags.h xlat/netlink_diag_attrs.h \
+ xlat/netlink_diag_show.h xlat/netlink_flags.h \
+ xlat/netlink_get_flags.h xlat/netlink_new_flags.h \
+ xlat/netlink_protocols.h xlat/netlink_socket_flags.h \
+ xlat/netlink_states.h xlat/netlink_types.h \
+ xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h \
+ xlat/nf_ctnetlink_exp_msg_types.h \
+ xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h \
+ xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h \
+ xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h \
+ xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h \
+ xlat/nl_audit_types.h xlat/nl_crypto_types.h \
+ xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h \
+ xlat/nl_route_types.h xlat/nl_selinux_types.h \
+ xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h \
+ xlat/nlmsgerr_attrs.h xlat/notifyflags.h \
xlat/nt_descriptor_types.h xlat/open_access_modes.h \
xlat/open_mode_flags.h xlat/packet_diag_attrs.h \
xlat/packet_diag_info_flags.h xlat/packet_diag_show.h \
@@ -1071,14 +1092,18 @@ XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.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_neigh_attrs.h xlat/rtnl_neightbl_attrs.h \
- xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h \
- xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h \
- xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h \
- xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h \
- xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h \
- xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h \
- xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h \
+ xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h \
+ xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h \
+ xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h \
+ xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h \
+ xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h \
+ xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h \
+ xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h \
+ xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h \
+ xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h \
+ xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h \
+ xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h \
+ xlat/seccomp_filter_flags.h xlat/seccomp_mode.h \
xlat/seccomp_ops.h xlat/seccomp_ret_action.h \
xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h \
xlat/setsockipoptions.h xlat/setsockipv6options.h \
@@ -7066,6 +7091,10 @@ $(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mdb_flags.h: $(top_srcdir)/xlat/mdb_flags.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mdb_states.h: $(top_srcdir)/xlat/mdb_states.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/membarrier_cmds.h: $(top_srcdir)/xlat/membarrier_cmds.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/memfd_create_flags.h: $(top_srcdir)/xlat/memfd_create_flags.in $(top_srcdir)/xlat/gen.sh
@@ -7110,6 +7139,8 @@ $(top_srcdir)/xlat/mtd_otp_options.h: $(top_srcdir)/xlat/mtd_otp_options.in $(to
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/mtd_type_options.h: $(top_srcdir)/xlat/mtd_type_options.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/multicast_router_types.h: $(top_srcdir)/xlat/multicast_router_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/name_to_handle_at_flags.h: $(top_srcdir)/xlat/name_to_handle_at_flags.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/neighbor_cache_entry_flags.h: $(top_srcdir)/xlat/neighbor_cache_entry_flags.in $(top_srcdir)/xlat/gen.sh
@@ -7118,6 +7149,8 @@ $(top_srcdir)/xlat/neighbor_cache_entry_states.h: $(top_srcdir)/xlat/neighbor_ca
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_ack_flags.h: $(top_srcdir)/xlat/netlink_ack_flags.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/netlink_delete_flags.h: $(top_srcdir)/xlat/netlink_delete_flags.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_diag_attrs.h: $(top_srcdir)/xlat/netlink_diag_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_diag_show.h: $(top_srcdir)/xlat/netlink_diag_show.in $(top_srcdir)/xlat/gen.sh
@@ -7136,6 +7169,28 @@ $(top_srcdir)/xlat/netlink_states.h: $(top_srcdir)/xlat/netlink_states.in $(top_
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_types.h: $(top_srcdir)/xlat/netlink_types.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_acct_msg_types.h: $(top_srcdir)/xlat/nf_acct_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_cthelper_msg_types.h: $(top_srcdir)/xlat/nf_cthelper_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_ctnetlink_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_cttimeout_msg_types.h: $(top_srcdir)/xlat/nf_cttimeout_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_ipset_msg_types.h: $(top_srcdir)/xlat/nf_ipset_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_nft_compat_msg_types.h: $(top_srcdir)/xlat/nf_nft_compat_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_nftables_msg_types.h: $(top_srcdir)/xlat/nf_nftables_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_osf_msg_types.h: $(top_srcdir)/xlat/nf_osf_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_queue_msg_types.h: $(top_srcdir)/xlat/nf_queue_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(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/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
@@ -7276,6 +7331,16 @@ $(top_srcdir)/xlat/rtnl_link_attrs.h: $(top_srcdir)/xlat/rtnl_link_attrs.in $(to
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdb_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_router_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_neigh_attrs.h: $(top_srcdir)/xlat/rtnl_neigh_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_neightbl_attrs.h: $(top_srcdir)/xlat/rtnl_neightbl_attrs.in $(top_srcdir)/xlat/gen.sh
@@ -7296,6 +7361,10 @@ $(top_srcdir)/xlat/rtnl_tc_action_attrs.h: $(top_srcdir)/xlat/rtnl_tc_action_att
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_tc_attrs.h: $(top_srcdir)/xlat/rtnl_tc_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_tca_stab_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stab_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_tca_stats_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stats_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rwf_flags.h: $(top_srcdir)/xlat/rwf_flags.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/sa_handler_values.h: $(top_srcdir)/xlat/sa_handler_values.in $(top_srcdir)/xlat/gen.sh
@@ -7707,10 +7776,9 @@ clean-local:
@MAINTAINER_MODE_TRUE@ ( \
@MAINTAINER_MODE_TRUE@ cd $(srcdir); \
@MAINTAINER_MODE_TRUE@ sed '/^##/,$$d' CREDITS.in; \
-@MAINTAINER_MODE_TRUE@ { sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in; \
-@MAINTAINER_MODE_TRUE@ git log --pretty=format:'%aN %aE'; \
-@MAINTAINER_MODE_TRUE@ } | LC_ALL=C sort -u \
-@MAINTAINER_MODE_TRUE@ | awk -F'\t' '{printf("\t%s <%s>\n",$$1,$$2)}'; \
+@MAINTAINER_MODE_TRUE@ sed -n '1,/^##>/d; s/ */\t/; s/^./&/p' CREDITS.in \
+@MAINTAINER_MODE_TRUE@ | maint/gen-contributors-list.sh - -e HEAD --initial \
+@MAINTAINER_MODE_TRUE@ | sed 's/\t/ /g; s/^/\t/' \
@MAINTAINER_MODE_TRUE@ ) > $@-t && mv $@-t $@
@MAINTAINER_MODE_TRUE@export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner --mode=go-w,go+rX
diff --git a/NEWS b/NEWS
index 46fe3b4e..03f83752 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,19 @@
+Noteworthy changes in release 4.20 (2017-11-13)
+===============================================
+
+* Improvements
+ * Implemented decoding of NETLINK_NETFILTER netlink message types and flags.
+ * Implemented decoding of SECCOMP_GET_ACTION_AVAIL operation of seccomp
+ syscall.
+ * Updated lists of ARPHRD_*, BPF_*, ETH_P_*, LOOP_*, MADV_*,
+ MEMBARRIER_CMD_*, MFD_*, SECCOMP_*, SO_*, SOL_*, TCP_*, and UFFD_FEATURE_*
+ constants.
+ * Added decoding of statx syscall on hppa.
+ * Updated lists of ioctl commands from Linux 4.14.
+
+* Bug fixes
+ * Fixed powerpc personality support on powerpc64.
+
Noteworthy changes in release 4.19 (2017-09-05)
===============================================
diff --git a/bpf_seccomp_filter.c b/bpf_seccomp_filter.c
index 9852f493..a11b57ea 100644
--- a/bpf_seccomp_filter.c
+++ b/bpf_seccomp_filter.c
@@ -35,8 +35,8 @@
#ifdef HAVE_LINUX_SECCOMP_H
# include <linux/seccomp.h>
#endif
-#ifndef SECCOMP_RET_ACTION
-# define SECCOMP_RET_ACTION 0x7fff0000U
+#ifndef SECCOMP_RET_ACTION_FULL
+# define SECCOMP_RET_ACTION_FULL 0xffff0000U
#endif
#include "xlat/seccomp_ret_action.h"
@@ -44,7 +44,7 @@ static bool
print_seccomp_filter_k(const struct bpf_filter_block *const fp)
{
if (BPF_CLASS(fp->code) == BPF_RET) {
- unsigned int action = SECCOMP_RET_ACTION & fp->k;
+ unsigned int action = SECCOMP_RET_ACTION_FULL & fp->k;
unsigned int data = fp->k & ~action;
printxval(seccomp_ret_action, action, "SECCOMP_RET_???");
diff --git a/config.h b/config.h
index a8876e38..a1709add 100644
--- a/config.h
+++ b/config.h
@@ -1,9 +1,6 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */
-/* Define for the AArch64 architecture. */
-/* #undef AARCH64 */
-
/* Define if building universal (internal helper macro) */
/* #undef AC_APPLE_UNIVERSAL_BUILD */
@@ -745,6 +742,9 @@
/* Define to 1 if you have the <linux/ip_vs.h> header file. */
#define HAVE_LINUX_IP_VS_H 1
+/* Define to 1 if you have the <linux/kcmp.h> header file. */
+#define HAVE_LINUX_KCMP_H 1
+
/* Define to 1 if you have the <linux/mmtimer.h> header file. */
#define HAVE_LINUX_MMTIMER_H 1
@@ -765,6 +765,10 @@
file. */
#define HAVE_LINUX_NETFILTER_BRIDGE_EBTABLES_H 1
+/* Define to 1 if you have the <linux/netfilter/ipset/ip_set.h> header file.
+ */
+#define HAVE_LINUX_NETFILTER_IPSET_IP_SET_H 1
+
/* Define to 1 if you have the <linux/netfilter_ipv4/ip_tables.h> header file.
*/
#define HAVE_LINUX_NETFILTER_IPV4_IP_TABLES_H 1
@@ -773,9 +777,43 @@
file. */
#define HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H 1
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_acct.h> header file.
+ */
+#define HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H 1
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_conntrack.h> header
+ file. */
+#define HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H 1
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_cthelper.h> header
+ file. */
+#define HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H 1
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_cttimeout.h> header
+ file. */
+#define HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H 1
+
/* Define to 1 if you have the <linux/netfilter/nfnetlink.h> header file. */
#define HAVE_LINUX_NETFILTER_NFNETLINK_H 1
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_log.h> header file.
+ */
+#define HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H 1
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_queue.h> header
+ file. */
+#define HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H 1
+
+/* Define to 1 if you have the <linux/netfilter/nf_tables_compat.h> header
+ file. */
+#define HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H 1
+
+/* Define to 1 if you have the <linux/netfilter/nf_tables.h> header file. */
+#define HAVE_LINUX_NETFILTER_NF_TABLES_H 1
+
+/* Define to 1 if you have the <linux/netfilter/xt_osf.h> header file. */
+#define HAVE_LINUX_NETFILTER_XT_OSF_H 1
+
/* Define to 1 if you have the <linux/nsfs.h> header file. */
#define HAVE_LINUX_NSFS_H 1
@@ -922,6 +960,15 @@
/* Define to 1 if the system has the type `struct blk_user_trace_setup'. */
#define HAVE_STRUCT_BLK_USER_TRACE_SETUP 1
+/* Define to 1 if the system has the type `struct br_mdb_entry'. */
+#define HAVE_STRUCT_BR_MDB_ENTRY 1
+
+/* Define to 1 if `flags' is a member of `struct br_mdb_entry'. */
+#define HAVE_STRUCT_BR_MDB_ENTRY_FLAGS 1
+
+/* Define to 1 if `vid' is a member of `struct br_mdb_entry'. */
+#define HAVE_STRUCT_BR_MDB_ENTRY_VID 1
+
/* Define to 1 if the system has the type `struct br_port_msg'. */
#define HAVE_STRUCT_BR_PORT_MSG 1
@@ -968,6 +1015,18 @@
/* 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 gnet_stats_basic'. */
+#define HAVE_STRUCT_GNET_STATS_BASIC 1
+
+/* Define to 1 if the system has the type `struct gnet_stats_queue'. */
+#define HAVE_STRUCT_GNET_STATS_QUEUE 1
+
+/* Define to 1 if the system has the type `struct gnet_stats_rate_est'. */
+#define HAVE_STRUCT_GNET_STATS_RATE_EST 1
+
+/* Define to 1 if the system has the type `struct gnet_stats_rate_est64'. */
+#define HAVE_STRUCT_GNET_STATS_RATE_EST64 1
+
/* Define to 1 if the system has the type `struct ia64_fpreg'. */
/* #undef HAVE_STRUCT_IA64_FPREG */
@@ -983,6 +1042,9 @@
/* Define to 1 if `resolution' is a member of `struct input_absinfo'. */
#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 to 1 if the system has the type `struct keyctl_kdf_params'. */
#define HAVE_STRUCT_KEYCTL_KDF_PARAMS 1
@@ -1134,6 +1196,9 @@
/* Define to 1 if `st_mtime_nsec' is a member of `struct stat'. */
#define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+/* Define to 1 if the system has the type `struct tc_sizespec'. */
+#define HAVE_STRUCT_TC_SIZESPEC 1
+
/* Define to 1 if `tai' is a member of `struct timex'. */
#define HAVE_STRUCT_TIMEX_TAI 1
@@ -1254,6 +1319,12 @@
/* Define for _ABIO32. */
/* #undef LINUX_MIPSO32 */
+/* The size of `kernel_long_t', as computed by sizeof. */
+/* #undef M32_SIZEOF_KERNEL_LONG_T */
+
+/* The size of `long', as computed by sizeof. */
+/* #undef M32_SIZEOF_LONG */
+
/* Define for the m68k architecture. */
/* #undef M68K */
@@ -1269,6 +1340,12 @@
/* Define for the MIPS architecture. */
/* #undef MIPS */
+/* The size of `kernel_long_t', as computed by sizeof. */
+/* #undef MX32_SIZEOF_KERNEL_LONG_T */
+
+/* The size of `long', as computed by sizeof. */
+/* #undef MX32_SIZEOF_LONG */
+
/* Define for the Nios-II architecture. */
/* #undef NIOS2 */
@@ -1285,7 +1362,7 @@
#define PACKAGE_NAME "strace"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "strace 4.19"
+#define PACKAGE_STRING "strace 4.20"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "strace"
@@ -1294,7 +1371,7 @@
#define PACKAGE_URL "https://strace.io"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "4.19"
+#define PACKAGE_VERSION "4.20"
/* Define for the PowerPC architecture. */
/* #undef POWERPC */
@@ -1366,7 +1443,7 @@
/* Version number of package */
-#define VERSION "4.19"
+#define VERSION "4.20"
/* 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 c0185a20..77a73357 100644
--- a/config.h.in
+++ b/config.h.in
@@ -744,6 +744,9 @@
/* Define to 1 if you have the <linux/ip_vs.h> header file. */
#undef HAVE_LINUX_IP_VS_H
+/* Define to 1 if you have the <linux/kcmp.h> header file. */
+#undef HAVE_LINUX_KCMP_H
+
/* Define to 1 if you have the <linux/mmtimer.h> header file. */
#undef HAVE_LINUX_MMTIMER_H
@@ -764,6 +767,10 @@
file. */
#undef HAVE_LINUX_NETFILTER_BRIDGE_EBTABLES_H
+/* Define to 1 if you have the <linux/netfilter/ipset/ip_set.h> header file.
+ */
+#undef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H
+
/* Define to 1 if you have the <linux/netfilter_ipv4/ip_tables.h> header file.
*/
#undef HAVE_LINUX_NETFILTER_IPV4_IP_TABLES_H
@@ -772,9 +779,43 @@
file. */
#undef HAVE_LINUX_NETFILTER_IPV6_IP6_TABLES_H
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_acct.h> header file.
+ */
+#undef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_conntrack.h> header
+ file. */
+#undef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_cthelper.h> header
+ file. */
+#undef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_cttimeout.h> header
+ file. */
+#undef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H
+
/* Define to 1 if you have the <linux/netfilter/nfnetlink.h> header file. */
#undef HAVE_LINUX_NETFILTER_NFNETLINK_H
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_log.h> header file.
+ */
+#undef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H
+
+/* Define to 1 if you have the <linux/netfilter/nfnetlink_queue.h> header
+ file. */
+#undef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H
+
+/* Define to 1 if you have the <linux/netfilter/nf_tables_compat.h> header
+ file. */
+#undef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H
+
+/* Define to 1 if you have the <linux/netfilter/nf_tables.h> header file. */
+#undef HAVE_LINUX_NETFILTER_NF_TABLES_H
+
+/* Define to 1 if you have the <linux/netfilter/xt_osf.h> header file. */
+#undef HAVE_LINUX_NETFILTER_XT_OSF_H
+
/* Define to 1 if you have the <linux/nsfs.h> header file. */
#undef HAVE_LINUX_NSFS_H
@@ -921,6 +962,15 @@
/* Define to 1 if the system has the type `struct blk_user_trace_setup'. */
#undef HAVE_STRUCT_BLK_USER_TRACE_SETUP
+/* Define to 1 if the system has the type `struct br_mdb_entry'. */
+#undef HAVE_STRUCT_BR_MDB_ENTRY
+
+/* Define to 1 if `flags' is a member of `struct br_mdb_entry'. */
+#undef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+
+/* Define to 1 if `vid' is a member of `struct br_mdb_entry'. */
+#undef HAVE_STRUCT_BR_MDB_ENTRY_VID
+
/* Define to 1 if the system has the type `struct br_port_msg'. */
#undef HAVE_STRUCT_BR_PORT_MSG
@@ -967,6 +1017,18 @@
/* 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 gnet_stats_basic'. */
+#undef HAVE_STRUCT_GNET_STATS_BASIC
+
+/* Define to 1 if the system has the type `struct gnet_stats_queue'. */
+#undef HAVE_STRUCT_GNET_STATS_QUEUE
+
+/* Define to 1 if the system has the type `struct gnet_stats_rate_est'. */
+#undef HAVE_STRUCT_GNET_STATS_RATE_EST
+
+/* Define to 1 if the system has the type `struct gnet_stats_rate_est64'. */
+#undef HAVE_STRUCT_GNET_STATS_RATE_EST64
+
/* Define to 1 if the system has the type `struct ia64_fpreg'. */
#undef HAVE_STRUCT_IA64_FPREG
@@ -982,6 +1044,9 @@
/* Define to 1 if `resolution' is a member of `struct input_absinfo'. */
#undef HAVE_STRUCT_INPUT_ABSINFO_RESOLUTION
+/* Define to 1 if the system has the type `struct kcmp_epoll_slot'. */
+#undef HAVE_STRUCT_KCMP_EPOLL_SLOT
+
/* Define to 1 if the system has the type `struct keyctl_kdf_params'. */
#undef HAVE_STRUCT_KEYCTL_KDF_PARAMS
@@ -1133,6 +1198,9 @@
/* Define to 1 if `st_mtime_nsec' is a member of `struct stat'. */
#undef HAVE_STRUCT_STAT_ST_MTIME_NSEC
+/* Define to 1 if the system has the type `struct tc_sizespec'. */
+#undef HAVE_STRUCT_TC_SIZESPEC
+
/* Define to 1 if `tai' is a member of `struct timex'. */
#undef HAVE_STRUCT_TIMEX_TAI
@@ -1253,6 +1321,12 @@
/* Define for _ABIO32. */
#undef LINUX_MIPSO32
+/* The size of `kernel_long_t', as computed by sizeof. */
+#undef M32_SIZEOF_KERNEL_LONG_T
+
+/* The size of `long', as computed by sizeof. */
+#undef M32_SIZEOF_LONG
+
/* Define for the m68k architecture. */
#undef M68K
@@ -1268,6 +1342,12 @@
/* Define for the MIPS architecture. */
#undef MIPS
+/* The size of `kernel_long_t', as computed by sizeof. */
+#undef MX32_SIZEOF_KERNEL_LONG_T
+
+/* The size of `long', as computed by sizeof. */
+#undef MX32_SIZEOF_LONG
+
/* Define for the Nios-II architecture. */
#undef NIOS2
diff --git a/configure b/configure
index 4ebd9212..c971736c 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.19.
+# Generated by GNU Autoconf 2.69 for strace 4.20.
#
# Report bugs to <strace-devel@lists.sourceforge.net>.
#
@@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='strace'
PACKAGE_TARNAME='strace'
-PACKAGE_VERSION='4.19'
-PACKAGE_STRING='strace 4.19'
+PACKAGE_VERSION='4.20'
+PACKAGE_STRING='strace 4.20'
PACKAGE_BUGREPORT='strace-devel@lists.sourceforge.net'
PACKAGE_URL='https://strace.io'
@@ -1348,7 +1348,7 @@ if test "$ac_init_help" = "long"; then
# 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.19 to adapt to many kinds of systems.
+\`configure' configures strace 4.20 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1418,7 +1418,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of strace 4.19:";;
+ short | recursive ) echo "Configuration of strace 4.20:";;
esac
cat <<\_ACEOF
@@ -1530,7 +1530,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-strace configure 4.19
+strace configure 4.20
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2270,7 +2270,7 @@ cat >config.log <<_ACEOF
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.19, which was
+It was created by strace $as_me 4.20, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3141,7 +3141,7 @@ fi
# Define the identity of the package.
PACKAGE='strace'
- VERSION='4.19'
+ VERSION='4.20'
cat >>confdefs.h <<_ACEOF
@@ -9446,6 +9446,18 @@ _ACEOF
fi
+ac_fn_c_check_type "$LINENO" "struct kcmp_epoll_slot" "ac_cv_type_struct_kcmp_epoll_slot" "#include <linux/kcmp.h>
+"
+if test "x$ac_cv_type_struct_kcmp_epoll_slot" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_KCMP_EPOLL_SLOT 1
+_ACEOF
+
+
+fi
+
+
ac_fn_c_check_type "$LINENO" "struct keyctl_kdf_params" "ac_cv_type_struct_keyctl_kdf_params" "#include <linux/keyctl.h>
"
if test "x$ac_cv_type_struct_keyctl_kdf_params" = xyes; then :
@@ -9726,7 +9738,7 @@ _ACEOF
fi
-for ac_header in asm/cachectl.h asm/sysmips.h bluetooth/bluetooth.h elf.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/nfnetlink.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/reg.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h
+for ac_header in asm/cachectl.h asm/sysmips.h bluetooth/bluetooth.h elf.h inttypes.h linux/bsg.h linux/cryptouser.h linux/dm-ioctl.h linux/dqblk_xfs.h linux/falloc.h linux/fib_rules.h linux/fiemap.h linux/genetlink.h linux/hiddev.h linux/if_addr.h linux/if_link.h linux/ip_vs.h linux/ipc.h linux/kcmp.h linux/mmtimer.h linux/msg.h linux/neighbour.h linux/netfilter/ipset/ip_set.h linux/netfilter/nf_tables.h linux/netfilter/nf_tables_compat.h linux/netfilter/nfnetlink.h linux/netfilter/nfnetlink_acct.h linux/netfilter/nfnetlink_conntrack.h linux/netfilter/nfnetlink_cthelper.h linux/netfilter/nfnetlink_cttimeout.h linux/netfilter/nfnetlink_log.h linux/netfilter/nfnetlink_queue.h linux/nsfs.h linux/perf_event.h linux/quota.h linux/seccomp.h linux/securebits.h linux/sem.h linux/shm.h linux/userfaultfd.h linux/utsname.h mqueue.h netinet/sctp.h netipx/ipx.h scsi/sg.h stropts.h sys/conf.h sys/eventfd.h sys/fanotify.h sys/ipc.h sys/msg.h sys/quota.h sys/reg.h sys/sem.h sys/shm.h sys/signalfd.h sys/xattr.h ustat.h
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"
@@ -9783,6 +9795,21 @@ fi
done
+for ac_header in linux/netfilter/xt_osf.h
+do :
+ ac_fn_c_check_header_compile "$LINENO" "linux/netfilter/xt_osf.h" "ac_cv_header_linux_netfilter_xt_osf_h" "#include <linux/ip.h>
+#include <linux/tcp.h>
+"
+if test "x$ac_cv_header_linux_netfilter_xt_osf_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LINUX_NETFILTER_XT_OSF_H 1
+_ACEOF
+
+fi
+
+done
+
+
for ac_header in linux/netfilter_arp/arp_tables.h linux/netfilter_bridge/ebtables.h linux/netfilter_ipv4/ip_tables.h linux/netfilter_ipv6/ip6_tables.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -10048,6 +10075,16 @@ 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 :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BR_MDB_ENTRY 1
+_ACEOF
+
+
+fi
ac_fn_c_check_type "$LINENO" "struct br_port_msg" "ac_cv_type_struct_br_port_msg" "#include <linux/if_bridge.h>
"
if test "x$ac_cv_type_struct_br_port_msg" = xyes; then :
@@ -10059,6 +10096,28 @@ _ACEOF
fi
+ac_fn_c_check_member "$LINENO" "struct br_mdb_entry" "flags" "ac_cv_member_struct_br_mdb_entry_flags" "#include <linux/if_bridge.h>
+"
+if test "x$ac_cv_member_struct_br_mdb_entry_flags" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BR_MDB_ENTRY_FLAGS 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_member "$LINENO" "struct br_mdb_entry" "vid" "ac_cv_member_struct_br_mdb_entry_vid" "#include <linux/if_bridge.h>
+"
+if test "x$ac_cv_member_struct_br_mdb_entry_vid" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_BR_MDB_ENTRY_VID 1
+_ACEOF
+
+
+fi
+
+
ac_fn_c_check_type "$LINENO" "struct dcbmsg" "ac_cv_type_struct_dcbmsg" "#include <linux/dcbnl.h>
"
if test "x$ac_cv_type_struct_dcbmsg" = xyes; then :
@@ -10201,6 +10260,60 @@ _ACEOF
fi
+ac_fn_c_check_type "$LINENO" "struct gnet_stats_basic" "ac_cv_type_struct_gnet_stats_basic" "#include <linux/gen_stats.h>
+"
+if test "x$ac_cv_type_struct_gnet_stats_basic" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_GNET_STATS_BASIC 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct gnet_stats_queue" "ac_cv_type_struct_gnet_stats_queue" "#include <linux/gen_stats.h>
+"
+if test "x$ac_cv_type_struct_gnet_stats_queue" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_GNET_STATS_QUEUE 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct gnet_stats_rate_est" "ac_cv_type_struct_gnet_stats_rate_est" "#include <linux/gen_stats.h>
+"
+if test "x$ac_cv_type_struct_gnet_stats_rate_est" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_GNET_STATS_RATE_EST 1
+_ACEOF
+
+
+fi
+ac_fn_c_check_type "$LINENO" "struct gnet_stats_rate_est64" "ac_cv_type_struct_gnet_stats_rate_est64" "#include <linux/gen_stats.h>
+"
+if test "x$ac_cv_type_struct_gnet_stats_rate_est64" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_GNET_STATS_RATE_EST64 1
+_ACEOF
+
+
+fi
+
+
+ac_fn_c_check_type "$LINENO" "struct tc_sizespec" "ac_cv_type_struct_tc_sizespec" "#include <linux/pkt_sched.h>
+"
+if test "x$ac_cv_type_struct_tc_sizespec" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_TC_SIZESPEC 1
+_ACEOF
+
+
+fi
+
+
ac_fn_c_check_type "$LINENO" "struct fib_rule_uid_range" "ac_cv_type_struct_fib_rule_uid_range" "#include <linux/fib_rules.h>
"
if test "x$ac_cv_type_struct_fib_rule_uid_range" = xyes; then :
@@ -13214,6 +13327,153 @@ fi
+
+ if test $st_cv_m32_runtime = yes; then
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_long+set}"; then :
+ saved_ac_cv_sizeof_long="${ac_cv_sizeof_long}"; unset ac_cv_sizeof_long
+fi
+if test -n "${ac_cv_m32_sizeof_long+set}"; then :
+ ac_cv_sizeof_long="${ac_cv_m32_sizeof_long}"
+fi
+
+
+
+
+
+
+ # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_long" = yes; 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 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_long=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define M32_SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_long+set}"; then :
+ ac_cv_m32_sizeof_long="${ac_cv_sizeof_long}"
+fi
+if test -n "${saved_ac_cv_sizeof_long+set}"; then :
+ ac_cv_sizeof_long="${saved_ac_cv_sizeof_long}"; unset saved_ac_cv_sizeof_long
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then :
+ saved_ac_cv_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}"; unset ac_cv_sizeof_kernel_long_t
+fi
+if test -n "${ac_cv_m32_sizeof_kernel_long_t+set}"; then :
+ ac_cv_sizeof_kernel_long_t="${ac_cv_m32_sizeof_kernel_long_t}"
+fi
+
+
+
+
+
+
+ # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of kernel_long_t" >&5
+$as_echo_n "checking size of kernel_long_t... " >&6; }
+if ${ac_cv_sizeof_kernel_long_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (kernel_long_t))" "ac_cv_sizeof_kernel_long_t" "#include \"$srcdir/kernel_types.h\"
+"; then :
+
+else
+ if test "$ac_cv_type_kernel_long_t" = yes; 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 77 "cannot compute sizeof (kernel_long_t)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_kernel_long_t=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_kernel_long_t" >&5
+$as_echo "$ac_cv_sizeof_kernel_long_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define M32_SIZEOF_KERNEL_LONG_T $ac_cv_sizeof_kernel_long_t
+_ACEOF
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then :
+ ac_cv_m32_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}"
+fi
+if test -n "${saved_ac_cv_sizeof_kernel_long_t+set}"; then :
+ ac_cv_sizeof_kernel_long_t="${saved_ac_cv_sizeof_kernel_long_t}"; unset saved_ac_cv_sizeof_kernel_long_t
+fi
+
+
+
+
+
+
+
+ fi
fi
fi
CFLAGS="$saved_CFLAGS"
@@ -13542,6 +13802,153 @@ fi
+
+ if test $st_cv_mx32_runtime = yes; then
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_long+set}"; then :
+ saved_ac_cv_sizeof_long="${ac_cv_sizeof_long}"; unset ac_cv_sizeof_long
+fi
+if test -n "${ac_cv_mx32_sizeof_long+set}"; then :
+ ac_cv_sizeof_long="${ac_cv_mx32_sizeof_long}"
+fi
+
+
+
+
+
+
+ # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5
+$as_echo_n "checking size of long... " >&6; }
+if ${ac_cv_sizeof_long+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then :
+
+else
+ if test "$ac_cv_type_long" = yes; 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 77 "cannot compute sizeof (long)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_long=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
+$as_echo "$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define MX32_SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_long+set}"; then :
+ ac_cv_mx32_sizeof_long="${ac_cv_sizeof_long}"
+fi
+if test -n "${saved_ac_cv_sizeof_long+set}"; then :
+ ac_cv_sizeof_long="${saved_ac_cv_sizeof_long}"; unset saved_ac_cv_sizeof_long
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then :
+ saved_ac_cv_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}"; unset ac_cv_sizeof_kernel_long_t
+fi
+if test -n "${ac_cv_mx32_sizeof_kernel_long_t+set}"; then :
+ ac_cv_sizeof_kernel_long_t="${ac_cv_mx32_sizeof_kernel_long_t}"
+fi
+
+
+
+
+
+
+ # The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of kernel_long_t" >&5
+$as_echo_n "checking size of kernel_long_t... " >&6; }
+if ${ac_cv_sizeof_kernel_long_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (kernel_long_t))" "ac_cv_sizeof_kernel_long_t" "#include \"$srcdir/kernel_types.h\"
+"; then :
+
+else
+ if test "$ac_cv_type_kernel_long_t" = yes; 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 77 "cannot compute sizeof (kernel_long_t)
+See \`config.log' for more details" "$LINENO" 5; }
+ else
+ ac_cv_sizeof_kernel_long_t=0
+ fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_kernel_long_t" >&5
+$as_echo "$ac_cv_sizeof_kernel_long_t" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define MX32_SIZEOF_KERNEL_LONG_T $ac_cv_sizeof_kernel_long_t
+_ACEOF
+
+
+
+
+
+
+
+
+if test -n "${ac_cv_sizeof_kernel_long_t+set}"; then :
+ ac_cv_mx32_sizeof_kernel_long_t="${ac_cv_sizeof_kernel_long_t}"
+fi
+if test -n "${saved_ac_cv_sizeof_kernel_long_t+set}"; then :
+ ac_cv_sizeof_kernel_long_t="${saved_ac_cv_sizeof_kernel_long_t}"; unset saved_ac_cv_sizeof_kernel_long_t
+fi
+
+
+
+
+
+
+
+ fi
fi
fi
CFLAGS="$saved_CFLAGS"
@@ -14561,7 +14968,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# 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.19, which was
+This file was extended by strace $as_me 4.20, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -14628,7 +15035,7 @@ _ACEOF
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.19
+strace config.status 4.20
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index d064285f..29285dbf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -334,6 +334,10 @@ AC_CHECK_TYPES(m4_normalize([
]),,, [#include <linux/cryptouser.h>])
AC_CHECK_TYPES(m4_normalize([
+ struct kcmp_epoll_slot
+]),,, [#include <linux/kcmp.h>])
+
+AC_CHECK_TYPES(m4_normalize([
struct keyctl_kdf_params
]),,, [#include <linux/keyctl.h>])
@@ -390,10 +394,20 @@ AC_CHECK_HEADERS(m4_normalize([
linux/if_link.h
linux/ip_vs.h
linux/ipc.h
+ linux/kcmp.h
linux/mmtimer.h
linux/msg.h
linux/neighbour.h
+ linux/netfilter/ipset/ip_set.h
+ linux/netfilter/nf_tables.h
+ linux/netfilter/nf_tables_compat.h
linux/netfilter/nfnetlink.h
+ linux/netfilter/nfnetlink_acct.h
+ linux/netfilter/nfnetlink_conntrack.h
+ linux/netfilter/nfnetlink_cthelper.h
+ linux/netfilter/nfnetlink_cttimeout.h
+ linux/netfilter/nfnetlink_log.h
+ linux/netfilter/nfnetlink_queue.h
linux/nsfs.h
linux/perf_event.h
linux/quota.h
@@ -428,6 +442,9 @@ AC_CHECK_HEADERS([netinet/tcp.h netinet/udp.h],,, [#include <netinet/in.h>])
AC_CHECK_HEADERS([linux/mqueue.h],,, [#include <linux/types.h>])
+AC_CHECK_HEADERS([linux/netfilter/xt_osf.h],,, [#include <linux/ip.h>
+#include <linux/tcp.h>])
+
AC_CHECK_HEADERS(m4_normalize([
linux/netfilter_arp/arp_tables.h
linux/netfilter_bridge/ebtables.h
@@ -448,7 +465,15 @@ AC_CHECK_HEADERS([linux/bpf.h], [
st_CHECK_UNION_BPF_ATTR([prog_flags])
])
-AC_CHECK_TYPES([struct br_port_msg],,, [#include <linux/if_bridge.h>])
+AC_CHECK_TYPES(m4_normalize([
+ struct br_mdb_entry,
+ struct br_port_msg
+]),,, [#include <linux/if_bridge.h>])
+AC_CHECK_MEMBERS(m4_normalize([
+ struct br_mdb_entry.flags,
+ struct br_mdb_entry.vid
+]),,, [#include <linux/if_bridge.h>])
+
AC_CHECK_TYPES([struct dcbmsg],,, [#include <linux/dcbnl.h>])
AC_CHECK_TYPES([struct ifaddrlblmsg],,, [#include <linux/if_addrlabel.h>])
AC_CHECK_TYPES([struct netconfmsg],,, [#include <linux/netconf.h>])
@@ -474,6 +499,15 @@ AC_CHECK_MEMBERS(m4_normalize([
struct rtnl_link_stats64.rx_nohandler
]),,, [#include <linux/if_link.h>])
+AC_CHECK_TYPES(m4_normalize([
+ struct gnet_stats_basic,
+ struct gnet_stats_queue,
+ struct gnet_stats_rate_est,
+ 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 fib_rule_uid_range],,, [#include <linux/fib_rules.h>])
AC_CHECK_TYPES([struct statfs], [
diff --git a/debian/changelog b/debian/changelog
index f7b03e98..25790441 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,14 @@
-strace (4.19-1) experimental; urgency=low
+strace (4.20-1) experimental; urgency=low
- * strace 4.19 snapshot.
+ * strace 4.20 snapshot.
- -- Strace <strace-devel@lists.sourceforge.net> Tue, 05 Sep 2017 12:15:20 +0000
+ -- Strace <strace-devel@lists.sourceforge.net> Mon, 13 Nov 2017 21:49:34 +0000
+
+strace (4.19-1) unstable; urgency=medium
+
+ * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org> Wed, 05 Sep 2017 12:13:14 +0000
strace (4.18-1) unstable; urgency=medium
diff --git a/debian/changelog.in b/debian/changelog.in
index a29097a1..16f34d86 100644
--- a/debian/changelog.in
+++ b/debian/changelog.in
@@ -4,6 +4,12 @@ strace (@PACKAGE_VERSION@-1) experimental; urgency=low
-- Strace <@PACKAGE_BUGREPORT@> @DEB_CHANGELOGTIME@
+strace (4.19-1) unstable; urgency=medium
+
+ * New upstream version.
+
+ -- Dmitry V. Levin <ldv@altlinux.org> Wed, 05 Sep 2017 12:13:14 +0000
+
strace (4.18-1) unstable; urgency=medium
* New upstream version.
diff --git a/debian/compat b/debian/compat
index 7f8f011e..f599e28b 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-7
+10
diff --git a/debian/control b/debian/control
index 2a7963f9..92cdc204 100644
--- a/debian/control
+++ b/debian/control
@@ -3,7 +3,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
-Standards-Version: 3.9.6
+Standards-Version: 3.9.8
Homepage: https://strace.io
Vcs-Git: https://anonscm.debian.org/git/collab-maint/strace.git
Vcs-Browser: https://anonscm.debian.org/git/collab-maint/strace.git
diff --git a/debian/rules b/debian/rules
index 4b556a73..d03cd5ce 100755
--- a/debian/rules
+++ b/debian/rules
@@ -76,20 +76,20 @@ binary-arch: build
test -f build64-stamp && ( mv build64/strace build64/strace64 ; \
cp strace.1 strace64.1 ) || true
- dh_testdir -s
- dh_testroot -s
- dh_installdirs -s
- dh_installdocs -s
- dh_installman -s
- dh_installexamples -s
- dh_installchangelogs -s
- dh_install -s
- dh_link -s
- dh_strip -s
- dh_compress -s
- dh_fixperms -s
- dh_installdeb -s
- dh_shlibdeps -s
- dh_gencontrol -s
- dh_md5sums -s
- dh_builddeb -s
+ dh_testdir -a
+ dh_testroot -a
+ dh_installdirs -a
+ dh_installdocs -a
+ dh_installman -a
+ dh_installexamples -a
+ dh_installchangelogs -a
+ dh_install -a
+ dh_link -a
+ dh_strip -a
+ dh_compress -a
+ dh_fixperms -a
+ dh_installdeb -a
+ dh_shlibdeps -a
+ dh_gencontrol -a
+ dh_md5sums -a
+ dh_builddeb -a
diff --git a/defs.h b/defs.h
index 34261f2e..b1a6b955 100644
--- a/defs.h
+++ b/defs.h
@@ -75,15 +75,6 @@ const char *strerror(int);
extern char *stpcpy(char *dst, const char *src);
#endif
-/* macros */
-#ifndef MAX
-# define MAX(a, b) (((a) > (b)) ? (a) : (b))
-#endif
-#ifndef MIN
-# define MIN(a, b) (((a) < (b)) ? (a) : (b))
-#endif
-#define CLAMP(val, min, max) MIN(MAX(min, val), max)
-
/* Glibc has an efficient macro for sigemptyset
* (it just does one or two assignments of 0 to internal vector of longs).
*/
@@ -295,6 +286,7 @@ extern const struct xlat resource_flags[];
extern const struct xlat routing_scopes[];
extern const struct xlat routing_table_ids[];
extern const struct xlat routing_types[];
+extern const struct xlat seccomp_ret_action[];
extern const struct xlat setns_types[];
extern const struct xlat sg_io_info[];
extern const struct xlat socketlayers[];
diff --git a/dm.c b/dm.c
index 55efd92b..28863a87 100644
--- a/dm.c
+++ b/dm.c
@@ -44,13 +44,16 @@
/* Definitions for command which have been added later */
# ifndef DM_LIST_VERSIONS
-# define DM_LIST_VERSIONS _IOWR(DM_IOCTL, 0xd, struct dm_ioctl)
+# define DM_LIST_VERSIONS _IOWR(DM_IOCTL, 0x0d, struct dm_ioctl)
# endif
# ifndef DM_TARGET_MSG
-# define DM_TARGET_MSG _IOWR(DM_IOCTL, 0xe, struct dm_ioctl)
+# define DM_TARGET_MSG _IOWR(DM_IOCTL, 0x0e, struct dm_ioctl)
# endif
# ifndef DM_DEV_SET_GEOMETRY
-# define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, 0xf, struct dm_ioctl)
+# define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, 0x0f, struct dm_ioctl)
+# endif
+# ifndef DM_DEV_ARM_POLL
+# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl)
# endif
@@ -429,6 +432,7 @@ dm_ioctl_has_params(const unsigned int code)
case DM_DEV_SUSPEND:
case DM_DEV_STATUS:
case DM_TABLE_CLEAR:
+ case DM_DEV_ARM_POLL:
return false;
}
@@ -576,6 +580,7 @@ dm_ioctl(struct tcb *const tcp, const unsigned int code, const kernel_ulong_t ar
case DM_LIST_VERSIONS:
case DM_TARGET_MSG:
case DM_DEV_SET_GEOMETRY:
+ case DM_DEV_ARM_POLL:
return dm_known_ioctl(tcp, code, arg);
default:
return RVAL_DECODED;
diff --git a/error_prints.c b/error_prints.c
index 8519b924..710e99b0 100644
--- a/error_prints.c
+++ b/error_prints.c
@@ -37,7 +37,9 @@
#include "error_prints.h"
+#ifndef HAVE_PROGRAM_INVOCATION_NAME
extern char *program_invocation_name;
+#endif
static void
verror_msg(int err_no, const char *fmt, va_list p)
diff --git a/ioctlent0.h b/ioctlent0.h
index a3c1a4e2..13c21656 100644
--- a/ioctlent0.h
+++ b/ioctlent0.h
@@ -324,6 +324,7 @@
{ "LOOP_CHANGE_FD", 0x00004c06 },
{ "LOOP_SET_CAPACITY", 0x00004c07 },
{ "LOOP_SET_DIRECT_IO", 0x00004c08 },
+{ "LOOP_SET_BLOCK_SIZE", 0x00004c09 },
{ "LOOP_CTL_ADD", 0x00004c80 },
{ "LOOP_CTL_REMOVE", 0x00004c81 },
{ "LOOP_CTL_GET_FREE", 0x00004c82 },
@@ -1079,7 +1080,6 @@
{ "NCP_IOC_GETDENTRYTTL", 0x40046e0c },
{ "SISFB_SET_AUTOMAXIMIZE_OLD", 0x40046efa },
{ "UBI_IOCRMVOL", 0x40046f01 },
-{ "DMX_SET_SOURCE", 0x40046f31 },
{ "UBI_IOCDET", 0x40046f41 },
{ "PPSETMODE", 0x40047080 },
{ "PPDATADIR", 0x40047090 },
@@ -1243,6 +1243,7 @@
{ "DRM_IOCTL_RADEON_GEM_WAIT_IDLE", 0x40086464 },
{ "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", 0x4008646e },
{ "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f },
+{ "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", 0x40086478 },
{ "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 },
{ "FS_IOC_SETFLAGS", 0x40086602 },
{ "HPET_IRQFREQ", 0x40086806 },
@@ -1259,7 +1260,6 @@
{ "MATROXFB_SET_OUTPUT_MODE", 0x40086efa },
{ "AUDIO_SET_MIXER", 0x40086f0e },
{ "VIDEO_SET_SPU", 0x40086f32 },
-{ "CA_SET_PID", 0x40086f87 },
{ "PHN_SET_REG", 0x40087001 },
{ "PHN_SET_REGS", 0x40087003 },
{ "PHN_SETREG", 0x40087006 },
@@ -1573,6 +1573,7 @@
{ "SNDRV_TIMER_IOCTL_GPARAMS", 0x40485404 },
{ "BC_TRANSACTION_SG", 0x40486311 },
{ "BC_REPLY_SG", 0x40486312 },
+{ "DRM_IOCTL_I915_PERF_ADD_CONFIG", 0x40486477 },
{ "BTRFS_IOC_SEND", 0x40489426 },
{ "GSMIOC_SETCONF", 0x404c4701 },
{ "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a },
@@ -1923,7 +1924,6 @@
{ "MATROXFB_GET_AVAILABLE_OUTPUTS", 0x80086ef9 },
{ "MATROXFB_GET_ALL_OUTPUTS", 0x80086efb },
{ "AUDIO_GET_PTS", 0x80086f13 },
-{ "DMX_GET_CAPS", 0x80086f30 },
{ "VIDEO_GET_PTS", 0x80086f39 },
{ "VIDEO_GET_FRAME_COUNT", 0x80086f3a },
{ "CA_GET_DESCR_INFO", 0x80086f83 },
@@ -2283,6 +2283,7 @@
{ "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 },
{ "MBXFB_IOCX_REG", 0xc00cf405 },
{ "BLKREPORTZONE", 0xc0101282 },
+{ "RDMA_VERBS_IOCTL", 0xc0101b01 },
{ "STP_POLICY_ID_SET", 0xc0102500 },
{ "CAPI_GET_VERSION", 0xc0104307 },
{ "CAPI_MANUFACTURER_CMD", 0xc0104320 },
@@ -2292,6 +2293,7 @@
{ "SNDRV_EMU10K1_IOCTL_TRAM_PEEK", 0xc0104822 },
{ "SNDRV_EMUX_IOCTL_LOAD_PATCH", 0xc0104881 },
{ "SNDRV_EMUX_IOCTL_MISC_MODE", 0xc0104884 },
+{ "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", 0xc0104b11 },
{ "MEMWRITEOOB", 0xc0104d03 },
{ "MEMREADOOB", 0xc0104d04 },
{ "MEMGETREGIONINFO", 0xc0104d08 },
@@ -2348,6 +2350,7 @@
{ "DRM_IOCTL_TEGRA_GET_SYNCPT_BASE", 0xc0106449 },
{ "DRM_IOCTL_VC4_GET_TILING", 0xc0106449 },
{ "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a },
+{ "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a },
{ "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b },
{ "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
{ "DRM_IOCTL_R128_INDIRECT", 0xc010644f },
@@ -2370,6 +2373,8 @@
{ "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd },
{ "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", 0xc01064c1 },
{ "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 },
+{ "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 },
+{ "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 },
{ "MGSL_IOCWAITGPIO", 0xc0106d12 },
{ "NCP_IOC_GETPRIVATEDATA", 0xc0106e0a },
{ "DMX_GET_STC", 0xc0106f32 },
@@ -2412,6 +2417,7 @@
{ "USBDEVFS_BULK", 0xc0185502 },
{ "PACKET_CTRL_CMD", 0xc0185801 },
{ "FITRIM", 0xc0185879 },
+{ "BINDER_GET_NODE_DEBUG_INFO", 0xc018620b },
{ "DRM_IOCTL_MAP_BUFS", 0xc0186419 },
{ "DRM_IOCTL_WAIT_VBLANK", 0xc018643a },
{ "DRM_IOCTL_AMDGPU_BO_LIST", 0xc0186443 },
@@ -2503,6 +2509,7 @@
{ "DRM_IOCTL_MODE_CREATE_DUMB", 0xc02064b2 },
{ "DRM_IOCTL_MODE_GETPLANE", 0xc02064b6 },
{ "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", 0xc02064b9 },
+{ "DRM_IOCTL_SYNCOBJ_WAIT", 0xc02064c3 },
{ "FS_IOC_FIEMAP", 0xc020660b },
{ "GENWQE_PIN_MEM", 0xc020a528 },
{ "GENWQE_UNPIN_MEM", 0xc020a529 },
@@ -2516,6 +2523,7 @@
{ "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 },
{ "FW_CDEV_IOC_GET_INFO", 0xc0282300 },
{ "AMDKFD_IOC_GET_CLOCK_COUNTERS", 0xc0284b05 },
+{ "AMDKFD_IOC_GET_TILE_CONFIG", 0xc0284b12 },
{ "VIDIOC_G_EDID", 0xc0285628 },
{ "VIDIOC_SUBDEV_G_EDID", 0xc0285628 },
{ "VIDIOC_SUBDEV_S_EDID", 0xc0285629 },
diff --git a/ioctlent1.h b/ioctlent1.h
index 436aa375..f5301b8c 100644
--- a/ioctlent1.h
+++ b/ioctlent1.h
@@ -324,6 +324,7 @@
{ "LOOP_CHANGE_FD", 0x00004c06 },
{ "LOOP_SET_CAPACITY", 0x00004c07 },
{ "LOOP_SET_DIRECT_IO", 0x00004c08 },
+{ "LOOP_SET_BLOCK_SIZE", 0x00004c09 },
{ "LOOP_CTL_ADD", 0x00004c80 },
{ "LOOP_CTL_REMOVE", 0x00004c81 },
{ "LOOP_CTL_GET_FREE", 0x00004c82 },
@@ -865,7 +866,6 @@
{ "KVM_CREATE_VM", 0x0000ae01 },
{ "KVM_CHECK_EXTENSION", 0x0000ae03 },
{ "KVM_GET_VCPU_MMAP_SIZE", 0x0000ae04 },
-{ "KVM_S390_ENABLE_SIE", 0x0000ae06 },
{ "KVM_CREATE_VCPU", 0x0000ae41 },
{ "KVM_SET_NR_MMU_PAGES", 0x0000ae44 },
{ "KVM_GET_NR_MMU_PAGES", 0x0000ae45 },
@@ -875,7 +875,6 @@
{ "KVM_REINJECT_CONTROL", 0x0000ae71 },
{ "KVM_SET_BOOT_CPU_ID", 0x0000ae78 },
{ "KVM_RUN", 0x0000ae80 },
-{ "KVM_S390_INITIAL_RESET", 0x0000ae97 },
{ "KVM_NMI", 0x0000ae9a },
{ "KVM_SET_TSC_KHZ", 0x0000aea2 },
{ "KVM_GET_TSC_KHZ", 0x0000aea3 },
@@ -1070,7 +1069,6 @@
{ "VIDIOC_S_PRIORITY", 0x40045644 },
{ "IVTV_IOC_PASSTHROUGH_MODE", 0x400456c1 },
{ "VIDIOC_AM437X_CCDC_CFG", 0x400456c1 },
-{ "VPFE_CMD_S_CCDC_RAW_PARAMS", 0x400456c1 },
{ "SNDRV_RAWMIDI_IOCTL_DROP", 0x40045730 },
{ "SNDRV_RAWMIDI_IOCTL_DRAIN", 0x40045731 },
{ "CEC_S_MODE", 0x40046109 },
@@ -1131,7 +1129,6 @@
{ "MATROXFB_SET_OUTPUT_MODE", 0x40046efa },
{ "SISFB_SET_AUTOMAXIMIZE_OLD", 0x40046efa },
{ "UBI_IOCRMVOL", 0x40046f01 },
-{ "DMX_SET_SOURCE", 0x40046f31 },
{ "UBI_IOCDET", 0x40046f41 },
{ "PHN_SET_REG", 0x40047001 },
{ "PHN_SET_REGS", 0x40047003 },
@@ -1216,10 +1213,8 @@
{ "BTRFS_IOC_CLONE", 0x40049409 },
{ "FICLONE", 0x40049409 },
{ "BTRFS_IOC_BALANCE_CTL", 0x40049421 },
-{ "KVM_S390_VCPU_FAULT", 0x4004ae52 },
{ "KVM_INTERRUPT", 0x4004ae86 },
{ "KVM_SET_SIGNAL_MASK", 0x4004ae8b },
-{ "KVM_S390_STORE_STATUS", 0x4004ae95 },
{ "KVM_SET_MP_STATE", 0x4004ae99 },
{ "VHOST_SET_LOG_FD", 0x4004af07 },
{ "VHOST_SCSI_GET_ABI_VERSION", 0x4004af42 },
@@ -1312,6 +1307,7 @@
{ "DRM_IOCTL_RADEON_GEM_WAIT_IDLE", 0x40086464 },
{ "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", 0x4008646e },
{ "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f },
+{ "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", 0x40086478 },
{ "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 },
{ "MTIOCTOP", 0x40086d01 },
{ "RIO_ENABLE_DOORBELL_RANGE", 0x40086d09 },
@@ -1326,7 +1322,6 @@
{ "VIDEO_SET_SPU", 0x40086f32 },
{ "VIDEO_SET_SPU_PALETTE", 0x40086f33 },
{ "FE_SET_PROPERTY", 0x40086f52 },
-{ "CA_SET_PID", 0x40086f87 },
{ "PHN_SETREG", 0x40087006 },
{ "PPSETTIME", 0x40087096 },
{ "PPPIOCSACTIVE", 0x40087446 },
@@ -1343,7 +1338,6 @@
{ "KVM_ASSIGN_SET_MSIX_NR", 0x4008ae73 },
{ "KVM_SET_VAPIC_ADDR", 0x4008ae93 },
{ "KVM_SET_GUEST_DEBUG", 0x4008ae9b },
-{ "KVM_X86_SETUP_MCE", 0x4008ae9c },
{ "VHOST_SET_FEATURES", 0x4008af00 },
{ "VHOST_SET_MEM_TABLE", 0x4008af03 },
{ "VHOST_SET_LOG_BASE", 0x4008af04 },
@@ -1475,8 +1469,6 @@
{ "KVM_REGISTER_COALESCED_MMIO", 0x4010ae67 },
{ "KVM_UNREGISTER_COALESCED_MMIO", 0x4010ae68 },
{ "KVM_ASSIGN_SET_MSIX_ENTRY", 0x4010ae74 },
-{ "KVM_S390_INTERRUPT", 0x4010ae94 },
-{ "KVM_S390_SET_INITIAL_PSW", 0x4010ae96 },
{ "KVM_DIRTY_TLB", 0x4010aeaa },
{ "KVM_ARM_SET_DEVICE_ADDR", 0x4010aeab },
{ "KVM_GET_ONE_REG", 0x4010aeab },
@@ -1525,8 +1517,6 @@
{ "IOC_PR_PREEMPT_ABORT", 0x401870cc },
{ "BTRFS_IOC_QGROUP_ASSIGN", 0x40189429 },
{ "KVM_SET_MEMORY_REGION", 0x4018ae40 },
-{ "KVM_S390_UCAS_MAP", 0x4018ae50 },
-{ "KVM_S390_UCAS_UNMAP", 0x4018ae51 },
{ "KVM_SET_DEVICE_ATTR", 0x4018aee1 },
{ "KVM_GET_DEVICE_ATTR", 0x4018aee2 },
{ "KVM_HAS_DEVICE_ATTR", 0x4018aee3 },
@@ -1559,9 +1549,6 @@
{ "KVM_IRQFD", 0x4020ae76 },
{ "KVM_SIGNAL_MSI", 0x4020aea5 },
{ "KVM_ARM_VCPU_INIT", 0x4020aeae },
-{ "KVM_S390_SET_IRQ_STATE", 0x4020aeb5 },
-{ "KVM_S390_GET_IRQ_STATE", 0x4020aeb6 },
-{ "KVM_S390_SET_CMMA_BITS", 0x4020aeb9 },
{ "SNDRV_COMPRESS_SET_METADATA", 0x40244314 },
{ "NVM_DEV_REMOVE", 0x40244c23 },
{ "NVM_DEV_FACTORY", 0x40244c25 },
@@ -1624,9 +1611,6 @@
{ "KVM_CREATE_PIT2", 0x4040ae77 },
{ "KVM_IOEVENTFD", 0x4040ae79 },
{ "KVM_ASSIGN_SET_INTX_MASK", 0x4040aea4 },
-{ "KVM_S390_MEM_OP", 0x4040aeb1 },
-{ "KVM_S390_GET_SKEYS", 0x4040aeb2 },
-{ "KVM_S390_SET_SKEYS", 0x4040aeb3 },
{ "CXL_IOCTL_START_WORK", 0x4040ca00 },
{ "CXL_IOCTL_DOWNLOAD_IMAGE", 0x4040ca0a },
{ "CXL_IOCTL_VALIDATE_IMAGE", 0x4040ca0b },
@@ -1639,8 +1623,8 @@
{ "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 },
{ "BC_TRANSACTION_SG", 0x40486311 },
{ "BC_REPLY_SG", 0x40486312 },
+{ "DRM_IOCTL_I915_PERF_ADD_CONFIG", 0x40486477 },
{ "BTRFS_IOC_SEND", 0x40489426 },
-{ "KVM_S390_IRQ", 0x4048aeb4 },
{ "GSMIOC_SETCONF", 0x404c4701 },
{ "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a },
{ "SNDRV_HWDEP_IOCTL_DSP_LOAD", 0x40504803 },
@@ -1665,7 +1649,6 @@
{ "NVM_DEV_CREATE", 0x40804c22 },
{ "UBI_IOCVOLCRBLK", 0x40804f07 },
{ "V4L2_DEVICE_NOTIFY_EVENT", 0x40807602 },
-{ "KVM_PPC_GET_PVINFO", 0x4080aea1 },
{ "SNDRV_COMPRESS_SET_PARAMS", 0x40844312 },
{ "SNDRV_SEQ_IOCTL_DELETE_QUEUE", 0x408c5333 },
{ "VIDIOC_S_JPEGCOMP", 0x408c563e },
@@ -2013,7 +1996,6 @@
{ "NCP_IOC_SETPRIVATEDATA", 0x80086e0a },
{ "NILFS_IOCTL_SYNC", 0x80086e8a },
{ "AUDIO_GET_PTS", 0x80086f13 },
-{ "DMX_GET_CAPS", 0x80086f30 },
{ "VIDEO_GET_PTS", 0x80086f39 },
{ "VIDEO_GET_FRAME_COUNT", 0x80086f3a },
{ "FE_GET_PROPERTY", 0x80086f53 },
@@ -2026,7 +2008,6 @@
{ "BTRFS_IOC_START_SYNC", 0x80089418 },
{ "BTRFS_IOC_SUBVOL_GETFLAGS", 0x80089419 },
{ "TEE_IOC_CANCEL", 0x8008a404 },
-{ "KVM_X86_GET_MCE_CAP_SUPPORTED", 0x8008ae9d },
{ "VHOST_GET_FEATURES", 0x8008af00 },
{ "FUNCTIONFS_ENDPOINT_DESC", 0x80096782 },
{ "DMX_GET_PES_PIDS", 0x800a6f2f },
@@ -2078,8 +2059,6 @@
{ "GENWQE_READ_REG16", 0x8010a522 },
{ "UFFDIO_UNREGISTER", 0x8010aa01 },
{ "UFFDIO_WAKE", 0x8010aa02 },
-{ "KVM_PPC_RESIZE_HPT_PREPARE", 0x8010aead },
-{ "KVM_PPC_RESIZE_HPT_COMMIT", 0x8010aeae },
{ "FDGETMAXERRS", 0x8014020e },
{ "GET_DISK_INFO", 0x80140912 },
{ "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -2200,7 +2179,6 @@
{ "KVM_SET_IRQCHIP", 0x8208ae63 },
{ "VFAT_IOCTL_READDIR_BOTH", 0x82187201 },
{ "VFAT_IOCTL_READDIR_SHORT", 0x82187202 },
-{ "KVM_PPC_GET_SMMU_INFO", 0x8250aea6 },
{ "SNDRV_HDSP_IOCTL_GET_PEAK_RMS", 0x83b04840 },
{ "JSIOCGBTNMAP", 0x84006a34 },
{ "BTRFS_IOC_FS_INFO", 0x8400941f },
@@ -2292,7 +2270,6 @@
{ "PPPIOCNEWUNIT", 0xc004743e },
{ "MEYEIOC_SYNC", 0xc00476c3 },
{ "AUTOFS_IOC_SETTIMEOUT", 0xc0049364 },
-{ "KVM_PPC_ALLOCATE_HTAB", 0xc004aea7 },
{ "NET_ADD_IF", 0xc0066f34 },
{ "NET_GET_IF", 0xc0066f36 },
{ "CAPI_MANUFACTURER_CMD", 0xc0084320 },
@@ -2387,6 +2364,7 @@
{ "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 },
{ "MBXFB_IOCX_REG", 0xc00cf405 },
{ "BLKREPORTZONE", 0xc0101282 },
+{ "RDMA_VERBS_IOCTL", 0xc0101b01 },
{ "STP_POLICY_ID_SET", 0xc0102500 },
{ "CAPI_GET_VERSION", 0xc0104307 },
{ "GIGASET_VERSION", 0xc0104703 },
@@ -2394,6 +2372,7 @@
{ "HIDIOCGCOLLECTIONINFO", 0xc0104811 },
{ "SNDRV_EMUX_IOCTL_LOAD_PATCH", 0xc0104881 },
{ "SNDRV_EMUX_IOCTL_MISC_MODE", 0xc0104884 },
+{ "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", 0xc0104b11 },
{ "MEMGETREGIONINFO", 0xc0104d08 },
{ "SNDRV_SEQ_IOCTL_RUNNING_MODE", 0xc0105303 },
{ "USBDEVFS_CONTROL", 0xc0105500 },
@@ -2445,6 +2424,7 @@
{ "DRM_IOCTL_TEGRA_GET_SYNCPT_BASE", 0xc0106449 },
{ "DRM_IOCTL_VC4_GET_TILING", 0xc0106449 },
{ "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a },
+{ "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a },
{ "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b },
{ "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
{ "DRM_IOCTL_VIA_WAIT_IRQ", 0xc010644d },
@@ -2467,6 +2447,8 @@
{ "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd },
{ "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", 0xc01064c1 },
{ "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 },
+{ "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 },
+{ "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 },
{ "MGSL_IOCWAITGPIO", 0xc0106d12 },
{ "DMX_GET_STC", 0xc0106f32 },
{ "SCIF_ACCEPTREQ", 0xc0107304 },
@@ -2511,6 +2493,7 @@
{ "VIDIOC_OMAP3ISP_STAT_REQ", 0xc01856c6 },
{ "PACKET_CTRL_CMD", 0xc0185801 },
{ "FITRIM", 0xc0185879 },
+{ "BINDER_GET_NODE_DEBUG_INFO", 0xc018620b },
{ "DRM_IOCTL_GET_MAP", 0xc0186404 },
{ "DRM_IOCTL_GET_CLIENT", 0xc0186405 },
{ "DRM_IOCTL_ADD_MAP", 0xc0186415 },
@@ -2600,12 +2583,12 @@
{ "DRM_IOCTL_MODE_CREATE_DUMB", 0xc02064b2 },
{ "DRM_IOCTL_MODE_GETPLANE", 0xc02064b6 },
{ "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", 0xc02064b9 },
+{ "DRM_IOCTL_SYNCOBJ_WAIT", 0xc02064c3 },
{ "FS_IOC_FIEMAP", 0xc020660b },
{ "GENWQE_PIN_MEM", 0xc020a528 },
{ "GENWQE_UNPIN_MEM", 0xc020a529 },
{ "UFFDIO_REGISTER", 0xc020aa00 },
{ "UFFDIO_ZEROPAGE", 0xc020aa04 },
-{ "KVM_S390_GET_CMMA_BITS", 0xc020aeb8 },
{ "SNDCTL_MIDI_MPUCMD", 0xc0216d02 },
{ "SNDRV_COMPRESS_GET_METADATA", 0xc0244315 },
{ "VIDIOC_G_EDID", 0xc0245628 },
@@ -2621,6 +2604,7 @@
{ "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 },
{ "FW_CDEV_IOC_GET_INFO", 0xc0282300 },
{ "AMDKFD_IOC_GET_CLOCK_COUNTERS", 0xc0284b05 },
+{ "AMDKFD_IOC_GET_TILE_CONFIG", 0xc0284b12 },
{ "VIDIOC_ENCODER_CMD", 0xc028564d },
{ "VIDIOC_TRY_ENCODER_CMD", 0xc028564e },
{ "SWITCHTEC_IOCTL_EVENT_CTL", 0xc0285743 },
diff --git a/ioctlent2.h b/ioctlent2.h
index 9065d163..4fb7d074 100644
--- a/ioctlent2.h
+++ b/ioctlent2.h
@@ -324,6 +324,7 @@
{ "LOOP_CHANGE_FD", 0x00004c06 },
{ "LOOP_SET_CAPACITY", 0x00004c07 },
{ "LOOP_SET_DIRECT_IO", 0x00004c08 },
+{ "LOOP_SET_BLOCK_SIZE", 0x00004c09 },
{ "LOOP_CTL_ADD", 0x00004c80 },
{ "LOOP_CTL_REMOVE", 0x00004c81 },
{ "LOOP_CTL_GET_FREE", 0x00004c82 },
@@ -865,7 +866,6 @@
{ "KVM_CREATE_VM", 0x0000ae01 },
{ "KVM_CHECK_EXTENSION", 0x0000ae03 },
{ "KVM_GET_VCPU_MMAP_SIZE", 0x0000ae04 },
-{ "KVM_S390_ENABLE_SIE", 0x0000ae06 },
{ "KVM_CREATE_VCPU", 0x0000ae41 },
{ "KVM_SET_NR_MMU_PAGES", 0x0000ae44 },
{ "KVM_GET_NR_MMU_PAGES", 0x0000ae45 },
@@ -875,7 +875,6 @@
{ "KVM_REINJECT_CONTROL", 0x0000ae71 },
{ "KVM_SET_BOOT_CPU_ID", 0x0000ae78 },
{ "KVM_RUN", 0x0000ae80 },
-{ "KVM_S390_INITIAL_RESET", 0x0000ae97 },
{ "KVM_NMI", 0x0000ae9a },
{ "KVM_SET_TSC_KHZ", 0x0000aea2 },
{ "KVM_GET_TSC_KHZ", 0x0000aea3 },
@@ -1128,7 +1127,6 @@
{ "MATROXFB_SET_OUTPUT_MODE", 0x40046efa },
{ "SISFB_SET_AUTOMAXIMIZE_OLD", 0x40046efa },
{ "UBI_IOCRMVOL", 0x40046f01 },
-{ "DMX_SET_SOURCE", 0x40046f31 },
{ "UBI_IOCDET", 0x40046f41 },
{ "PHN_SET_REG", 0x40047001 },
{ "PHN_SET_REGS", 0x40047003 },
@@ -1307,6 +1305,7 @@
{ "DRM_IOCTL_RADEON_GEM_WAIT_IDLE", 0x40086464 },
{ "DRM_IOCTL_I915_GEM_CONTEXT_DESTROY", 0x4008646e },
{ "DRM_IOCTL_I915_GEM_SET_CACHING", 0x4008646f },
+{ "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", 0x40086478 },
{ "DRM_IOCTL_NOUVEAU_GEM_CPU_PREP", 0x40086482 },
{ "MTIOCTOP", 0x40086d01 },
{ "RIO_ENABLE_DOORBELL_RANGE", 0x40086d09 },
@@ -1321,7 +1320,6 @@
{ "VIDEO_SET_SPU", 0x40086f32 },
{ "VIDEO_SET_SPU_PALETTE", 0x40086f33 },
{ "FE_SET_PROPERTY", 0x40086f52 },
-{ "CA_SET_PID", 0x40086f87 },
{ "PHN_SETREG", 0x40087006 },
{ "PPPIOCSACTIVE", 0x40087446 },
{ "PPPIOCSPASS", 0x40087447 },
@@ -1332,7 +1330,6 @@
{ "BTRFS_IOC_WAIT_SYNC", 0x40089416 },
{ "BTRFS_IOC_SUBVOL_SETFLAGS", 0x4008941a },
{ "KVM_SET_IDENTITY_MAP_ADDR", 0x4008ae48 },
-{ "KVM_S390_VCPU_FAULT", 0x4008ae52 },
{ "KVM_IRQ_LINE", 0x4008ae61 },
{ "KVM_SET_GSI_ROUTING", 0x4008ae6a },
{ "KVM_ASSIGN_SET_MSIX_NR", 0x4008ae73 },
@@ -1340,7 +1337,6 @@
{ "KVM_SET_CPUID", 0x4008ae8a },
{ "KVM_SET_CPUID2", 0x4008ae90 },
{ "KVM_SET_VAPIC_ADDR", 0x4008ae93 },
-{ "KVM_S390_STORE_STATUS", 0x4008ae95 },
{ "KVM_X86_SETUP_MCE", 0x4008ae9c },
{ "VHOST_SET_FEATURES", 0x4008af00 },
{ "VHOST_SET_MEM_TABLE", 0x4008af03 },
@@ -1482,10 +1478,7 @@
{ "KVM_REGISTER_COALESCED_MMIO", 0x4010ae67 },
{ "KVM_UNREGISTER_COALESCED_MMIO", 0x4010ae68 },
{ "KVM_ASSIGN_SET_MSIX_ENTRY", 0x4010ae74 },
-{ "KVM_S390_INTERRUPT", 0x4010ae94 },
-{ "KVM_S390_SET_INITIAL_PSW", 0x4010ae96 },
{ "KVM_DIRTY_TLB", 0x4010aeaa },
-{ "KVM_ARM_SET_DEVICE_ADDR", 0x4010aeab },
{ "KVM_GET_ONE_REG", 0x4010aeab },
{ "KVM_SET_ONE_REG", 0x4010aeac },
{ "ASPEED_LPC_CTRL_IOCTL_MAP", 0x4010b201 },
@@ -1532,8 +1525,6 @@
{ "IOC_PR_PREEMPT_ABORT", 0x401870cc },
{ "BTRFS_IOC_QGROUP_ASSIGN", 0x40189429 },
{ "KVM_SET_MEMORY_REGION", 0x4018ae40 },
-{ "KVM_S390_UCAS_MAP", 0x4018ae50 },
-{ "KVM_S390_UCAS_UNMAP", 0x4018ae51 },
{ "KVM_SET_DEVICE_ATTR", 0x4018aee1 },
{ "KVM_GET_DEVICE_ATTR", 0x4018aee2 },
{ "KVM_HAS_DEVICE_ATTR", 0x4018aee3 },
@@ -1566,9 +1557,6 @@
{ "KVM_SET_USER_MEMORY_REGION", 0x4020ae46 },
{ "KVM_IRQFD", 0x4020ae76 },
{ "KVM_SIGNAL_MSI", 0x4020aea5 },
-{ "KVM_S390_SET_IRQ_STATE", 0x4020aeb5 },
-{ "KVM_S390_GET_IRQ_STATE", 0x4020aeb6 },
-{ "KVM_S390_SET_CMMA_BITS", 0x4020aeb9 },
{ "SNDRV_COMPRESS_SET_METADATA", 0x40244314 },
{ "NVM_DEV_REMOVE", 0x40244c23 },
{ "NVM_DEV_FACTORY", 0x40244c25 },
@@ -1634,9 +1622,6 @@
{ "KVM_X86_SET_MCE", 0x4040ae9e },
{ "KVM_SET_VCPU_EVENTS", 0x4040aea0 },
{ "KVM_ASSIGN_SET_INTX_MASK", 0x4040aea4 },
-{ "KVM_S390_MEM_OP", 0x4040aeb1 },
-{ "KVM_S390_GET_SKEYS", 0x4040aeb2 },
-{ "KVM_S390_SET_SKEYS", 0x4040aeb3 },
{ "CXL_IOCTL_START_WORK", 0x4040ca00 },
{ "CXL_IOCTL_DOWNLOAD_IMAGE", 0x4040ca0a },
{ "CXL_IOCTL_VALIDATE_IMAGE", 0x4040ca0b },
@@ -1649,9 +1634,9 @@
{ "SNDRV_EMU10K1_IOCTL_PCM_POKE", 0x40484830 },
{ "BC_TRANSACTION_SG", 0x40486311 },
{ "BC_REPLY_SG", 0x40486312 },
+{ "DRM_IOCTL_I915_PERF_ADD_CONFIG", 0x40486477 },
{ "BTRFS_IOC_SEND", 0x40489426 },
{ "KVM_SET_GUEST_DEBUG", 0x4048ae9b },
-{ "KVM_S390_IRQ", 0x4048aeb4 },
{ "GSMIOC_SETCONF", 0x404c4701 },
{ "SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 0x404c534a },
{ "SNDRV_HWDEP_IOCTL_DSP_LOAD", 0x40504803 },
@@ -1676,7 +1661,6 @@
{ "NILFS_IOCTL_CLEAN_SEGMENTS", 0x40786e88 },
{ "NVM_DEV_CREATE", 0x40804c22 },
{ "UBI_IOCVOLCRBLK", 0x40804f07 },
-{ "KVM_PPC_GET_PVINFO", 0x4080aea1 },
{ "KVM_SET_DEBUGREGS", 0x4080aea2 },
{ "SNDRV_COMPRESS_SET_PARAMS", 0x40844312 },
{ "V4L2_DEVICE_NOTIFY_EVENT", 0x40887602 },
@@ -2032,7 +2016,6 @@
{ "NCP_IOC_SETPRIVATEDATA", 0x80086e0a },
{ "NILFS_IOCTL_SYNC", 0x80086e8a },
{ "AUDIO_GET_PTS", 0x80086f13 },
-{ "DMX_GET_CAPS", 0x80086f30 },
{ "VIDEO_GET_PTS", 0x80086f39 },
{ "VIDEO_GET_FRAME_COUNT", 0x80086f3a },
{ "FE_GET_PROPERTY", 0x80086f53 },
@@ -2096,8 +2079,6 @@
{ "GENWQE_READ_REG16", 0x8010a522 },
{ "UFFDIO_UNREGISTER", 0x8010aa01 },
{ "UFFDIO_WAKE", 0x8010aa02 },
-{ "KVM_PPC_RESIZE_HPT_PREPARE", 0x8010aead },
-{ "KVM_PPC_RESIZE_HPT_COMMIT", 0x8010aeae },
{ "FDGETMAXERRS", 0x8014020e },
{ "GET_DISK_INFO", 0x80140912 },
{ "SNDRV_COMPRESS_TSTAMP", 0x80144320 },
@@ -2225,7 +2206,6 @@
{ "KVM_SET_IRQCHIP", 0x8208ae63 },
{ "VFAT_IOCTL_READDIR_BOTH", 0x82307201 },
{ "VFAT_IOCTL_READDIR_SHORT", 0x82307202 },
-{ "KVM_PPC_GET_SMMU_INFO", 0x8250aea6 },
{ "SNDRV_HDSP_IOCTL_GET_PEAK_RMS", 0x83b04840 },
{ "JSIOCGBTNMAP", 0x84006a34 },
{ "BTRFS_IOC_FS_INFO", 0x8400941f },
@@ -2320,7 +2300,6 @@
{ "MEYEIOC_SYNC", 0xc00476c3 },
{ "AUTOFS_IOC_SETTIMEOUT", 0xc0049364 },
{ "KVM_GET_MSR_INDEX_LIST", 0xc004ae02 },
-{ "KVM_PPC_ALLOCATE_HTAB", 0xc004aea7 },
{ "NET_ADD_IF", 0xc0066f34 },
{ "NET_GET_IF", 0xc0066f36 },
{ "CAPI_MANUFACTURER_CMD", 0xc0084320 },
@@ -2419,6 +2398,7 @@
{ "FSL_HV_IOCTL_PARTITION_GET_STATUS", 0xc00caf02 },
{ "MBXFB_IOCX_REG", 0xc00cf405 },
{ "BLKREPORTZONE", 0xc0101282 },
+{ "RDMA_VERBS_IOCTL", 0xc0101b01 },
{ "STP_POLICY_ID_SET", 0xc0102500 },
{ "CAPI_GET_VERSION", 0xc0104307 },
{ "GIGASET_VERSION", 0xc0104703 },
@@ -2426,6 +2406,7 @@
{ "HIDIOCGCOLLECTIONINFO", 0xc0104811 },
{ "SNDRV_EMUX_IOCTL_LOAD_PATCH", 0xc0104881 },
{ "SNDRV_EMUX_IOCTL_MISC_MODE", 0xc0104884 },
+{ "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", 0xc0104b11 },
{ "MEMGETREGIONINFO", 0xc0104d08 },
{ "SNDRV_SEQ_IOCTL_RUNNING_MODE", 0xc0105303 },
{ "USBDEVFS_CONTROL", 0xc0105500 },
@@ -2477,6 +2458,7 @@
{ "DRM_IOCTL_TEGRA_GET_SYNCPT_BASE", 0xc0106449 },
{ "DRM_IOCTL_VC4_GET_TILING", 0xc0106449 },
{ "DRM_IOCTL_TEGRA_GEM_SET_TILING", 0xc010644a },
+{ "DRM_IOCTL_VC4_LABEL_BO", 0xc010644a },
{ "DRM_IOCTL_TEGRA_GEM_GET_TILING", 0xc010644b },
{ "DRM_IOCTL_RADEON_INDIRECT", 0xc010644d },
{ "DRM_IOCTL_VIA_WAIT_IRQ", 0xc010644d },
@@ -2499,6 +2481,8 @@
{ "DRM_IOCTL_MODE_CREATEPROPBLOB", 0xc01064bd },
{ "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", 0xc01064c1 },
{ "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", 0xc01064c2 },
+{ "DRM_IOCTL_SYNCOBJ_RESET", 0xc01064c4 },
+{ "DRM_IOCTL_SYNCOBJ_SIGNAL", 0xc01064c5 },
{ "MGSL_IOCWAITGPIO", 0xc0106d12 },
{ "DMX_GET_STC", 0xc0106f32 },
{ "SCIF_ACCEPTREQ", 0xc0107304 },
@@ -2544,6 +2528,7 @@
{ "VIDIOC_TRY_EXT_CTRLS", 0xc0185649 },
{ "PACKET_CTRL_CMD", 0xc0185801 },
{ "FITRIM", 0xc0185879 },
+{ "BINDER_GET_NODE_DEBUG_INFO", 0xc018620b },
{ "DRM_IOCTL_GET_MAP", 0xc0186404 },
{ "DRM_IOCTL_GET_CLIENT", 0xc0186405 },
{ "DRM_IOCTL_ADD_MAP", 0xc0186415 },
@@ -2636,12 +2621,12 @@
{ "DRM_IOCTL_MODE_CREATE_DUMB", 0xc02064b2 },
{ "DRM_IOCTL_MODE_GETPLANE", 0xc02064b6 },
{ "DRM_IOCTL_MODE_OBJ_GETPROPERTIES", 0xc02064b9 },
+{ "DRM_IOCTL_SYNCOBJ_WAIT", 0xc02064c3 },
{ "FS_IOC_FIEMAP", 0xc020660b },
{ "GENWQE_PIN_MEM", 0xc020a528 },
{ "GENWQE_UNPIN_MEM", 0xc020a529 },
{ "UFFDIO_REGISTER", 0xc020aa00 },
{ "UFFDIO_ZEROPAGE", 0xc020aa04 },
-{ "KVM_S390_GET_CMMA_BITS", 0xc020aeb8 },
{ "SNDCTL_MIDI_MPUCMD", 0xc0216d02 },
{ "SNDRV_COMPRESS_GET_METADATA", 0xc0244315 },
{ "VIDIOC_G_EDID", 0xc0245628 },
@@ -2656,6 +2641,7 @@
{ "IB_USER_MAD_REGISTER_AGENT2", 0xc0281b04 },
{ "FW_CDEV_IOC_GET_INFO", 0xc0282300 },
{ "AMDKFD_IOC_GET_CLOCK_COUNTERS", 0xc0284b05 },
+{ "AMDKFD_IOC_GET_TILE_CONFIG", 0xc0284b12 },
{ "VIDIOC_ENCODER_CMD", 0xc028564d },
{ "VIDIOC_TRY_ENCODER_CMD", 0xc028564e },
{ "SWITCHTEC_IOCTL_EVENT_CTL", 0xc0285743 },
diff --git a/kcmp.c b/kcmp.c
index 962952bd..ec537a67 100644
--- a/kcmp.c
+++ b/kcmp.c
@@ -27,8 +27,31 @@
*/
#include "defs.h"
+#include "print_fields.h"
#include "xlat/kcmp_types.h"
+struct strace_kcmp_epoll_slot {
+ uint32_t efd;
+ uint32_t tfd;
+ uint32_t toff;
+};
+
+static void
+printpidfd(struct tcb *tcp, pid_t pid, int fd)
+{
+ /*
+ * XXX We want to use printfd here, but we should figure out which
+ * process in strace's PID NS is referred to first.
+ */
+ tprintf("%d", fd);
+}
+
+#define PRINT_FIELD_PIDFD(prefix_, where_, field_, tcp_, pid_) \
+ do { \
+ STRACE_PRINTF("%s%s=", (prefix_), #field_); \
+ printpidfd((tcp_), (pid_), (where_).field_); \
+ } while (0)
+
SYS_FUNC(kcmp)
{
pid_t pid1 = tcp->u_arg[0];
@@ -42,8 +65,31 @@ SYS_FUNC(kcmp)
switch (type) {
case KCMP_FILE:
- tprintf(", %u, %u", (unsigned) idx1, (unsigned) idx2);
+ tprints(", ");
+ printpidfd(tcp, pid1, idx1);
+ tprints(", ");
+ printpidfd(tcp, pid1, idx2);
+
break;
+
+ case KCMP_EPOLL_TFD: {
+ struct strace_kcmp_epoll_slot slot;
+
+ tprints(", ");
+ printpidfd(tcp, pid1, idx1);
+ tprints(", ");
+
+ if (umove_or_printaddr(tcp, idx2, &slot))
+ break;
+
+ PRINT_FIELD_PIDFD("{", slot, efd, tcp, pid2);
+ PRINT_FIELD_PIDFD(", ", slot, tfd, tcp, pid2);
+ PRINT_FIELD_U(", ", slot, toff);
+ tprints("}");
+
+ break;
+ }
+
case KCMP_FILES:
case KCMP_FS:
case KCMP_IO:
diff --git a/kernel_types.h b/kernel_types.h
index 3651014f..79ac171c 100644
--- a/kernel_types.h
+++ b/kernel_types.h
@@ -76,7 +76,7 @@ typedef struct {
*/
#if SIZEOF_LONG == 4
# define PRI__64 "ll"
-#elif defined ALPHA || defined IA64 || defined POWERPC \
+#elif defined ALPHA || defined IA64 || defined __powerpc64__ \
|| (defined MIPS && !defined __ANDROID__)
# define PRI__64 "l"
#else
diff --git a/linux/32/ioctls_inc_align16.h b/linux/32/ioctls_inc_align16.h
index 2cef342d..175f85fb 100644
--- a/linux/32/ioctls_inc_align16.h
+++ b/linux/32/ioctls_inc_align16.h
@@ -183,6 +183,9 @@
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x14 },
@@ -271,7 +274,9 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
@@ -406,6 +411,7 @@
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
@@ -467,6 +473,7 @@
{ "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
{ "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
+{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 },
{ "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -784,16 +791,13 @@
{ "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 },
{ "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c },
{ "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 },
-{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 },
{ "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 },
-{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 },
{ "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a },
{ "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 },
{ "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 },
{ "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 },
{ "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3a },
{ "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x12 },
-{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 },
{ "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 },
{ "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 },
{ "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0a },
@@ -1327,10 +1331,12 @@
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
@@ -1367,6 +1373,7 @@
{ "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
+{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
@@ -2492,6 +2499,7 @@
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/32/ioctls_inc_align32.h b/linux/32/ioctls_inc_align32.h
index 6b32df2d..165912a9 100644
--- a/linux/32/ioctls_inc_align32.h
+++ b/linux/32/ioctls_inc_align32.h
@@ -183,6 +183,9 @@
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x14 },
@@ -271,7 +274,9 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
@@ -406,6 +411,7 @@
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
@@ -467,6 +473,7 @@
{ "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
{ "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
+{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 },
{ "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -784,16 +791,13 @@
{ "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 },
{ "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c },
{ "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 },
-{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 },
{ "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 },
-{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 },
{ "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a },
{ "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 },
{ "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 },
{ "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 },
{ "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c },
{ "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 },
-{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 },
{ "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 },
{ "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 },
{ "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c },
@@ -1327,10 +1331,12 @@
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
@@ -1367,6 +1373,7 @@
{ "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
+{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
@@ -2492,6 +2499,7 @@
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/32/ioctls_inc_align64.h b/linux/32/ioctls_inc_align64.h
index 35a0ca9e..25de6bad 100644
--- a/linux/32/ioctls_inc_align64.h
+++ b/linux/32/ioctls_inc_align64.h
@@ -183,6 +183,9 @@
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 },
@@ -271,7 +274,9 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
@@ -406,6 +411,7 @@
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
@@ -467,6 +473,7 @@
{ "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
{ "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
+{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 },
{ "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -784,16 +791,13 @@
{ "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 },
{ "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c },
{ "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 },
-{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 },
{ "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 },
-{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 },
{ "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a },
{ "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 },
{ "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 },
{ "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 },
{ "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c },
{ "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 },
-{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 },
{ "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 },
{ "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 },
{ "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c },
@@ -1327,10 +1331,12 @@
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
@@ -1367,6 +1373,7 @@
{ "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
+{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
@@ -2393,7 +2400,6 @@
{ "linux/wireless.h", "SIOCSIWSTATS", 0, 0x8B0E, 0 },
{ "linux/wireless.h", "SIOCSIWTHRSPY", 0, 0x8B12, 0 },
{ "linux/wireless.h", "SIOCSIWTXPOW", 0, 0x8B26, 0 },
-{ "media/davinci/vpfe_capture.h", "VPFE_CMD_S_CCDC_RAW_PARAMS", _IOC_WRITE, 0x56c1, 0x04 },
{ "media/drv-intf/exynos-fimc.h", "S5P_FIMC_TX_END_NOTIFY", _IOC_NONE, 0x6500, 0x00 },
{ "media/i2c/adv7842.h", "ADV7842_CMD_RAM_TEST", _IOC_NONE, 0x56c0, 0x00 },
{ "media/i2c/bt819.h", "BT819_FIFO_RESET_HIGH", _IOC_NONE, 0x6201, 0x00 },
@@ -2493,6 +2499,7 @@
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/64/ioctls_inc.h b/linux/64/ioctls_inc.h
index 517caa0f..691b6eae 100644
--- a/linux/64/ioctls_inc.h
+++ b/linux/64/ioctls_inc.h
@@ -183,6 +183,9 @@
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 },
@@ -271,7 +274,9 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
@@ -406,6 +411,7 @@
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
@@ -467,6 +473,7 @@
{ "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
{ "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
+{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 },
{ "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -784,16 +791,13 @@
{ "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 },
{ "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c },
{ "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 },
-{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 },
{ "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 },
-{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 },
{ "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a },
{ "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 },
{ "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 },
{ "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 },
{ "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c },
{ "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 },
-{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 },
{ "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 },
{ "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 },
{ "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c },
@@ -1327,10 +1331,12 @@
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
@@ -1367,6 +1373,7 @@
{ "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
+{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
@@ -2492,6 +2499,7 @@
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/arm/ioctls_arch0.h b/linux/arm/ioctls_arch0.h
index ae3fb69e..f80398eb 100644
--- a/linux/arm/ioctls_arch0.h
+++ b/linux/arm/ioctls_arch0.h
@@ -41,30 +41,9 @@
{ "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 },
{ "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 },
{ "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 },
-{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
-{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
-{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
{ "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
-{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
-{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
-{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
-{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
-{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
-{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
-{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
-{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
-{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 },
-{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
-{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
-{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x04 },
{ "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 },
{ "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 },
{ "linux/kvm.h", "KVM_SET_DEVICE_ATTR", _IOC_WRITE, 0xaee1, 0x18 },
@@ -89,5 +68,3 @@
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
-{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 },
-{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h
index aa25918b..89253380 100644
--- a/linux/hppa/syscallent.h
+++ b/linux/hppa/syscallent.h
@@ -352,3 +352,4 @@
[346] = { 6, TD, SEN(copy_file_range), "copy_file_range" },
[347] = { 6, TD, SEN(preadv2), "preadv2" },
[348] = { 6, TD, SEN(pwritev2), "pwritev2" },
+[349] = { 5, TD|TF|TSTA, SEN(statx), "statx" },
diff --git a/linux/i386/ioctls_arch0.h b/linux/i386/ioctls_arch0.h
index fcdee53e..697e2505 100644
--- a/linux/i386/ioctls_arch0.h
+++ b/linux/i386/ioctls_arch0.h
@@ -14,7 +14,6 @@
{ "asm/mtrr.h", "MTRRIOC_KILL_PAGE_ENTRY", _IOC_WRITE, 0x4d09, 0x0c },
{ "asm/mtrr.h", "MTRRIOC_SET_ENTRY", _IOC_WRITE, 0x4d01, 0x0c },
{ "asm/mtrr.h", "MTRRIOC_SET_PAGE_ENTRY", _IOC_WRITE, 0x4d06, 0x0c },
-{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
{ "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 },
@@ -65,30 +64,9 @@
{ "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 },
{ "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 },
{ "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 },
-{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
-{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
-{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
{ "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
-{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
-{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
-{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
-{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
-{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
-{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
-{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
-{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
-{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 },
-{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
-{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
-{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x04 },
{ "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 },
{ "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 },
{ "linux/kvm.h", "KVM_SET_CPUID", _IOC_WRITE, 0xae8a, 0x08 },
diff --git a/linux/inet_diag.h b/linux/inet_diag.h
index ec6356c2..d2eec2ce 100644
--- a/linux/inet_diag.h
+++ b/linux/inet_diag.h
@@ -106,6 +106,7 @@ enum {
INET_DIAG_PAD,
INET_DIAG_MARK,
INET_DIAG_BBRINFO,
+ INET_DIAG_CLASS_ID,
};
/* INET_DIAG_MEM */
diff --git a/linux/powerpc/arch_sigreturn.c b/linux/powerpc/arch_sigreturn.c
index 4f68648d..5a5ca3ae 100644
--- a/linux/powerpc/arch_sigreturn.c
+++ b/linux/powerpc/arch_sigreturn.c
@@ -1,27 +1,32 @@
static void
arch_sigreturn(struct tcb *tcp)
{
- unsigned long addr = ppc_regs.gpr[1];
- struct sigcontext sc;
-
/* Skip dummy stack frame. */
+ const unsigned long addr = ppc_regs.gpr[1] + 64;
+
#ifdef POWERPC64
- if (current_personality == 0)
- addr += 128;
- else
+ /* The only sigreturn on ppc64 is compat_sys_sigreturn. */
+ typedef struct {
+ unsigned int _unused[4];
+ int signal;
+ unsigned int handler;
+ unsigned int oldmask;
+ /* all the rest is irrelevant */
+ } sigreturn_context;
+#else
+ typedef struct sigcontext sigreturn_context;
#endif
- addr += 64;
+
+ sigreturn_context sc;
if (umove(tcp, addr, &sc) < 0) {
tprintf("{mask=%#lx}", addr);
} else {
- unsigned long mask[NSIG_BYTES / sizeof(long)];
-#ifdef POWERPC64
- mask[0] = sc.oldmask | (sc._unused[3] << 32);
-#else
- mask[0] = sc.oldmask;
- mask[1] = sc._unused[3];
-#endif
+ const unsigned int mask[NSIG_BYTES / sizeof(int)] = {
+ sc.oldmask,
+ sc._unused[3]
+ };
+
tprintsigmask_addr("{mask=", mask);
tprints("}");
}
diff --git a/linux/powerpc/get_syscall_args.c b/linux/powerpc/get_syscall_args.c
index 66bcae31..b54377ef 100644
--- a/linux/powerpc/get_syscall_args.c
+++ b/linux/powerpc/get_syscall_args.c
@@ -2,11 +2,26 @@
static int
get_syscall_args(struct tcb *tcp)
{
- tcp->u_arg[0] = ppc_regs.orig_gpr3;
- tcp->u_arg[1] = ppc_regs.gpr[4];
- tcp->u_arg[2] = ppc_regs.gpr[5];
- tcp->u_arg[3] = ppc_regs.gpr[6];
- tcp->u_arg[4] = ppc_regs.gpr[7];
- tcp->u_arg[5] = ppc_regs.gpr[8];
+ if (current_personality != 0) {
+ /*
+ * Zero-extend from 32 bits.
+ * Use truncate_klong_to_current_wordsize(tcp->u_arg[N])
+ * in syscall handlers
+ * if you need to use *sign-extended* parameter.
+ */
+ tcp->u_arg[0] = (uint32_t) ppc_regs.orig_gpr3;
+ tcp->u_arg[1] = (uint32_t) ppc_regs.gpr[4];
+ tcp->u_arg[2] = (uint32_t) ppc_regs.gpr[5];
+ tcp->u_arg[3] = (uint32_t) ppc_regs.gpr[6];
+ tcp->u_arg[4] = (uint32_t) ppc_regs.gpr[7];
+ tcp->u_arg[5] = (uint32_t) ppc_regs.gpr[8];
+ } else {
+ tcp->u_arg[0] = ppc_regs.orig_gpr3;
+ tcp->u_arg[1] = ppc_regs.gpr[4];
+ tcp->u_arg[2] = ppc_regs.gpr[5];
+ tcp->u_arg[3] = ppc_regs.gpr[6];
+ tcp->u_arg[4] = ppc_regs.gpr[7];
+ tcp->u_arg[5] = ppc_regs.gpr[8];
+ }
return 1;
}
diff --git a/linux/powerpc/ioctls_arch0.h b/linux/powerpc/ioctls_arch0.h
index 2516661f..e922ec0e 100644
--- a/linux/powerpc/ioctls_arch0.h
+++ b/linux/powerpc/ioctls_arch0.h
@@ -88,7 +88,6 @@
{ "asm/ps3fb.h", "PS3FB_IOCTL_SCREENINFO", _IOC_READ, 0x7203, 0x04 },
{ "asm/ps3fb.h", "PS3FB_IOCTL_SETMODE", _IOC_WRITE, 0x7201, 0x04 },
{ "linux/kvm.h", "KVM_ALLOCATE_RMA", _IOC_READ, 0xaea9, 0x08 },
-{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
{ "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 },
@@ -141,22 +140,6 @@
{ "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
-{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
-{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
-{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
-{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
-{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
-{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
-{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
-{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
-{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x04 },
-{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
-{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
-{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x04 },
{ "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 },
{ "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 },
{ "linux/kvm.h", "KVM_SET_DEVICE_ATTR", _IOC_WRITE, 0xaee1, 0x18 },
@@ -181,5 +164,3 @@
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
-{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 },
-{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
diff --git a/linux/s390/ioctls_arch0.h b/linux/s390/ioctls_arch0.h
index f21ae987..66b26ae4 100644
--- a/linux/s390/ioctls_arch0.h
+++ b/linux/s390/ioctls_arch0.h
@@ -50,6 +50,9 @@
{ "asm/tape390.h", "TAPE390_DISPLAY", _IOC_WRITE, 0x6401, 0x11 },
{ "asm/tape390.h", "TAPE390_KEKL_QUERY", _IOC_READ, 0x6405, 0x86 },
{ "asm/tape390.h", "TAPE390_KEKL_SET", _IOC_WRITE, 0x6404, 0x86 },
+{ "asm/vmcp.h", "VMCP_GETCODE", _IOC_READ, 0x1001, 0x04 },
+{ "asm/vmcp.h", "VMCP_GETSIZE", _IOC_READ, 0x1003, 0x04 },
+{ "asm/vmcp.h", "VMCP_SETBUF", _IOC_WRITE, 0x1002, 0x04 },
{ "asm/zcrypt.h", "ICARSACRT", _IOC_READ|_IOC_WRITE, 0x7a06, 0x00 },
{ "asm/zcrypt.h", "ICARSAMODEXPO", _IOC_READ|_IOC_WRITE, 0x7a05, 0x00 },
{ "asm/zcrypt.h", "Z90STAT_CEX2ACOUNT", _IOC_READ, 0x7a4e, 0x04 },
@@ -69,7 +72,6 @@
{ "asm/zcrypt.h", "ZDEVICESTATUS", _IOC_READ|_IOC_WRITE, 0x7a4f, 0x00 },
{ "asm/zcrypt.h", "ZSECSENDCPRB", _IOC_READ|_IOC_WRITE, 0x7a81, 0x00 },
{ "asm/zcrypt.h", "ZSENDEP11CPRB", _IOC_READ|_IOC_WRITE, 0x7a04, 0x00 },
-{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
{ "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 },
@@ -108,11 +110,6 @@
{ "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 },
{ "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 },
{ "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 },
-{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
-{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
-{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
{ "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
@@ -156,5 +153,3 @@
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
-{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 },
-{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
diff --git a/linux/s390x/ioctls_arch0.h b/linux/s390x/ioctls_arch0.h
index 7004c72e..c544f00d 100644
--- a/linux/s390x/ioctls_arch0.h
+++ b/linux/s390x/ioctls_arch0.h
@@ -50,6 +50,9 @@
{ "asm/tape390.h", "TAPE390_DISPLAY", _IOC_WRITE, 0x6401, 0x11 },
{ "asm/tape390.h", "TAPE390_KEKL_QUERY", _IOC_READ, 0x6405, 0x86 },
{ "asm/tape390.h", "TAPE390_KEKL_SET", _IOC_WRITE, 0x6404, 0x86 },
+{ "asm/vmcp.h", "VMCP_GETCODE", _IOC_READ, 0x1001, 0x04 },
+{ "asm/vmcp.h", "VMCP_GETSIZE", _IOC_READ, 0x1003, 0x04 },
+{ "asm/vmcp.h", "VMCP_SETBUF", _IOC_WRITE, 0x1002, 0x04 },
{ "asm/zcrypt.h", "ICARSACRT", _IOC_READ|_IOC_WRITE, 0x7a06, 0x00 },
{ "asm/zcrypt.h", "ICARSAMODEXPO", _IOC_READ|_IOC_WRITE, 0x7a05, 0x00 },
{ "asm/zcrypt.h", "Z90STAT_CEX2ACOUNT", _IOC_READ, 0x7a4e, 0x04 },
@@ -69,7 +72,6 @@
{ "asm/zcrypt.h", "ZDEVICESTATUS", _IOC_READ|_IOC_WRITE, 0x7a4f, 0x00 },
{ "asm/zcrypt.h", "ZSECSENDCPRB", _IOC_READ|_IOC_WRITE, 0x7a81, 0x00 },
{ "asm/zcrypt.h", "ZSENDEP11CPRB", _IOC_READ|_IOC_WRITE, 0x7a04, 0x00 },
-{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
{ "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 },
@@ -108,11 +110,6 @@
{ "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 },
{ "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 },
{ "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 },
-{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
-{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
-{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
{ "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
@@ -156,5 +153,3 @@
{ "linux/kvm.h", "KVM_TPR_ACCESS_REPORTING", _IOC_READ|_IOC_WRITE, 0xae92, 0x28 },
{ "linux/kvm.h", "KVM_TRANSLATE", _IOC_READ|_IOC_WRITE, 0xae85, 0x18 },
{ "linux/kvm.h", "KVM_UNREGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae68, 0x10 },
-{ "linux/kvm.h", "KVM_X86_GET_MCE_CAP_SUPPORTED", _IOC_READ, 0xae9d, 0x08 },
-{ "linux/kvm.h", "KVM_X86_SETUP_MCE", _IOC_WRITE, 0xae9c, 0x08 },
diff --git a/linux/x32/ioctls_inc0.h b/linux/x32/ioctls_inc0.h
index 70a857df..9d4041bf 100644
--- a/linux/x32/ioctls_inc0.h
+++ b/linux/x32/ioctls_inc0.h
@@ -183,6 +183,9 @@
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_DESTROY", _IOC_READ|_IOC_WRITE, 0x64c0, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_FD_TO_HANDLE", _IOC_READ|_IOC_WRITE, 0x64c2, 0x10 },
{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD", _IOC_READ|_IOC_WRITE, 0x64c1, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_RESET", _IOC_READ|_IOC_WRITE, 0x64c4, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_SIGNAL", _IOC_READ|_IOC_WRITE, 0x64c5, 0x10 },
+{ "drm/drm.h", "DRM_IOCTL_SYNCOBJ_WAIT", _IOC_READ|_IOC_WRITE, 0x64c3, 0x20 },
{ "drm/drm.h", "DRM_IOCTL_UNBLOCK", _IOC_READ|_IOC_WRITE, 0x6413, 0x04 },
{ "drm/drm.h", "DRM_IOCTL_UNLOCK", _IOC_WRITE, 0x642b, 0x08 },
{ "drm/drm.h", "DRM_IOCTL_UPDATE_DRAW", _IOC_WRITE, 0x643f, 0x18 },
@@ -271,7 +274,9 @@
{ "drm/i915_drm.h", "DRM_IOCTL_I915_IRQ_WAIT", _IOC_WRITE, 0x6445, 0x04 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_ATTRS", _IOC_READ|_IOC_WRITE, 0x6468, 0x2c },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_OVERLAY_PUT_IMAGE", _IOC_WRITE, 0x6467, 0x2c },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_ADD_CONFIG", _IOC_WRITE, 0x6477, 0x48 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_OPEN", _IOC_WRITE, 0x6476, 0x10 },
+{ "drm/i915_drm.h", "DRM_IOCTL_I915_PERF_REMOVE_CONFIG", _IOC_WRITE, 0x6478, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_REG_READ", _IOC_READ|_IOC_WRITE, 0x6471, 0x10 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SETPARAM", _IOC_WRITE, 0x6447, 0x08 },
{ "drm/i915_drm.h", "DRM_IOCTL_I915_SET_SPRITE_COLORKEY", _IOC_READ|_IOC_WRITE, 0x646b, 0x14 },
@@ -406,6 +411,7 @@
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_HANG_STATE", _IOC_READ|_IOC_WRITE, 0x6446, 0xa0 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_PARAM", _IOC_READ|_IOC_WRITE, 0x6447, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_GET_TILING", _IOC_READ|_IOC_WRITE, 0x6449, 0x10 },
+{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_LABEL_BO", _IOC_READ|_IOC_WRITE, 0x644a, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_MMAP_BO", _IOC_READ|_IOC_WRITE, 0x6444, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SET_TILING", _IOC_READ|_IOC_WRITE, 0x6448, 0x10 },
{ "drm/vc4_drm.h", "DRM_IOCTL_VC4_SUBMIT_CL", _IOC_READ|_IOC_WRITE, 0x6440, 0xa0 },
@@ -467,6 +473,7 @@
{ "linux/android/binder.h", "BC_REQUEST_DEATH_NOTIFICATION", _IOC_WRITE, 0x630e, 0x0c },
{ "linux/android/binder.h", "BC_TRANSACTION", _IOC_WRITE, 0x6300, 0x40 },
{ "linux/android/binder.h", "BC_TRANSACTION_SG", _IOC_WRITE, 0x6311, 0x48 },
+{ "linux/android/binder.h", "BINDER_GET_NODE_DEBUG_INFO", _IOC_READ|_IOC_WRITE, 0x620b, 0x18 },
{ "linux/android/binder.h", "BINDER_SET_CONTEXT_MGR", _IOC_WRITE, 0x6207, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_PRIORITY", _IOC_WRITE, 0x6206, 0x04 },
{ "linux/android/binder.h", "BINDER_SET_IDLE_TIMEOUT", _IOC_WRITE, 0x6203, 0x08 },
@@ -784,16 +791,13 @@
{ "linux/dvb/ca.h", "CA_RESET", _IOC_NONE, 0x6f80, 0x00 },
{ "linux/dvb/ca.h", "CA_SEND_MSG", _IOC_WRITE, 0x6f85, 0x10c },
{ "linux/dvb/ca.h", "CA_SET_DESCR", _IOC_WRITE, 0x6f86, 0x10 },
-{ "linux/dvb/ca.h", "CA_SET_PID", _IOC_WRITE, 0x6f87, 0x08 },
{ "linux/dvb/dmx.h", "DMX_ADD_PID", _IOC_WRITE, 0x6f33, 0x02 },
-{ "linux/dvb/dmx.h", "DMX_GET_CAPS", _IOC_READ, 0x6f30, 0x08 },
{ "linux/dvb/dmx.h", "DMX_GET_PES_PIDS", _IOC_READ, 0x6f2f, 0x0a },
{ "linux/dvb/dmx.h", "DMX_GET_STC", _IOC_READ|_IOC_WRITE, 0x6f32, 0x10 },
{ "linux/dvb/dmx.h", "DMX_REMOVE_PID", _IOC_WRITE, 0x6f34, 0x02 },
{ "linux/dvb/dmx.h", "DMX_SET_BUFFER_SIZE", _IOC_NONE, 0x6f2d, 0x00 },
{ "linux/dvb/dmx.h", "DMX_SET_FILTER", _IOC_WRITE, 0x6f2b, 0x3c },
{ "linux/dvb/dmx.h", "DMX_SET_PES_FILTER", _IOC_WRITE, 0x6f2c, 0x14 },
-{ "linux/dvb/dmx.h", "DMX_SET_SOURCE", _IOC_WRITE, 0x6f31, 0x04 },
{ "linux/dvb/dmx.h", "DMX_START", _IOC_NONE, 0x6f29, 0x00 },
{ "linux/dvb/dmx.h", "DMX_STOP", _IOC_NONE, 0x6f2a, 0x00 },
{ "linux/dvb/frontend.h", "FE_DISEQC_RECV_SLAVE_REPLY", _IOC_READ, 0x6f40, 0x0c },
@@ -1327,10 +1331,12 @@
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_DESTROY_QUEUE", _IOC_READ|_IOC_WRITE, 0x4b03, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_CLOCK_COUNTERS", _IOC_READ|_IOC_WRITE, 0x4b05, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_PROCESS_APERTURES", _IOC_READ, 0x4b06, 0x190 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_TILE_CONFIG", _IOC_READ|_IOC_WRITE, 0x4b12, 0x28 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_GET_VERSION", _IOC_READ, 0x4b01, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_RESET_EVENT", _IOC_WRITE, 0x4b0b, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_EVENT", _IOC_WRITE, 0x4b0a, 0x08 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_MEMORY_POLICY", _IOC_WRITE, 0x4b04, 0x20 },
+{ "linux/kfd_ioctl.h", "AMDKFD_IOC_SET_SCRATCH_BACKING_VA", _IOC_READ|_IOC_WRITE, 0x4b11, 0x10 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_UPDATE_QUEUE", _IOC_WRITE, 0x4b07, 0x18 },
{ "linux/kfd_ioctl.h", "AMDKFD_IOC_WAIT_EVENTS", _IOC_READ|_IOC_WRITE, 0x4b0c, 0x18 },
{ "linux/lightnvm.h", "NVME_NVM_IOCTL_ADMIN_VIO", _IOC_READ|_IOC_WRITE, 0x4c41, 0x50 },
@@ -1367,6 +1373,7 @@
{ "linux/loop.h", "LOOP_CTL_REMOVE", 0, 0x4C81, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS", 0, 0x4C03, 0 },
{ "linux/loop.h", "LOOP_GET_STATUS64", 0, 0x4C05, 0 },
+{ "linux/loop.h", "LOOP_SET_BLOCK_SIZE", 0, 0x4C09, 0 },
{ "linux/loop.h", "LOOP_SET_CAPACITY", 0, 0x4C07, 0 },
{ "linux/loop.h", "LOOP_SET_DIRECT_IO", 0, 0x4C08, 0 },
{ "linux/loop.h", "LOOP_SET_FD", 0, 0x4C00, 0 },
@@ -2492,6 +2499,7 @@
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT", _IOC_READ|_IOC_WRITE, 0x1b01, 0x1c },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_REGISTER_AGENT2", _IOC_READ|_IOC_WRITE, 0x1b04, 0x28 },
{ "rdma/rdma_user_ioctl.h", "IB_USER_MAD_UNREGISTER_AGENT", _IOC_WRITE, 0x1b02, 0x04 },
+{ "rdma/rdma_user_ioctl.h", "RDMA_VERBS_IOCTL", _IOC_READ|_IOC_WRITE, 0x1b01, 0x10 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_ATTACH", _IOC_READ|_IOC_WRITE, 0xca80, 0x90 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_DETACH", _IOC_READ|_IOC_WRITE, 0xca83, 0x60 },
{ "scsi/cxlflash_ioctl.h", "DK_CXLFLASH_MANAGE_LUN", _IOC_READ|_IOC_WRITE, 0xca86, 0x68 },
diff --git a/linux/x86_64/ioctls_arch0.h b/linux/x86_64/ioctls_arch0.h
index 4b8bbd1e..3e5c7cb2 100644
--- a/linux/x86_64/ioctls_arch0.h
+++ b/linux/x86_64/ioctls_arch0.h
@@ -14,7 +14,6 @@
{ "asm/mtrr.h", "MTRRIOC_KILL_PAGE_ENTRY", _IOC_WRITE, 0x4d09, 0x10 },
{ "asm/mtrr.h", "MTRRIOC_SET_ENTRY", _IOC_WRITE, 0x4d01, 0x10 },
{ "asm/mtrr.h", "MTRRIOC_SET_PAGE_ENTRY", _IOC_WRITE, 0x4d06, 0x10 },
-{ "linux/kvm.h", "KVM_ARM_SET_DEVICE_ADDR", _IOC_WRITE, 0xaeab, 0x10 },
{ "linux/kvm.h", "KVM_ASSIGN_DEV_IRQ", _IOC_WRITE, 0xae70, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_PCI_DEVICE", _IOC_READ, 0xae69, 0x40 },
{ "linux/kvm.h", "KVM_ASSIGN_SET_INTX_MASK", _IOC_WRITE, 0xaea4, 0x40 },
@@ -65,30 +64,9 @@
{ "linux/kvm.h", "KVM_IRQ_LINE_STATUS", _IOC_READ|_IOC_WRITE, 0xae67, 0x08 },
{ "linux/kvm.h", "KVM_KVMCLOCK_CTRL", _IOC_NONE, 0xaead, 0x00 },
{ "linux/kvm.h", "KVM_NMI", _IOC_NONE, 0xae9a, 0x00 },
-{ "linux/kvm.h", "KVM_PPC_ALLOCATE_HTAB", _IOC_READ|_IOC_WRITE, 0xaea7, 0x04 },
-{ "linux/kvm.h", "KVM_PPC_GET_PVINFO", _IOC_WRITE, 0xaea1, 0x80 },
-{ "linux/kvm.h", "KVM_PPC_GET_SMMU_INFO", _IOC_READ, 0xaea6, 0x250 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_COMMIT", _IOC_READ, 0xaeae, 0x10 },
-{ "linux/kvm.h", "KVM_PPC_RESIZE_HPT_PREPARE", _IOC_READ, 0xaead, 0x10 },
{ "linux/kvm.h", "KVM_REGISTER_COALESCED_MMIO", _IOC_WRITE, 0xae67, 0x10 },
{ "linux/kvm.h", "KVM_REINJECT_CONTROL", _IOC_NONE, 0xae71, 0x00 },
{ "linux/kvm.h", "KVM_RUN", _IOC_NONE, 0xae80, 0x00 },
-{ "linux/kvm.h", "KVM_S390_ENABLE_SIE", _IOC_NONE, 0xae06, 0x00 },
-{ "linux/kvm.h", "KVM_S390_GET_CMMA_BITS", _IOC_READ|_IOC_WRITE, 0xaeb8, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_IRQ_STATE", _IOC_WRITE, 0xaeb6, 0x20 },
-{ "linux/kvm.h", "KVM_S390_GET_SKEYS", _IOC_WRITE, 0xaeb2, 0x40 },
-{ "linux/kvm.h", "KVM_S390_INITIAL_RESET", _IOC_NONE, 0xae97, 0x00 },
-{ "linux/kvm.h", "KVM_S390_INTERRUPT", _IOC_WRITE, 0xae94, 0x10 },
-{ "linux/kvm.h", "KVM_S390_IRQ", _IOC_WRITE, 0xaeb4, 0x48 },
-{ "linux/kvm.h", "KVM_S390_MEM_OP", _IOC_WRITE, 0xaeb1, 0x40 },
-{ "linux/kvm.h", "KVM_S390_SET_CMMA_BITS", _IOC_WRITE, 0xaeb9, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_INITIAL_PSW", _IOC_WRITE, 0xae96, 0x10 },
-{ "linux/kvm.h", "KVM_S390_SET_IRQ_STATE", _IOC_WRITE, 0xaeb5, 0x20 },
-{ "linux/kvm.h", "KVM_S390_SET_SKEYS", _IOC_WRITE, 0xaeb3, 0x40 },
-{ "linux/kvm.h", "KVM_S390_STORE_STATUS", _IOC_WRITE, 0xae95, 0x08 },
-{ "linux/kvm.h", "KVM_S390_UCAS_MAP", _IOC_WRITE, 0xae50, 0x18 },
-{ "linux/kvm.h", "KVM_S390_UCAS_UNMAP", _IOC_WRITE, 0xae51, 0x18 },
-{ "linux/kvm.h", "KVM_S390_VCPU_FAULT", _IOC_WRITE, 0xae52, 0x08 },
{ "linux/kvm.h", "KVM_SET_BOOT_CPU_ID", _IOC_NONE, 0xae78, 0x00 },
{ "linux/kvm.h", "KVM_SET_CLOCK", _IOC_WRITE, 0xae7b, 0x30 },
{ "linux/kvm.h", "KVM_SET_CPUID", _IOC_WRITE, 0xae8a, 0x08 },
diff --git a/loop.c b/loop.c
index 4811dc00..33bd0385 100644
--- a/loop.c
+++ b/loop.c
@@ -189,6 +189,7 @@ MPERS_PRINTER_DECL(int, loop_ioctl,
break;
case LOOP_SET_DIRECT_IO:
+ case LOOP_SET_BLOCK_SIZE:
tprintf(", %" PRI_klu, arg);
break;
diff --git a/m4/mpers.m4 b/m4/mpers.m4
index 277a3841..12446826 100644
--- a/m4/mpers.m4
+++ b/m4/mpers.m4
@@ -1,6 +1,6 @@
#!/usr/bin/m4
#
-# Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+# Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
# Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
# All rights reserved.
#
@@ -126,6 +126,23 @@ case "$arch" in
[Define to 1 if you have CFLAG mpers support])
st_MPERS_STRUCT_STAT([])
st_MPERS_STRUCT_STAT([64])
+
+ if test $st_cv_runtime = yes; then
+ pushdef([SIZEOF_LONG],
+ MPERS_NAME[_SIZEOF_LONG])
+ st_MPERS_LOAD_AC_CV([sizeof_long])
+ AC_CHECK_SIZEOF([long])
+ st_MPERS_SAVE_AC_CV([sizeof_long])
+ popdef([SIZEOF_LONG])
+
+ pushdef([SIZEOF_KERNEL_LONG_T],
+ MPERS_NAME[_SIZEOF_KERNEL_LONG_T])
+ st_MPERS_LOAD_AC_CV([sizeof_kernel_long_t])
+ AC_CHECK_SIZEOF([kernel_long_t],,
+ [#include "$srcdir/kernel_types.h"])
+ st_MPERS_SAVE_AC_CV([sizeof_kernel_long_t])
+ popdef([SIZEOF_KERNEL_LONG_T])
+ fi
fi
fi
CFLAGS="$saved_CFLAGS"
diff --git a/macros.h b/macros.h
index a4641349..222a852d 100644
--- a/macros.h
+++ b/macros.h
@@ -35,6 +35,14 @@
#define STRINGIFY(...) #__VA_ARGS__
#define STRINGIFY_VAL(...) STRINGIFY(__VA_ARGS__)
+#ifndef MAX
+# define MAX(a, b) (((a) > (b)) ? (a) : (b))
+#endif
+#ifndef MIN
+# define MIN(a, b) (((a) < (b)) ? (a) : (b))
+#endif
+#define CLAMP(val, min, max) MIN(MAX(min, val), max)
+
#ifndef offsetofend
# define offsetofend(type_, member_) \
(offsetof(type_, member_) + sizeof(((type_ *)0)->member_))
diff --git a/netlink.c b/netlink.c
index ab40b142..6b9a1f5c 100644
--- a/netlink.c
+++ b/netlink.c
@@ -34,11 +34,23 @@
#include <linux/rtnetlink.h>
#include <linux/xfrm.h>
#include "xlat/netlink_ack_flags.h"
+#include "xlat/netlink_delete_flags.h"
#include "xlat/netlink_flags.h"
#include "xlat/netlink_get_flags.h"
#include "xlat/netlink_new_flags.h"
#include "xlat/netlink_protocols.h"
#include "xlat/netlink_types.h"
+#include "xlat/nf_acct_msg_types.h"
+#include "xlat/nf_cthelper_msg_types.h"
+#include "xlat/nf_ctnetlink_exp_msg_types.h"
+#include "xlat/nf_ctnetlink_msg_types.h"
+#include "xlat/nf_cttimeout_msg_types.h"
+#include "xlat/nf_ipset_msg_types.h"
+#include "xlat/nf_nft_compat_msg_types.h"
+#include "xlat/nf_nftables_msg_types.h"
+#include "xlat/nf_osf_msg_types.h"
+#include "xlat/nf_queue_msg_types.h"
+#include "xlat/nf_ulog_msg_types.h"
#include "xlat/nl_audit_types.h"
#include "xlat/nl_crypto_types.h"
#include "xlat/nl_netfilter_msg_types.h"
@@ -110,6 +122,38 @@ decode_nlmsg_type_generic(const struct xlat *const xlat,
printxval(genl_families_xlat(), type, dflt);
}
+static const struct {
+ const struct xlat *const xlat;
+ const char *const dflt;
+} nf_nlmsg_types[] = {
+ [NFNL_SUBSYS_CTNETLINK] = {
+ nf_ctnetlink_msg_types,
+ "IPCTNL_MSG_CT_???"
+ },
+ [NFNL_SUBSYS_CTNETLINK_EXP] = {
+ nf_ctnetlink_exp_msg_types,
+ "IPCTNL_MSG_EXP_???"
+ },
+ [NFNL_SUBSYS_QUEUE] = { nf_queue_msg_types, "NFQNL_MSG_???" },
+ [NFNL_SUBSYS_ULOG] = { nf_ulog_msg_types, "NFULNL_MSG_???" },
+ [NFNL_SUBSYS_OSF] = { nf_osf_msg_types, "OSF_MSG_???" },
+ [NFNL_SUBSYS_IPSET] = { nf_ipset_msg_types, "IPSET_CMD_???" },
+ [NFNL_SUBSYS_ACCT] = { nf_acct_msg_types, "NFNL_MSG_ACCT_???" },
+ [NFNL_SUBSYS_CTNETLINK_TIMEOUT] = {
+ nf_cttimeout_msg_types,
+ "IPCTNL_MSG_TIMEOUT_???"
+ },
+ [NFNL_SUBSYS_CTHELPER] = {
+ nf_cthelper_msg_types,
+ "NFNL_MSG_CTHELPER_???"
+ },
+ [NFNL_SUBSYS_NFTABLES] = { nf_nftables_msg_types, "NFT_MSG_???" },
+ [NFNL_SUBSYS_NFT_COMPAT] = {
+ nf_nft_compat_msg_types,
+ "NFNL_MSG_COMPAT_???"
+ }
+};
+
static void
decode_nlmsg_type_netfilter(const struct xlat *const xlat,
const uint16_t type,
@@ -131,11 +175,12 @@ decode_nlmsg_type_netfilter(const struct xlat *const xlat,
printxval(xlat, subsys_id, dflt);
- /*
- * The type is subsystem specific,
- * print it in numeric format for now.
- */
- tprintf("<<8|%#x", msg_type);
+ tprints("<<8|");
+ if (subsys_id < ARRAY_SIZE(nf_nlmsg_types))
+ printxval(nf_nlmsg_types[subsys_id].xlat,
+ msg_type, nf_nlmsg_types[subsys_id].dflt);
+ else
+ tprintf("%#x", msg_type);
}
typedef void (*nlmsg_types_decoder_t)(const struct xlat *,
@@ -192,67 +237,199 @@ decode_nlmsg_type(const uint16_t type, const unsigned int family)
decoder(xlat, type, dflt);
}
-static void
-decode_nlmsg_flags(const uint16_t flags, const uint16_t type, const int family)
+static const struct xlat *
+decode_nlmsg_flags_crypto(const uint16_t type)
{
- const struct xlat *table = NULL;
-
- if (type < NLMSG_MIN_TYPE) {
- if (type == NLMSG_ERROR)
- table = netlink_ack_flags;
- goto end;
+ switch (type) {
+ case CRYPTO_MSG_NEWALG:
+ return netlink_new_flags;
+ case CRYPTO_MSG_DELALG:
+ case CRYPTO_MSG_DELRNG:
+ return netlink_delete_flags;
+ case CRYPTO_MSG_GETALG:
+ return netlink_get_flags;
}
- switch (family) {
- case NETLINK_CRYPTO:
- switch (type) {
- case CRYPTO_MSG_NEWALG:
- table = netlink_new_flags;
- break;
- case CRYPTO_MSG_GETALG:
- table = netlink_get_flags;
- break;
+ return NULL;
+}
+
+static const struct xlat *
+decode_nlmsg_flags_netfilter(const uint16_t type)
+{
+ const uint8_t subsys_id = (uint8_t) (type >> 8);
+ const uint8_t msg_type = (uint8_t) type;
+
+ switch (subsys_id) {
+ case NFNL_SUBSYS_CTNETLINK:
+ switch (msg_type) {
+ case IPCTNL_MSG_CT_NEW:
+ return netlink_new_flags;
+ case IPCTNL_MSG_CT_GET:
+ case IPCTNL_MSG_CT_GET_CTRZERO:
+ case IPCTNL_MSG_CT_GET_STATS_CPU:
+ case IPCTNL_MSG_CT_GET_STATS:
+ case IPCTNL_MSG_CT_GET_DYING:
+ case IPCTNL_MSG_CT_GET_UNCONFIRMED:
+ return netlink_get_flags;
+ case IPCTNL_MSG_CT_DELETE:
+ return netlink_delete_flags;
}
break;
- case NETLINK_SOCK_DIAG:
- table = netlink_get_flags;
+ case NFNL_SUBSYS_CTNETLINK_EXP:
+ switch (msg_type) {
+ case IPCTNL_MSG_EXP_NEW:
+ return netlink_new_flags;
+ case IPCTNL_MSG_EXP_GET:
+ case IPCTNL_MSG_EXP_GET_STATS_CPU:
+ return netlink_get_flags;
+ case IPCTNL_MSG_EXP_DELETE:
+ return netlink_delete_flags;
+ }
break;
- case NETLINK_ROUTE:
- if (type == RTM_DELACTION) {
- table = netlink_get_flags;
- break;
+ case NFNL_SUBSYS_ACCT:
+ switch (msg_type) {
+ case NFNL_MSG_ACCT_NEW:
+ return netlink_new_flags;
+ case NFNL_MSG_ACCT_GET:
+ case NFNL_MSG_ACCT_GET_CTRZERO:
+ return netlink_get_flags;
+ case NFNL_MSG_ACCT_DEL:
+ return netlink_delete_flags;
}
- switch (type & 3) {
- case 0:
- table = netlink_new_flags;
- break;
- case 2:
- table = netlink_get_flags;
- break;
+ break;
+ case NFNL_SUBSYS_CTNETLINK_TIMEOUT:
+ switch (msg_type) {
+ case IPCTNL_MSG_TIMEOUT_NEW:
+ return netlink_new_flags;
+ case IPCTNL_MSG_TIMEOUT_GET:
+ return netlink_get_flags;
+ case IPCTNL_MSG_TIMEOUT_DELETE:
+ return netlink_delete_flags;
}
break;
- case NETLINK_XFRM:
- switch (type) {
- case XFRM_MSG_NEWSA:
- case XFRM_MSG_NEWPOLICY:
- case XFRM_MSG_NEWAE:
- case XFRM_MSG_NEWSADINFO:
- case XFRM_MSG_NEWSPDINFO:
- table = netlink_new_flags;
- break;
-
- case XFRM_MSG_GETSA:
- case XFRM_MSG_GETPOLICY:
- case XFRM_MSG_GETAE:
- case XFRM_MSG_GETSADINFO:
- case XFRM_MSG_GETSPDINFO:
- table = netlink_get_flags;
- break;
+ case NFNL_SUBSYS_CTHELPER:
+ switch (msg_type) {
+ case NFNL_MSG_CTHELPER_NEW:
+ return netlink_new_flags;
+ case NFNL_MSG_CTHELPER_GET:
+ return netlink_get_flags;
+ case NFNL_MSG_CTHELPER_DEL:
+ return netlink_delete_flags;
}
break;
+ case NFNL_SUBSYS_NFTABLES:
+ switch (msg_type) {
+ case NFT_MSG_NEWTABLE:
+ case NFT_MSG_NEWCHAIN:
+ case NFT_MSG_NEWRULE:
+ case NFT_MSG_NEWSET:
+ case NFT_MSG_NEWSETELEM:
+ case NFT_MSG_NEWGEN:
+ case NFT_MSG_NEWOBJ:
+ return netlink_new_flags;
+ case NFT_MSG_GETTABLE:
+ case NFT_MSG_GETCHAIN:
+ case NFT_MSG_GETRULE:
+ case NFT_MSG_GETSET:
+ case NFT_MSG_GETSETELEM:
+ case NFT_MSG_GETGEN:
+ case NFT_MSG_GETOBJ:
+ case NFT_MSG_GETOBJ_RESET:
+ return netlink_get_flags;
+ case NFT_MSG_DELTABLE:
+ case NFT_MSG_DELCHAIN:
+ case NFT_MSG_DELRULE:
+ case NFT_MSG_DELSET:
+ case NFT_MSG_DELSETELEM:
+ case NFT_MSG_DELOBJ:
+ return netlink_delete_flags;
+ }
+ break;
+ case NFNL_SUBSYS_NFT_COMPAT:
+ switch (msg_type) {
+ case NFNL_MSG_COMPAT_GET:
+ return netlink_get_flags;
+ }
+ break;
+ }
+
+ return NULL;
+}
+
+static const struct xlat *
+decode_nlmsg_flags_route(const uint16_t type)
+{
+ /* RTM_DELACTION uses NLM_F_ROOT flags */
+ if (type == RTM_DELACTION)
+ return netlink_get_flags;
+ switch (type & 3) {
+ case 0:
+ return netlink_new_flags;
+ case 1:
+ return netlink_delete_flags;
+ case 2:
+ return netlink_get_flags;
+ }
+
+ return NULL;
+}
+
+static const struct xlat *
+decode_nlmsg_flags_sock_diag(const uint16_t type)
+{
+ return netlink_get_flags;
+}
+
+static const struct xlat *
+decode_nlmsg_flags_xfrm(const uint16_t type)
+{
+ switch (type) {
+ case XFRM_MSG_NEWSA:
+ case XFRM_MSG_NEWPOLICY:
+ case XFRM_MSG_NEWAE:
+ case XFRM_MSG_NEWSADINFO:
+ case XFRM_MSG_NEWSPDINFO:
+ return netlink_new_flags;
+ case XFRM_MSG_DELSA:
+ case XFRM_MSG_DELPOLICY:
+ return netlink_delete_flags;
+ case XFRM_MSG_GETSA:
+ case XFRM_MSG_GETPOLICY:
+ case XFRM_MSG_GETAE:
+ case XFRM_MSG_GETSADINFO:
+ case XFRM_MSG_GETSPDINFO:
+ return netlink_get_flags;
}
-end:
+ return NULL;
+}
+
+typedef const struct xlat *(*nlmsg_flags_decoder_t)(const uint16_t type);
+
+static const nlmsg_flags_decoder_t nlmsg_flags[] = {
+ [NETLINK_CRYPTO] = decode_nlmsg_flags_crypto,
+ [NETLINK_NETFILTER] = decode_nlmsg_flags_netfilter,
+ [NETLINK_ROUTE] = decode_nlmsg_flags_route,
+ [NETLINK_SOCK_DIAG] = decode_nlmsg_flags_sock_diag,
+ [NETLINK_XFRM] = decode_nlmsg_flags_xfrm
+};
+
+/*
+ * As all valid netlink families are positive integers, use unsigned int
+ * for family here to filter out -1.
+ */
+static void
+decode_nlmsg_flags(const uint16_t flags, const uint16_t type,
+ const unsigned int family)
+{
+ const struct xlat *table = NULL;
+
+ if (type < NLMSG_MIN_TYPE) {
+ if (type == NLMSG_ERROR)
+ table = netlink_ack_flags;
+ } else if (family < ARRAY_SIZE(nlmsg_flags) && nlmsg_flags[family])
+ table = nlmsg_flags[family](type);
+
printflags_ex(flags, "NLM_F_???", netlink_flags, table, NULL);
}
diff --git a/netlink.h b/netlink.h
index 31b7876b..42e7802e 100644
--- a/netlink.h
+++ b/netlink.h
@@ -36,6 +36,9 @@
# define NETLINK_SOCK_DIAG 4
#endif
+#ifndef NLM_F_NONREC
+# define NLM_F_NONREC 0x100
+#endif
#ifndef NLM_F_CAPPED
# define NLM_F_CAPPED 0x100
#endif
diff --git a/netlink_inet_diag.c b/netlink_inet_diag.c
index 700cbd3b..cffe3f5a 100644
--- a/netlink_inet_diag.c
+++ b/netlink_inet_diag.c
@@ -388,7 +388,8 @@ static const nla_decoder_t inet_diag_msg_nla_decoders[] = {
[INET_DIAG_PEERS] = NULL, /* unimplemented */
[INET_DIAG_PAD] = NULL,
[INET_DIAG_MARK] = decode_nla_u32,
- [INET_DIAG_BBRINFO] = decode_tcp_bbr_info
+ [INET_DIAG_BBRINFO] = decode_tcp_bbr_info,
+ [INET_DIAG_CLASS_ID] = decode_nla_u32
};
DECL_NETLINK_DIAG_DECODER(decode_inet_diag_msg)
diff --git a/nlattr.h b/nlattr.h
index 6e7d1a7b..323f1d6b 100644
--- a/nlattr.h
+++ b/nlattr.h
@@ -63,5 +63,6 @@ DECL_NLA(strn);
DECL_NLA(ifindex);
DECL_NLA(meminfo);
DECL_NLA(rt_class);
+DECL_NLA(tc_stats);
#endif /* !STRACE_NLATTR_H */
diff --git a/rtnl_mdb.c b/rtnl_mdb.c
index ebe737dc..30c3473e 100644
--- a/rtnl_mdb.c
+++ b/rtnl_mdb.c
@@ -39,7 +39,169 @@
# include <linux/if_bridge.h>
# include "netlink.h"
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+# include "xlat/mdb_flags.h"
+# endif
+# include "xlat/mdb_states.h"
+# include "xlat/multicast_router_types.h"
# include "xlat/rtnl_mdb_attrs.h"
+# include "xlat/rtnl_mdba_mdb_attrs.h"
+# include "xlat/rtnl_mdba_mdb_eattr_attrs.h"
+# include "xlat/rtnl_mdba_mdb_entry_attrs.h"
+# include "xlat/rtnl_mdba_router_attrs.h"
+# include "xlat/rtnl_mdba_router_pattr_attrs.h"
+
+static const nla_decoder_t mdba_mdb_eattr_nla_decoders[] = {
+ [MDBA_MDB_EATTR_TIMER] = decode_nla_u32
+};
+
+static bool
+decode_mdba_mdb_entry_info(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY
+ struct br_mdb_entry entry;
+
+ if (len < sizeof(entry))
+ return false;
+ else if (!umove_or_printaddr(tcp, addr, &entry)) {
+ PRINT_FIELD_IFINDEX("{", entry, ifindex);
+ PRINT_FIELD_XVAL(", ", entry, state, mdb_states, "MDB_???");
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ PRINT_FIELD_FLAGS(", ", entry, flags,
+ mdb_flags, "MDB_FLAGS_???");
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ PRINT_FIELD_U(", ", entry, vid);
+# endif
+
+ const int proto = ntohs(entry.addr.proto);
+
+ tprints(", addr={");
+ print_inet_addr(proto, &entry.addr.u,
+ sizeof(entry.addr.u), "u");
+ tprints(", proto=htons(");
+ printxval(addrfams, proto, "AF_???");
+ tprints(")}}");
+ }
+
+ const size_t offset = NLMSG_ALIGN(sizeof(entry));
+ if (len > offset) {
+ tprints(", ");
+ decode_nlattr(tcp, addr + offset, len - offset,
+ rtnl_mdba_mdb_eattr_attrs, "MDBA_MDB_EATTR_???",
+ mdba_mdb_eattr_nla_decoders,
+ ARRAY_SIZE(mdba_mdb_eattr_nla_decoders), NULL);
+ }
+
+ return true;
+# else
+ return false;
+# endif /* HAVE_STRUCT_BR_MDB_ENTRY */
+}
+
+static const nla_decoder_t mdba_mdb_entry_nla_decoders[] = {
+ [MDBA_MDB_ENTRY_INFO] = decode_mdba_mdb_entry_info
+};
+
+static bool
+decode_mdba_mdb_entry(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ decode_nlattr(tcp, addr, len, rtnl_mdba_mdb_entry_attrs,
+ "MDBA_MDB_ENTRY_???", mdba_mdb_entry_nla_decoders,
+ ARRAY_SIZE(mdba_mdb_entry_nla_decoders), NULL);
+
+ return true;
+}
+
+static const nla_decoder_t mdba_mdb_nla_decoders[] = {
+ [MDBA_MDB_ENTRY] = decode_mdba_mdb_entry
+};
+
+static bool
+decode_mdba_mdb(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ decode_nlattr(tcp, addr, len, rtnl_mdba_mdb_attrs, "MDBA_MDB_???",
+ mdba_mdb_nla_decoders,
+ ARRAY_SIZE(mdba_mdb_nla_decoders), NULL);
+
+ return true;
+}
+
+static bool
+decode_multicast_router_type(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ uint8_t type;
+
+ if (!umove_or_printaddr(tcp, addr, &type))
+ printxval(multicast_router_types, type, "MDB_RTR_TYPE_???");
+
+ return true;
+}
+
+static const nla_decoder_t mdba_router_pattr_nla_decoders[] = {
+ [MDBA_ROUTER_PATTR_TIMER] = decode_nla_u32,
+ [MDBA_ROUTER_PATTR_TYPE] = decode_multicast_router_type
+};
+
+static bool
+decode_mdba_router_port(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ uint32_t ifindex;
+
+ if (len < sizeof(ifindex))
+ return false;
+ else if (!umove_or_printaddr(tcp, addr, &ifindex))
+ print_ifindex(ifindex);
+
+ const size_t offset = NLMSG_ALIGN(sizeof(ifindex));
+ if (len > offset) {
+ tprints(", ");
+ decode_nlattr(tcp, addr + offset, len - offset,
+ rtnl_mdba_router_pattr_attrs,
+ "MDBA_ROUTER_PATTR_???",
+ mdba_router_pattr_nla_decoders,
+ ARRAY_SIZE(mdba_router_pattr_nla_decoders), NULL);
+ }
+
+ return true;
+}
+
+static const nla_decoder_t mdba_router_nla_decoders[] = {
+ [MDBA_ROUTER_PORT] = decode_mdba_router_port
+};
+
+static bool
+decode_mdba_router(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ decode_nlattr(tcp, addr, len, rtnl_mdba_router_attrs, "MDBA_ROUTER_???",
+ mdba_router_nla_decoders,
+ ARRAY_SIZE(mdba_router_nla_decoders), NULL);
+
+ return true;
+}
+
+static const nla_decoder_t br_port_msg_nla_decoders[] = {
+ [MDBA_MDB] = decode_mdba_mdb,
+ [MDBA_ROUTER] = decode_mdba_router
+};
DECL_NETLINK_ROUTE_DECODER(decode_br_port_msg)
{
@@ -65,7 +227,9 @@ DECL_NETLINK_ROUTE_DECODER(decode_br_port_msg)
if (decode_nla && len > offset) {
tprints(", ");
decode_nlattr(tcp, addr + offset, len - offset,
- rtnl_mdb_attrs, "MDBA_???", NULL, 0, NULL);
+ rtnl_mdb_attrs, "MDBA_???",
+ br_port_msg_nla_decoders,
+ ARRAY_SIZE(br_port_msg_nla_decoders), NULL);
}
}
diff --git a/rtnl_tc.c b/rtnl_tc.c
index 74d9df2a..e1bda754 100644
--- a/rtnl_tc.c
+++ b/rtnl_tc.c
@@ -33,9 +33,268 @@
#include "print_fields.h"
#include "netlink.h"
+#ifdef HAVE_STRUCT_GNET_STATS_BASIC
+# include <linux/gen_stats.h>
+#endif
+#include <linux/pkt_sched.h>
#include <linux/rtnetlink.h>
#include "xlat/rtnl_tc_attrs.h"
+#include "xlat/rtnl_tca_stab_attrs.h"
+#include "xlat/rtnl_tca_stats_attrs.h"
+
+static bool
+decode_tc_stats(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ struct tc_stats st;
+ const unsigned int sizeof_tc_stats =
+ offsetofend(struct tc_stats, backlog);
+
+ if (len < sizeof_tc_stats)
+ return false;
+ else if (!umoven_or_printaddr(tcp, addr, sizeof_tc_stats, &st)) {
+ PRINT_FIELD_U("{", st, bytes);
+ PRINT_FIELD_U(", ", st, packets);
+ PRINT_FIELD_U(", ", st, drops);
+ PRINT_FIELD_U(", ", st, overlimits);
+ PRINT_FIELD_U(", ", st, bps);
+ PRINT_FIELD_U(", ", st, pps);
+ PRINT_FIELD_U(", ", st, qlen);
+ PRINT_FIELD_U(", ", st, backlog);
+ tprints("}");
+ }
+
+ return true;
+}
+
+static bool
+decode_tc_estimator(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ struct tc_estimator est;
+
+ if (len < sizeof(est))
+ return false;
+ else if (!umove_or_printaddr(tcp, addr, &est)) {
+ PRINT_FIELD_D("{", est, interval);
+ PRINT_FIELD_U(", ", est, ewma_log);
+ tprints("}");
+ }
+
+ return true;
+}
+
+static bool
+decode_gnet_stats_basic(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+#ifdef HAVE_STRUCT_GNET_STATS_BASIC
+ struct gnet_stats_basic sb;
+ const unsigned int sizeof_st_basic =
+ offsetofend(struct gnet_stats_basic, packets);
+
+ if (len < sizeof_st_basic)
+ return false;
+ else if (!umoven_or_printaddr(tcp, addr, sizeof_st_basic, &sb)) {
+ PRINT_FIELD_U("{", sb, bytes);
+ PRINT_FIELD_U(", ", sb, packets);
+ tprints("}");
+ }
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool
+decode_gnet_stats_rate_est(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST
+ struct gnet_stats_rate_est est;
+
+ if (len < sizeof(est))
+ return false;
+ else if (!umove_or_printaddr(tcp, addr, &est)) {
+ PRINT_FIELD_U("{", est, bps);
+ PRINT_FIELD_U(", ", est, pps);
+ tprints("}");
+ }
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool
+decode_gnet_stats_queue(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+#ifdef HAVE_STRUCT_GNET_STATS_QUEUE
+ struct gnet_stats_queue qstats;
+
+ if (len < sizeof(qstats))
+ return false;
+ else if (!umove_or_printaddr(tcp, addr, &qstats)) {
+ PRINT_FIELD_U("{", qstats, qlen);
+ PRINT_FIELD_U(", ", qstats, backlog);
+ PRINT_FIELD_U(", ", qstats, drops);
+ PRINT_FIELD_U(", ", qstats, requeues);
+ PRINT_FIELD_U(", ", qstats, overlimits);
+ tprints("}");
+ }
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool
+decode_gnet_stats_rate_est64(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64
+ struct gnet_stats_rate_est64 est;
+
+ if (len < sizeof(est))
+ return false;
+ else if (!umove_or_printaddr(tcp, addr, &est)) {
+ PRINT_FIELD_U("{", est, bps);
+ PRINT_FIELD_U(", ", est, pps);
+ tprints("}");
+ }
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+static const nla_decoder_t tca_stats_nla_decoders[] = {
+ [TCA_STATS_BASIC] = decode_gnet_stats_basic,
+ [TCA_STATS_RATE_EST] = decode_gnet_stats_rate_est,
+ [TCA_STATS_QUEUE] = decode_gnet_stats_queue,
+ [TCA_STATS_APP] = NULL, /* unimplemented */
+ [TCA_STATS_RATE_EST64] = decode_gnet_stats_rate_est64,
+ [TCA_STATS_PAD] = NULL,
+};
+
+bool
+decode_nla_tc_stats(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ decode_nlattr(tcp, addr, len, rtnl_tca_stats_attrs, "TCA_STATS_???",
+ tca_stats_nla_decoders,
+ ARRAY_SIZE(tca_stats_nla_decoders), opaque_data);
+
+ return true;
+}
+
+static bool
+decode_tc_sizespec(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+#ifdef HAVE_STRUCT_TC_SIZESPEC
+ struct tc_sizespec s;
+
+ if (len < sizeof(s))
+ return false;
+ else if (!umove_or_printaddr(tcp, addr, &s)) {
+ PRINT_FIELD_U("{", s, cell_log);
+ PRINT_FIELD_U(", ", s, size_log);
+ PRINT_FIELD_D(", ", s, cell_align);
+ PRINT_FIELD_D(", ", s, overhead);
+ PRINT_FIELD_U(", ", s, linklayer);
+ PRINT_FIELD_U(", ", s, mpu);
+ PRINT_FIELD_U(", ", s, mtu);
+ PRINT_FIELD_U(", ", s, tsize);
+ tprints("}");
+ }
+
+ return true;
+#else
+ return false;
+#endif
+}
+
+static bool
+print_stab_data(struct tcb *const tcp, void *const elem_buf,
+ const size_t elem_size, void *const opaque_data)
+{
+ tprintf("%" PRIu16, *(uint16_t *) elem_buf);
+
+ return true;
+}
+
+static bool
+decode_tca_stab_data(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ uint16_t data;
+ const size_t nmemb = len / sizeof(data);
+
+ if (!nmemb)
+ return false;
+
+ print_array(tcp, addr, nmemb, &data, sizeof(data),
+ umoven_or_printaddr, print_stab_data, NULL);
+
+ return true;
+}
+
+static const nla_decoder_t tca_stab_nla_decoders[] = {
+ [TCA_STAB_BASE] = decode_tc_sizespec,
+ [TCA_STAB_DATA] = decode_tca_stab_data
+};
+
+static bool
+decode_tca_stab(struct tcb *const tcp,
+ const kernel_ulong_t addr,
+ const unsigned int len,
+ const void *const opaque_data)
+{
+ decode_nlattr(tcp, addr, len, rtnl_tca_stab_attrs, "TCA_STAB_???",
+ tca_stab_nla_decoders,
+ ARRAY_SIZE(tca_stab_nla_decoders), opaque_data);
+
+ return true;
+}
+
+static const nla_decoder_t tcmsg_nla_decoders[] = {
+ [TCA_KIND] = decode_nla_str,
+ [TCA_OPTIONS] = NULL, /* unimplemented */
+ [TCA_STATS] = decode_tc_stats,
+ [TCA_XSTATS] = NULL, /* unimplemented */
+ [TCA_RATE] = decode_tc_estimator,
+ [TCA_FCNT] = decode_nla_u32,
+ [TCA_STATS2] = decode_nla_tc_stats,
+ [TCA_STAB] = decode_tca_stab,
+ [TCA_PAD] = NULL,
+ [TCA_DUMP_INVISIBLE] = NULL,
+ [TCA_CHAIN] = decode_nla_u32
+};
DECL_NETLINK_ROUTE_DECODER(decode_tcmsg)
{
@@ -64,6 +323,7 @@ DECL_NETLINK_ROUTE_DECODER(decode_tcmsg)
if (decode_nla && len > offset) {
tprints(", ");
decode_nlattr(tcp, addr + offset, len - offset,
- rtnl_tc_attrs, "TCA_???", NULL, 0, NULL);
+ rtnl_tc_attrs, "TCA_???", tcmsg_nla_decoders,
+ ARRAY_SIZE(tcmsg_nla_decoders), NULL);
}
}
diff --git a/rtnl_tc_action.c b/rtnl_tc_action.c
index ca0b72be..499c69ac 100644
--- a/rtnl_tc_action.c
+++ b/rtnl_tc_action.c
@@ -37,6 +37,15 @@
#include "xlat/rtnl_tc_action_attrs.h"
+static const nla_decoder_t tcamsg_nla_decoders[] = {
+ [TCA_ACT_KIND] = decode_nla_str,
+ [TCA_ACT_OPTIONS] = NULL, /* unimplemented */
+ [TCA_ACT_INDEX] = decode_nla_u32,
+ [TCA_ACT_STATS] = decode_nla_tc_stats,
+ [TCA_ACT_PAD] = NULL,
+ [TCA_ACT_COOKIE] = NULL /* default parser */
+};
+
DECL_NETLINK_ROUTE_DECODER(decode_tcamsg)
{
struct tcamsg tca = { .tca_family = family };
@@ -49,6 +58,7 @@ DECL_NETLINK_ROUTE_DECODER(decode_tcamsg)
tprints(", ");
decode_nlattr(tcp, addr + offset, len - offset,
rtnl_tc_action_attrs, "TCA_ACT_???",
- NULL, 0, NULL);
+ tcamsg_nla_decoders,
+ ARRAY_SIZE(tcamsg_nla_decoders), NULL);
}
}
diff --git a/seccomp.c b/seccomp.c
index 6c190844..99597d04 100644
--- a/seccomp.c
+++ b/seccomp.c
@@ -33,29 +33,37 @@
#include "xlat/seccomp_ops.h"
#include "xlat/seccomp_filter_flags.h"
-static void
-decode_seccomp_set_mode_strict(const unsigned int flags,
- const kernel_ulong_t addr)
-{
- tprintf("%u, ", flags);
- printaddr(addr);
-}
-
SYS_FUNC(seccomp)
{
unsigned int op = tcp->u_arg[0];
+ unsigned int flags = tcp->u_arg[1];
+ unsigned int act;
printxval(seccomp_ops, op, "SECCOMP_SET_MODE_???");
tprints(", ");
- if (op == SECCOMP_SET_MODE_FILTER) {
- printflags(seccomp_filter_flags, tcp->u_arg[1],
+ switch (op) {
+ case SECCOMP_GET_ACTION_AVAIL:
+ tprintf("%u, ", flags);
+ if (!umove_or_printaddr(tcp, tcp->u_arg[2], &act)) {
+ tprints("[");
+ printxval(seccomp_ret_action, act, "SECCOMP_RET_???");
+ tprints("]");
+ }
+ break;
+
+ case SECCOMP_SET_MODE_FILTER:
+ printflags(seccomp_filter_flags, flags,
"SECCOMP_FILTER_FLAG_???");
tprints(", ");
decode_seccomp_fprog(tcp, tcp->u_arg[2]);
- } else {
- decode_seccomp_set_mode_strict(tcp->u_arg[1],
- tcp->u_arg[2]);
+ break;
+
+ case SECCOMP_SET_MODE_STRICT:
+ default:
+ tprintf("%u, ", flags);
+ printaddr(tcp->u_arg[2]);
+ break;
}
return RVAL_DECODED;
diff --git a/strace.1 b/strace.1
index ca0f151e..a843ba4e 100644
--- a/strace.1
+++ b/strace.1
@@ -53,7 +53,7 @@
. el \
. BR "\\$1"
..
-.TH STRACE 1 "2017-08-28" "strace 4.19"
+.TH STRACE 1 "2017-08-28" "strace 4.20"
.SH NAME
strace \- trace system calls and signals
.SH SYNOPSIS
diff --git a/strace.spec b/strace.spec
index 09373548..63958fb6 100644
--- a/strace.spec
+++ b/strace.spec
@@ -1,6 +1,6 @@
Summary: Tracks and displays system calls associated with a running process
Name: strace
-Version: 4.19
+Version: 4.20
Release: 1%{?dist}
License: BSD
Group: Development/Debuggers
@@ -102,8 +102,11 @@ echo 'END OF TEST SUITE INFORMATION'
%endif
%changelog
-* Tue Sep 05 2017 strace-devel@lists.sourceforge.net - 4.19-1
-- strace 4.19 snapshot.
+* Mon Nov 13 2017 strace-devel@lists.sourceforge.net - 4.20-1
+- strace 4.20 snapshot.
+
+* Tue Sep 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.19-1
+- v4.18 -> v4.19.
* Wed Jul 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.18-1
- v4.17 -> v4.18.
diff --git a/strace.spec.in b/strace.spec.in
index 0556f78d..08dd2d3a 100644
--- a/strace.spec.in
+++ b/strace.spec.in
@@ -105,6 +105,9 @@ echo 'END OF TEST SUITE INFORMATION'
* @RPM_CHANGELOGTIME@ @PACKAGE_BUGREPORT@ - @PACKAGE_VERSION@-1
- @PACKAGE_STRING@ snapshot.
+* Tue Sep 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.19-1
+- v4.18 -> v4.19.
+
* Wed Jul 05 2017 Dmitry V. Levin <ldv@altlinux.org> - 4.18-1
- v4.17 -> v4.18.
diff --git a/tests-m32/Makefile.am b/tests-m32/Makefile.am
index 741fd8dd..e5aa0773 100644
--- a/tests-m32/Makefile.am
+++ b/tests-m32/Makefile.am
@@ -87,6 +87,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
attach-p-cmd-p \
block_reset_raise_run \
caps-abbrev \
+ check_sigblock \
+ check_sigign \
clone_parent \
clone_ptrace \
count-f \
@@ -106,6 +108,7 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
ioctl_rtc-v \
is_linux_mips_n64 \
ksysent \
+ list_sigaction_signum \
mmsg-silent \
mmsg_name-v \
msg_control-v \
@@ -135,6 +138,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
seccomp-filter-v \
seccomp-strict \
set_ptracer_any \
+ set_sigblock \
+ set_sigign \
signal_receive \
sleep \
stack-fcall \
@@ -278,6 +283,8 @@ MISC_TESTS = \
redirect-fds.test \
redirect.test \
restart_syscall.test \
+ sigblock.test \
+ sigign.test \
strace-C.test \
strace-E.test \
strace-S.test \
diff --git a/tests-m32/Makefile.in b/tests-m32/Makefile.in
index f6955de7..7c52fbaf 100644
--- a/tests-m32/Makefile.in
+++ b/tests-m32/Makefile.in
@@ -139,7 +139,8 @@ DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \
- caps-abbrev$(EXEEXT) clone_parent$(EXEEXT) \
+ caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
+ check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \
execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \
fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
@@ -147,10 +148,11 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \
- mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
- msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
- netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
- netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \
+ list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \
+ mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \
+ net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \
+ netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
+ nsyscalls$(EXEEXT) pc$(EXEEXT) \
perf_event_open_nonverbose$(EXEEXT) \
perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
@@ -161,8 +163,9 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \
seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
- set_ptracer_any$(EXEEXT) signal_receive$(EXEEXT) \
- sleep$(EXEEXT) stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
+ set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
+ set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
+ stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
@@ -253,9 +256,9 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
ipc_msg$(EXEEXT) ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) \
- ipc_shm$(EXEEXT) kcmp$(EXEEXT) kexec_file_load$(EXEEXT) \
- kexec_load$(EXEEXT) keyctl$(EXEEXT) kill$(EXEEXT) \
- lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \
+ ipc_shm$(EXEEXT) kcmp$(EXEEXT) kcmp-y$(EXEEXT) \
+ kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) keyctl$(EXEEXT) \
+ kill$(EXEEXT) lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \
linkat$(EXEEXT) llseek$(EXEEXT) lookup_dcookie$(EXEEXT) \
lseek$(EXEEXT) lstat$(EXEEXT) lstat64$(EXEEXT) \
madvise$(EXEEXT) mbind$(EXEEXT) membarrier$(EXEEXT) \
@@ -275,19 +278,27 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
netlink_netfilter$(EXEEXT) netlink_protocol$(EXEEXT) \
netlink_route$(EXEEXT) netlink_selinux$(EXEEXT) \
netlink_sock_diag$(EXEEXT) netlink_xfrm$(EXEEXT) \
- newfstatat$(EXEEXT) nlattr$(EXEEXT) \
- nlattr_crypto_user_alg$(EXEEXT) nlattr_br_port_msg$(EXEEXT) \
- nlattr_dcbmsg$(EXEEXT) nlattr_fib_rule_hdr$(EXEEXT) \
- nlattr_ifaddrlblmsg$(EXEEXT) nlattr_ifaddrmsg$(EXEEXT) \
- nlattr_ifinfomsg$(EXEEXT) nlattr_ifla_brport$(EXEEXT) \
- nlattr_ifla_port$(EXEEXT) nlattr_ifla_xdp$(EXEEXT) \
- nlattr_inet_diag_msg$(EXEEXT) \
+ newfstatat$(EXEEXT) nfnetlink_acct$(EXEEXT) \
+ nfnetlink_cthelper$(EXEEXT) nfnetlink_ctnetlink$(EXEEXT) \
+ nfnetlink_ctnetlink_exp$(EXEEXT) nfnetlink_cttimeout$(EXEEXT) \
+ nfnetlink_nft_compat$(EXEEXT) nfnetlink_nftables$(EXEEXT) \
+ nfnetlink_ipset$(EXEEXT) nfnetlink_osf$(EXEEXT) \
+ nfnetlink_queue$(EXEEXT) nfnetlink_ulog$(EXEEXT) \
+ nlattr$(EXEEXT) nlattr_crypto_user_alg$(EXEEXT) \
+ nlattr_br_port_msg$(EXEEXT) nlattr_dcbmsg$(EXEEXT) \
+ nlattr_fib_rule_hdr$(EXEEXT) nlattr_ifaddrlblmsg$(EXEEXT) \
+ nlattr_ifaddrmsg$(EXEEXT) nlattr_ifinfomsg$(EXEEXT) \
+ nlattr_ifla_brport$(EXEEXT) nlattr_ifla_port$(EXEEXT) \
+ nlattr_ifla_xdp$(EXEEXT) nlattr_inet_diag_msg$(EXEEXT) \
nlattr_inet_diag_req_compat$(EXEEXT) \
- nlattr_inet_diag_req_v2$(EXEEXT) nlattr_ndmsg$(EXEEXT) \
+ nlattr_inet_diag_req_v2$(EXEEXT) \
+ nlattr_mdba_mdb_entry$(EXEEXT) \
+ nlattr_mdba_router_port$(EXEEXT) nlattr_ndmsg$(EXEEXT) \
nlattr_ndtmsg$(EXEEXT) nlattr_netconfmsg$(EXEEXT) \
nlattr_netlink_diag_msg$(EXEEXT) nlattr_nlmsgerr$(EXEEXT) \
nlattr_packet_diag_msg$(EXEEXT) nlattr_rtgenmsg$(EXEEXT) \
nlattr_rtmsg$(EXEEXT) nlattr_smc_diag_msg$(EXEEXT) \
+ nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \
nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \
nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \
oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
@@ -321,7 +332,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \
sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \
sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \
- sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) select$(EXEEXT) \
+ sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) \
+ seccomp_get_action_avail$(EXEEXT) select$(EXEEXT) \
semop$(EXEEXT) sendfile$(EXEEXT) sendfile64$(EXEEXT) \
set_mempolicy$(EXEEXT) setdomainname$(EXEEXT) \
setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
@@ -439,6 +451,14 @@ caps_abbrev_SOURCES = caps-abbrev.c
caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT)
caps_abbrev_LDADD = $(LDADD)
caps_abbrev_DEPENDENCIES = libtests.a
+check_sigblock_SOURCES = check_sigblock.c
+check_sigblock_OBJECTS = check_sigblock.$(OBJEXT)
+check_sigblock_LDADD = $(LDADD)
+check_sigblock_DEPENDENCIES = libtests.a
+check_sigign_SOURCES = check_sigign.c
+check_sigign_OBJECTS = check_sigign.$(OBJEXT)
+check_sigign_LDADD = $(LDADD)
+check_sigign_DEPENDENCIES = libtests.a
chmod_SOURCES = chmod.c
chmod_OBJECTS = chmod.$(OBJEXT)
chmod_LDADD = $(LDADD)
@@ -936,6 +956,10 @@ kcmp_SOURCES = kcmp.c
kcmp_OBJECTS = kcmp.$(OBJEXT)
kcmp_LDADD = $(LDADD)
kcmp_DEPENDENCIES = libtests.a
+kcmp_y_SOURCES = kcmp-y.c
+kcmp_y_OBJECTS = kcmp-y.$(OBJEXT)
+kcmp_y_LDADD = $(LDADD)
+kcmp_y_DEPENDENCIES = libtests.a
kexec_file_load_SOURCES = kexec_file_load.c
kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT)
kexec_file_load_LDADD = $(LDADD)
@@ -972,6 +996,10 @@ linkat_SOURCES = linkat.c
linkat_OBJECTS = linkat.$(OBJEXT)
linkat_LDADD = $(LDADD)
linkat_DEPENDENCIES = libtests.a
+list_sigaction_signum_SOURCES = list_sigaction_signum.c
+list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT)
+list_sigaction_signum_LDADD = $(LDADD)
+list_sigaction_signum_DEPENDENCIES = libtests.a
llseek_SOURCES = llseek.c
llseek_OBJECTS = llseek.$(OBJEXT)
llseek_LDADD = $(LDADD)
@@ -1192,6 +1220,50 @@ newfstatat_SOURCES = newfstatat.c
newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT)
newfstatat_LDADD = $(LDADD)
newfstatat_DEPENDENCIES = libtests.a
+nfnetlink_acct_SOURCES = nfnetlink_acct.c
+nfnetlink_acct_OBJECTS = nfnetlink_acct.$(OBJEXT)
+nfnetlink_acct_LDADD = $(LDADD)
+nfnetlink_acct_DEPENDENCIES = libtests.a
+nfnetlink_cthelper_SOURCES = nfnetlink_cthelper.c
+nfnetlink_cthelper_OBJECTS = nfnetlink_cthelper.$(OBJEXT)
+nfnetlink_cthelper_LDADD = $(LDADD)
+nfnetlink_cthelper_DEPENDENCIES = libtests.a
+nfnetlink_ctnetlink_SOURCES = nfnetlink_ctnetlink.c
+nfnetlink_ctnetlink_OBJECTS = nfnetlink_ctnetlink.$(OBJEXT)
+nfnetlink_ctnetlink_LDADD = $(LDADD)
+nfnetlink_ctnetlink_DEPENDENCIES = libtests.a
+nfnetlink_ctnetlink_exp_SOURCES = nfnetlink_ctnetlink_exp.c
+nfnetlink_ctnetlink_exp_OBJECTS = nfnetlink_ctnetlink_exp.$(OBJEXT)
+nfnetlink_ctnetlink_exp_LDADD = $(LDADD)
+nfnetlink_ctnetlink_exp_DEPENDENCIES = libtests.a
+nfnetlink_cttimeout_SOURCES = nfnetlink_cttimeout.c
+nfnetlink_cttimeout_OBJECTS = nfnetlink_cttimeout.$(OBJEXT)
+nfnetlink_cttimeout_LDADD = $(LDADD)
+nfnetlink_cttimeout_DEPENDENCIES = libtests.a
+nfnetlink_ipset_SOURCES = nfnetlink_ipset.c
+nfnetlink_ipset_OBJECTS = nfnetlink_ipset.$(OBJEXT)
+nfnetlink_ipset_LDADD = $(LDADD)
+nfnetlink_ipset_DEPENDENCIES = libtests.a
+nfnetlink_nft_compat_SOURCES = nfnetlink_nft_compat.c
+nfnetlink_nft_compat_OBJECTS = nfnetlink_nft_compat.$(OBJEXT)
+nfnetlink_nft_compat_LDADD = $(LDADD)
+nfnetlink_nft_compat_DEPENDENCIES = libtests.a
+nfnetlink_nftables_SOURCES = nfnetlink_nftables.c
+nfnetlink_nftables_OBJECTS = nfnetlink_nftables.$(OBJEXT)
+nfnetlink_nftables_LDADD = $(LDADD)
+nfnetlink_nftables_DEPENDENCIES = libtests.a
+nfnetlink_osf_SOURCES = nfnetlink_osf.c
+nfnetlink_osf_OBJECTS = nfnetlink_osf.$(OBJEXT)
+nfnetlink_osf_LDADD = $(LDADD)
+nfnetlink_osf_DEPENDENCIES = libtests.a
+nfnetlink_queue_SOURCES = nfnetlink_queue.c
+nfnetlink_queue_OBJECTS = nfnetlink_queue.$(OBJEXT)
+nfnetlink_queue_LDADD = $(LDADD)
+nfnetlink_queue_DEPENDENCIES = libtests.a
+nfnetlink_ulog_SOURCES = nfnetlink_ulog.c
+nfnetlink_ulog_OBJECTS = nfnetlink_ulog.$(OBJEXT)
+nfnetlink_ulog_LDADD = $(LDADD)
+nfnetlink_ulog_DEPENDENCIES = libtests.a
nlattr_SOURCES = nlattr.c
nlattr_OBJECTS = nlattr.$(OBJEXT)
nlattr_LDADD = $(LDADD)
@@ -1249,6 +1321,14 @@ nlattr_inet_diag_req_v2_SOURCES = nlattr_inet_diag_req_v2.c
nlattr_inet_diag_req_v2_OBJECTS = nlattr_inet_diag_req_v2.$(OBJEXT)
nlattr_inet_diag_req_v2_LDADD = $(LDADD)
nlattr_inet_diag_req_v2_DEPENDENCIES = libtests.a
+nlattr_mdba_mdb_entry_SOURCES = nlattr_mdba_mdb_entry.c
+nlattr_mdba_mdb_entry_OBJECTS = nlattr_mdba_mdb_entry.$(OBJEXT)
+nlattr_mdba_mdb_entry_LDADD = $(LDADD)
+nlattr_mdba_mdb_entry_DEPENDENCIES = libtests.a
+nlattr_mdba_router_port_SOURCES = nlattr_mdba_router_port.c
+nlattr_mdba_router_port_OBJECTS = nlattr_mdba_router_port.$(OBJEXT)
+nlattr_mdba_router_port_LDADD = $(LDADD)
+nlattr_mdba_router_port_DEPENDENCIES = libtests.a
nlattr_ndmsg_SOURCES = nlattr_ndmsg.c
nlattr_ndmsg_OBJECTS = nlattr_ndmsg.$(OBJEXT)
nlattr_ndmsg_LDADD = $(LDADD)
@@ -1285,6 +1365,14 @@ nlattr_smc_diag_msg_SOURCES = nlattr_smc_diag_msg.c
nlattr_smc_diag_msg_OBJECTS = nlattr_smc_diag_msg.$(OBJEXT)
nlattr_smc_diag_msg_LDADD = $(LDADD)
nlattr_smc_diag_msg_DEPENDENCIES = libtests.a
+nlattr_tc_stats_SOURCES = nlattr_tc_stats.c
+nlattr_tc_stats_OBJECTS = nlattr_tc_stats.$(OBJEXT)
+nlattr_tc_stats_LDADD = $(LDADD)
+nlattr_tc_stats_DEPENDENCIES = libtests.a
+nlattr_tca_stab_SOURCES = nlattr_tca_stab.c
+nlattr_tca_stab_OBJECTS = nlattr_tca_stab.$(OBJEXT)
+nlattr_tca_stab_LDADD = $(LDADD)
+nlattr_tca_stab_DEPENDENCIES = libtests.a
nlattr_tcamsg_SOURCES = nlattr_tcamsg.c
nlattr_tcamsg_OBJECTS = nlattr_tcamsg.$(OBJEXT)
nlattr_tcamsg_LDADD = $(LDADD)
@@ -1696,6 +1784,10 @@ seccomp_strict_SOURCES = seccomp-strict.c
seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT)
seccomp_strict_LDADD = $(LDADD)
seccomp_strict_DEPENDENCIES = libtests.a
+seccomp_get_action_avail_SOURCES = seccomp_get_action_avail.c
+seccomp_get_action_avail_OBJECTS = seccomp_get_action_avail.$(OBJEXT)
+seccomp_get_action_avail_LDADD = $(LDADD)
+seccomp_get_action_avail_DEPENDENCIES = libtests.a
select_SOURCES = select.c
select_OBJECTS = select.$(OBJEXT)
select_LDADD = $(LDADD)
@@ -1720,6 +1812,14 @@ set_ptracer_any_SOURCES = set_ptracer_any.c
set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
set_ptracer_any_LDADD = $(LDADD)
set_ptracer_any_DEPENDENCIES = libtests.a
+set_sigblock_SOURCES = set_sigblock.c
+set_sigblock_OBJECTS = set_sigblock.$(OBJEXT)
+set_sigblock_LDADD = $(LDADD)
+set_sigblock_DEPENDENCIES = libtests.a
+set_sigign_SOURCES = set_sigign.c
+set_sigign_OBJECTS = set_sigign.$(OBJEXT)
+set_sigign_LDADD = $(LDADD)
+set_sigign_DEPENDENCIES = libtests.a
setdomainname_SOURCES = setdomainname.c
setdomainname_OBJECTS = setdomainname.$(OBJEXT)
setdomainname_LDADD = $(LDADD)
@@ -2169,10 +2269,11 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
- btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \
- chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
- clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
- creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c clone_parent.c \
+ clone_ptrace.c copy_file_range.c count-f.c creat.c \
+ delete_module.c dup.c dup2.c dup3.c epoll_create.c \
epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2195,39 +2296,45 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
- ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \
+ ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
- lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
- lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
- memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
- mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
- mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
- move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
- mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
- munlockall.c nanosleep.c net-accept-connect.c \
- net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
- net-yy-netlink.c net-yy-unix.c netlink_audit.c \
- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \
- netlink_kobject_uevent.c netlink_netfilter.c \
- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \
- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \
- netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \
- nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \
- nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \
- nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \
- nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \
- nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \
- nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \
- nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \
- nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \
- nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \
- oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \
- osf_utimes.c pause.c pc.c perf_event_open.c \
- perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
- personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \
- prctl-dumpable.c prctl-name.c prctl-no-args.c \
- prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
+ llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \
+ mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
+ mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
+ mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
+ mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
+ mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
+ msg_control-v.c msg_name.c munlockall.c nanosleep.c \
+ net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
+ net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
+ netlink_audit.c netlink_crypto.c netlink_generic.c \
+ netlink_inet_diag.c netlink_kobject_uevent.c \
+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \
+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \
+ nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \
+ nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \
+ nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \
+ nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \
+ nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
+ nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \
+ nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \
+ nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \
+ nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \
+ nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \
+ nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \
+ nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
+ nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
+ nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
+ perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2248,8 +2355,9 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
sched_xetparam.c sched_xetscheduler.c sched_yield.c \
scm_rights.c seccomp-filter.c seccomp-filter-v.c \
- seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \
- set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \
+ seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
+ sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
+ set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
setregid32.c setresgid.c setresgid32.c setresuid.c \
@@ -2275,10 +2383,11 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
- btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \
- chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
- clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
- creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c clone_parent.c \
+ clone_ptrace.c copy_file_range.c count-f.c creat.c \
+ delete_module.c dup.c dup2.c dup3.c epoll_create.c \
epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2301,39 +2410,45 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
- ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \
+ ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
- lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
- lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
- memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
- mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
- mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
- move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
- mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
- munlockall.c nanosleep.c net-accept-connect.c \
- net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
- net-yy-netlink.c net-yy-unix.c netlink_audit.c \
- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \
- netlink_kobject_uevent.c netlink_netfilter.c \
- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \
- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \
- netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \
- nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \
- nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \
- nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \
- nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \
- nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \
- nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \
- nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \
- nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \
- nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \
- oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \
- osf_utimes.c pause.c pc.c perf_event_open.c \
- perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
- personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \
- prctl-dumpable.c prctl-name.c prctl-no-args.c \
- prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
+ llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \
+ mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
+ mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
+ mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
+ mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
+ mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
+ msg_control-v.c msg_name.c munlockall.c nanosleep.c \
+ net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
+ net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
+ netlink_audit.c netlink_crypto.c netlink_generic.c \
+ netlink_inet_diag.c netlink_kobject_uevent.c \
+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \
+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \
+ nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \
+ nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \
+ nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \
+ nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \
+ nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
+ nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \
+ nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \
+ nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \
+ nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \
+ nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \
+ nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \
+ nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
+ nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
+ nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
+ perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2354,8 +2469,9 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
sched_xetparam.c sched_xetscheduler.c sched_yield.c \
scm_rights.c seccomp-filter.c seccomp-filter-v.c \
- seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \
- set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \
+ seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
+ sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
+ set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
setregid32.c setresgid.c setresgid32.c setresuid.c \
@@ -2924,6 +3040,7 @@ PURE_EXECUTABLES = \
ipc_sem \
ipc_shm \
kcmp \
+ kcmp-y \
kexec_file_load \
kexec_load \
keyctl \
@@ -2981,6 +3098,17 @@ PURE_EXECUTABLES = \
netlink_sock_diag \
netlink_xfrm \
newfstatat \
+ nfnetlink_acct \
+ nfnetlink_cthelper \
+ nfnetlink_ctnetlink \
+ nfnetlink_ctnetlink_exp \
+ nfnetlink_cttimeout \
+ nfnetlink_nft_compat \
+ nfnetlink_nftables \
+ nfnetlink_ipset \
+ nfnetlink_osf \
+ nfnetlink_queue \
+ nfnetlink_ulog \
nlattr \
nlattr_crypto_user_alg \
nlattr_br_port_msg \
@@ -2995,6 +3123,8 @@ PURE_EXECUTABLES = \
nlattr_inet_diag_msg \
nlattr_inet_diag_req_compat \
nlattr_inet_diag_req_v2 \
+ nlattr_mdba_mdb_entry \
+ nlattr_mdba_router_port \
nlattr_ndmsg \
nlattr_ndtmsg \
nlattr_netconfmsg \
@@ -3004,6 +3134,8 @@ PURE_EXECUTABLES = \
nlattr_rtgenmsg \
nlattr_rtmsg \
nlattr_smc_diag_msg \
+ nlattr_tc_stats \
+ nlattr_tca_stab \
nlattr_tcamsg \
nlattr_tcmsg \
nlattr_unix_diag_msg \
@@ -3084,6 +3216,7 @@ PURE_EXECUTABLES = \
sched_xetscheduler \
sched_yield \
seccomp-filter \
+ seccomp_get_action_avail \
select \
semop \
sendfile \
@@ -3253,39 +3386,47 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
- kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \
- keyctl.gen.test kill.gen.test lchown.gen.test \
- lchown32.gen.test link.gen.test linkat.gen.test \
- lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
- madvise.gen.test mbind.gen.test membarrier.gen.test \
- memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
- mkdir.gen.test mkdirat.gen.test mknod.gen.test \
- mknodat.gen.test mlock.gen.test mlock2.gen.test \
- mlockall.gen.test mmap64.gen.test mmsg.gen.test \
- mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
- mount.gen.test move_pages.gen.test mq.gen.test \
- mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
- mq_sendrecv-write.gen.test msg_control.gen.test \
- msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
- nanosleep.gen.test net-icmp_filter.gen.test \
- net-sockaddr.gen.test netlink_audit.gen.test \
- netlink_crypto.gen.test netlink_generic.gen.test \
- netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \
- netlink_protocol.gen.test netlink_route.gen.test \
- netlink_selinux.gen.test netlink_xfrm.gen.test \
- newfstatat.gen.test nlattr.gen.test \
- nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \
- nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \
- nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \
- nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \
- nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \
- nlattr_inet_diag_msg.gen.test \
+ kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \
+ kexec_load.gen.test keyctl.gen.test kill.gen.test \
+ lchown.gen.test lchown32.gen.test link.gen.test \
+ linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
+ lstat64.gen.test madvise.gen.test mbind.gen.test \
+ membarrier.gen.test memfd_create.gen.test \
+ migrate_pages.gen.test mincore.gen.test mkdir.gen.test \
+ mkdirat.gen.test mknod.gen.test mknodat.gen.test \
+ mlock.gen.test mlock2.gen.test mlockall.gen.test \
+ mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \
+ mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \
+ move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \
+ mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \
+ msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \
+ munlockall.gen.test nanosleep.gen.test \
+ net-icmp_filter.gen.test net-sockaddr.gen.test \
+ netlink_audit.gen.test netlink_crypto.gen.test \
+ netlink_generic.gen.test netlink_kobject_uevent.gen.test \
+ netlink_netfilter.gen.test netlink_protocol.gen.test \
+ netlink_route.gen.test netlink_selinux.gen.test \
+ netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \
+ nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \
+ nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \
+ nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \
+ nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \
+ nfnetlink_osf.gen.test nfnetlink_queue.gen.test \
+ nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \
+ nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \
+ nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \
+ nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
+ nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \
+ nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
nlattr_inet_diag_req_compat.gen.test \
- nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test \
+ nlattr_inet_diag_req_v2.gen.test \
+ nlattr_mdba_mdb_entry.gen.test \
+ nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test \
nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test \
nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test \
nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test \
nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test \
+ nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \
nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \
nlattr_unix_diag_msg.gen.test old_mmap.gen.test \
oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \
@@ -3319,20 +3460,21 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
sched_xetattr.gen.test sched_xetparam.gen.test \
sched_xetscheduler.gen.test sched_yield.gen.test \
seccomp-filter.gen.test seccomp-filter-v.gen.test \
- select.gen.test semop.gen.test sendfile.gen.test \
- sendfile64.gen.test set_mempolicy.gen.test \
- setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
- setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
- setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
- sethostname.gen.test setns.gen.test setregid.gen.test \
- setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
- setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
- setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
- setuid32.gen.test shmxt.gen.test shutdown.gen.test \
- sigaction.gen.test siginfo.gen.test signal.gen.test \
- signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \
- sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \
- so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \
+ seccomp_get_action_avail.gen.test select.gen.test \
+ semop.gen.test sendfile.gen.test sendfile64.gen.test \
+ set_mempolicy.gen.test setdomainname.gen.test \
+ setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \
+ setfsuid32.gen.test setgid.gen.test setgid32.gen.test \
+ setgroups.gen.test setgroups32.gen.test sethostname.gen.test \
+ setns.gen.test setregid.gen.test setregid32.gen.test \
+ setresgid.gen.test setresgid32.gen.test setresuid.gen.test \
+ setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \
+ setrlimit.gen.test setuid.gen.test setuid32.gen.test \
+ shmxt.gen.test shutdown.gen.test sigaction.gen.test \
+ siginfo.gen.test signal.gen.test signal_receive.gen.test \
+ signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \
+ sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \
+ so_peercred.gen.test sock_filter-v.gen.test \
socketcall.gen.test splice.gen.test stat.gen.test \
stat64.gen.test statfs.gen.test statfs64.gen.test \
statx.gen.test swap.gen.test sxetmask.gen.test \
@@ -3451,6 +3593,8 @@ MISC_TESTS = \
redirect-fds.test \
redirect.test \
restart_syscall.test \
+ sigblock.test \
+ sigign.test \
strace-C.test \
strace-E.test \
strace-S.test \
@@ -3692,6 +3836,14 @@ caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA
@rm -f caps-abbrev$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS)
+check_sigblock$(EXEEXT): $(check_sigblock_OBJECTS) $(check_sigblock_DEPENDENCIES) $(EXTRA_check_sigblock_DEPENDENCIES)
+ @rm -f check_sigblock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(check_sigblock_OBJECTS) $(check_sigblock_LDADD) $(LIBS)
+
+check_sigign$(EXEEXT): $(check_sigign_OBJECTS) $(check_sigign_DEPENDENCIES) $(EXTRA_check_sigign_DEPENDENCIES)
+ @rm -f check_sigign$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(check_sigign_OBJECTS) $(check_sigign_LDADD) $(LIBS)
+
chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES)
@rm -f chmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
@@ -4192,6 +4344,10 @@ kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES)
@rm -f kcmp$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS)
+kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDENCIES)
+ @rm -f kcmp-y$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS)
+
kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES)
@rm -f kexec_file_load$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS)
@@ -4228,6 +4384,10 @@ linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDE
@rm -f linkat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES)
+ @rm -f list_sigaction_signum$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS)
+
llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES)
@rm -f llseek$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS)
@@ -4452,6 +4612,50 @@ newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_ne
@rm -f newfstatat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS)
+nfnetlink_acct$(EXEEXT): $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_DEPENDENCIES) $(EXTRA_nfnetlink_acct_DEPENDENCIES)
+ @rm -f nfnetlink_acct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_LDADD) $(LIBS)
+
+nfnetlink_cthelper$(EXEEXT): $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_DEPENDENCIES) $(EXTRA_nfnetlink_cthelper_DEPENDENCIES)
+ @rm -f nfnetlink_cthelper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_LDADD) $(LIBS)
+
+nfnetlink_ctnetlink$(EXEEXT): $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_DEPENDENCIES)
+ @rm -f nfnetlink_ctnetlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_LDADD) $(LIBS)
+
+nfnetlink_ctnetlink_exp$(EXEEXT): $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_exp_DEPENDENCIES)
+ @rm -f nfnetlink_ctnetlink_exp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_LDADD) $(LIBS)
+
+nfnetlink_cttimeout$(EXEEXT): $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_DEPENDENCIES) $(EXTRA_nfnetlink_cttimeout_DEPENDENCIES)
+ @rm -f nfnetlink_cttimeout$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_LDADD) $(LIBS)
+
+nfnetlink_ipset$(EXEEXT): $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_DEPENDENCIES) $(EXTRA_nfnetlink_ipset_DEPENDENCIES)
+ @rm -f nfnetlink_ipset$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_LDADD) $(LIBS)
+
+nfnetlink_nft_compat$(EXEEXT): $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_DEPENDENCIES) $(EXTRA_nfnetlink_nft_compat_DEPENDENCIES)
+ @rm -f nfnetlink_nft_compat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_LDADD) $(LIBS)
+
+nfnetlink_nftables$(EXEEXT): $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_DEPENDENCIES) $(EXTRA_nfnetlink_nftables_DEPENDENCIES)
+ @rm -f nfnetlink_nftables$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_LDADD) $(LIBS)
+
+nfnetlink_osf$(EXEEXT): $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_DEPENDENCIES) $(EXTRA_nfnetlink_osf_DEPENDENCIES)
+ @rm -f nfnetlink_osf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_LDADD) $(LIBS)
+
+nfnetlink_queue$(EXEEXT): $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_DEPENDENCIES) $(EXTRA_nfnetlink_queue_DEPENDENCIES)
+ @rm -f nfnetlink_queue$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_LDADD) $(LIBS)
+
+nfnetlink_ulog$(EXEEXT): $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_DEPENDENCIES) $(EXTRA_nfnetlink_ulog_DEPENDENCIES)
+ @rm -f nfnetlink_ulog$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_LDADD) $(LIBS)
+
nlattr$(EXEEXT): $(nlattr_OBJECTS) $(nlattr_DEPENDENCIES) $(EXTRA_nlattr_DEPENDENCIES)
@rm -f nlattr$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_OBJECTS) $(nlattr_LDADD) $(LIBS)
@@ -4508,6 +4712,14 @@ nlattr_inet_diag_req_v2$(EXEEXT): $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_in
@rm -f nlattr_inet_diag_req_v2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_inet_diag_req_v2_LDADD) $(LIBS)
+nlattr_mdba_mdb_entry$(EXEEXT): $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_DEPENDENCIES) $(EXTRA_nlattr_mdba_mdb_entry_DEPENDENCIES)
+ @rm -f nlattr_mdba_mdb_entry$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_LDADD) $(LIBS)
+
+nlattr_mdba_router_port$(EXEEXT): $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_DEPENDENCIES) $(EXTRA_nlattr_mdba_router_port_DEPENDENCIES)
+ @rm -f nlattr_mdba_router_port$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_LDADD) $(LIBS)
+
nlattr_ndmsg$(EXEEXT): $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_DEPENDENCIES) $(EXTRA_nlattr_ndmsg_DEPENDENCIES)
@rm -f nlattr_ndmsg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_LDADD) $(LIBS)
@@ -4544,6 +4756,14 @@ nlattr_smc_diag_msg$(EXEEXT): $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_m
@rm -f nlattr_smc_diag_msg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_msg_LDADD) $(LIBS)
+nlattr_tc_stats$(EXEEXT): $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_DEPENDENCIES) $(EXTRA_nlattr_tc_stats_DEPENDENCIES)
+ @rm -f nlattr_tc_stats$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_LDADD) $(LIBS)
+
+nlattr_tca_stab$(EXEEXT): $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_DEPENDENCIES) $(EXTRA_nlattr_tca_stab_DEPENDENCIES)
+ @rm -f nlattr_tca_stab$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_LDADD) $(LIBS)
+
nlattr_tcamsg$(EXEEXT): $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_DEPENDENCIES) $(EXTRA_nlattr_tcamsg_DEPENDENCIES)
@rm -f nlattr_tcamsg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_LDADD) $(LIBS)
@@ -4948,6 +5168,10 @@ seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES
@rm -f seccomp-strict$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS)
+seccomp_get_action_avail$(EXEEXT): $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_DEPENDENCIES) $(EXTRA_seccomp_get_action_avail_DEPENDENCIES)
+ @rm -f seccomp_get_action_avail$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_LDADD) $(LIBS)
+
select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES)
@rm -f select$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
@@ -4972,6 +5196,14 @@ set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENC
@rm -f set_ptracer_any$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS)
+set_sigblock$(EXEEXT): $(set_sigblock_OBJECTS) $(set_sigblock_DEPENDENCIES) $(EXTRA_set_sigblock_DEPENDENCIES)
+ @rm -f set_sigblock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_sigblock_OBJECTS) $(set_sigblock_LDADD) $(LIBS)
+
+set_sigign$(EXEEXT): $(set_sigign_OBJECTS) $(set_sigign_DEPENDENCIES) $(EXTRA_set_sigign_DEPENDENCIES)
+ @rm -f set_sigign$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_sigign_OBJECTS) $(set_sigign_LDADD) $(LIBS)
+
setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES)
@rm -f setdomainname$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS)
@@ -5411,6 +5643,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps-abbrev.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@
@@ -5535,6 +5769,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_sem.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_file_load.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_load.Po@am__quote@
@@ -5571,6 +5806,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_dcookie.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
@@ -5627,6 +5863,17 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_unix_diag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_xfrm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfstatat-newfstatat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_acct.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cthelper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink_exp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cttimeout.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ipset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nft_compat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nftables.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_osf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_queue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ulog.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_br_port_msg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_crypto_user_alg.Po@am__quote@
@@ -5641,6 +5888,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_v2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_mdb_entry.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_router_port.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndtmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_netconfmsg.Po@am__quote@
@@ -5650,6 +5899,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtgenmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_smc_diag_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tc_stats.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tca_stab.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@
@@ -5751,12 +6002,15 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter-v.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigign.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setdomainname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid32.Po@am__quote@
@@ -7194,6 +7448,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7353,6 +7610,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7392,6 +7682,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src
$(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7419,6 +7715,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
$(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7641,6 +7943,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
diff --git a/tests-m32/check_sigblock.c b/tests-m32/check_sigblock.c
new file mode 100644
index 00000000..5637804d
--- /dev/null
+++ b/tests-m32/check_sigblock.c
@@ -0,0 +1,49 @@
+/*
+ * Check that the specified signal number is blocked/unblocked.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac != 3)
+ error_msg_and_fail("usage: check_sigblock 0|1 signum");
+
+ const int block = !!atoi(av[1]);
+ const int signum = atoi(av[2]);
+ sigset_t mask;
+
+ sigemptyset(&mask);
+ if (sigprocmask(SIG_SETMASK, NULL, &mask))
+ perror_msg_and_fail("sigprocmask");
+
+ return block ^ sigismember(&mask, signum);
+}
diff --git a/tests-m32/check_sigign.c b/tests-m32/check_sigign.c
new file mode 100644
index 00000000..bace3170
--- /dev/null
+++ b/tests-m32/check_sigign.c
@@ -0,0 +1,49 @@
+/*
+ * Check that the signal handler for the specified signal number is set
+ * to SIG_IGN/SIG_DFL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac != 3)
+ error_msg_and_fail("usage: check_sigign 0|1 signum");
+
+ const int ign = !!atoi(av[1]);
+ const int signum = atoi(av[2]);
+ struct sigaction act;
+
+ if (sigaction(signum, NULL, &act))
+ perror_msg_and_fail("sigaction: %s", av[2]);
+
+ return ign ^ (act.sa_handler == SIG_IGN);
+}
diff --git a/tests-m32/futex.c b/tests-m32/futex.c
index b75ab339..e1dbcb74 100644
--- a/tests-m32/futex.c
+++ b/tests-m32/futex.c
@@ -66,6 +66,7 @@ void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
# define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \
enosys) \
do { \
+ errno = 0; \
rc = syscall(__NR_futex, (uaddr), (op), (val), (timeout), \
(uaddr2), (val3)); \
/* It is here due to EPERM on WAKE_OP on AArch64 */ \
@@ -496,8 +497,16 @@ main(int argc, char *argv[])
static const struct {
uint32_t val;
const char *str;
+
+ /*
+ * Peculiar semantics:
+ * * err == 0 and err2 != 0 => expect both either the absence
+ * of error or presence of err2
+ * * err != 0 and err2 == 0 => expect err only, no success
+ * expected.
+ */
int err;
- const char *errstr;
+ int err2;
} wake_ops[] = {
{ 0x00000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x00fff000, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|"
@@ -511,13 +520,13 @@ main(int argc, char *argv[])
{ 0x30000000, "FUTEX_OP_ANDN<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x40000000, "FUTEX_OP_XOR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x50000000, "0x5<<28 /* FUTEX_OP_??? */|0<<12|"
- "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS },
{ 0x70000000, "0x7<<28 /* FUTEX_OP_??? */|0<<12|"
- "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS },
{ 0x80000000, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_SET<<28|0<<12|"
"FUTEX_OP_CMP_EQ<<24|0" },
{ 0xa0caffee, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_OR<<28|"
- "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee" },
+ "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee", 0, EINVAL },
{ 0x01000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_NE<<24|0" },
{ 0x01234567, "FUTEX_OP_SET<<28|0x234<<12|FUTEX_OP_CMP_NE<<24|"
"0x567" },
@@ -526,27 +535,38 @@ main(int argc, char *argv[])
{ 0x04000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0" },
{ 0x05000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GE<<24|0" },
{ 0x06000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x07000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x08000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x0f000000, "FUTEX_OP_SET<<28|0<<12|"
- "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0xbadfaced, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_ANDN<<28|"
"0xdfa<<12|0xa<<24 /* FUTEX_OP_CMP_??? */|0xced",
- ENOSYS, "ENOSYS" },
+ ENOSYS, EINVAL },
{ 0xffffffff, "FUTEX_OP_OPARG_SHIFT<<28|"
"0x7<<28 /* FUTEX_OP_??? */|0xfff<<12|"
"0xf<<24 /* FUTEX_OP_CMP_??? */|0xfff",
- ENOSYS, "ENOSYS" },
+ ENOSYS, EINVAL },
};
for (i = 0; i < ARRAY_SIZE(wake_ops); i++) {
for (j = 0; j < 2; j++) {
CHECK_FUTEX_ENOSYS(uaddr,
j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
- VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
+ VAL, i, uaddr2, wake_ops[i].val,
+ /*
+ * Either one of errs is 0 or rc == 0 is not
+ * allowed.
+ */
+ ((!wake_ops[i].err || !wake_ops[i].err2 ||
+ (rc != 0)) &&
+ ((!wake_ops[i].err && (rc == 0)) ||
+ (wake_ops[i].err && (rc == -1) &&
+ (errno == wake_ops[i].err)) ||
+ (wake_ops[i].err2 && (rc == -1) &&
+ (errno == wake_ops[i].err2)))));
printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)"
" = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR,
i, uaddr2, wake_ops[i].str, sprintrc(rc));
diff --git a/tests-m32/gen_tests.am b/tests-m32/gen_tests.am
index 583a0aeb..71e00135 100644
--- a/tests-m32/gen_tests.am
+++ b/tests-m32/gen_tests.am
@@ -1,5 +1,5 @@
# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
$(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -358,6 +358,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -517,6 +520,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -556,6 +592,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src
$(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -583,6 +625,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
$(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -805,6 +853,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
diff --git a/tests-m32/gen_tests.in b/tests-m32/gen_tests.in
index 8592e28b..091bbe59 100644
--- a/tests-m32/gen_tests.in
+++ b/tests-m32/gen_tests.in
@@ -143,7 +143,8 @@ ipc -a19
ipc_msg +ipc.sh
ipc_sem +ipc.sh
ipc_shm +ipc.sh
-kcmp -a27
+kcmp -a22
+kcmp-y -a22 -y -e trace=kcmp
kexec_file_load -s9
kexec_load -s9
keyctl -a31 -s10
@@ -197,6 +198,17 @@ netlink_selinux +netlink_sock_diag.test
netlink_xfrm +netlink_sock_diag.test
newfstatat -a32 -v -P stat.sample -P /dev/full
nlattr +netlink_sock_diag.test
+nfnetlink_acct +netlink_sock_diag.test
+nfnetlink_cthelper +netlink_sock_diag.test
+nfnetlink_ctnetlink +netlink_sock_diag.test
+nfnetlink_ctnetlink_exp +netlink_sock_diag.test
+nfnetlink_cttimeout +netlink_sock_diag.test
+nfnetlink_ipset +netlink_sock_diag.test
+nfnetlink_nft_compat +netlink_sock_diag.test
+nfnetlink_nftables +netlink_sock_diag.test
+nfnetlink_osf +netlink_sock_diag.test
+nfnetlink_queue +netlink_sock_diag.test
+nfnetlink_ulog +netlink_sock_diag.test
nlattr_crypto_user_alg +netlink_sock_diag.test
nlattr_br_port_msg +netlink_sock_diag.test
nlattr_dcbmsg +netlink_sock_diag.test
@@ -210,6 +222,8 @@ nlattr_ifla_xdp +netlink_sock_diag.test
nlattr_inet_diag_msg +netlink_sock_diag.test
nlattr_inet_diag_req_compat +netlink_sock_diag.test
nlattr_inet_diag_req_v2 +netlink_sock_diag.test
+nlattr_mdba_mdb_entry +netlink_sock_diag.test
+nlattr_mdba_router_port +netlink_sock_diag.test
nlattr_ndmsg +netlink_sock_diag.test
nlattr_ndtmsg +netlink_sock_diag.test
nlattr_netconfmsg +netlink_sock_diag.test
@@ -219,6 +233,8 @@ nlattr_packet_diag_msg +netlink_sock_diag-v.sh
nlattr_rtgenmsg +netlink_sock_diag.test
nlattr_rtmsg +netlink_sock_diag.test
nlattr_smc_diag_msg +netlink_sock_diag.test
+nlattr_tc_stats +netlink_sock_diag.test
+nlattr_tca_stab +netlink_sock_diag.test
nlattr_tcamsg +netlink_sock_diag.test
nlattr_tcmsg +netlink_sock_diag.test
nlattr_unix_diag_msg +netlink_sock_diag.test
@@ -293,6 +309,7 @@ sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler
sched_yield -a14
seccomp-filter -e trace=seccomp
seccomp-filter-v -v -e trace=seccomp
+seccomp_get_action_avail -e trace=seccomp
select -a36
semop -a32 -e trace=semop,semtimedop
sendfile -a27
diff --git a/tests-m32/ioctl_dm.c b/tests-m32/ioctl_dm.c
index 2f77e041..1e831dfe 100644
--- a/tests-m32/ioctl_dm.c
+++ b/tests-m32/ioctl_dm.c
@@ -54,6 +54,10 @@
# define ALIGNED_OFFSET(t_, m_) \
ALIGNED_SIZE(offsetof(t_, m_), t_)
+# ifndef DM_DEV_ARM_POLL
+# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl)
+# endif
+
static const char str129[] = STR32 STR32 STR32 STR32 "6";
static const __u64 dts_sector_base = (__u64) 0xdeadca75facef157ULL;
@@ -182,6 +186,7 @@ main(void)
{ ARG_STR(DM_TABLE_CLEAR), false },
{ ARG_STR(DM_TABLE_DEPS), true },
{ ARG_STR(DM_TABLE_STATUS), true },
+ { ARG_STR(DM_DEV_ARM_POLL), false },
};
struct dm_ioctl *unaligned_dm_arg =
diff --git a/tests-m32/ioctl_loop.c b/tests-m32/ioctl_loop.c
index 3411a4d8..56ebd9e4 100644
--- a/tests-m32/ioctl_loop.c
+++ b/tests-m32/ioctl_loop.c
@@ -188,11 +188,11 @@ main(void)
_IOC_SIZE((unsigned int) unknown_loop_cmd),
(unsigned long) magic);
- ioctl(-1, LOOP_SET_DIRECT_IO + 1, magic);
+ ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic);
printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = "
"-1 EBADF (%m)\n",
- _IOC_NR(LOOP_SET_DIRECT_IO + 1),
- _IOC_SIZE(LOOP_SET_DIRECT_IO + 1),
+ _IOC_NR(LOOP_SET_BLOCK_SIZE + 1),
+ _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1),
(unsigned long) magic);
ioctl(-1, LOOP_CTL_GET_FREE + 1, magic);
@@ -303,6 +303,11 @@ main(void)
printf("ioctl(-1, LOOP_SET_DIRECT_IO, %lu) = -1 EBADF (%m)\n",
(unsigned long) magic);
+ /* LOOP_SET_BLOCK_SIZE */
+ ioctl(-1, LOOP_SET_BLOCK_SIZE, magic);
+ printf("ioctl(-1, LOOP_SET_BLOCK_SIZE, %lu) = -1 EBADF (%m)\n",
+ (unsigned long) magic);
+
/* LOOP_CTL_ADD */
ioctl(-1, LOOP_CTL_ADD, magic);
printf("ioctl(-1, LOOP_CTL_ADD, %d) = -1 EBADF (%m)\n",
diff --git a/tests-m32/kcmp-y.c b/tests-m32/kcmp-y.c
new file mode 100644
index 00000000..02ad90e5
--- /dev/null
+++ b/tests-m32/kcmp-y.c
@@ -0,0 +1,3 @@
+#define VERBOSE_FD 1
+
+#include "kcmp.c"
diff --git a/tests-m32/kcmp-y.gen.test b/tests-m32/kcmp-y.gen.test
new file mode 100755
index 00000000..065db9d0
--- /dev/null
+++ b/tests-m32/kcmp-y.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y -a22 -y -e trace=kcmp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -y -e trace=kcmp
diff --git a/tests-m32/kcmp.c b/tests-m32/kcmp.c
index cb497c9f..60cd3003 100644
--- a/tests-m32/kcmp.c
+++ b/tests-m32/kcmp.c
@@ -1,7 +1,7 @@
/*
* Check decoding of kcmp syscall.
*
- * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,15 +34,67 @@
#ifdef __NR_kcmp
+# include <fcntl.h>
+# include <stdarg.h>
+# include <stdint.h>
# include <stdio.h>
+# include <string.h>
# include <unistd.h>
-# define KCMP_FILE 0
-# define KCMP_SYSVSEM 6
+# ifndef VERBOSE_FD
+# define VERBOSE_FD 0
+# endif
+/*
+ * We prefer to use system headers in order to catch some possible deviations in
+ * system's headers from our perception of reality, but happy to include our own
+ * definitions as well.
+ */
+# ifdef HAVE_LINUX_KCMP_H
+# include <linux/kcmp.h>
+# else
+# define KCMP_FILE 0
+# define KCMP_VM 1
+# define KCMP_FILES 2
+# define KCMP_FS 3
+# define KCMP_SIGHAND 4
+# define KCMP_IO 5
+# define KCMP_SYSVSEM 6
+# endif
+
+/* All other kcmp types have been added atomically */
+# define KCMP_EPOLL_TFD 7
+
+# ifndef HAVE_STRUCT_KCMP_EPOLL_SLOT
+struct kcmp_epoll_slot {
+ uint32_t efd;
+ uint32_t tfd;
+ uint32_t toff;
+};
+# endif
+
+static const kernel_ulong_t kcmp_max_type = KCMP_EPOLL_TFD;
+
+static const char null_path[] = "/dev/null";
+static const char zero_path[] = "/dev/zero";
+
+# define NULL_FD 23
+# define ZERO_FD 42
+
+static void
+printpidfd(const char *prefix, pid_t pid, unsigned fd)
+{
+ printf("%s%d", prefix, fd);
+}
+
+/*
+ * Last argument is optional and is used as follows:
+ * * When type is KCMP_EPOLL_TFD, it signalises whether idx2 is a valid
+ * pointer.
+ */
static void
do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
- const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2)
+ const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2, ...)
{
long rc;
const char *errstr;
@@ -57,11 +109,37 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
else
printf("%#x /* KCMP_??? */", (int) type);
- if (type == KCMP_FILE)
- printf(", %u, %u", (unsigned) idx1, (unsigned) idx2);
- else if (type > KCMP_SYSVSEM)
+ if (type == KCMP_FILE) {
+ printpidfd(", ", pid1, idx1);
+ printpidfd(", ", pid2, idx2);
+ } else if (type == KCMP_EPOLL_TFD) {
+ va_list ap;
+ int valid_ptr;
+
+ va_start(ap, idx2);
+ valid_ptr = va_arg(ap, int);
+ va_end(ap);
+
+ printpidfd(", ", pid1, idx1);
+ printf(", ");
+
+ if (valid_ptr) {
+ struct kcmp_epoll_slot *slot =
+ (struct kcmp_epoll_slot *) (uintptr_t) idx2;
+
+ printpidfd("{efd=", pid2, slot->efd);
+ printpidfd(", tfd=", pid2, slot->tfd);
+ printf(", toff=%llu}", (unsigned long long) slot->toff);
+ } else {
+ if (idx2)
+ printf("%#llx", (unsigned long long) idx2);
+ else
+ printf("NULL");
+ }
+ } else if (type > kcmp_max_type) {
printf(", %#llx, %#llx",
(unsigned long long) idx1, (unsigned long long) idx2);
+ }
printf(") = %s\n", errstr);
}
@@ -79,18 +157,71 @@ main(void)
(kernel_ulong_t) 0xdec0ded3dec0ded4ULL;
static const kernel_ulong_t bogus_idx2 =
(kernel_ulong_t) 0xba5e1e55deadc0deULL;
+ static const struct kcmp_epoll_slot slot_data[] = {
+ { 0xdeadc0de, 0xfacef157, 0xbadc0ded },
+ { NULL_FD, ZERO_FD, 0 },
+ { 0, 0, 0 },
+ };
+ static kernel_ulong_t ptr_check =
+ F8ILL_KULONG_SUPPORTED ? F8ILL_KULONG_MASK : 0;
+
+ int fd;
+ unsigned i;
+ struct kcmp_epoll_slot *slot = tail_alloc(sizeof(*slot));
+
+ /* Open some files to test printpidfd */
+ fd = open(null_path, O_RDONLY);
+ if (fd < 0)
+ perror_msg_and_fail("open(\"%s\")", null_path);
+ if (fd != NULL_FD) {
+ if (dup2(fd, NULL_FD) < 0)
+ perror_msg_and_fail("dup2(fd, NULL_FD)");
+ close(fd);
+ }
+
+ fd = open(zero_path, O_RDONLY);
+ if (fd < 0)
+ perror_msg_and_fail("open(\"%s\")", zero_path);
+ if (fd != ZERO_FD) {
+ if (dup2(fd, ZERO_FD) < 0)
+ perror_msg_and_fail("dup2(fd, ZERO_FD)");
+ close(fd);
+ }
+
+ close(0);
/* Invalid values */
do_kcmp(bogus_pid1, bogus_pid2, bogus_type, NULL, bogus_idx1,
bogus_idx2);
- do_kcmp(0, 0, KCMP_SYSVSEM + 1, NULL, 0, 0);
+ do_kcmp(F8ILL_KULONG_MASK, F8ILL_KULONG_MASK, kcmp_max_type + 1, NULL,
+ 0, 0);
/* KCMP_FILE is the only type which has additional args */
do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1,
bogus_idx2);
- /* Some type without additional args */
+ do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
+
+ /* Types without additional args */
+ do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_FILES), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_FS), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_SIGHAND), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_IO), bogus_idx1, bogus_idx2);
do_kcmp(-1, -1, ARG_STR(KCMP_SYSVSEM), bogus_idx1, bogus_idx2);
+ /* KCMP_EPOLL_TFD checks */
+ do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD),
+ F8ILL_KULONG_MASK | 2718281828U, ptr_check, 0);
+ do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD),
+ 3141592653U, (uintptr_t) slot + 1, 0);
+
+ for (i = 0; i < ARRAY_SIZE(slot_data); i++) {
+ memcpy(slot, slot_data + i, sizeof(*slot));
+
+ do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD,
+ (uintptr_t) slot, 1);
+ }
+
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests-m32/kcmp.gen.test b/tests-m32/kcmp.gen.test
index da79d7c1..c073a39e 100755
--- a/tests-m32/kcmp.gen.test
+++ b/tests-m32/kcmp.gen.test
@@ -1,4 +1,4 @@
#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit.
. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a22
diff --git a/tests-m32/list_sigaction_signum.c b/tests-m32/list_sigaction_signum.c
new file mode 100644
index 00000000..13a78c68
--- /dev/null
+++ b/tests-m32/list_sigaction_signum.c
@@ -0,0 +1,57 @@
+/*
+ * List signal numbers that are valid arguments for sigaction syscall.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <signal.h>
+#include <stdio.h>
+
+int
+main(void)
+{
+ unsigned int i;
+
+ for (i = 1; i < 32; ++i) {
+ static const struct sigaction ign = { .sa_handler = SIG_IGN };
+ static const struct sigaction dfl = { .sa_handler = SIG_DFL };
+ struct sigaction act;
+
+ if (sigaction(i, &ign, NULL) ||
+ sigaction(i, NULL, &act) ||
+ ign.sa_handler != act.sa_handler ||
+ sigaction(i, &dfl, NULL) ||
+ sigaction(i, NULL, &act) ||
+ dfl.sa_handler != act.sa_handler)
+ continue;
+
+ printf("%u\n", i);
+ }
+
+ return 0;
+}
diff --git a/tests-m32/membarrier.c b/tests-m32/membarrier.c
index 330893b6..73dd3b02 100644
--- a/tests-m32/membarrier.c
+++ b/tests-m32/membarrier.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,10 +44,28 @@ main(void)
printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
sprintrc(-1));
if (saved_errno != ENOSYS) {
- /* the test needs to be updated? */
- assert(syscall(__NR_membarrier, 0, 0) == 1);
- puts("membarrier(MEMBARRIER_CMD_QUERY, 0)"
- " = 0x1 (MEMBARRIER_CMD_SHARED)");
+ const char *text;
+ int rc = syscall(__NR_membarrier, 0, 0);
+
+ switch (rc) {
+ case 1:
+ text = "MEMBARRIER_CMD_SHARED";
+ break;
+ case 1|8:
+ text = "MEMBARRIER_CMD_SHARED|"
+ "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
+ break;
+ case 1|8|16:
+ text = "MEMBARRIER_CMD_SHARED|"
+ "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+ "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
+ break;
+ default:
+ error_msg_and_fail("membarrier returned %#x, does"
+ " the test have to be updated?", rc);
+ }
+ printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
+ rc, text);
}
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests-m32/memfd_create.c b/tests-m32/memfd_create.c
index 480fd177..4559b426 100644
--- a/tests-m32/memfd_create.c
+++ b/tests-m32/memfd_create.c
@@ -11,10 +11,11 @@ int
main(void)
{
static const char text[] = "strace";
- int rc = syscall(__NR_memfd_create, text, 7);
+ int rc = syscall(__NR_memfd_create, text, 0xf);
- printf("memfd_create(\"%s\", %s) = %d %s (%m)\n",
- text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|0x4", rc, errno2name());
+ printf("memfd_create(\"%s\", %s) = %s\n",
+ text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8",
+ sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests-m32/netlink_crypto.c b/tests-m32/netlink_crypto.c
index deb1644e..d15c17cf 100644
--- a/tests-m32/netlink_crypto.c
+++ b/tests-m32/netlink_crypto.c
@@ -78,9 +78,17 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = CRYPTO_MSG_DELALG;
- nlh.nlmsg_flags = NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=CRYPTO_MSG_DELALG"
+ ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+ nlh.nlmsg_type = CRYPTO_MSG_UPDATEALG;
+ nlh.nlmsg_flags = NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u, type=CRYPTO_MSG_UPDATEALG"
", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, NLM_F_REPLACE,
diff --git a/tests-m32/netlink_netfilter.c b/tests-m32/netlink_netfilter.c
index 2907c261..db2622eb 100644
--- a/tests-m32/netlink_netfilter.c
+++ b/tests-m32/netlink_netfilter.c
@@ -52,19 +52,19 @@ test_nlmsg_type(const int fd)
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+# endif
- nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | NFNL_MSG_BATCH_BEGIN;
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
- printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x"
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */"
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
- fd, nlh.nlmsg_len, NFNL_MSG_BATCH_BEGIN,
- (unsigned) sizeof(nlh), sprintrc(rc));
-# endif
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
- nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8);
+ nlh.nlmsg_type = 0xffff;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
- printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0"
+ printf("sendto(%d, {len=%u, type=0xff /* NFNL_SUBSYS_??? */<<8|0xff"
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
diff --git a/tests-m32/netlink_route.c b/tests-m32/netlink_route.c
index 6af3b13a..a1c7d1f8 100644
--- a/tests-m32/netlink_route.c
+++ b/tests-m32/netlink_route.c
@@ -132,13 +132,12 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = RTM_DELLINK;
- nlh.nlmsg_flags = NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=RTM_DELLINK"
- ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
+ ", flags=NLM_F_NONREC, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
- fd, nlh.nlmsg_len, NLM_F_REPLACE,
- (unsigned) sizeof(nlh), sprintrc(rc));
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
}
static void
diff --git a/tests-m32/netlink_xfrm.c b/tests-m32/netlink_xfrm.c
index 27f62d1e..862a9f6e 100644
--- a/tests-m32/netlink_xfrm.c
+++ b/tests-m32/netlink_xfrm.c
@@ -76,9 +76,17 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = XFRM_MSG_DELSA;
- nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=XFRM_MSG_DELSA"
+ ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+ nlh.nlmsg_type = XFRM_MSG_ALLOCSPI;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u, type=XFRM_MSG_ALLOCSPI"
", flags=NLM_F_ECHO|%#x, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, NLM_F_REPLACE,
diff --git a/tests-m32/nfnetlink_acct.c b/tests-m32/nfnetlink_acct.c
new file mode 100644
index 00000000..52cff99a
--- /dev/null
+++ b/tests-m32/nfnetlink_acct.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_acct.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|0xff /* NFNL_MSG_ACCT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_CREATE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_MATCH, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_DEL;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_DEL"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_acct.gen.test b/tests-m32/nfnetlink_acct.gen.test
new file mode 100755
index 00000000..7db22769
--- /dev/null
+++ b/tests-m32/nfnetlink_acct.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_cthelper.c b/tests-m32/nfnetlink_cthelper.c
new file mode 100644
index 00000000..47fab768
--- /dev/null
+++ b/tests-m32/nfnetlink_cthelper.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_cthelper.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|0xff /* NFNL_MSG_CTHELPER_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_DEL;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_DEL"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_cthelper.gen.test b/tests-m32/nfnetlink_cthelper.gen.test
new file mode 100755
index 00000000..661c949c
--- /dev/null
+++ b/tests-m32/nfnetlink_cthelper.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ctnetlink.c b/tests-m32/nfnetlink_ctnetlink.c
new file mode 100644
index 00000000..a227f38e
--- /dev/null
+++ b/tests-m32/nfnetlink_ctnetlink.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_conntrack.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_ctnetlink.gen.test b/tests-m32/nfnetlink_ctnetlink.gen.test
new file mode 100755
index 00000000..d4c4daaf
--- /dev/null
+++ b/tests-m32/nfnetlink_ctnetlink.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ctnetlink_exp.c b/tests-m32/nfnetlink_ctnetlink_exp.c
new file mode 100644
index 00000000..aa17cd52
--- /dev/null
+++ b/tests-m32/nfnetlink_ctnetlink_exp.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_conntrack.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|0xff /* IPCTNL_MSG_EXP_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_EXCL;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_EXCL, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_ROOT, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_ctnetlink_exp.gen.test b/tests-m32/nfnetlink_ctnetlink_exp.gen.test
new file mode 100755
index 00000000..a5d83f9b
--- /dev/null
+++ b/tests-m32/nfnetlink_ctnetlink_exp.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_cttimeout.c b/tests-m32/nfnetlink_cttimeout.c
new file mode 100644
index 00000000..e66dc24c
--- /dev/null
+++ b/tests-m32/nfnetlink_cttimeout.c
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_cttimeout.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|0xff /* IPCTNL_MSG_TIMEOUT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_APPEND;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_APPEND, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ATOMIC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_ATOMIC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_cttimeout.gen.test b/tests-m32/nfnetlink_cttimeout.gen.test
new file mode 100755
index 00000000..e197f000
--- /dev/null
+++ b/tests-m32/nfnetlink_cttimeout.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ipset.c b/tests-m32/nfnetlink_ipset.c
new file mode 100644
index 00000000..b0d4a7d1
--- /dev/null
+++ b/tests-m32/nfnetlink_ipset.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/ipset/ip_set.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | IPSET_CMD_NONE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_IPSET<<8|IPSET_CMD_NONE"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_IPSET<<8|0xff /* IPSET_CMD_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_IPSET_IP_SET_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_ipset.gen.test b/tests-m32/nfnetlink_ipset.gen.test
new file mode 100755
index 00000000..418437a7
--- /dev/null
+++ b/tests-m32/nfnetlink_ipset.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_nft_compat.c b/tests-m32/nfnetlink_nft_compat.c
new file mode 100644
index 00000000..072ee571
--- /dev/null
+++ b/tests-m32/nfnetlink_nft_compat.c
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nf_tables_compat.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|0xff /* NFNL_MSG_COMPAT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_nft_compat.gen.test b/tests-m32/nfnetlink_nft_compat.gen.test
new file mode 100755
index 00000000..c3dc8907
--- /dev/null
+++ b/tests-m32/nfnetlink_nft_compat.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_nftables.c b/tests-m32/nfnetlink_nftables.c
new file mode 100644
index 00000000..66e5fe94
--- /dev/null
+++ b/tests-m32/nfnetlink_nftables.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nf_tables.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|0xff /* NFT_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_GETTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_GETTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_DELTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_DELTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_nftables.gen.test b/tests-m32/nfnetlink_nftables.gen.test
new file mode 100755
index 00000000..25e90e85
--- /dev/null
+++ b/tests-m32/nfnetlink_nftables.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_osf.c b/tests-m32/nfnetlink_osf.c
new file mode 100644
index 00000000..a6dbb7e6
--- /dev/null
+++ b/tests-m32/nfnetlink_osf.c
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_XT_OSF_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/ip.h>
+# include <linux/tcp.h>
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/xt_osf.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | OSF_MSG_ADD;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_OSF<<8|OSF_MSG_ADD"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_OSF<<8|0xff /* OSF_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_XT_OSF_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_osf.gen.test b/tests-m32/nfnetlink_osf.gen.test
new file mode 100755
index 00000000..2689574a
--- /dev/null
+++ b/tests-m32/nfnetlink_osf.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_queue.c b/tests-m32/nfnetlink_queue.c
new file mode 100644
index 00000000..73ebd9aa
--- /dev/null
+++ b/tests-m32/nfnetlink_queue.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_queue.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_QUEUE<<8|NFQNL_MSG_PACKET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_QUEUE<<8|0xff /* NFQNL_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_queue.gen.test b/tests-m32/nfnetlink_queue.gen.test
new file mode 100755
index 00000000..739fb17d
--- /dev/null
+++ b/tests-m32/nfnetlink_queue.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nfnetlink_ulog.c b/tests-m32/nfnetlink_ulog.c
new file mode 100644
index 00000000..31eb30f1
--- /dev/null
+++ b/tests-m32/nfnetlink_ulog.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_log.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | NFULNL_MSG_PACKET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ULOG<<8|NFULNL_MSG_PACKET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ULOG<<8|0xff /* NFULNL_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H")
+
+#endif
diff --git a/tests-m32/nfnetlink_ulog.gen.test b/tests-m32/nfnetlink_ulog.gen.test
new file mode 100755
index 00000000..850ebafc
--- /dev/null
+++ b/tests-m32/nfnetlink_ulog.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_inet_diag_msg.c b/tests-m32/nlattr_inet_diag_msg.c
index 5666d74b..ccc62aed 100644
--- a/tests-m32/nlattr_inet_diag_msg.c
+++ b/tests-m32/nlattr_inet_diag_msg.c
@@ -182,6 +182,11 @@ main(void)
INET_DIAG_MARK, pattern, mark,
printf("%u", mark));
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_inet_diag_msg, print_inet_diag_msg,
+ INET_DIAG_CLASS_ID, pattern, mark,
+ printf("%u", mark));
+
static const uint8_t shutdown = 0xcd;
TEST_NLATTR(fd, nlh0, hdrlen,
init_inet_diag_msg, print_inet_diag_msg, INET_DIAG_SHUTDOWN,
diff --git a/tests-m32/nlattr_mdba_mdb_entry.c b/tests-m32/nlattr_mdba_mdb_entry.c
new file mode 100644
index 00000000..124fe1d4
--- /dev/null
+++ b/tests-m32/nlattr_mdba_mdb_entry.c
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_BR_PORT_MSG
+
+# include <stdio.h>
+# include "test_nlattr.h"
+# include <arpa/inet.h>
+# include <linux/if_bridge.h>
+# include <linux/rtnetlink.h>
+
+# ifndef MDB_TEMPORARY
+# define MDB_TEMPORARY 0
+# endif
+# ifndef MDBA_MDB_ENTRY_INFO
+# define MDBA_MDB_ENTRY_INFO 1
+# endif
+# ifndef MDBA_MDB_EATTR_TIMER
+# define MDBA_MDB_EATTR_TIMER 1
+# endif
+
+const unsigned int hdrlen = sizeof(struct br_port_msg);
+
+static void
+init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ unsigned int len = msg_len;
+
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = len,
+ .nlmsg_type = RTM_GETMDB,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct br_port_msg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct br_port_msg, msg,
+ .family = AF_UNIX,
+ .ifindex = ifindex_lo()
+ );
+
+ struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ len -= NLMSG_SPACE(hdrlen);
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = len,
+ .nla_type = MDBA_MDB
+ );
+
+ nla = nla + 1;
+ len -= NLA_HDRLEN;
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = len,
+ .nla_type = MDBA_MDB_ENTRY
+ );
+}
+
+static void
+print_br_port_msg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {family=AF_UNIX"
+ ", ifindex=" IFINDEX_LO_STR "}"
+ ", {{nla_len=%u, nla_type=MDBA_MDB}"
+ ", {{nla_len=%u, nla_type=MDBA_MDB_ENTRY}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen),
+ msg_len - NLMSG_SPACE(hdrlen) - NLA_HDRLEN);
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ const unsigned int nla_type = 0xffff & NLA_TYPE_MASK;
+ char nla_type_str[256];
+ sprintf(nla_type_str, "%#x /* MDBA_MDB_ENTRY_??? */", nla_type);
+ TEST_NLATTR_(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2,
+ init_br_port_msg, print_br_port_msg,
+ nla_type, nla_type_str,
+ 4, pattern, 4,
+ print_quoted_hex(pattern, 4);
+ printf("}}"));
+
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY
+ struct br_mdb_entry entry = {
+ .ifindex = ifindex_lo(),
+ .state = MDB_TEMPORARY,
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ .flags = MDB_FLAGS_OFFLOAD,
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ .vid = 0xcdef,
+# endif
+ .addr = {
+ .proto = htons(AF_UNSPEC)
+ }
+ };
+
+ memcpy(&entry.addr.u, pattern, sizeof(entry.addr.u));
+ TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_MDB_ENTRY_INFO, pattern, entry, 2,
+ printf("{ifindex=" IFINDEX_LO_STR);
+ printf(", state=MDB_TEMPORARY");
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ printf(", flags=MDB_FLAGS_OFFLOAD");
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ PRINT_FIELD_U(", ", entry, vid);
+# endif
+ printf(", addr={u=");
+ print_quoted_hex(&entry.addr.u,
+ sizeof(entry.addr.u));
+ printf(", proto=htons(AF_UNSPEC)}}"));
+
+ static const struct nlattr nla = {
+ .nla_len = sizeof(nla),
+ .nla_type = MDBA_MDB_EATTR_TIMER
+ };
+ char buf[NLMSG_ALIGN(sizeof(entry)) + sizeof(nla)];
+ memcpy(buf, &entry, sizeof(entry));
+ memcpy(buf + NLMSG_ALIGN(sizeof(entry)), &nla, sizeof(nla));
+ TEST_NLATTR(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_MDB_ENTRY_INFO, sizeof(buf), buf, sizeof(buf),
+ printf("{ifindex=" IFINDEX_LO_STR);
+ printf(", state=MDB_TEMPORARY");
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ printf(", flags=MDB_FLAGS_OFFLOAD");
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ PRINT_FIELD_U(", ", entry, vid);
+# endif
+ printf(", addr={u=");
+ print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u));
+ printf(", proto=htons(AF_UNSPEC)}}"
+ ", {nla_len=%u, nla_type=MDBA_MDB_EATTR_TIMER}}}",
+ nla.nla_len));
+# endif /* HAVE_STRUCT_BR_MDB_ENTRY */
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG")
+
+#endif
diff --git a/tests-m32/nlattr_mdba_mdb_entry.gen.test b/tests-m32/nlattr_mdba_mdb_entry.gen.test
new file mode 100755
index 00000000..67253e8e
--- /dev/null
+++ b/tests-m32/nlattr_mdba_mdb_entry.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_mdba_router_port.c b/tests-m32/nlattr_mdba_router_port.c
new file mode 100644
index 00000000..af908cd8
--- /dev/null
+++ b/tests-m32/nlattr_mdba_router_port.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_BR_PORT_MSG
+
+# include <stdio.h>
+# include "test_nlattr.h"
+# include <linux/if_bridge.h>
+# include <linux/rtnetlink.h>
+
+# ifndef MDBA_ROUTER
+# define MDBA_ROUTER 2
+# endif
+# ifndef MDBA_ROUTER_PORT
+# define MDBA_ROUTER_PORT 1
+# endif
+# ifndef MDBA_ROUTER_PATTR_TYPE
+# define MDBA_ROUTER_PATTR_TYPE 2
+# endif
+# ifndef MDB_RTR_TYPE_DISABLED
+# define MDB_RTR_TYPE_DISABLED 0
+# endif
+
+const unsigned int hdrlen = sizeof(struct br_port_msg);
+
+static void
+init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETMDB,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct br_port_msg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct br_port_msg, msg,
+ .family = AF_UNIX,
+ .ifindex = ifindex_lo()
+ );
+
+ struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = MDBA_ROUTER
+ );
+}
+
+static void
+print_br_port_msg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {family=AF_UNIX"
+ ", ifindex=" IFINDEX_LO_STR "}"
+ ", {{nla_len=%u, nla_type=MDBA_ROUTER}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ const uint32_t ifindex = ifindex_lo();
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_ROUTER_PORT, pattern, ifindex,
+ printf(IFINDEX_LO_STR));
+
+ const uint8_t type = MDB_RTR_TYPE_DISABLED;
+ static const struct nlattr nla = {
+ .nla_len = NLA_HDRLEN + sizeof(type),
+ .nla_type = MDBA_ROUTER_PATTR_TYPE
+ };
+ char buf[NLMSG_ALIGN(ifindex) + NLA_HDRLEN + sizeof(type)];
+ memcpy(buf, &ifindex, sizeof(ifindex));
+ memcpy(buf + NLMSG_ALIGN(ifindex), &nla, sizeof(nla));
+ memcpy(buf + NLMSG_ALIGN(ifindex) + NLA_HDRLEN, &type, sizeof(type));
+ TEST_NLATTR(fd, nlh0 - NLA_HDRLEN, hdrlen + NLA_HDRLEN,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_ROUTER_PORT, sizeof(buf), buf, sizeof(buf),
+ printf(IFINDEX_LO_STR
+ ", {{nla_len=%u, nla_type=MDBA_ROUTER_PATTR_TYPE}"
+ ", MDB_RTR_TYPE_DISABLED}}",
+ nla.nla_len));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG")
+
+#endif
diff --git a/tests-m32/nlattr_mdba_router_port.gen.test b/tests-m32/nlattr_mdba_router_port.gen.test
new file mode 100755
index 00000000..ce9ea148
--- /dev/null
+++ b/tests-m32/nlattr_mdba_router_port.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_tc_stats.c b/tests-m32/nlattr_tc_stats.c
new file mode 100644
index 00000000..dd76cc7d
--- /dev/null
+++ b/tests-m32/nlattr_tc_stats.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_GNET_STATS_BASIC
+
+# include <stdio.h>
+# include <stddef.h>
+# include "test_nlattr.h"
+# include <linux/gen_stats.h>
+# include <linux/rtnetlink.h>
+
+const unsigned int hdrlen = sizeof(struct tcmsg);
+
+static void
+init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETQDISC,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct tcmsg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct tcmsg, msg,
+ .tcm_family = AF_UNIX,
+ .tcm_ifindex = ifindex_lo()
+ );
+
+ struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = TCA_STATS2
+ );
+}
+
+static void
+print_tcmsg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {tcm_family=AF_UNIX"
+ ", tcm_ifindex=" IFINDEX_LO_STR
+ ", tcm_handle=0, tcm_parent=0, tcm_info=0}"
+ ", {{nla_len=%u, nla_type=TCA_STATS2}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ static const struct gnet_stats_basic sb = {
+ .bytes = 0xabcdebdafefeadeb,
+ .packets = 0xbdcdeabf
+ };
+ char buf[offsetofend(struct gnet_stats_basic, packets)];
+ memcpy(buf, &sb, sizeof(buf));
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_BASIC, pattern, buf,
+ PRINT_FIELD_U("{", sb, bytes);
+ PRINT_FIELD_U(", ", sb, packets);
+ printf("}"));
+
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST
+ static const struct gnet_stats_rate_est est = {
+ .bps = 0xebcdaebd,
+ .pps = 0xabdceade,
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_RATE_EST, pattern, est,
+ PRINT_FIELD_U("{", est, bps);
+ PRINT_FIELD_U(", ", est, pps);
+ printf("}"));
+#endif
+
+#ifdef HAVE_STRUCT_GNET_STATS_QUEUE
+ static const struct gnet_stats_queue qstats = {
+ .qlen = 0xabcdeabd,
+ .backlog = 0xbcdaebad,
+ .drops = 0xcdbeaedb,
+ .requeues = 0xdebaefab,
+ .overlimits = 0xefaebade
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_QUEUE, pattern, qstats,
+ PRINT_FIELD_U("{", qstats, qlen);
+ PRINT_FIELD_U(", ", qstats, backlog);
+ PRINT_FIELD_U(", ", qstats, drops);
+ PRINT_FIELD_U(", ", qstats, requeues);
+ PRINT_FIELD_U(", ", qstats, overlimits);
+ printf("}"));
+#endif
+
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64
+ static const struct gnet_stats_rate_est64 est64 = {
+ .bps = 0xacbdcdefafecaebf,
+ .pps = 0xcdabeabdfeabceaf
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_RATE_EST64, pattern, est64,
+ PRINT_FIELD_U("{", est64, bps);
+ PRINT_FIELD_U(", ", est64, pps);
+ printf("}"));
+#endif
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_GNET_STATS_BASIC")
+
+#endif
diff --git a/tests-m32/nlattr_tc_stats.gen.test b/tests-m32/nlattr_tc_stats.gen.test
new file mode 100755
index 00000000..72780d4a
--- /dev/null
+++ b/tests-m32/nlattr_tc_stats.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_tca_stab.c b/tests-m32/nlattr_tca_stab.c
new file mode 100644
index 00000000..de6d3569
--- /dev/null
+++ b/tests-m32/nlattr_tca_stab.c
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include "test_nlattr.h"
+#include <linux/pkt_sched.h>
+#include <linux/rtnetlink.h>
+
+#ifndef TCA_STAB
+# define TCA_STAB 8
+#endif
+#ifndef TCA_STAB_DATA
+# define TCA_STAB_DATA 2
+#endif
+
+const unsigned int hdrlen = sizeof(struct tcmsg);
+
+static void
+init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETQDISC,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct tcmsg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct tcmsg, msg,
+ .tcm_family = AF_UNIX,
+ .tcm_ifindex = ifindex_lo()
+ );
+
+ struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = TCA_STAB
+ );
+}
+
+static void
+print_tcmsg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {tcm_family=AF_UNIX"
+ ", tcm_ifindex=" IFINDEX_LO_STR
+ ", tcm_handle=0, tcm_parent=0, tcm_info=0}"
+ ", {{nla_len=%u, nla_type=TCA_STAB}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+static void
+print_uint16(const uint16_t *p)
+{
+ printf("%u", *p);
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+#ifdef HAVE_STRUCT_TC_SIZESPEC
+ static const struct tc_sizespec s = {
+ .cell_log = 0xab,
+ .size_log = 0xcd,
+ .cell_align = 0xefab,
+ .overhead = 0xcdadeefa,
+ .linklayer = 0xefbaafeb,
+ .mpu = 0xfebfaefb,
+ .mtu = 0xacdbefab,
+ .tsize = 0xbdeaabed
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STAB_BASE, pattern, s,
+ PRINT_FIELD_U("{", s, cell_log);
+ PRINT_FIELD_U(", ", s, size_log);
+ PRINT_FIELD_D(", ", s, cell_align);
+ PRINT_FIELD_D(", ", s, overhead);
+ PRINT_FIELD_U(", ", s, linklayer);
+ PRINT_FIELD_U(", ", s, mpu);
+ PRINT_FIELD_U(", ", s, mtu);
+ PRINT_FIELD_U(", ", s, tsize);
+ printf("}"));
+#endif
+
+ uint16_t data[2] = { 0xacbd, 0xefba };
+ TEST_NESTED_NLATTR_ARRAY(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STAB_DATA, pattern, data, print_uint16);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests-m32/nlattr_tca_stab.gen.test b/tests-m32/nlattr_tca_stab.gen.test
new file mode 100755
index 00000000..14cd1a54
--- /dev/null
+++ b/tests-m32/nlattr_tca_stab.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-m32/nlattr_tcmsg.c b/tests-m32/nlattr_tcmsg.c
index 00b7ae46..32ce4790 100644
--- a/tests-m32/nlattr_tcmsg.c
+++ b/tests-m32/nlattr_tcmsg.c
@@ -29,7 +29,9 @@
#include "tests.h"
#include <stdio.h>
+#include <stddef.h>
#include "test_nlattr.h"
+#include <linux/pkt_sched.h>
#include <linux/rtnetlink.h>
static void
@@ -80,6 +82,42 @@ main(void)
4, pattern, 4,
print_quoted_hex(pattern, 4));
+ static const struct tc_stats st = {
+ .bytes = 0xabcdcdbefeadefac,
+ .packets = 0xbcdeaefd,
+ .drops = 0xcdedafed,
+ .overlimits = 0xdcdbefad,
+ .bps = 0xefaebfad,
+ .pps = 0xfefbaedb,
+ .qlen = 0xabcdefab,
+ .backlog = 0xbdeabeab
+ };
+ char buf[offsetofend(struct tc_stats, backlog)];
+ memcpy(buf, &st, sizeof(buf));
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS, pattern, buf,
+ PRINT_FIELD_U("{", st, bytes);
+ PRINT_FIELD_U(", ", st, packets);
+ PRINT_FIELD_U(", ", st, drops);
+ PRINT_FIELD_U(", ", st, overlimits);
+ PRINT_FIELD_U(", ", st, bps);
+ PRINT_FIELD_U(", ", st, pps);
+ PRINT_FIELD_U(", ", st, qlen);
+ PRINT_FIELD_U(", ", st, backlog);
+ printf("}"));
+
+ static const struct tc_estimator est = {
+ .interval = 0xcd,
+ .ewma_log = 0xab
+ };
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_RATE, pattern, est,
+ PRINT_FIELD_D("{", est, interval);
+ PRINT_FIELD_U(", ", est, ewma_log);
+ printf("}"));
+
puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests-m32/options-syntax.test b/tests-m32/options-syntax.test
index b4d9be70..2e459c96 100755
--- a/tests-m32/options-syntax.test
+++ b/tests-m32/options-syntax.test
@@ -80,16 +80,21 @@ check_h "invalid -s argument: '-42'" -s -42
check_h "invalid -s argument: '1073741824'" -s 1073741824
check_h "invalid -I argument: '5'" -I 5
-cat > "$EXP" << '__EOF__'
-strace: must have PROG [ARGS] or -p PID
-Try 'strace -h' for more information.
-__EOF__
../zeroargc "$strace_exp" /bin/true 2> "$LOG" &&
dump_log_and_fail_with \
'zeroargc strace failed to handle the error properly'
-match_diff "$LOG" "$EXP" ||
- dump_log_and_fail_with \
- 'zeroargc strace failed to print expected diagnostics'
+cat > "$EXP" << __EOF__
+$strace_exp: must have PROG [ARGS] or -p PID
+Try '$strace_exp -h' for more information.
+__EOF__
+diff -u -- "$EXP" "$LOG" > /dev/null || {
+ cat > "$EXP" <<- '__EOF__'
+ strace: must have PROG [ARGS] or -p PID
+ Try 'strace -h' for more information.
+ __EOF__
+ match_diff "$LOG" "$EXP" \
+ "zeroargc $STRACE $args output mismatch"
+}
if [ -n "${UID-}" ]; then
if [ "${UID-}" = 0 ]; then
diff --git a/tests-m32/prctl-seccomp-filter-v.c b/tests-m32/prctl-seccomp-filter-v.c
index cfd5d3dd..7a65d898 100644
--- a/tests-m32/prctl-seccomp-filter-v.c
+++ b/tests-m32/prctl-seccomp-filter-v.c
@@ -114,7 +114,7 @@ main(void)
PRINT_DENY_SYSCALL(sync, EBUSY),
PRINT_DENY_SYSCALL(setsid, EPERM),
- printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)");
+ printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)");
puts("]}) = 0");
puts("+++ exited with 0 +++");
diff --git a/tests-m32/pure_executables.am b/tests-m32/pure_executables.am
index 9dc532a6..2cae9ae5 100644
--- a/tests-m32/pure_executables.am
+++ b/tests-m32/pure_executables.am
@@ -123,6 +123,7 @@ PURE_EXECUTABLES = \
ipc_sem \
ipc_shm \
kcmp \
+ kcmp-y \
kexec_file_load \
kexec_load \
keyctl \
@@ -180,6 +181,17 @@ PURE_EXECUTABLES = \
netlink_sock_diag \
netlink_xfrm \
newfstatat \
+ nfnetlink_acct \
+ nfnetlink_cthelper \
+ nfnetlink_ctnetlink \
+ nfnetlink_ctnetlink_exp \
+ nfnetlink_cttimeout \
+ nfnetlink_nft_compat \
+ nfnetlink_nftables \
+ nfnetlink_ipset \
+ nfnetlink_osf \
+ nfnetlink_queue \
+ nfnetlink_ulog \
nlattr \
nlattr_crypto_user_alg \
nlattr_br_port_msg \
@@ -194,6 +206,8 @@ PURE_EXECUTABLES = \
nlattr_inet_diag_msg \
nlattr_inet_diag_req_compat \
nlattr_inet_diag_req_v2 \
+ nlattr_mdba_mdb_entry \
+ nlattr_mdba_router_port \
nlattr_ndmsg \
nlattr_ndtmsg \
nlattr_netconfmsg \
@@ -203,6 +217,8 @@ PURE_EXECUTABLES = \
nlattr_rtgenmsg \
nlattr_rtmsg \
nlattr_smc_diag_msg \
+ nlattr_tc_stats \
+ nlattr_tca_stab \
nlattr_tcamsg \
nlattr_tcmsg \
nlattr_unix_diag_msg \
@@ -283,6 +299,7 @@ PURE_EXECUTABLES = \
sched_xetscheduler \
sched_yield \
seccomp-filter \
+ seccomp_get_action_avail \
select \
semop \
sendfile \
diff --git a/tests-m32/pure_executables.list b/tests-m32/pure_executables.list
index dade57b0..d98b17db 100755
--- a/tests-m32/pure_executables.list
+++ b/tests-m32/pure_executables.list
@@ -122,6 +122,7 @@ ipc_msgbuf
ipc_sem
ipc_shm
kcmp
+kcmp-y
kexec_file_load
kexec_load
keyctl
@@ -179,6 +180,17 @@ netlink_selinux
netlink_sock_diag
netlink_xfrm
newfstatat
+nfnetlink_acct
+nfnetlink_cthelper
+nfnetlink_ctnetlink
+nfnetlink_ctnetlink_exp
+nfnetlink_cttimeout
+nfnetlink_nft_compat
+nfnetlink_nftables
+nfnetlink_ipset
+nfnetlink_osf
+nfnetlink_queue
+nfnetlink_ulog
nlattr
nlattr_crypto_user_alg
nlattr_br_port_msg
@@ -193,6 +205,8 @@ nlattr_ifla_xdp
nlattr_inet_diag_msg
nlattr_inet_diag_req_compat
nlattr_inet_diag_req_v2
+nlattr_mdba_mdb_entry
+nlattr_mdba_router_port
nlattr_ndmsg
nlattr_ndtmsg
nlattr_netconfmsg
@@ -202,6 +216,8 @@ nlattr_packet_diag_msg
nlattr_rtgenmsg
nlattr_rtmsg
nlattr_smc_diag_msg
+nlattr_tc_stats
+nlattr_tca_stab
nlattr_tcamsg
nlattr_tcmsg
nlattr_unix_diag_msg
@@ -282,6 +298,7 @@ sched_xetparam
sched_xetscheduler
sched_yield
seccomp-filter
+seccomp_get_action_avail
select
semop
sendfile
diff --git a/tests-m32/seccomp-filter-v.c b/tests-m32/seccomp-filter-v.c
index e419c6cb..34ab3b58 100644
--- a/tests-m32/seccomp-filter-v.c
+++ b/tests-m32/seccomp-filter-v.c
@@ -95,7 +95,7 @@ main(void)
tprintf("%s", "");
static const char kill_stmt_txt[] =
- "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)";
+ "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)";
struct sock_filter *const filter =
tail_memdup(filter_c, sizeof(filter_c));
struct sock_filter *const big_filter =
@@ -136,7 +136,8 @@ main(void)
prog->filter = big_filter;
prog->len = BPF_MAXINSNS + 1;
tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[",
- "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", prog->len);
+ "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc",
+ prog->len);
for (i = 0; i < BPF_MAXINSNS; ++i) {
if (i)
tprintf(", ");
diff --git a/tests-m32/seccomp-filter.c b/tests-m32/seccomp-filter.c
index 6e009823..7bc76560 100644
--- a/tests-m32/seccomp-filter.c
+++ b/tests-m32/seccomp-filter.c
@@ -55,12 +55,13 @@ main(void)
prog->len = N;
rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -1, prog);
printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=%p})"
- " = %ld %s (%m)\n", "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe",
+ " = %ld %s (%m)\n",
+ "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc",
prog->len, prog->filter, rc, errno2name());
- rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -2L, efault);
+ rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -4L, efault);
printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n",
- "0xfffffffe /* SECCOMP_FILTER_FLAG_??? */",
+ "0xfffffffc /* SECCOMP_FILTER_FLAG_??? */",
efault, rc, errno2name());
puts("+++ exited with 0 +++");
diff --git a/tests-m32/seccomp_get_action_avail.c b/tests-m32/seccomp_get_action_avail.c
new file mode 100644
index 00000000..ed231e17
--- /dev/null
+++ b/tests-m32/seccomp_get_action_avail.c
@@ -0,0 +1,125 @@
+/*
+ * Check decoding of seccomp SECCOMP_GET_ACTION_AVAIL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_seccomp
+
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+# ifdef HAVE_LINUX_SECCOMP_H
+# include <linux/seccomp.h>
+# endif
+
+# ifndef SECCOMP_GET_ACTION_AVAIL
+# define SECCOMP_GET_ACTION_AVAIL 2
+# endif
+
+static const char *errstr;
+
+static long
+k_seccomp(const kernel_ulong_t op, const kernel_ulong_t flags,
+ const kernel_ulong_t args)
+{
+ const long rc = syscall(__NR_seccomp, op, flags, args);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, act);
+ kernel_ulong_t op = (kernel_ulong_t) 0xfacefeed00000000ULL
+ | SECCOMP_GET_ACTION_AVAIL;
+ kernel_ulong_t flags = (kernel_ulong_t) 0xdeadbeef00000000ULL;
+ unsigned int i;
+
+ struct {
+ uint32_t val;
+ const char *str;
+ } actions [] = {
+ { 0, "SECCOMP_RET_KILL_THREAD" },
+# ifdef SECCOMP_RET_KILL_PROCESS
+ { ARG_STR(SECCOMP_RET_KILL_PROCESS) },
+# endif
+# ifdef SECCOMP_RET_TRAP
+ { ARG_STR(SECCOMP_RET_TRAP) },
+# endif
+# ifdef SECCOMP_RET_ERRNO
+ { ARG_STR(SECCOMP_RET_ERRNO) },
+# endif
+# ifdef SECCOMP_RET_TRACE
+ { ARG_STR(SECCOMP_RET_TRACE) },
+# endif
+# ifdef SECCOMP_RET_LOG
+ { ARG_STR(SECCOMP_RET_LOG) },
+# endif
+# ifdef SECCOMP_RET_ALLOW
+ { ARG_STR(SECCOMP_RET_ALLOW) },
+# endif
+ { 0xffffffff, "0xffffffff /* SECCOMP_RET_??? */" }
+ };
+
+ for (i = 0; i < ARRAY_SIZE(actions); ++i) {
+ *act = actions[i].val;
+ k_seccomp(op, flags, (uintptr_t) act);
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, [%s]) = %s\n",
+ actions[i].str, errstr);
+ }
+
+ *act = actions[0].val;
+
+ k_seccomp(op, flags, (uintptr_t) (act + 1));
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %p) = %s\n",
+ act + 1, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_seccomp(op, flags, f8ill_ptr_to_kulong(act));
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %#jx) = %s\n",
+ (uintmax_t) f8ill_ptr_to_kulong(act), errstr);
+ }
+
+ flags |= 0xcafef00d;
+ k_seccomp(op, flags, 0);
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, %u, NULL) = %s\n",
+ (unsigned int) flags, errstr);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_seccomp")
+
+#endif
diff --git a/tests-m32/seccomp_get_action_avail.gen.test b/tests-m32/seccomp_get_action_avail.gen.test
new file mode 100755
index 00000000..49974510
--- /dev/null
+++ b/tests-m32/seccomp_get_action_avail.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp_get_action_avail -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=seccomp
diff --git a/tests-m32/set_sigblock.c b/tests-m32/set_sigblock.c
new file mode 100644
index 00000000..4786322c
--- /dev/null
+++ b/tests-m32/set_sigblock.c
@@ -0,0 +1,53 @@
+/*
+ * Execute a command with the specified signal blocked/unblocked.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac < 4)
+ error_msg_and_fail("usage: set_sigblock 0|1 signum path...");
+
+ const int block = atoi(av[1]);
+ const int signum = atoi(av[2]);
+ sigset_t mask;
+
+ sigemptyset(&mask);
+ if (sigaddset(&mask, signum))
+ perror_msg_and_fail("sigaddset: %s", av[2]);
+ if (sigprocmask(block ? SIG_BLOCK : SIG_UNBLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ execvp(av[3], av + 3);
+ perror_msg_and_fail("execvp: %s", av[3]);
+}
diff --git a/tests-m32/set_sigign.c b/tests-m32/set_sigign.c
new file mode 100644
index 00000000..0319fed3
--- /dev/null
+++ b/tests-m32/set_sigign.c
@@ -0,0 +1,49 @@
+/*
+ * Execute a command with a signal handler set to SIG_IGN/SIG_DFL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac < 4)
+ error_msg_and_fail("usage: set_sigign 0|1 signum path...");
+
+ const int ign = atoi(av[1]);
+ const int signum = atoi(av[2]);
+
+ if (signal(signum, ign ? SIG_IGN : SIG_DFL) == SIG_ERR)
+ perror_msg_and_fail("signal: %s", av[2]);
+
+ execvp(av[3], av + 3);
+ perror_msg_and_fail("execvp: %s", av[3]);
+}
diff --git a/tests-m32/sigblock.test b/tests-m32/sigblock.test
new file mode 100755
index 00000000..ddbe2dea
--- /dev/null
+++ b/tests-m32/sigblock.test
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Check signal mask transparency.
+# Starting with commit v4.17-5-gf83b49b strace is expected
+# to forward the signal mask to tracees unchanged.
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../list_sigaction_signum > /dev/null
+saved_STRACE="$STRACE"
+
+for sig in $(../list_sigaction_signum); do
+ for block in 0 1; do
+ set_cmd="../set_sigblock $block $sig"
+ check_cmd="../check_sigblock $block $sig"
+ run_prog $set_cmd $check_cmd
+ STRACE="$set_cmd $saved_STRACE"
+ for i in '' -I1 -I2 -I3 -I4; do
+ run_strace $i -enone $check_cmd
+ done
+ done
+done
diff --git a/tests-m32/sigign.test b/tests-m32/sigign.test
new file mode 100755
index 00000000..3164e72e
--- /dev/null
+++ b/tests-m32/sigign.test
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Check signal disposition transparency.
+# Starting with commit v4.17-8-ge97a66f strace is expected
+# to forward the signal disposition to tracees unchanged.
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../list_sigaction_signum > /dev/null
+saved_STRACE="$STRACE"
+
+for sig in $(../list_sigaction_signum); do
+ for ign in 0 1; do
+ set_cmd="../set_sigign $ign $sig"
+ check_cmd="../check_sigign $ign $sig"
+ run_prog $set_cmd $check_cmd
+ STRACE="$set_cmd $saved_STRACE"
+ for i in '' -I1 -I2 -I3 -I4; do
+ run_strace $i -enone $check_cmd
+ done
+ done
+done
diff --git a/tests-m32/test_nlattr.h b/tests-m32/test_nlattr.h
index 048d5475..43f467ff 100644
--- a/tests-m32/test_nlattr.h
+++ b/tests-m32/test_nlattr.h
@@ -203,14 +203,75 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
printf("]")); \
} while (0)
-#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \
- init_msg_, print_msg_, \
- nla_type_, pattern_, obj_, ...) \
+#define TEST_NESTED_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, nla_type_str_, \
+ pattern_, obj_, depth_, ...) \
do { \
const unsigned int plen = \
sizeof(obj_) - 1 > DEFAULT_STRLEN \
? DEFAULT_STRLEN : (int) sizeof(obj_) - 1; \
/* len < sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ plen, (pattern_), plen, \
+ print_quoted_hex((pattern_), plen); \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ /* short read of sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ sizeof(obj_), \
+ (pattern_), sizeof(obj_) - 1, \
+ printf("%p", RTA_DATA(TEST_NLATTR_nla)); \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ /* sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ sizeof(obj_), \
+ &(obj_), sizeof(obj_), \
+ __VA_ARGS__; \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ } while (0)
+
+#define TEST_NESTED_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, \
+ depth_, ...) \
+ TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ (pattern_), (obj_), (depth_), \
+ __VA_ARGS__)
+
+#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, ...) \
+ TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ (pattern_), (obj_), 1, \
+ __VA_ARGS__)
+
+#define TEST_NESTED_NLATTR_ARRAY(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, print_elem_)\
+ do { \
+ const unsigned int plen = \
+ sizeof((obj_)[0]) - 1 > DEFAULT_STRLEN \
+ ? DEFAULT_STRLEN : (int) sizeof((obj_)[0]) - 1; \
+ /* len < sizeof((obj_)[0]) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
(init_msg_), (print_msg_), \
@@ -218,15 +279,36 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
plen, (pattern_), plen, \
print_quoted_hex((pattern_), plen); \
printf("}")); \
+ /* sizeof((obj_)[0]) < len < sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
+ (hdrlen_) + NLA_HDRLEN, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ sizeof(obj_) - 1, \
+ &(obj_), sizeof(obj_) - 1, \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf("]}")); \
/* short read of sizeof(obj_) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
(init_msg_), (print_msg_), \
(nla_type_), #nla_type_, \
sizeof(obj_), \
- (pattern_), sizeof(obj_) - 1, \
- printf("%p}", \
- RTA_DATA(TEST_NLATTR_nla))); \
+ &(obj_), sizeof(obj_) - 1, \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf(", %p]}", \
+ RTA_DATA(TEST_NLATTR_nla) \
+ + sizeof((obj_)[0]))); \
/* sizeof(obj_) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
@@ -234,6 +316,11 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
(nla_type_), #nla_type_, \
sizeof(obj_), \
&(obj_), sizeof(obj_), \
- __VA_ARGS__, \
- printf("}")); \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_); ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf("]}")); \
} while (0)
diff --git a/tests-mx32/Makefile.am b/tests-mx32/Makefile.am
index 043b21f4..c445353c 100644
--- a/tests-mx32/Makefile.am
+++ b/tests-mx32/Makefile.am
@@ -87,6 +87,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
attach-p-cmd-p \
block_reset_raise_run \
caps-abbrev \
+ check_sigblock \
+ check_sigign \
clone_parent \
clone_ptrace \
count-f \
@@ -106,6 +108,7 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
ioctl_rtc-v \
is_linux_mips_n64 \
ksysent \
+ list_sigaction_signum \
mmsg-silent \
mmsg_name-v \
msg_control-v \
@@ -135,6 +138,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
seccomp-filter-v \
seccomp-strict \
set_ptracer_any \
+ set_sigblock \
+ set_sigign \
signal_receive \
sleep \
stack-fcall \
@@ -278,6 +283,8 @@ MISC_TESTS = \
redirect-fds.test \
redirect.test \
restart_syscall.test \
+ sigblock.test \
+ sigign.test \
strace-C.test \
strace-E.test \
strace-S.test \
diff --git a/tests-mx32/Makefile.in b/tests-mx32/Makefile.in
index 6886c3b0..272fa470 100644
--- a/tests-mx32/Makefile.in
+++ b/tests-mx32/Makefile.in
@@ -139,7 +139,8 @@ DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \
- caps-abbrev$(EXEEXT) clone_parent$(EXEEXT) \
+ caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
+ check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \
execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \
fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
@@ -147,10 +148,11 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \
- mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
- msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
- netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
- netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \
+ list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \
+ mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \
+ net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \
+ netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
+ nsyscalls$(EXEEXT) pc$(EXEEXT) \
perf_event_open_nonverbose$(EXEEXT) \
perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
@@ -161,8 +163,9 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \
seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
- set_ptracer_any$(EXEEXT) signal_receive$(EXEEXT) \
- sleep$(EXEEXT) stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
+ set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
+ set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
+ stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
@@ -253,9 +256,9 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
ipc_msg$(EXEEXT) ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) \
- ipc_shm$(EXEEXT) kcmp$(EXEEXT) kexec_file_load$(EXEEXT) \
- kexec_load$(EXEEXT) keyctl$(EXEEXT) kill$(EXEEXT) \
- lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \
+ ipc_shm$(EXEEXT) kcmp$(EXEEXT) kcmp-y$(EXEEXT) \
+ kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) keyctl$(EXEEXT) \
+ kill$(EXEEXT) lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \
linkat$(EXEEXT) llseek$(EXEEXT) lookup_dcookie$(EXEEXT) \
lseek$(EXEEXT) lstat$(EXEEXT) lstat64$(EXEEXT) \
madvise$(EXEEXT) mbind$(EXEEXT) membarrier$(EXEEXT) \
@@ -275,19 +278,27 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
netlink_netfilter$(EXEEXT) netlink_protocol$(EXEEXT) \
netlink_route$(EXEEXT) netlink_selinux$(EXEEXT) \
netlink_sock_diag$(EXEEXT) netlink_xfrm$(EXEEXT) \
- newfstatat$(EXEEXT) nlattr$(EXEEXT) \
- nlattr_crypto_user_alg$(EXEEXT) nlattr_br_port_msg$(EXEEXT) \
- nlattr_dcbmsg$(EXEEXT) nlattr_fib_rule_hdr$(EXEEXT) \
- nlattr_ifaddrlblmsg$(EXEEXT) nlattr_ifaddrmsg$(EXEEXT) \
- nlattr_ifinfomsg$(EXEEXT) nlattr_ifla_brport$(EXEEXT) \
- nlattr_ifla_port$(EXEEXT) nlattr_ifla_xdp$(EXEEXT) \
- nlattr_inet_diag_msg$(EXEEXT) \
+ newfstatat$(EXEEXT) nfnetlink_acct$(EXEEXT) \
+ nfnetlink_cthelper$(EXEEXT) nfnetlink_ctnetlink$(EXEEXT) \
+ nfnetlink_ctnetlink_exp$(EXEEXT) nfnetlink_cttimeout$(EXEEXT) \
+ nfnetlink_nft_compat$(EXEEXT) nfnetlink_nftables$(EXEEXT) \
+ nfnetlink_ipset$(EXEEXT) nfnetlink_osf$(EXEEXT) \
+ nfnetlink_queue$(EXEEXT) nfnetlink_ulog$(EXEEXT) \
+ nlattr$(EXEEXT) nlattr_crypto_user_alg$(EXEEXT) \
+ nlattr_br_port_msg$(EXEEXT) nlattr_dcbmsg$(EXEEXT) \
+ nlattr_fib_rule_hdr$(EXEEXT) nlattr_ifaddrlblmsg$(EXEEXT) \
+ nlattr_ifaddrmsg$(EXEEXT) nlattr_ifinfomsg$(EXEEXT) \
+ nlattr_ifla_brport$(EXEEXT) nlattr_ifla_port$(EXEEXT) \
+ nlattr_ifla_xdp$(EXEEXT) nlattr_inet_diag_msg$(EXEEXT) \
nlattr_inet_diag_req_compat$(EXEEXT) \
- nlattr_inet_diag_req_v2$(EXEEXT) nlattr_ndmsg$(EXEEXT) \
+ nlattr_inet_diag_req_v2$(EXEEXT) \
+ nlattr_mdba_mdb_entry$(EXEEXT) \
+ nlattr_mdba_router_port$(EXEEXT) nlattr_ndmsg$(EXEEXT) \
nlattr_ndtmsg$(EXEEXT) nlattr_netconfmsg$(EXEEXT) \
nlattr_netlink_diag_msg$(EXEEXT) nlattr_nlmsgerr$(EXEEXT) \
nlattr_packet_diag_msg$(EXEEXT) nlattr_rtgenmsg$(EXEEXT) \
nlattr_rtmsg$(EXEEXT) nlattr_smc_diag_msg$(EXEEXT) \
+ nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \
nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \
nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \
oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
@@ -321,7 +332,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \
sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \
sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \
- sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) select$(EXEEXT) \
+ sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) \
+ seccomp_get_action_avail$(EXEEXT) select$(EXEEXT) \
semop$(EXEEXT) sendfile$(EXEEXT) sendfile64$(EXEEXT) \
set_mempolicy$(EXEEXT) setdomainname$(EXEEXT) \
setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
@@ -439,6 +451,14 @@ caps_abbrev_SOURCES = caps-abbrev.c
caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT)
caps_abbrev_LDADD = $(LDADD)
caps_abbrev_DEPENDENCIES = libtests.a
+check_sigblock_SOURCES = check_sigblock.c
+check_sigblock_OBJECTS = check_sigblock.$(OBJEXT)
+check_sigblock_LDADD = $(LDADD)
+check_sigblock_DEPENDENCIES = libtests.a
+check_sigign_SOURCES = check_sigign.c
+check_sigign_OBJECTS = check_sigign.$(OBJEXT)
+check_sigign_LDADD = $(LDADD)
+check_sigign_DEPENDENCIES = libtests.a
chmod_SOURCES = chmod.c
chmod_OBJECTS = chmod.$(OBJEXT)
chmod_LDADD = $(LDADD)
@@ -936,6 +956,10 @@ kcmp_SOURCES = kcmp.c
kcmp_OBJECTS = kcmp.$(OBJEXT)
kcmp_LDADD = $(LDADD)
kcmp_DEPENDENCIES = libtests.a
+kcmp_y_SOURCES = kcmp-y.c
+kcmp_y_OBJECTS = kcmp-y.$(OBJEXT)
+kcmp_y_LDADD = $(LDADD)
+kcmp_y_DEPENDENCIES = libtests.a
kexec_file_load_SOURCES = kexec_file_load.c
kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT)
kexec_file_load_LDADD = $(LDADD)
@@ -972,6 +996,10 @@ linkat_SOURCES = linkat.c
linkat_OBJECTS = linkat.$(OBJEXT)
linkat_LDADD = $(LDADD)
linkat_DEPENDENCIES = libtests.a
+list_sigaction_signum_SOURCES = list_sigaction_signum.c
+list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT)
+list_sigaction_signum_LDADD = $(LDADD)
+list_sigaction_signum_DEPENDENCIES = libtests.a
llseek_SOURCES = llseek.c
llseek_OBJECTS = llseek.$(OBJEXT)
llseek_LDADD = $(LDADD)
@@ -1192,6 +1220,50 @@ newfstatat_SOURCES = newfstatat.c
newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT)
newfstatat_LDADD = $(LDADD)
newfstatat_DEPENDENCIES = libtests.a
+nfnetlink_acct_SOURCES = nfnetlink_acct.c
+nfnetlink_acct_OBJECTS = nfnetlink_acct.$(OBJEXT)
+nfnetlink_acct_LDADD = $(LDADD)
+nfnetlink_acct_DEPENDENCIES = libtests.a
+nfnetlink_cthelper_SOURCES = nfnetlink_cthelper.c
+nfnetlink_cthelper_OBJECTS = nfnetlink_cthelper.$(OBJEXT)
+nfnetlink_cthelper_LDADD = $(LDADD)
+nfnetlink_cthelper_DEPENDENCIES = libtests.a
+nfnetlink_ctnetlink_SOURCES = nfnetlink_ctnetlink.c
+nfnetlink_ctnetlink_OBJECTS = nfnetlink_ctnetlink.$(OBJEXT)
+nfnetlink_ctnetlink_LDADD = $(LDADD)
+nfnetlink_ctnetlink_DEPENDENCIES = libtests.a
+nfnetlink_ctnetlink_exp_SOURCES = nfnetlink_ctnetlink_exp.c
+nfnetlink_ctnetlink_exp_OBJECTS = nfnetlink_ctnetlink_exp.$(OBJEXT)
+nfnetlink_ctnetlink_exp_LDADD = $(LDADD)
+nfnetlink_ctnetlink_exp_DEPENDENCIES = libtests.a
+nfnetlink_cttimeout_SOURCES = nfnetlink_cttimeout.c
+nfnetlink_cttimeout_OBJECTS = nfnetlink_cttimeout.$(OBJEXT)
+nfnetlink_cttimeout_LDADD = $(LDADD)
+nfnetlink_cttimeout_DEPENDENCIES = libtests.a
+nfnetlink_ipset_SOURCES = nfnetlink_ipset.c
+nfnetlink_ipset_OBJECTS = nfnetlink_ipset.$(OBJEXT)
+nfnetlink_ipset_LDADD = $(LDADD)
+nfnetlink_ipset_DEPENDENCIES = libtests.a
+nfnetlink_nft_compat_SOURCES = nfnetlink_nft_compat.c
+nfnetlink_nft_compat_OBJECTS = nfnetlink_nft_compat.$(OBJEXT)
+nfnetlink_nft_compat_LDADD = $(LDADD)
+nfnetlink_nft_compat_DEPENDENCIES = libtests.a
+nfnetlink_nftables_SOURCES = nfnetlink_nftables.c
+nfnetlink_nftables_OBJECTS = nfnetlink_nftables.$(OBJEXT)
+nfnetlink_nftables_LDADD = $(LDADD)
+nfnetlink_nftables_DEPENDENCIES = libtests.a
+nfnetlink_osf_SOURCES = nfnetlink_osf.c
+nfnetlink_osf_OBJECTS = nfnetlink_osf.$(OBJEXT)
+nfnetlink_osf_LDADD = $(LDADD)
+nfnetlink_osf_DEPENDENCIES = libtests.a
+nfnetlink_queue_SOURCES = nfnetlink_queue.c
+nfnetlink_queue_OBJECTS = nfnetlink_queue.$(OBJEXT)
+nfnetlink_queue_LDADD = $(LDADD)
+nfnetlink_queue_DEPENDENCIES = libtests.a
+nfnetlink_ulog_SOURCES = nfnetlink_ulog.c
+nfnetlink_ulog_OBJECTS = nfnetlink_ulog.$(OBJEXT)
+nfnetlink_ulog_LDADD = $(LDADD)
+nfnetlink_ulog_DEPENDENCIES = libtests.a
nlattr_SOURCES = nlattr.c
nlattr_OBJECTS = nlattr.$(OBJEXT)
nlattr_LDADD = $(LDADD)
@@ -1249,6 +1321,14 @@ nlattr_inet_diag_req_v2_SOURCES = nlattr_inet_diag_req_v2.c
nlattr_inet_diag_req_v2_OBJECTS = nlattr_inet_diag_req_v2.$(OBJEXT)
nlattr_inet_diag_req_v2_LDADD = $(LDADD)
nlattr_inet_diag_req_v2_DEPENDENCIES = libtests.a
+nlattr_mdba_mdb_entry_SOURCES = nlattr_mdba_mdb_entry.c
+nlattr_mdba_mdb_entry_OBJECTS = nlattr_mdba_mdb_entry.$(OBJEXT)
+nlattr_mdba_mdb_entry_LDADD = $(LDADD)
+nlattr_mdba_mdb_entry_DEPENDENCIES = libtests.a
+nlattr_mdba_router_port_SOURCES = nlattr_mdba_router_port.c
+nlattr_mdba_router_port_OBJECTS = nlattr_mdba_router_port.$(OBJEXT)
+nlattr_mdba_router_port_LDADD = $(LDADD)
+nlattr_mdba_router_port_DEPENDENCIES = libtests.a
nlattr_ndmsg_SOURCES = nlattr_ndmsg.c
nlattr_ndmsg_OBJECTS = nlattr_ndmsg.$(OBJEXT)
nlattr_ndmsg_LDADD = $(LDADD)
@@ -1285,6 +1365,14 @@ nlattr_smc_diag_msg_SOURCES = nlattr_smc_diag_msg.c
nlattr_smc_diag_msg_OBJECTS = nlattr_smc_diag_msg.$(OBJEXT)
nlattr_smc_diag_msg_LDADD = $(LDADD)
nlattr_smc_diag_msg_DEPENDENCIES = libtests.a
+nlattr_tc_stats_SOURCES = nlattr_tc_stats.c
+nlattr_tc_stats_OBJECTS = nlattr_tc_stats.$(OBJEXT)
+nlattr_tc_stats_LDADD = $(LDADD)
+nlattr_tc_stats_DEPENDENCIES = libtests.a
+nlattr_tca_stab_SOURCES = nlattr_tca_stab.c
+nlattr_tca_stab_OBJECTS = nlattr_tca_stab.$(OBJEXT)
+nlattr_tca_stab_LDADD = $(LDADD)
+nlattr_tca_stab_DEPENDENCIES = libtests.a
nlattr_tcamsg_SOURCES = nlattr_tcamsg.c
nlattr_tcamsg_OBJECTS = nlattr_tcamsg.$(OBJEXT)
nlattr_tcamsg_LDADD = $(LDADD)
@@ -1696,6 +1784,10 @@ seccomp_strict_SOURCES = seccomp-strict.c
seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT)
seccomp_strict_LDADD = $(LDADD)
seccomp_strict_DEPENDENCIES = libtests.a
+seccomp_get_action_avail_SOURCES = seccomp_get_action_avail.c
+seccomp_get_action_avail_OBJECTS = seccomp_get_action_avail.$(OBJEXT)
+seccomp_get_action_avail_LDADD = $(LDADD)
+seccomp_get_action_avail_DEPENDENCIES = libtests.a
select_SOURCES = select.c
select_OBJECTS = select.$(OBJEXT)
select_LDADD = $(LDADD)
@@ -1720,6 +1812,14 @@ set_ptracer_any_SOURCES = set_ptracer_any.c
set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
set_ptracer_any_LDADD = $(LDADD)
set_ptracer_any_DEPENDENCIES = libtests.a
+set_sigblock_SOURCES = set_sigblock.c
+set_sigblock_OBJECTS = set_sigblock.$(OBJEXT)
+set_sigblock_LDADD = $(LDADD)
+set_sigblock_DEPENDENCIES = libtests.a
+set_sigign_SOURCES = set_sigign.c
+set_sigign_OBJECTS = set_sigign.$(OBJEXT)
+set_sigign_LDADD = $(LDADD)
+set_sigign_DEPENDENCIES = libtests.a
setdomainname_SOURCES = setdomainname.c
setdomainname_OBJECTS = setdomainname.$(OBJEXT)
setdomainname_LDADD = $(LDADD)
@@ -2169,10 +2269,11 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
- btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \
- chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
- clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
- creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c clone_parent.c \
+ clone_ptrace.c copy_file_range.c count-f.c creat.c \
+ delete_module.c dup.c dup2.c dup3.c epoll_create.c \
epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2195,39 +2296,45 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
- ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \
+ ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
- lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
- lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
- memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
- mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
- mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
- move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
- mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
- munlockall.c nanosleep.c net-accept-connect.c \
- net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
- net-yy-netlink.c net-yy-unix.c netlink_audit.c \
- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \
- netlink_kobject_uevent.c netlink_netfilter.c \
- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \
- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \
- netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \
- nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \
- nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \
- nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \
- nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \
- nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \
- nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \
- nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \
- nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \
- nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \
- oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \
- osf_utimes.c pause.c pc.c perf_event_open.c \
- perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
- personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \
- prctl-dumpable.c prctl-name.c prctl-no-args.c \
- prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
+ llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \
+ mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
+ mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
+ mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
+ mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
+ mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
+ msg_control-v.c msg_name.c munlockall.c nanosleep.c \
+ net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
+ net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
+ netlink_audit.c netlink_crypto.c netlink_generic.c \
+ netlink_inet_diag.c netlink_kobject_uevent.c \
+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \
+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \
+ nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \
+ nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \
+ nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \
+ nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \
+ nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
+ nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \
+ nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \
+ nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \
+ nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \
+ nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \
+ nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \
+ nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
+ nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
+ nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
+ perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2248,8 +2355,9 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
sched_xetparam.c sched_xetscheduler.c sched_yield.c \
scm_rights.c seccomp-filter.c seccomp-filter-v.c \
- seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \
- set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \
+ seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
+ sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
+ set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
setregid32.c setresgid.c setresgid32.c setresuid.c \
@@ -2275,10 +2383,11 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
- btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \
- chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
- clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
- creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c clone_parent.c \
+ clone_ptrace.c copy_file_range.c count-f.c creat.c \
+ delete_module.c dup.c dup2.c dup3.c epoll_create.c \
epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2301,39 +2410,45 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
- ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \
+ ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
- lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
- lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
- memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
- mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
- mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
- move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
- mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
- munlockall.c nanosleep.c net-accept-connect.c \
- net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
- net-yy-netlink.c net-yy-unix.c netlink_audit.c \
- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \
- netlink_kobject_uevent.c netlink_netfilter.c \
- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \
- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \
- netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \
- nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \
- nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \
- nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \
- nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \
- nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \
- nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \
- nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \
- nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \
- nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \
- oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \
- osf_utimes.c pause.c pc.c perf_event_open.c \
- perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
- personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \
- prctl-dumpable.c prctl-name.c prctl-no-args.c \
- prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
+ llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \
+ mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
+ mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
+ mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
+ mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
+ mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
+ msg_control-v.c msg_name.c munlockall.c nanosleep.c \
+ net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
+ net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
+ netlink_audit.c netlink_crypto.c netlink_generic.c \
+ netlink_inet_diag.c netlink_kobject_uevent.c \
+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \
+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \
+ nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \
+ nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \
+ nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \
+ nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \
+ nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
+ nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \
+ nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \
+ nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \
+ nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \
+ nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \
+ nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \
+ nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
+ nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
+ nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
+ perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2354,8 +2469,9 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
sched_xetparam.c sched_xetscheduler.c sched_yield.c \
scm_rights.c seccomp-filter.c seccomp-filter-v.c \
- seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \
- set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \
+ seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
+ sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
+ set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
setregid32.c setresgid.c setresgid32.c setresuid.c \
@@ -2924,6 +3040,7 @@ PURE_EXECUTABLES = \
ipc_sem \
ipc_shm \
kcmp \
+ kcmp-y \
kexec_file_load \
kexec_load \
keyctl \
@@ -2981,6 +3098,17 @@ PURE_EXECUTABLES = \
netlink_sock_diag \
netlink_xfrm \
newfstatat \
+ nfnetlink_acct \
+ nfnetlink_cthelper \
+ nfnetlink_ctnetlink \
+ nfnetlink_ctnetlink_exp \
+ nfnetlink_cttimeout \
+ nfnetlink_nft_compat \
+ nfnetlink_nftables \
+ nfnetlink_ipset \
+ nfnetlink_osf \
+ nfnetlink_queue \
+ nfnetlink_ulog \
nlattr \
nlattr_crypto_user_alg \
nlattr_br_port_msg \
@@ -2995,6 +3123,8 @@ PURE_EXECUTABLES = \
nlattr_inet_diag_msg \
nlattr_inet_diag_req_compat \
nlattr_inet_diag_req_v2 \
+ nlattr_mdba_mdb_entry \
+ nlattr_mdba_router_port \
nlattr_ndmsg \
nlattr_ndtmsg \
nlattr_netconfmsg \
@@ -3004,6 +3134,8 @@ PURE_EXECUTABLES = \
nlattr_rtgenmsg \
nlattr_rtmsg \
nlattr_smc_diag_msg \
+ nlattr_tc_stats \
+ nlattr_tca_stab \
nlattr_tcamsg \
nlattr_tcmsg \
nlattr_unix_diag_msg \
@@ -3084,6 +3216,7 @@ PURE_EXECUTABLES = \
sched_xetscheduler \
sched_yield \
seccomp-filter \
+ seccomp_get_action_avail \
select \
semop \
sendfile \
@@ -3253,39 +3386,47 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
- kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \
- keyctl.gen.test kill.gen.test lchown.gen.test \
- lchown32.gen.test link.gen.test linkat.gen.test \
- lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
- madvise.gen.test mbind.gen.test membarrier.gen.test \
- memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
- mkdir.gen.test mkdirat.gen.test mknod.gen.test \
- mknodat.gen.test mlock.gen.test mlock2.gen.test \
- mlockall.gen.test mmap64.gen.test mmsg.gen.test \
- mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
- mount.gen.test move_pages.gen.test mq.gen.test \
- mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
- mq_sendrecv-write.gen.test msg_control.gen.test \
- msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
- nanosleep.gen.test net-icmp_filter.gen.test \
- net-sockaddr.gen.test netlink_audit.gen.test \
- netlink_crypto.gen.test netlink_generic.gen.test \
- netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \
- netlink_protocol.gen.test netlink_route.gen.test \
- netlink_selinux.gen.test netlink_xfrm.gen.test \
- newfstatat.gen.test nlattr.gen.test \
- nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \
- nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \
- nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \
- nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \
- nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \
- nlattr_inet_diag_msg.gen.test \
+ kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \
+ kexec_load.gen.test keyctl.gen.test kill.gen.test \
+ lchown.gen.test lchown32.gen.test link.gen.test \
+ linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
+ lstat64.gen.test madvise.gen.test mbind.gen.test \
+ membarrier.gen.test memfd_create.gen.test \
+ migrate_pages.gen.test mincore.gen.test mkdir.gen.test \
+ mkdirat.gen.test mknod.gen.test mknodat.gen.test \
+ mlock.gen.test mlock2.gen.test mlockall.gen.test \
+ mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \
+ mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \
+ move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \
+ mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \
+ msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \
+ munlockall.gen.test nanosleep.gen.test \
+ net-icmp_filter.gen.test net-sockaddr.gen.test \
+ netlink_audit.gen.test netlink_crypto.gen.test \
+ netlink_generic.gen.test netlink_kobject_uevent.gen.test \
+ netlink_netfilter.gen.test netlink_protocol.gen.test \
+ netlink_route.gen.test netlink_selinux.gen.test \
+ netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \
+ nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \
+ nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \
+ nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \
+ nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \
+ nfnetlink_osf.gen.test nfnetlink_queue.gen.test \
+ nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \
+ nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \
+ nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \
+ nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
+ nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \
+ nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
nlattr_inet_diag_req_compat.gen.test \
- nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test \
+ nlattr_inet_diag_req_v2.gen.test \
+ nlattr_mdba_mdb_entry.gen.test \
+ nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test \
nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test \
nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test \
nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test \
nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test \
+ nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \
nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \
nlattr_unix_diag_msg.gen.test old_mmap.gen.test \
oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \
@@ -3319,20 +3460,21 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
sched_xetattr.gen.test sched_xetparam.gen.test \
sched_xetscheduler.gen.test sched_yield.gen.test \
seccomp-filter.gen.test seccomp-filter-v.gen.test \
- select.gen.test semop.gen.test sendfile.gen.test \
- sendfile64.gen.test set_mempolicy.gen.test \
- setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
- setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
- setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
- sethostname.gen.test setns.gen.test setregid.gen.test \
- setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
- setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
- setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
- setuid32.gen.test shmxt.gen.test shutdown.gen.test \
- sigaction.gen.test siginfo.gen.test signal.gen.test \
- signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \
- sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \
- so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \
+ seccomp_get_action_avail.gen.test select.gen.test \
+ semop.gen.test sendfile.gen.test sendfile64.gen.test \
+ set_mempolicy.gen.test setdomainname.gen.test \
+ setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \
+ setfsuid32.gen.test setgid.gen.test setgid32.gen.test \
+ setgroups.gen.test setgroups32.gen.test sethostname.gen.test \
+ setns.gen.test setregid.gen.test setregid32.gen.test \
+ setresgid.gen.test setresgid32.gen.test setresuid.gen.test \
+ setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \
+ setrlimit.gen.test setuid.gen.test setuid32.gen.test \
+ shmxt.gen.test shutdown.gen.test sigaction.gen.test \
+ siginfo.gen.test signal.gen.test signal_receive.gen.test \
+ signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \
+ sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \
+ so_peercred.gen.test sock_filter-v.gen.test \
socketcall.gen.test splice.gen.test stat.gen.test \
stat64.gen.test statfs.gen.test statfs64.gen.test \
statx.gen.test swap.gen.test sxetmask.gen.test \
@@ -3451,6 +3593,8 @@ MISC_TESTS = \
redirect-fds.test \
redirect.test \
restart_syscall.test \
+ sigblock.test \
+ sigign.test \
strace-C.test \
strace-E.test \
strace-S.test \
@@ -3692,6 +3836,14 @@ caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA
@rm -f caps-abbrev$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS)
+check_sigblock$(EXEEXT): $(check_sigblock_OBJECTS) $(check_sigblock_DEPENDENCIES) $(EXTRA_check_sigblock_DEPENDENCIES)
+ @rm -f check_sigblock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(check_sigblock_OBJECTS) $(check_sigblock_LDADD) $(LIBS)
+
+check_sigign$(EXEEXT): $(check_sigign_OBJECTS) $(check_sigign_DEPENDENCIES) $(EXTRA_check_sigign_DEPENDENCIES)
+ @rm -f check_sigign$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(check_sigign_OBJECTS) $(check_sigign_LDADD) $(LIBS)
+
chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES)
@rm -f chmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
@@ -4192,6 +4344,10 @@ kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES)
@rm -f kcmp$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS)
+kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDENCIES)
+ @rm -f kcmp-y$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS)
+
kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES)
@rm -f kexec_file_load$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS)
@@ -4228,6 +4384,10 @@ linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDE
@rm -f linkat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES)
+ @rm -f list_sigaction_signum$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS)
+
llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES)
@rm -f llseek$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS)
@@ -4452,6 +4612,50 @@ newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_ne
@rm -f newfstatat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS)
+nfnetlink_acct$(EXEEXT): $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_DEPENDENCIES) $(EXTRA_nfnetlink_acct_DEPENDENCIES)
+ @rm -f nfnetlink_acct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_LDADD) $(LIBS)
+
+nfnetlink_cthelper$(EXEEXT): $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_DEPENDENCIES) $(EXTRA_nfnetlink_cthelper_DEPENDENCIES)
+ @rm -f nfnetlink_cthelper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_LDADD) $(LIBS)
+
+nfnetlink_ctnetlink$(EXEEXT): $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_DEPENDENCIES)
+ @rm -f nfnetlink_ctnetlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_LDADD) $(LIBS)
+
+nfnetlink_ctnetlink_exp$(EXEEXT): $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_exp_DEPENDENCIES)
+ @rm -f nfnetlink_ctnetlink_exp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_LDADD) $(LIBS)
+
+nfnetlink_cttimeout$(EXEEXT): $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_DEPENDENCIES) $(EXTRA_nfnetlink_cttimeout_DEPENDENCIES)
+ @rm -f nfnetlink_cttimeout$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_LDADD) $(LIBS)
+
+nfnetlink_ipset$(EXEEXT): $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_DEPENDENCIES) $(EXTRA_nfnetlink_ipset_DEPENDENCIES)
+ @rm -f nfnetlink_ipset$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_LDADD) $(LIBS)
+
+nfnetlink_nft_compat$(EXEEXT): $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_DEPENDENCIES) $(EXTRA_nfnetlink_nft_compat_DEPENDENCIES)
+ @rm -f nfnetlink_nft_compat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_LDADD) $(LIBS)
+
+nfnetlink_nftables$(EXEEXT): $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_DEPENDENCIES) $(EXTRA_nfnetlink_nftables_DEPENDENCIES)
+ @rm -f nfnetlink_nftables$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_LDADD) $(LIBS)
+
+nfnetlink_osf$(EXEEXT): $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_DEPENDENCIES) $(EXTRA_nfnetlink_osf_DEPENDENCIES)
+ @rm -f nfnetlink_osf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_LDADD) $(LIBS)
+
+nfnetlink_queue$(EXEEXT): $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_DEPENDENCIES) $(EXTRA_nfnetlink_queue_DEPENDENCIES)
+ @rm -f nfnetlink_queue$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_LDADD) $(LIBS)
+
+nfnetlink_ulog$(EXEEXT): $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_DEPENDENCIES) $(EXTRA_nfnetlink_ulog_DEPENDENCIES)
+ @rm -f nfnetlink_ulog$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_LDADD) $(LIBS)
+
nlattr$(EXEEXT): $(nlattr_OBJECTS) $(nlattr_DEPENDENCIES) $(EXTRA_nlattr_DEPENDENCIES)
@rm -f nlattr$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_OBJECTS) $(nlattr_LDADD) $(LIBS)
@@ -4508,6 +4712,14 @@ nlattr_inet_diag_req_v2$(EXEEXT): $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_in
@rm -f nlattr_inet_diag_req_v2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_inet_diag_req_v2_LDADD) $(LIBS)
+nlattr_mdba_mdb_entry$(EXEEXT): $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_DEPENDENCIES) $(EXTRA_nlattr_mdba_mdb_entry_DEPENDENCIES)
+ @rm -f nlattr_mdba_mdb_entry$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_LDADD) $(LIBS)
+
+nlattr_mdba_router_port$(EXEEXT): $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_DEPENDENCIES) $(EXTRA_nlattr_mdba_router_port_DEPENDENCIES)
+ @rm -f nlattr_mdba_router_port$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_LDADD) $(LIBS)
+
nlattr_ndmsg$(EXEEXT): $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_DEPENDENCIES) $(EXTRA_nlattr_ndmsg_DEPENDENCIES)
@rm -f nlattr_ndmsg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_LDADD) $(LIBS)
@@ -4544,6 +4756,14 @@ nlattr_smc_diag_msg$(EXEEXT): $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_m
@rm -f nlattr_smc_diag_msg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_msg_LDADD) $(LIBS)
+nlattr_tc_stats$(EXEEXT): $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_DEPENDENCIES) $(EXTRA_nlattr_tc_stats_DEPENDENCIES)
+ @rm -f nlattr_tc_stats$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_LDADD) $(LIBS)
+
+nlattr_tca_stab$(EXEEXT): $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_DEPENDENCIES) $(EXTRA_nlattr_tca_stab_DEPENDENCIES)
+ @rm -f nlattr_tca_stab$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_LDADD) $(LIBS)
+
nlattr_tcamsg$(EXEEXT): $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_DEPENDENCIES) $(EXTRA_nlattr_tcamsg_DEPENDENCIES)
@rm -f nlattr_tcamsg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_LDADD) $(LIBS)
@@ -4948,6 +5168,10 @@ seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES
@rm -f seccomp-strict$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS)
+seccomp_get_action_avail$(EXEEXT): $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_DEPENDENCIES) $(EXTRA_seccomp_get_action_avail_DEPENDENCIES)
+ @rm -f seccomp_get_action_avail$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_LDADD) $(LIBS)
+
select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES)
@rm -f select$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
@@ -4972,6 +5196,14 @@ set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENC
@rm -f set_ptracer_any$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS)
+set_sigblock$(EXEEXT): $(set_sigblock_OBJECTS) $(set_sigblock_DEPENDENCIES) $(EXTRA_set_sigblock_DEPENDENCIES)
+ @rm -f set_sigblock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_sigblock_OBJECTS) $(set_sigblock_LDADD) $(LIBS)
+
+set_sigign$(EXEEXT): $(set_sigign_OBJECTS) $(set_sigign_DEPENDENCIES) $(EXTRA_set_sigign_DEPENDENCIES)
+ @rm -f set_sigign$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_sigign_OBJECTS) $(set_sigign_LDADD) $(LIBS)
+
setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES)
@rm -f setdomainname$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS)
@@ -5411,6 +5643,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps-abbrev.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@
@@ -5535,6 +5769,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_sem.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_file_load.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_load.Po@am__quote@
@@ -5571,6 +5806,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_dcookie.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
@@ -5627,6 +5863,17 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_unix_diag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_xfrm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfstatat-newfstatat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_acct.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cthelper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink_exp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cttimeout.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ipset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nft_compat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nftables.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_osf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_queue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ulog.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_br_port_msg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_crypto_user_alg.Po@am__quote@
@@ -5641,6 +5888,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_v2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_mdb_entry.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_router_port.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndtmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_netconfmsg.Po@am__quote@
@@ -5650,6 +5899,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtgenmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_smc_diag_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tc_stats.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tca_stab.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@
@@ -5751,12 +6002,15 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter-v.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigign.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setdomainname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid32.Po@am__quote@
@@ -7194,6 +7448,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7353,6 +7610,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7392,6 +7682,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src
$(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7419,6 +7715,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
$(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7641,6 +7943,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
diff --git a/tests-mx32/check_sigblock.c b/tests-mx32/check_sigblock.c
new file mode 100644
index 00000000..5637804d
--- /dev/null
+++ b/tests-mx32/check_sigblock.c
@@ -0,0 +1,49 @@
+/*
+ * Check that the specified signal number is blocked/unblocked.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac != 3)
+ error_msg_and_fail("usage: check_sigblock 0|1 signum");
+
+ const int block = !!atoi(av[1]);
+ const int signum = atoi(av[2]);
+ sigset_t mask;
+
+ sigemptyset(&mask);
+ if (sigprocmask(SIG_SETMASK, NULL, &mask))
+ perror_msg_and_fail("sigprocmask");
+
+ return block ^ sigismember(&mask, signum);
+}
diff --git a/tests-mx32/check_sigign.c b/tests-mx32/check_sigign.c
new file mode 100644
index 00000000..bace3170
--- /dev/null
+++ b/tests-mx32/check_sigign.c
@@ -0,0 +1,49 @@
+/*
+ * Check that the signal handler for the specified signal number is set
+ * to SIG_IGN/SIG_DFL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac != 3)
+ error_msg_and_fail("usage: check_sigign 0|1 signum");
+
+ const int ign = !!atoi(av[1]);
+ const int signum = atoi(av[2]);
+ struct sigaction act;
+
+ if (sigaction(signum, NULL, &act))
+ perror_msg_and_fail("sigaction: %s", av[2]);
+
+ return ign ^ (act.sa_handler == SIG_IGN);
+}
diff --git a/tests-mx32/futex.c b/tests-mx32/futex.c
index b75ab339..e1dbcb74 100644
--- a/tests-mx32/futex.c
+++ b/tests-mx32/futex.c
@@ -66,6 +66,7 @@ void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
# define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \
enosys) \
do { \
+ errno = 0; \
rc = syscall(__NR_futex, (uaddr), (op), (val), (timeout), \
(uaddr2), (val3)); \
/* It is here due to EPERM on WAKE_OP on AArch64 */ \
@@ -496,8 +497,16 @@ main(int argc, char *argv[])
static const struct {
uint32_t val;
const char *str;
+
+ /*
+ * Peculiar semantics:
+ * * err == 0 and err2 != 0 => expect both either the absence
+ * of error or presence of err2
+ * * err != 0 and err2 == 0 => expect err only, no success
+ * expected.
+ */
int err;
- const char *errstr;
+ int err2;
} wake_ops[] = {
{ 0x00000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x00fff000, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|"
@@ -511,13 +520,13 @@ main(int argc, char *argv[])
{ 0x30000000, "FUTEX_OP_ANDN<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x40000000, "FUTEX_OP_XOR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x50000000, "0x5<<28 /* FUTEX_OP_??? */|0<<12|"
- "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS },
{ 0x70000000, "0x7<<28 /* FUTEX_OP_??? */|0<<12|"
- "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS },
{ 0x80000000, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_SET<<28|0<<12|"
"FUTEX_OP_CMP_EQ<<24|0" },
{ 0xa0caffee, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_OR<<28|"
- "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee" },
+ "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee", 0, EINVAL },
{ 0x01000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_NE<<24|0" },
{ 0x01234567, "FUTEX_OP_SET<<28|0x234<<12|FUTEX_OP_CMP_NE<<24|"
"0x567" },
@@ -526,27 +535,38 @@ main(int argc, char *argv[])
{ 0x04000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0" },
{ 0x05000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GE<<24|0" },
{ 0x06000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x07000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x08000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x0f000000, "FUTEX_OP_SET<<28|0<<12|"
- "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0xbadfaced, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_ANDN<<28|"
"0xdfa<<12|0xa<<24 /* FUTEX_OP_CMP_??? */|0xced",
- ENOSYS, "ENOSYS" },
+ ENOSYS, EINVAL },
{ 0xffffffff, "FUTEX_OP_OPARG_SHIFT<<28|"
"0x7<<28 /* FUTEX_OP_??? */|0xfff<<12|"
"0xf<<24 /* FUTEX_OP_CMP_??? */|0xfff",
- ENOSYS, "ENOSYS" },
+ ENOSYS, EINVAL },
};
for (i = 0; i < ARRAY_SIZE(wake_ops); i++) {
for (j = 0; j < 2; j++) {
CHECK_FUTEX_ENOSYS(uaddr,
j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
- VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
+ VAL, i, uaddr2, wake_ops[i].val,
+ /*
+ * Either one of errs is 0 or rc == 0 is not
+ * allowed.
+ */
+ ((!wake_ops[i].err || !wake_ops[i].err2 ||
+ (rc != 0)) &&
+ ((!wake_ops[i].err && (rc == 0)) ||
+ (wake_ops[i].err && (rc == -1) &&
+ (errno == wake_ops[i].err)) ||
+ (wake_ops[i].err2 && (rc == -1) &&
+ (errno == wake_ops[i].err2)))));
printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)"
" = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR,
i, uaddr2, wake_ops[i].str, sprintrc(rc));
diff --git a/tests-mx32/gen_tests.am b/tests-mx32/gen_tests.am
index 583a0aeb..71e00135 100644
--- a/tests-mx32/gen_tests.am
+++ b/tests-mx32/gen_tests.am
@@ -1,5 +1,5 @@
# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
$(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -358,6 +358,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -517,6 +520,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -556,6 +592,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src
$(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -583,6 +625,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
$(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -805,6 +853,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
diff --git a/tests-mx32/gen_tests.in b/tests-mx32/gen_tests.in
index 8592e28b..091bbe59 100644
--- a/tests-mx32/gen_tests.in
+++ b/tests-mx32/gen_tests.in
@@ -143,7 +143,8 @@ ipc -a19
ipc_msg +ipc.sh
ipc_sem +ipc.sh
ipc_shm +ipc.sh
-kcmp -a27
+kcmp -a22
+kcmp-y -a22 -y -e trace=kcmp
kexec_file_load -s9
kexec_load -s9
keyctl -a31 -s10
@@ -197,6 +198,17 @@ netlink_selinux +netlink_sock_diag.test
netlink_xfrm +netlink_sock_diag.test
newfstatat -a32 -v -P stat.sample -P /dev/full
nlattr +netlink_sock_diag.test
+nfnetlink_acct +netlink_sock_diag.test
+nfnetlink_cthelper +netlink_sock_diag.test
+nfnetlink_ctnetlink +netlink_sock_diag.test
+nfnetlink_ctnetlink_exp +netlink_sock_diag.test
+nfnetlink_cttimeout +netlink_sock_diag.test
+nfnetlink_ipset +netlink_sock_diag.test
+nfnetlink_nft_compat +netlink_sock_diag.test
+nfnetlink_nftables +netlink_sock_diag.test
+nfnetlink_osf +netlink_sock_diag.test
+nfnetlink_queue +netlink_sock_diag.test
+nfnetlink_ulog +netlink_sock_diag.test
nlattr_crypto_user_alg +netlink_sock_diag.test
nlattr_br_port_msg +netlink_sock_diag.test
nlattr_dcbmsg +netlink_sock_diag.test
@@ -210,6 +222,8 @@ nlattr_ifla_xdp +netlink_sock_diag.test
nlattr_inet_diag_msg +netlink_sock_diag.test
nlattr_inet_diag_req_compat +netlink_sock_diag.test
nlattr_inet_diag_req_v2 +netlink_sock_diag.test
+nlattr_mdba_mdb_entry +netlink_sock_diag.test
+nlattr_mdba_router_port +netlink_sock_diag.test
nlattr_ndmsg +netlink_sock_diag.test
nlattr_ndtmsg +netlink_sock_diag.test
nlattr_netconfmsg +netlink_sock_diag.test
@@ -219,6 +233,8 @@ nlattr_packet_diag_msg +netlink_sock_diag-v.sh
nlattr_rtgenmsg +netlink_sock_diag.test
nlattr_rtmsg +netlink_sock_diag.test
nlattr_smc_diag_msg +netlink_sock_diag.test
+nlattr_tc_stats +netlink_sock_diag.test
+nlattr_tca_stab +netlink_sock_diag.test
nlattr_tcamsg +netlink_sock_diag.test
nlattr_tcmsg +netlink_sock_diag.test
nlattr_unix_diag_msg +netlink_sock_diag.test
@@ -293,6 +309,7 @@ sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler
sched_yield -a14
seccomp-filter -e trace=seccomp
seccomp-filter-v -v -e trace=seccomp
+seccomp_get_action_avail -e trace=seccomp
select -a36
semop -a32 -e trace=semop,semtimedop
sendfile -a27
diff --git a/tests-mx32/ioctl_dm.c b/tests-mx32/ioctl_dm.c
index 2f77e041..1e831dfe 100644
--- a/tests-mx32/ioctl_dm.c
+++ b/tests-mx32/ioctl_dm.c
@@ -54,6 +54,10 @@
# define ALIGNED_OFFSET(t_, m_) \
ALIGNED_SIZE(offsetof(t_, m_), t_)
+# ifndef DM_DEV_ARM_POLL
+# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl)
+# endif
+
static const char str129[] = STR32 STR32 STR32 STR32 "6";
static const __u64 dts_sector_base = (__u64) 0xdeadca75facef157ULL;
@@ -182,6 +186,7 @@ main(void)
{ ARG_STR(DM_TABLE_CLEAR), false },
{ ARG_STR(DM_TABLE_DEPS), true },
{ ARG_STR(DM_TABLE_STATUS), true },
+ { ARG_STR(DM_DEV_ARM_POLL), false },
};
struct dm_ioctl *unaligned_dm_arg =
diff --git a/tests-mx32/ioctl_loop.c b/tests-mx32/ioctl_loop.c
index 3411a4d8..56ebd9e4 100644
--- a/tests-mx32/ioctl_loop.c
+++ b/tests-mx32/ioctl_loop.c
@@ -188,11 +188,11 @@ main(void)
_IOC_SIZE((unsigned int) unknown_loop_cmd),
(unsigned long) magic);
- ioctl(-1, LOOP_SET_DIRECT_IO + 1, magic);
+ ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic);
printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = "
"-1 EBADF (%m)\n",
- _IOC_NR(LOOP_SET_DIRECT_IO + 1),
- _IOC_SIZE(LOOP_SET_DIRECT_IO + 1),
+ _IOC_NR(LOOP_SET_BLOCK_SIZE + 1),
+ _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1),
(unsigned long) magic);
ioctl(-1, LOOP_CTL_GET_FREE + 1, magic);
@@ -303,6 +303,11 @@ main(void)
printf("ioctl(-1, LOOP_SET_DIRECT_IO, %lu) = -1 EBADF (%m)\n",
(unsigned long) magic);
+ /* LOOP_SET_BLOCK_SIZE */
+ ioctl(-1, LOOP_SET_BLOCK_SIZE, magic);
+ printf("ioctl(-1, LOOP_SET_BLOCK_SIZE, %lu) = -1 EBADF (%m)\n",
+ (unsigned long) magic);
+
/* LOOP_CTL_ADD */
ioctl(-1, LOOP_CTL_ADD, magic);
printf("ioctl(-1, LOOP_CTL_ADD, %d) = -1 EBADF (%m)\n",
diff --git a/tests-mx32/kcmp-y.c b/tests-mx32/kcmp-y.c
new file mode 100644
index 00000000..02ad90e5
--- /dev/null
+++ b/tests-mx32/kcmp-y.c
@@ -0,0 +1,3 @@
+#define VERBOSE_FD 1
+
+#include "kcmp.c"
diff --git a/tests-mx32/kcmp-y.gen.test b/tests-mx32/kcmp-y.gen.test
new file mode 100755
index 00000000..065db9d0
--- /dev/null
+++ b/tests-mx32/kcmp-y.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y -a22 -y -e trace=kcmp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -y -e trace=kcmp
diff --git a/tests-mx32/kcmp.c b/tests-mx32/kcmp.c
index cb497c9f..60cd3003 100644
--- a/tests-mx32/kcmp.c
+++ b/tests-mx32/kcmp.c
@@ -1,7 +1,7 @@
/*
* Check decoding of kcmp syscall.
*
- * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,15 +34,67 @@
#ifdef __NR_kcmp
+# include <fcntl.h>
+# include <stdarg.h>
+# include <stdint.h>
# include <stdio.h>
+# include <string.h>
# include <unistd.h>
-# define KCMP_FILE 0
-# define KCMP_SYSVSEM 6
+# ifndef VERBOSE_FD
+# define VERBOSE_FD 0
+# endif
+/*
+ * We prefer to use system headers in order to catch some possible deviations in
+ * system's headers from our perception of reality, but happy to include our own
+ * definitions as well.
+ */
+# ifdef HAVE_LINUX_KCMP_H
+# include <linux/kcmp.h>
+# else
+# define KCMP_FILE 0
+# define KCMP_VM 1
+# define KCMP_FILES 2
+# define KCMP_FS 3
+# define KCMP_SIGHAND 4
+# define KCMP_IO 5
+# define KCMP_SYSVSEM 6
+# endif
+
+/* All other kcmp types have been added atomically */
+# define KCMP_EPOLL_TFD 7
+
+# ifndef HAVE_STRUCT_KCMP_EPOLL_SLOT
+struct kcmp_epoll_slot {
+ uint32_t efd;
+ uint32_t tfd;
+ uint32_t toff;
+};
+# endif
+
+static const kernel_ulong_t kcmp_max_type = KCMP_EPOLL_TFD;
+
+static const char null_path[] = "/dev/null";
+static const char zero_path[] = "/dev/zero";
+
+# define NULL_FD 23
+# define ZERO_FD 42
+
+static void
+printpidfd(const char *prefix, pid_t pid, unsigned fd)
+{
+ printf("%s%d", prefix, fd);
+}
+
+/*
+ * Last argument is optional and is used as follows:
+ * * When type is KCMP_EPOLL_TFD, it signalises whether idx2 is a valid
+ * pointer.
+ */
static void
do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
- const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2)
+ const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2, ...)
{
long rc;
const char *errstr;
@@ -57,11 +109,37 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
else
printf("%#x /* KCMP_??? */", (int) type);
- if (type == KCMP_FILE)
- printf(", %u, %u", (unsigned) idx1, (unsigned) idx2);
- else if (type > KCMP_SYSVSEM)
+ if (type == KCMP_FILE) {
+ printpidfd(", ", pid1, idx1);
+ printpidfd(", ", pid2, idx2);
+ } else if (type == KCMP_EPOLL_TFD) {
+ va_list ap;
+ int valid_ptr;
+
+ va_start(ap, idx2);
+ valid_ptr = va_arg(ap, int);
+ va_end(ap);
+
+ printpidfd(", ", pid1, idx1);
+ printf(", ");
+
+ if (valid_ptr) {
+ struct kcmp_epoll_slot *slot =
+ (struct kcmp_epoll_slot *) (uintptr_t) idx2;
+
+ printpidfd("{efd=", pid2, slot->efd);
+ printpidfd(", tfd=", pid2, slot->tfd);
+ printf(", toff=%llu}", (unsigned long long) slot->toff);
+ } else {
+ if (idx2)
+ printf("%#llx", (unsigned long long) idx2);
+ else
+ printf("NULL");
+ }
+ } else if (type > kcmp_max_type) {
printf(", %#llx, %#llx",
(unsigned long long) idx1, (unsigned long long) idx2);
+ }
printf(") = %s\n", errstr);
}
@@ -79,18 +157,71 @@ main(void)
(kernel_ulong_t) 0xdec0ded3dec0ded4ULL;
static const kernel_ulong_t bogus_idx2 =
(kernel_ulong_t) 0xba5e1e55deadc0deULL;
+ static const struct kcmp_epoll_slot slot_data[] = {
+ { 0xdeadc0de, 0xfacef157, 0xbadc0ded },
+ { NULL_FD, ZERO_FD, 0 },
+ { 0, 0, 0 },
+ };
+ static kernel_ulong_t ptr_check =
+ F8ILL_KULONG_SUPPORTED ? F8ILL_KULONG_MASK : 0;
+
+ int fd;
+ unsigned i;
+ struct kcmp_epoll_slot *slot = tail_alloc(sizeof(*slot));
+
+ /* Open some files to test printpidfd */
+ fd = open(null_path, O_RDONLY);
+ if (fd < 0)
+ perror_msg_and_fail("open(\"%s\")", null_path);
+ if (fd != NULL_FD) {
+ if (dup2(fd, NULL_FD) < 0)
+ perror_msg_and_fail("dup2(fd, NULL_FD)");
+ close(fd);
+ }
+
+ fd = open(zero_path, O_RDONLY);
+ if (fd < 0)
+ perror_msg_and_fail("open(\"%s\")", zero_path);
+ if (fd != ZERO_FD) {
+ if (dup2(fd, ZERO_FD) < 0)
+ perror_msg_and_fail("dup2(fd, ZERO_FD)");
+ close(fd);
+ }
+
+ close(0);
/* Invalid values */
do_kcmp(bogus_pid1, bogus_pid2, bogus_type, NULL, bogus_idx1,
bogus_idx2);
- do_kcmp(0, 0, KCMP_SYSVSEM + 1, NULL, 0, 0);
+ do_kcmp(F8ILL_KULONG_MASK, F8ILL_KULONG_MASK, kcmp_max_type + 1, NULL,
+ 0, 0);
/* KCMP_FILE is the only type which has additional args */
do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1,
bogus_idx2);
- /* Some type without additional args */
+ do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
+
+ /* Types without additional args */
+ do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_FILES), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_FS), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_SIGHAND), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_IO), bogus_idx1, bogus_idx2);
do_kcmp(-1, -1, ARG_STR(KCMP_SYSVSEM), bogus_idx1, bogus_idx2);
+ /* KCMP_EPOLL_TFD checks */
+ do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD),
+ F8ILL_KULONG_MASK | 2718281828U, ptr_check, 0);
+ do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD),
+ 3141592653U, (uintptr_t) slot + 1, 0);
+
+ for (i = 0; i < ARRAY_SIZE(slot_data); i++) {
+ memcpy(slot, slot_data + i, sizeof(*slot));
+
+ do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD,
+ (uintptr_t) slot, 1);
+ }
+
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests-mx32/kcmp.gen.test b/tests-mx32/kcmp.gen.test
index da79d7c1..c073a39e 100755
--- a/tests-mx32/kcmp.gen.test
+++ b/tests-mx32/kcmp.gen.test
@@ -1,4 +1,4 @@
#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit.
. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a22
diff --git a/tests-mx32/list_sigaction_signum.c b/tests-mx32/list_sigaction_signum.c
new file mode 100644
index 00000000..13a78c68
--- /dev/null
+++ b/tests-mx32/list_sigaction_signum.c
@@ -0,0 +1,57 @@
+/*
+ * List signal numbers that are valid arguments for sigaction syscall.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <signal.h>
+#include <stdio.h>
+
+int
+main(void)
+{
+ unsigned int i;
+
+ for (i = 1; i < 32; ++i) {
+ static const struct sigaction ign = { .sa_handler = SIG_IGN };
+ static const struct sigaction dfl = { .sa_handler = SIG_DFL };
+ struct sigaction act;
+
+ if (sigaction(i, &ign, NULL) ||
+ sigaction(i, NULL, &act) ||
+ ign.sa_handler != act.sa_handler ||
+ sigaction(i, &dfl, NULL) ||
+ sigaction(i, NULL, &act) ||
+ dfl.sa_handler != act.sa_handler)
+ continue;
+
+ printf("%u\n", i);
+ }
+
+ return 0;
+}
diff --git a/tests-mx32/membarrier.c b/tests-mx32/membarrier.c
index 330893b6..73dd3b02 100644
--- a/tests-mx32/membarrier.c
+++ b/tests-mx32/membarrier.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,10 +44,28 @@ main(void)
printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
sprintrc(-1));
if (saved_errno != ENOSYS) {
- /* the test needs to be updated? */
- assert(syscall(__NR_membarrier, 0, 0) == 1);
- puts("membarrier(MEMBARRIER_CMD_QUERY, 0)"
- " = 0x1 (MEMBARRIER_CMD_SHARED)");
+ const char *text;
+ int rc = syscall(__NR_membarrier, 0, 0);
+
+ switch (rc) {
+ case 1:
+ text = "MEMBARRIER_CMD_SHARED";
+ break;
+ case 1|8:
+ text = "MEMBARRIER_CMD_SHARED|"
+ "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
+ break;
+ case 1|8|16:
+ text = "MEMBARRIER_CMD_SHARED|"
+ "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+ "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
+ break;
+ default:
+ error_msg_and_fail("membarrier returned %#x, does"
+ " the test have to be updated?", rc);
+ }
+ printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
+ rc, text);
}
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests-mx32/memfd_create.c b/tests-mx32/memfd_create.c
index 480fd177..4559b426 100644
--- a/tests-mx32/memfd_create.c
+++ b/tests-mx32/memfd_create.c
@@ -11,10 +11,11 @@ int
main(void)
{
static const char text[] = "strace";
- int rc = syscall(__NR_memfd_create, text, 7);
+ int rc = syscall(__NR_memfd_create, text, 0xf);
- printf("memfd_create(\"%s\", %s) = %d %s (%m)\n",
- text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|0x4", rc, errno2name());
+ printf("memfd_create(\"%s\", %s) = %s\n",
+ text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8",
+ sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests-mx32/netlink_crypto.c b/tests-mx32/netlink_crypto.c
index deb1644e..d15c17cf 100644
--- a/tests-mx32/netlink_crypto.c
+++ b/tests-mx32/netlink_crypto.c
@@ -78,9 +78,17 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = CRYPTO_MSG_DELALG;
- nlh.nlmsg_flags = NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=CRYPTO_MSG_DELALG"
+ ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+ nlh.nlmsg_type = CRYPTO_MSG_UPDATEALG;
+ nlh.nlmsg_flags = NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u, type=CRYPTO_MSG_UPDATEALG"
", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, NLM_F_REPLACE,
diff --git a/tests-mx32/netlink_netfilter.c b/tests-mx32/netlink_netfilter.c
index 2907c261..db2622eb 100644
--- a/tests-mx32/netlink_netfilter.c
+++ b/tests-mx32/netlink_netfilter.c
@@ -52,19 +52,19 @@ test_nlmsg_type(const int fd)
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+# endif
- nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | NFNL_MSG_BATCH_BEGIN;
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
- printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x"
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */"
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
- fd, nlh.nlmsg_len, NFNL_MSG_BATCH_BEGIN,
- (unsigned) sizeof(nlh), sprintrc(rc));
-# endif
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
- nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8);
+ nlh.nlmsg_type = 0xffff;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
- printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0"
+ printf("sendto(%d, {len=%u, type=0xff /* NFNL_SUBSYS_??? */<<8|0xff"
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
diff --git a/tests-mx32/netlink_route.c b/tests-mx32/netlink_route.c
index 6af3b13a..a1c7d1f8 100644
--- a/tests-mx32/netlink_route.c
+++ b/tests-mx32/netlink_route.c
@@ -132,13 +132,12 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = RTM_DELLINK;
- nlh.nlmsg_flags = NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=RTM_DELLINK"
- ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
+ ", flags=NLM_F_NONREC, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
- fd, nlh.nlmsg_len, NLM_F_REPLACE,
- (unsigned) sizeof(nlh), sprintrc(rc));
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
}
static void
diff --git a/tests-mx32/netlink_xfrm.c b/tests-mx32/netlink_xfrm.c
index 27f62d1e..862a9f6e 100644
--- a/tests-mx32/netlink_xfrm.c
+++ b/tests-mx32/netlink_xfrm.c
@@ -76,9 +76,17 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = XFRM_MSG_DELSA;
- nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=XFRM_MSG_DELSA"
+ ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+ nlh.nlmsg_type = XFRM_MSG_ALLOCSPI;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u, type=XFRM_MSG_ALLOCSPI"
", flags=NLM_F_ECHO|%#x, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, NLM_F_REPLACE,
diff --git a/tests-mx32/nfnetlink_acct.c b/tests-mx32/nfnetlink_acct.c
new file mode 100644
index 00000000..52cff99a
--- /dev/null
+++ b/tests-mx32/nfnetlink_acct.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_acct.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|0xff /* NFNL_MSG_ACCT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_CREATE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_MATCH, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_DEL;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_DEL"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_acct.gen.test b/tests-mx32/nfnetlink_acct.gen.test
new file mode 100755
index 00000000..7db22769
--- /dev/null
+++ b/tests-mx32/nfnetlink_acct.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_cthelper.c b/tests-mx32/nfnetlink_cthelper.c
new file mode 100644
index 00000000..47fab768
--- /dev/null
+++ b/tests-mx32/nfnetlink_cthelper.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_cthelper.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|0xff /* NFNL_MSG_CTHELPER_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_DEL;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_DEL"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_cthelper.gen.test b/tests-mx32/nfnetlink_cthelper.gen.test
new file mode 100755
index 00000000..661c949c
--- /dev/null
+++ b/tests-mx32/nfnetlink_cthelper.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ctnetlink.c b/tests-mx32/nfnetlink_ctnetlink.c
new file mode 100644
index 00000000..a227f38e
--- /dev/null
+++ b/tests-mx32/nfnetlink_ctnetlink.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_conntrack.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_ctnetlink.gen.test b/tests-mx32/nfnetlink_ctnetlink.gen.test
new file mode 100755
index 00000000..d4c4daaf
--- /dev/null
+++ b/tests-mx32/nfnetlink_ctnetlink.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ctnetlink_exp.c b/tests-mx32/nfnetlink_ctnetlink_exp.c
new file mode 100644
index 00000000..aa17cd52
--- /dev/null
+++ b/tests-mx32/nfnetlink_ctnetlink_exp.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_conntrack.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|0xff /* IPCTNL_MSG_EXP_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_EXCL;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_EXCL, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_ROOT, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_ctnetlink_exp.gen.test b/tests-mx32/nfnetlink_ctnetlink_exp.gen.test
new file mode 100755
index 00000000..a5d83f9b
--- /dev/null
+++ b/tests-mx32/nfnetlink_ctnetlink_exp.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_cttimeout.c b/tests-mx32/nfnetlink_cttimeout.c
new file mode 100644
index 00000000..e66dc24c
--- /dev/null
+++ b/tests-mx32/nfnetlink_cttimeout.c
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_cttimeout.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|0xff /* IPCTNL_MSG_TIMEOUT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_APPEND;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_APPEND, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ATOMIC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_ATOMIC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_cttimeout.gen.test b/tests-mx32/nfnetlink_cttimeout.gen.test
new file mode 100755
index 00000000..e197f000
--- /dev/null
+++ b/tests-mx32/nfnetlink_cttimeout.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ipset.c b/tests-mx32/nfnetlink_ipset.c
new file mode 100644
index 00000000..b0d4a7d1
--- /dev/null
+++ b/tests-mx32/nfnetlink_ipset.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/ipset/ip_set.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | IPSET_CMD_NONE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_IPSET<<8|IPSET_CMD_NONE"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_IPSET<<8|0xff /* IPSET_CMD_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_IPSET_IP_SET_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_ipset.gen.test b/tests-mx32/nfnetlink_ipset.gen.test
new file mode 100755
index 00000000..418437a7
--- /dev/null
+++ b/tests-mx32/nfnetlink_ipset.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_nft_compat.c b/tests-mx32/nfnetlink_nft_compat.c
new file mode 100644
index 00000000..072ee571
--- /dev/null
+++ b/tests-mx32/nfnetlink_nft_compat.c
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nf_tables_compat.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|0xff /* NFNL_MSG_COMPAT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_nft_compat.gen.test b/tests-mx32/nfnetlink_nft_compat.gen.test
new file mode 100755
index 00000000..c3dc8907
--- /dev/null
+++ b/tests-mx32/nfnetlink_nft_compat.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_nftables.c b/tests-mx32/nfnetlink_nftables.c
new file mode 100644
index 00000000..66e5fe94
--- /dev/null
+++ b/tests-mx32/nfnetlink_nftables.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nf_tables.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|0xff /* NFT_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_GETTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_GETTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_DELTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_DELTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_nftables.gen.test b/tests-mx32/nfnetlink_nftables.gen.test
new file mode 100755
index 00000000..25e90e85
--- /dev/null
+++ b/tests-mx32/nfnetlink_nftables.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_osf.c b/tests-mx32/nfnetlink_osf.c
new file mode 100644
index 00000000..a6dbb7e6
--- /dev/null
+++ b/tests-mx32/nfnetlink_osf.c
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_XT_OSF_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/ip.h>
+# include <linux/tcp.h>
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/xt_osf.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | OSF_MSG_ADD;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_OSF<<8|OSF_MSG_ADD"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_OSF<<8|0xff /* OSF_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_XT_OSF_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_osf.gen.test b/tests-mx32/nfnetlink_osf.gen.test
new file mode 100755
index 00000000..2689574a
--- /dev/null
+++ b/tests-mx32/nfnetlink_osf.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_queue.c b/tests-mx32/nfnetlink_queue.c
new file mode 100644
index 00000000..73ebd9aa
--- /dev/null
+++ b/tests-mx32/nfnetlink_queue.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_queue.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_QUEUE<<8|NFQNL_MSG_PACKET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_QUEUE<<8|0xff /* NFQNL_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_queue.gen.test b/tests-mx32/nfnetlink_queue.gen.test
new file mode 100755
index 00000000..739fb17d
--- /dev/null
+++ b/tests-mx32/nfnetlink_queue.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nfnetlink_ulog.c b/tests-mx32/nfnetlink_ulog.c
new file mode 100644
index 00000000..31eb30f1
--- /dev/null
+++ b/tests-mx32/nfnetlink_ulog.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_log.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | NFULNL_MSG_PACKET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ULOG<<8|NFULNL_MSG_PACKET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ULOG<<8|0xff /* NFULNL_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H")
+
+#endif
diff --git a/tests-mx32/nfnetlink_ulog.gen.test b/tests-mx32/nfnetlink_ulog.gen.test
new file mode 100755
index 00000000..850ebafc
--- /dev/null
+++ b/tests-mx32/nfnetlink_ulog.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_inet_diag_msg.c b/tests-mx32/nlattr_inet_diag_msg.c
index 5666d74b..ccc62aed 100644
--- a/tests-mx32/nlattr_inet_diag_msg.c
+++ b/tests-mx32/nlattr_inet_diag_msg.c
@@ -182,6 +182,11 @@ main(void)
INET_DIAG_MARK, pattern, mark,
printf("%u", mark));
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_inet_diag_msg, print_inet_diag_msg,
+ INET_DIAG_CLASS_ID, pattern, mark,
+ printf("%u", mark));
+
static const uint8_t shutdown = 0xcd;
TEST_NLATTR(fd, nlh0, hdrlen,
init_inet_diag_msg, print_inet_diag_msg, INET_DIAG_SHUTDOWN,
diff --git a/tests-mx32/nlattr_mdba_mdb_entry.c b/tests-mx32/nlattr_mdba_mdb_entry.c
new file mode 100644
index 00000000..124fe1d4
--- /dev/null
+++ b/tests-mx32/nlattr_mdba_mdb_entry.c
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_BR_PORT_MSG
+
+# include <stdio.h>
+# include "test_nlattr.h"
+# include <arpa/inet.h>
+# include <linux/if_bridge.h>
+# include <linux/rtnetlink.h>
+
+# ifndef MDB_TEMPORARY
+# define MDB_TEMPORARY 0
+# endif
+# ifndef MDBA_MDB_ENTRY_INFO
+# define MDBA_MDB_ENTRY_INFO 1
+# endif
+# ifndef MDBA_MDB_EATTR_TIMER
+# define MDBA_MDB_EATTR_TIMER 1
+# endif
+
+const unsigned int hdrlen = sizeof(struct br_port_msg);
+
+static void
+init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ unsigned int len = msg_len;
+
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = len,
+ .nlmsg_type = RTM_GETMDB,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct br_port_msg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct br_port_msg, msg,
+ .family = AF_UNIX,
+ .ifindex = ifindex_lo()
+ );
+
+ struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ len -= NLMSG_SPACE(hdrlen);
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = len,
+ .nla_type = MDBA_MDB
+ );
+
+ nla = nla + 1;
+ len -= NLA_HDRLEN;
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = len,
+ .nla_type = MDBA_MDB_ENTRY
+ );
+}
+
+static void
+print_br_port_msg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {family=AF_UNIX"
+ ", ifindex=" IFINDEX_LO_STR "}"
+ ", {{nla_len=%u, nla_type=MDBA_MDB}"
+ ", {{nla_len=%u, nla_type=MDBA_MDB_ENTRY}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen),
+ msg_len - NLMSG_SPACE(hdrlen) - NLA_HDRLEN);
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ const unsigned int nla_type = 0xffff & NLA_TYPE_MASK;
+ char nla_type_str[256];
+ sprintf(nla_type_str, "%#x /* MDBA_MDB_ENTRY_??? */", nla_type);
+ TEST_NLATTR_(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2,
+ init_br_port_msg, print_br_port_msg,
+ nla_type, nla_type_str,
+ 4, pattern, 4,
+ print_quoted_hex(pattern, 4);
+ printf("}}"));
+
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY
+ struct br_mdb_entry entry = {
+ .ifindex = ifindex_lo(),
+ .state = MDB_TEMPORARY,
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ .flags = MDB_FLAGS_OFFLOAD,
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ .vid = 0xcdef,
+# endif
+ .addr = {
+ .proto = htons(AF_UNSPEC)
+ }
+ };
+
+ memcpy(&entry.addr.u, pattern, sizeof(entry.addr.u));
+ TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_MDB_ENTRY_INFO, pattern, entry, 2,
+ printf("{ifindex=" IFINDEX_LO_STR);
+ printf(", state=MDB_TEMPORARY");
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ printf(", flags=MDB_FLAGS_OFFLOAD");
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ PRINT_FIELD_U(", ", entry, vid);
+# endif
+ printf(", addr={u=");
+ print_quoted_hex(&entry.addr.u,
+ sizeof(entry.addr.u));
+ printf(", proto=htons(AF_UNSPEC)}}"));
+
+ static const struct nlattr nla = {
+ .nla_len = sizeof(nla),
+ .nla_type = MDBA_MDB_EATTR_TIMER
+ };
+ char buf[NLMSG_ALIGN(sizeof(entry)) + sizeof(nla)];
+ memcpy(buf, &entry, sizeof(entry));
+ memcpy(buf + NLMSG_ALIGN(sizeof(entry)), &nla, sizeof(nla));
+ TEST_NLATTR(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_MDB_ENTRY_INFO, sizeof(buf), buf, sizeof(buf),
+ printf("{ifindex=" IFINDEX_LO_STR);
+ printf(", state=MDB_TEMPORARY");
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ printf(", flags=MDB_FLAGS_OFFLOAD");
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ PRINT_FIELD_U(", ", entry, vid);
+# endif
+ printf(", addr={u=");
+ print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u));
+ printf(", proto=htons(AF_UNSPEC)}}"
+ ", {nla_len=%u, nla_type=MDBA_MDB_EATTR_TIMER}}}",
+ nla.nla_len));
+# endif /* HAVE_STRUCT_BR_MDB_ENTRY */
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG")
+
+#endif
diff --git a/tests-mx32/nlattr_mdba_mdb_entry.gen.test b/tests-mx32/nlattr_mdba_mdb_entry.gen.test
new file mode 100755
index 00000000..67253e8e
--- /dev/null
+++ b/tests-mx32/nlattr_mdba_mdb_entry.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_mdba_router_port.c b/tests-mx32/nlattr_mdba_router_port.c
new file mode 100644
index 00000000..af908cd8
--- /dev/null
+++ b/tests-mx32/nlattr_mdba_router_port.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_BR_PORT_MSG
+
+# include <stdio.h>
+# include "test_nlattr.h"
+# include <linux/if_bridge.h>
+# include <linux/rtnetlink.h>
+
+# ifndef MDBA_ROUTER
+# define MDBA_ROUTER 2
+# endif
+# ifndef MDBA_ROUTER_PORT
+# define MDBA_ROUTER_PORT 1
+# endif
+# ifndef MDBA_ROUTER_PATTR_TYPE
+# define MDBA_ROUTER_PATTR_TYPE 2
+# endif
+# ifndef MDB_RTR_TYPE_DISABLED
+# define MDB_RTR_TYPE_DISABLED 0
+# endif
+
+const unsigned int hdrlen = sizeof(struct br_port_msg);
+
+static void
+init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETMDB,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct br_port_msg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct br_port_msg, msg,
+ .family = AF_UNIX,
+ .ifindex = ifindex_lo()
+ );
+
+ struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = MDBA_ROUTER
+ );
+}
+
+static void
+print_br_port_msg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {family=AF_UNIX"
+ ", ifindex=" IFINDEX_LO_STR "}"
+ ", {{nla_len=%u, nla_type=MDBA_ROUTER}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ const uint32_t ifindex = ifindex_lo();
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_ROUTER_PORT, pattern, ifindex,
+ printf(IFINDEX_LO_STR));
+
+ const uint8_t type = MDB_RTR_TYPE_DISABLED;
+ static const struct nlattr nla = {
+ .nla_len = NLA_HDRLEN + sizeof(type),
+ .nla_type = MDBA_ROUTER_PATTR_TYPE
+ };
+ char buf[NLMSG_ALIGN(ifindex) + NLA_HDRLEN + sizeof(type)];
+ memcpy(buf, &ifindex, sizeof(ifindex));
+ memcpy(buf + NLMSG_ALIGN(ifindex), &nla, sizeof(nla));
+ memcpy(buf + NLMSG_ALIGN(ifindex) + NLA_HDRLEN, &type, sizeof(type));
+ TEST_NLATTR(fd, nlh0 - NLA_HDRLEN, hdrlen + NLA_HDRLEN,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_ROUTER_PORT, sizeof(buf), buf, sizeof(buf),
+ printf(IFINDEX_LO_STR
+ ", {{nla_len=%u, nla_type=MDBA_ROUTER_PATTR_TYPE}"
+ ", MDB_RTR_TYPE_DISABLED}}",
+ nla.nla_len));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG")
+
+#endif
diff --git a/tests-mx32/nlattr_mdba_router_port.gen.test b/tests-mx32/nlattr_mdba_router_port.gen.test
new file mode 100755
index 00000000..ce9ea148
--- /dev/null
+++ b/tests-mx32/nlattr_mdba_router_port.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_tc_stats.c b/tests-mx32/nlattr_tc_stats.c
new file mode 100644
index 00000000..dd76cc7d
--- /dev/null
+++ b/tests-mx32/nlattr_tc_stats.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_GNET_STATS_BASIC
+
+# include <stdio.h>
+# include <stddef.h>
+# include "test_nlattr.h"
+# include <linux/gen_stats.h>
+# include <linux/rtnetlink.h>
+
+const unsigned int hdrlen = sizeof(struct tcmsg);
+
+static void
+init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETQDISC,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct tcmsg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct tcmsg, msg,
+ .tcm_family = AF_UNIX,
+ .tcm_ifindex = ifindex_lo()
+ );
+
+ struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = TCA_STATS2
+ );
+}
+
+static void
+print_tcmsg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {tcm_family=AF_UNIX"
+ ", tcm_ifindex=" IFINDEX_LO_STR
+ ", tcm_handle=0, tcm_parent=0, tcm_info=0}"
+ ", {{nla_len=%u, nla_type=TCA_STATS2}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ static const struct gnet_stats_basic sb = {
+ .bytes = 0xabcdebdafefeadeb,
+ .packets = 0xbdcdeabf
+ };
+ char buf[offsetofend(struct gnet_stats_basic, packets)];
+ memcpy(buf, &sb, sizeof(buf));
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_BASIC, pattern, buf,
+ PRINT_FIELD_U("{", sb, bytes);
+ PRINT_FIELD_U(", ", sb, packets);
+ printf("}"));
+
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST
+ static const struct gnet_stats_rate_est est = {
+ .bps = 0xebcdaebd,
+ .pps = 0xabdceade,
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_RATE_EST, pattern, est,
+ PRINT_FIELD_U("{", est, bps);
+ PRINT_FIELD_U(", ", est, pps);
+ printf("}"));
+#endif
+
+#ifdef HAVE_STRUCT_GNET_STATS_QUEUE
+ static const struct gnet_stats_queue qstats = {
+ .qlen = 0xabcdeabd,
+ .backlog = 0xbcdaebad,
+ .drops = 0xcdbeaedb,
+ .requeues = 0xdebaefab,
+ .overlimits = 0xefaebade
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_QUEUE, pattern, qstats,
+ PRINT_FIELD_U("{", qstats, qlen);
+ PRINT_FIELD_U(", ", qstats, backlog);
+ PRINT_FIELD_U(", ", qstats, drops);
+ PRINT_FIELD_U(", ", qstats, requeues);
+ PRINT_FIELD_U(", ", qstats, overlimits);
+ printf("}"));
+#endif
+
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64
+ static const struct gnet_stats_rate_est64 est64 = {
+ .bps = 0xacbdcdefafecaebf,
+ .pps = 0xcdabeabdfeabceaf
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_RATE_EST64, pattern, est64,
+ PRINT_FIELD_U("{", est64, bps);
+ PRINT_FIELD_U(", ", est64, pps);
+ printf("}"));
+#endif
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_GNET_STATS_BASIC")
+
+#endif
diff --git a/tests-mx32/nlattr_tc_stats.gen.test b/tests-mx32/nlattr_tc_stats.gen.test
new file mode 100755
index 00000000..72780d4a
--- /dev/null
+++ b/tests-mx32/nlattr_tc_stats.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_tca_stab.c b/tests-mx32/nlattr_tca_stab.c
new file mode 100644
index 00000000..de6d3569
--- /dev/null
+++ b/tests-mx32/nlattr_tca_stab.c
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include "test_nlattr.h"
+#include <linux/pkt_sched.h>
+#include <linux/rtnetlink.h>
+
+#ifndef TCA_STAB
+# define TCA_STAB 8
+#endif
+#ifndef TCA_STAB_DATA
+# define TCA_STAB_DATA 2
+#endif
+
+const unsigned int hdrlen = sizeof(struct tcmsg);
+
+static void
+init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETQDISC,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct tcmsg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct tcmsg, msg,
+ .tcm_family = AF_UNIX,
+ .tcm_ifindex = ifindex_lo()
+ );
+
+ struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = TCA_STAB
+ );
+}
+
+static void
+print_tcmsg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {tcm_family=AF_UNIX"
+ ", tcm_ifindex=" IFINDEX_LO_STR
+ ", tcm_handle=0, tcm_parent=0, tcm_info=0}"
+ ", {{nla_len=%u, nla_type=TCA_STAB}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+static void
+print_uint16(const uint16_t *p)
+{
+ printf("%u", *p);
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+#ifdef HAVE_STRUCT_TC_SIZESPEC
+ static const struct tc_sizespec s = {
+ .cell_log = 0xab,
+ .size_log = 0xcd,
+ .cell_align = 0xefab,
+ .overhead = 0xcdadeefa,
+ .linklayer = 0xefbaafeb,
+ .mpu = 0xfebfaefb,
+ .mtu = 0xacdbefab,
+ .tsize = 0xbdeaabed
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STAB_BASE, pattern, s,
+ PRINT_FIELD_U("{", s, cell_log);
+ PRINT_FIELD_U(", ", s, size_log);
+ PRINT_FIELD_D(", ", s, cell_align);
+ PRINT_FIELD_D(", ", s, overhead);
+ PRINT_FIELD_U(", ", s, linklayer);
+ PRINT_FIELD_U(", ", s, mpu);
+ PRINT_FIELD_U(", ", s, mtu);
+ PRINT_FIELD_U(", ", s, tsize);
+ printf("}"));
+#endif
+
+ uint16_t data[2] = { 0xacbd, 0xefba };
+ TEST_NESTED_NLATTR_ARRAY(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STAB_DATA, pattern, data, print_uint16);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests-mx32/nlattr_tca_stab.gen.test b/tests-mx32/nlattr_tca_stab.gen.test
new file mode 100755
index 00000000..14cd1a54
--- /dev/null
+++ b/tests-mx32/nlattr_tca_stab.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests-mx32/nlattr_tcmsg.c b/tests-mx32/nlattr_tcmsg.c
index 00b7ae46..32ce4790 100644
--- a/tests-mx32/nlattr_tcmsg.c
+++ b/tests-mx32/nlattr_tcmsg.c
@@ -29,7 +29,9 @@
#include "tests.h"
#include <stdio.h>
+#include <stddef.h>
#include "test_nlattr.h"
+#include <linux/pkt_sched.h>
#include <linux/rtnetlink.h>
static void
@@ -80,6 +82,42 @@ main(void)
4, pattern, 4,
print_quoted_hex(pattern, 4));
+ static const struct tc_stats st = {
+ .bytes = 0xabcdcdbefeadefac,
+ .packets = 0xbcdeaefd,
+ .drops = 0xcdedafed,
+ .overlimits = 0xdcdbefad,
+ .bps = 0xefaebfad,
+ .pps = 0xfefbaedb,
+ .qlen = 0xabcdefab,
+ .backlog = 0xbdeabeab
+ };
+ char buf[offsetofend(struct tc_stats, backlog)];
+ memcpy(buf, &st, sizeof(buf));
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS, pattern, buf,
+ PRINT_FIELD_U("{", st, bytes);
+ PRINT_FIELD_U(", ", st, packets);
+ PRINT_FIELD_U(", ", st, drops);
+ PRINT_FIELD_U(", ", st, overlimits);
+ PRINT_FIELD_U(", ", st, bps);
+ PRINT_FIELD_U(", ", st, pps);
+ PRINT_FIELD_U(", ", st, qlen);
+ PRINT_FIELD_U(", ", st, backlog);
+ printf("}"));
+
+ static const struct tc_estimator est = {
+ .interval = 0xcd,
+ .ewma_log = 0xab
+ };
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_RATE, pattern, est,
+ PRINT_FIELD_D("{", est, interval);
+ PRINT_FIELD_U(", ", est, ewma_log);
+ printf("}"));
+
puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests-mx32/options-syntax.test b/tests-mx32/options-syntax.test
index b4d9be70..2e459c96 100755
--- a/tests-mx32/options-syntax.test
+++ b/tests-mx32/options-syntax.test
@@ -80,16 +80,21 @@ check_h "invalid -s argument: '-42'" -s -42
check_h "invalid -s argument: '1073741824'" -s 1073741824
check_h "invalid -I argument: '5'" -I 5
-cat > "$EXP" << '__EOF__'
-strace: must have PROG [ARGS] or -p PID
-Try 'strace -h' for more information.
-__EOF__
../zeroargc "$strace_exp" /bin/true 2> "$LOG" &&
dump_log_and_fail_with \
'zeroargc strace failed to handle the error properly'
-match_diff "$LOG" "$EXP" ||
- dump_log_and_fail_with \
- 'zeroargc strace failed to print expected diagnostics'
+cat > "$EXP" << __EOF__
+$strace_exp: must have PROG [ARGS] or -p PID
+Try '$strace_exp -h' for more information.
+__EOF__
+diff -u -- "$EXP" "$LOG" > /dev/null || {
+ cat > "$EXP" <<- '__EOF__'
+ strace: must have PROG [ARGS] or -p PID
+ Try 'strace -h' for more information.
+ __EOF__
+ match_diff "$LOG" "$EXP" \
+ "zeroargc $STRACE $args output mismatch"
+}
if [ -n "${UID-}" ]; then
if [ "${UID-}" = 0 ]; then
diff --git a/tests-mx32/prctl-seccomp-filter-v.c b/tests-mx32/prctl-seccomp-filter-v.c
index cfd5d3dd..7a65d898 100644
--- a/tests-mx32/prctl-seccomp-filter-v.c
+++ b/tests-mx32/prctl-seccomp-filter-v.c
@@ -114,7 +114,7 @@ main(void)
PRINT_DENY_SYSCALL(sync, EBUSY),
PRINT_DENY_SYSCALL(setsid, EPERM),
- printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)");
+ printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)");
puts("]}) = 0");
puts("+++ exited with 0 +++");
diff --git a/tests-mx32/pure_executables.am b/tests-mx32/pure_executables.am
index 9dc532a6..2cae9ae5 100644
--- a/tests-mx32/pure_executables.am
+++ b/tests-mx32/pure_executables.am
@@ -123,6 +123,7 @@ PURE_EXECUTABLES = \
ipc_sem \
ipc_shm \
kcmp \
+ kcmp-y \
kexec_file_load \
kexec_load \
keyctl \
@@ -180,6 +181,17 @@ PURE_EXECUTABLES = \
netlink_sock_diag \
netlink_xfrm \
newfstatat \
+ nfnetlink_acct \
+ nfnetlink_cthelper \
+ nfnetlink_ctnetlink \
+ nfnetlink_ctnetlink_exp \
+ nfnetlink_cttimeout \
+ nfnetlink_nft_compat \
+ nfnetlink_nftables \
+ nfnetlink_ipset \
+ nfnetlink_osf \
+ nfnetlink_queue \
+ nfnetlink_ulog \
nlattr \
nlattr_crypto_user_alg \
nlattr_br_port_msg \
@@ -194,6 +206,8 @@ PURE_EXECUTABLES = \
nlattr_inet_diag_msg \
nlattr_inet_diag_req_compat \
nlattr_inet_diag_req_v2 \
+ nlattr_mdba_mdb_entry \
+ nlattr_mdba_router_port \
nlattr_ndmsg \
nlattr_ndtmsg \
nlattr_netconfmsg \
@@ -203,6 +217,8 @@ PURE_EXECUTABLES = \
nlattr_rtgenmsg \
nlattr_rtmsg \
nlattr_smc_diag_msg \
+ nlattr_tc_stats \
+ nlattr_tca_stab \
nlattr_tcamsg \
nlattr_tcmsg \
nlattr_unix_diag_msg \
@@ -283,6 +299,7 @@ PURE_EXECUTABLES = \
sched_xetscheduler \
sched_yield \
seccomp-filter \
+ seccomp_get_action_avail \
select \
semop \
sendfile \
diff --git a/tests-mx32/pure_executables.list b/tests-mx32/pure_executables.list
index dade57b0..d98b17db 100755
--- a/tests-mx32/pure_executables.list
+++ b/tests-mx32/pure_executables.list
@@ -122,6 +122,7 @@ ipc_msgbuf
ipc_sem
ipc_shm
kcmp
+kcmp-y
kexec_file_load
kexec_load
keyctl
@@ -179,6 +180,17 @@ netlink_selinux
netlink_sock_diag
netlink_xfrm
newfstatat
+nfnetlink_acct
+nfnetlink_cthelper
+nfnetlink_ctnetlink
+nfnetlink_ctnetlink_exp
+nfnetlink_cttimeout
+nfnetlink_nft_compat
+nfnetlink_nftables
+nfnetlink_ipset
+nfnetlink_osf
+nfnetlink_queue
+nfnetlink_ulog
nlattr
nlattr_crypto_user_alg
nlattr_br_port_msg
@@ -193,6 +205,8 @@ nlattr_ifla_xdp
nlattr_inet_diag_msg
nlattr_inet_diag_req_compat
nlattr_inet_diag_req_v2
+nlattr_mdba_mdb_entry
+nlattr_mdba_router_port
nlattr_ndmsg
nlattr_ndtmsg
nlattr_netconfmsg
@@ -202,6 +216,8 @@ nlattr_packet_diag_msg
nlattr_rtgenmsg
nlattr_rtmsg
nlattr_smc_diag_msg
+nlattr_tc_stats
+nlattr_tca_stab
nlattr_tcamsg
nlattr_tcmsg
nlattr_unix_diag_msg
@@ -282,6 +298,7 @@ sched_xetparam
sched_xetscheduler
sched_yield
seccomp-filter
+seccomp_get_action_avail
select
semop
sendfile
diff --git a/tests-mx32/seccomp-filter-v.c b/tests-mx32/seccomp-filter-v.c
index e419c6cb..34ab3b58 100644
--- a/tests-mx32/seccomp-filter-v.c
+++ b/tests-mx32/seccomp-filter-v.c
@@ -95,7 +95,7 @@ main(void)
tprintf("%s", "");
static const char kill_stmt_txt[] =
- "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)";
+ "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)";
struct sock_filter *const filter =
tail_memdup(filter_c, sizeof(filter_c));
struct sock_filter *const big_filter =
@@ -136,7 +136,8 @@ main(void)
prog->filter = big_filter;
prog->len = BPF_MAXINSNS + 1;
tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[",
- "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", prog->len);
+ "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc",
+ prog->len);
for (i = 0; i < BPF_MAXINSNS; ++i) {
if (i)
tprintf(", ");
diff --git a/tests-mx32/seccomp-filter.c b/tests-mx32/seccomp-filter.c
index 6e009823..7bc76560 100644
--- a/tests-mx32/seccomp-filter.c
+++ b/tests-mx32/seccomp-filter.c
@@ -55,12 +55,13 @@ main(void)
prog->len = N;
rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -1, prog);
printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=%p})"
- " = %ld %s (%m)\n", "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe",
+ " = %ld %s (%m)\n",
+ "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc",
prog->len, prog->filter, rc, errno2name());
- rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -2L, efault);
+ rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -4L, efault);
printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n",
- "0xfffffffe /* SECCOMP_FILTER_FLAG_??? */",
+ "0xfffffffc /* SECCOMP_FILTER_FLAG_??? */",
efault, rc, errno2name());
puts("+++ exited with 0 +++");
diff --git a/tests-mx32/seccomp_get_action_avail.c b/tests-mx32/seccomp_get_action_avail.c
new file mode 100644
index 00000000..ed231e17
--- /dev/null
+++ b/tests-mx32/seccomp_get_action_avail.c
@@ -0,0 +1,125 @@
+/*
+ * Check decoding of seccomp SECCOMP_GET_ACTION_AVAIL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_seccomp
+
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+# ifdef HAVE_LINUX_SECCOMP_H
+# include <linux/seccomp.h>
+# endif
+
+# ifndef SECCOMP_GET_ACTION_AVAIL
+# define SECCOMP_GET_ACTION_AVAIL 2
+# endif
+
+static const char *errstr;
+
+static long
+k_seccomp(const kernel_ulong_t op, const kernel_ulong_t flags,
+ const kernel_ulong_t args)
+{
+ const long rc = syscall(__NR_seccomp, op, flags, args);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, act);
+ kernel_ulong_t op = (kernel_ulong_t) 0xfacefeed00000000ULL
+ | SECCOMP_GET_ACTION_AVAIL;
+ kernel_ulong_t flags = (kernel_ulong_t) 0xdeadbeef00000000ULL;
+ unsigned int i;
+
+ struct {
+ uint32_t val;
+ const char *str;
+ } actions [] = {
+ { 0, "SECCOMP_RET_KILL_THREAD" },
+# ifdef SECCOMP_RET_KILL_PROCESS
+ { ARG_STR(SECCOMP_RET_KILL_PROCESS) },
+# endif
+# ifdef SECCOMP_RET_TRAP
+ { ARG_STR(SECCOMP_RET_TRAP) },
+# endif
+# ifdef SECCOMP_RET_ERRNO
+ { ARG_STR(SECCOMP_RET_ERRNO) },
+# endif
+# ifdef SECCOMP_RET_TRACE
+ { ARG_STR(SECCOMP_RET_TRACE) },
+# endif
+# ifdef SECCOMP_RET_LOG
+ { ARG_STR(SECCOMP_RET_LOG) },
+# endif
+# ifdef SECCOMP_RET_ALLOW
+ { ARG_STR(SECCOMP_RET_ALLOW) },
+# endif
+ { 0xffffffff, "0xffffffff /* SECCOMP_RET_??? */" }
+ };
+
+ for (i = 0; i < ARRAY_SIZE(actions); ++i) {
+ *act = actions[i].val;
+ k_seccomp(op, flags, (uintptr_t) act);
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, [%s]) = %s\n",
+ actions[i].str, errstr);
+ }
+
+ *act = actions[0].val;
+
+ k_seccomp(op, flags, (uintptr_t) (act + 1));
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %p) = %s\n",
+ act + 1, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_seccomp(op, flags, f8ill_ptr_to_kulong(act));
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %#jx) = %s\n",
+ (uintmax_t) f8ill_ptr_to_kulong(act), errstr);
+ }
+
+ flags |= 0xcafef00d;
+ k_seccomp(op, flags, 0);
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, %u, NULL) = %s\n",
+ (unsigned int) flags, errstr);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_seccomp")
+
+#endif
diff --git a/tests-mx32/seccomp_get_action_avail.gen.test b/tests-mx32/seccomp_get_action_avail.gen.test
new file mode 100755
index 00000000..49974510
--- /dev/null
+++ b/tests-mx32/seccomp_get_action_avail.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp_get_action_avail -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=seccomp
diff --git a/tests-mx32/set_sigblock.c b/tests-mx32/set_sigblock.c
new file mode 100644
index 00000000..4786322c
--- /dev/null
+++ b/tests-mx32/set_sigblock.c
@@ -0,0 +1,53 @@
+/*
+ * Execute a command with the specified signal blocked/unblocked.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac < 4)
+ error_msg_and_fail("usage: set_sigblock 0|1 signum path...");
+
+ const int block = atoi(av[1]);
+ const int signum = atoi(av[2]);
+ sigset_t mask;
+
+ sigemptyset(&mask);
+ if (sigaddset(&mask, signum))
+ perror_msg_and_fail("sigaddset: %s", av[2]);
+ if (sigprocmask(block ? SIG_BLOCK : SIG_UNBLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ execvp(av[3], av + 3);
+ perror_msg_and_fail("execvp: %s", av[3]);
+}
diff --git a/tests-mx32/set_sigign.c b/tests-mx32/set_sigign.c
new file mode 100644
index 00000000..0319fed3
--- /dev/null
+++ b/tests-mx32/set_sigign.c
@@ -0,0 +1,49 @@
+/*
+ * Execute a command with a signal handler set to SIG_IGN/SIG_DFL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac < 4)
+ error_msg_and_fail("usage: set_sigign 0|1 signum path...");
+
+ const int ign = atoi(av[1]);
+ const int signum = atoi(av[2]);
+
+ if (signal(signum, ign ? SIG_IGN : SIG_DFL) == SIG_ERR)
+ perror_msg_and_fail("signal: %s", av[2]);
+
+ execvp(av[3], av + 3);
+ perror_msg_and_fail("execvp: %s", av[3]);
+}
diff --git a/tests-mx32/sigblock.test b/tests-mx32/sigblock.test
new file mode 100755
index 00000000..ddbe2dea
--- /dev/null
+++ b/tests-mx32/sigblock.test
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Check signal mask transparency.
+# Starting with commit v4.17-5-gf83b49b strace is expected
+# to forward the signal mask to tracees unchanged.
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../list_sigaction_signum > /dev/null
+saved_STRACE="$STRACE"
+
+for sig in $(../list_sigaction_signum); do
+ for block in 0 1; do
+ set_cmd="../set_sigblock $block $sig"
+ check_cmd="../check_sigblock $block $sig"
+ run_prog $set_cmd $check_cmd
+ STRACE="$set_cmd $saved_STRACE"
+ for i in '' -I1 -I2 -I3 -I4; do
+ run_strace $i -enone $check_cmd
+ done
+ done
+done
diff --git a/tests-mx32/sigign.test b/tests-mx32/sigign.test
new file mode 100755
index 00000000..3164e72e
--- /dev/null
+++ b/tests-mx32/sigign.test
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Check signal disposition transparency.
+# Starting with commit v4.17-8-ge97a66f strace is expected
+# to forward the signal disposition to tracees unchanged.
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../list_sigaction_signum > /dev/null
+saved_STRACE="$STRACE"
+
+for sig in $(../list_sigaction_signum); do
+ for ign in 0 1; do
+ set_cmd="../set_sigign $ign $sig"
+ check_cmd="../check_sigign $ign $sig"
+ run_prog $set_cmd $check_cmd
+ STRACE="$set_cmd $saved_STRACE"
+ for i in '' -I1 -I2 -I3 -I4; do
+ run_strace $i -enone $check_cmd
+ done
+ done
+done
diff --git a/tests-mx32/test_nlattr.h b/tests-mx32/test_nlattr.h
index 048d5475..43f467ff 100644
--- a/tests-mx32/test_nlattr.h
+++ b/tests-mx32/test_nlattr.h
@@ -203,14 +203,75 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
printf("]")); \
} while (0)
-#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \
- init_msg_, print_msg_, \
- nla_type_, pattern_, obj_, ...) \
+#define TEST_NESTED_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, nla_type_str_, \
+ pattern_, obj_, depth_, ...) \
do { \
const unsigned int plen = \
sizeof(obj_) - 1 > DEFAULT_STRLEN \
? DEFAULT_STRLEN : (int) sizeof(obj_) - 1; \
/* len < sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ plen, (pattern_), plen, \
+ print_quoted_hex((pattern_), plen); \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ /* short read of sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ sizeof(obj_), \
+ (pattern_), sizeof(obj_) - 1, \
+ printf("%p", RTA_DATA(TEST_NLATTR_nla)); \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ /* sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ sizeof(obj_), \
+ &(obj_), sizeof(obj_), \
+ __VA_ARGS__; \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ } while (0)
+
+#define TEST_NESTED_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, \
+ depth_, ...) \
+ TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ (pattern_), (obj_), (depth_), \
+ __VA_ARGS__)
+
+#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, ...) \
+ TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ (pattern_), (obj_), 1, \
+ __VA_ARGS__)
+
+#define TEST_NESTED_NLATTR_ARRAY(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, print_elem_)\
+ do { \
+ const unsigned int plen = \
+ sizeof((obj_)[0]) - 1 > DEFAULT_STRLEN \
+ ? DEFAULT_STRLEN : (int) sizeof((obj_)[0]) - 1; \
+ /* len < sizeof((obj_)[0]) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
(init_msg_), (print_msg_), \
@@ -218,15 +279,36 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
plen, (pattern_), plen, \
print_quoted_hex((pattern_), plen); \
printf("}")); \
+ /* sizeof((obj_)[0]) < len < sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
+ (hdrlen_) + NLA_HDRLEN, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ sizeof(obj_) - 1, \
+ &(obj_), sizeof(obj_) - 1, \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf("]}")); \
/* short read of sizeof(obj_) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
(init_msg_), (print_msg_), \
(nla_type_), #nla_type_, \
sizeof(obj_), \
- (pattern_), sizeof(obj_) - 1, \
- printf("%p}", \
- RTA_DATA(TEST_NLATTR_nla))); \
+ &(obj_), sizeof(obj_) - 1, \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf(", %p]}", \
+ RTA_DATA(TEST_NLATTR_nla) \
+ + sizeof((obj_)[0]))); \
/* sizeof(obj_) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
@@ -234,6 +316,11 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
(nla_type_), #nla_type_, \
sizeof(obj_), \
&(obj_), sizeof(obj_), \
- __VA_ARGS__, \
- printf("}")); \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_); ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf("]}")); \
} while (0)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b4ba22a6..f2109fd4 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -87,6 +87,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
attach-p-cmd-p \
block_reset_raise_run \
caps-abbrev \
+ check_sigblock \
+ check_sigign \
clone_parent \
clone_ptrace \
count-f \
@@ -106,6 +108,7 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
ioctl_rtc-v \
is_linux_mips_n64 \
ksysent \
+ list_sigaction_signum \
mmsg-silent \
mmsg_name-v \
msg_control-v \
@@ -135,6 +138,8 @@ check_PROGRAMS = $(PURE_EXECUTABLES) \
seccomp-filter-v \
seccomp-strict \
set_ptracer_any \
+ set_sigblock \
+ set_sigign \
signal_receive \
sleep \
stack-fcall \
@@ -278,6 +283,8 @@ MISC_TESTS = \
redirect-fds.test \
redirect.test \
restart_syscall.test \
+ sigblock.test \
+ sigign.test \
strace-C.test \
strace-E.test \
strace-S.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 71e57374..1e8085a5 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -139,7 +139,8 @@ DIST_COMMON = $(srcdir)/pure_executables.am $(srcdir)/gen_tests.am \
check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
attach-f-p-cmd$(EXEEXT) attach-p-cmd-cmd$(EXEEXT) \
attach-p-cmd-p$(EXEEXT) block_reset_raise_run$(EXEEXT) \
- caps-abbrev$(EXEEXT) clone_parent$(EXEEXT) \
+ caps-abbrev$(EXEEXT) check_sigblock$(EXEEXT) \
+ check_sigign$(EXEEXT) clone_parent$(EXEEXT) \
clone_ptrace$(EXEEXT) count-f$(EXEEXT) execve-v$(EXEEXT) \
execveat-v$(EXEEXT) filter-unavailable$(EXEEXT) \
fork-f$(EXEEXT) getpid$(EXEEXT) getppid$(EXEEXT) \
@@ -147,10 +148,11 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
ioctl_evdev-v$(EXEEXT) ioctl_loop-nv$(EXEEXT) \
ioctl_loop-v$(EXEEXT) ioctl_nsfs$(EXEEXT) ioctl_rtc-v$(EXEEXT) \
is_linux_mips_n64$(EXEEXT) ksysent$(EXEEXT) \
- mmsg-silent$(EXEEXT) mmsg_name-v$(EXEEXT) \
- msg_control-v$(EXEEXT) net-accept-connect$(EXEEXT) \
- netlink_inet_diag$(EXEEXT) netlink_netlink_diag$(EXEEXT) \
- netlink_unix_diag$(EXEEXT) nsyscalls$(EXEEXT) pc$(EXEEXT) \
+ list_sigaction_signum$(EXEEXT) mmsg-silent$(EXEEXT) \
+ mmsg_name-v$(EXEEXT) msg_control-v$(EXEEXT) \
+ net-accept-connect$(EXEEXT) netlink_inet_diag$(EXEEXT) \
+ netlink_netlink_diag$(EXEEXT) netlink_unix_diag$(EXEEXT) \
+ nsyscalls$(EXEEXT) pc$(EXEEXT) \
perf_event_open_nonverbose$(EXEEXT) \
perf_event_open_unabbrev$(EXEEXT) ppoll-v$(EXEEXT) \
prctl-seccomp-filter-v$(EXEEXT) prctl-seccomp-strict$(EXEEXT) \
@@ -161,8 +163,9 @@ check_PROGRAMS = $(am__EXEEXT_1) answer$(EXEEXT) attach-f-p$(EXEEXT) \
redirect-fds$(EXEEXT) restart_syscall$(EXEEXT) \
run_expect_termsig$(EXEEXT) scm_rights$(EXEEXT) \
seccomp-filter-v$(EXEEXT) seccomp-strict$(EXEEXT) \
- set_ptracer_any$(EXEEXT) signal_receive$(EXEEXT) \
- sleep$(EXEEXT) stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
+ set_ptracer_any$(EXEEXT) set_sigblock$(EXEEXT) \
+ set_sigign$(EXEEXT) signal_receive$(EXEEXT) sleep$(EXEEXT) \
+ stack-fcall$(EXEEXT) threads-execve$(EXEEXT) \
unblock_reset_raise$(EXEEXT) unix-pair-send-recv$(EXEEXT) \
unix-pair-sendto-recvfrom$(EXEEXT) vfork-f$(EXEEXT) \
wait4-v$(EXEEXT) waitid-v$(EXEEXT) zeroargc$(EXEEXT)
@@ -253,9 +256,9 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
ioctl_uffdio$(EXEEXT) ioctl_v4l2$(EXEEXT) ioperm$(EXEEXT) \
iopl$(EXEEXT) ioprio$(EXEEXT) ip_mreq$(EXEEXT) ipc$(EXEEXT) \
ipc_msg$(EXEEXT) ipc_msgbuf$(EXEEXT) ipc_sem$(EXEEXT) \
- ipc_shm$(EXEEXT) kcmp$(EXEEXT) kexec_file_load$(EXEEXT) \
- kexec_load$(EXEEXT) keyctl$(EXEEXT) kill$(EXEEXT) \
- lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \
+ ipc_shm$(EXEEXT) kcmp$(EXEEXT) kcmp-y$(EXEEXT) \
+ kexec_file_load$(EXEEXT) kexec_load$(EXEEXT) keyctl$(EXEEXT) \
+ kill$(EXEEXT) lchown$(EXEEXT) lchown32$(EXEEXT) link$(EXEEXT) \
linkat$(EXEEXT) llseek$(EXEEXT) lookup_dcookie$(EXEEXT) \
lseek$(EXEEXT) lstat$(EXEEXT) lstat64$(EXEEXT) \
madvise$(EXEEXT) mbind$(EXEEXT) membarrier$(EXEEXT) \
@@ -275,19 +278,27 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
netlink_netfilter$(EXEEXT) netlink_protocol$(EXEEXT) \
netlink_route$(EXEEXT) netlink_selinux$(EXEEXT) \
netlink_sock_diag$(EXEEXT) netlink_xfrm$(EXEEXT) \
- newfstatat$(EXEEXT) nlattr$(EXEEXT) \
- nlattr_crypto_user_alg$(EXEEXT) nlattr_br_port_msg$(EXEEXT) \
- nlattr_dcbmsg$(EXEEXT) nlattr_fib_rule_hdr$(EXEEXT) \
- nlattr_ifaddrlblmsg$(EXEEXT) nlattr_ifaddrmsg$(EXEEXT) \
- nlattr_ifinfomsg$(EXEEXT) nlattr_ifla_brport$(EXEEXT) \
- nlattr_ifla_port$(EXEEXT) nlattr_ifla_xdp$(EXEEXT) \
- nlattr_inet_diag_msg$(EXEEXT) \
+ newfstatat$(EXEEXT) nfnetlink_acct$(EXEEXT) \
+ nfnetlink_cthelper$(EXEEXT) nfnetlink_ctnetlink$(EXEEXT) \
+ nfnetlink_ctnetlink_exp$(EXEEXT) nfnetlink_cttimeout$(EXEEXT) \
+ nfnetlink_nft_compat$(EXEEXT) nfnetlink_nftables$(EXEEXT) \
+ nfnetlink_ipset$(EXEEXT) nfnetlink_osf$(EXEEXT) \
+ nfnetlink_queue$(EXEEXT) nfnetlink_ulog$(EXEEXT) \
+ nlattr$(EXEEXT) nlattr_crypto_user_alg$(EXEEXT) \
+ nlattr_br_port_msg$(EXEEXT) nlattr_dcbmsg$(EXEEXT) \
+ nlattr_fib_rule_hdr$(EXEEXT) nlattr_ifaddrlblmsg$(EXEEXT) \
+ nlattr_ifaddrmsg$(EXEEXT) nlattr_ifinfomsg$(EXEEXT) \
+ nlattr_ifla_brport$(EXEEXT) nlattr_ifla_port$(EXEEXT) \
+ nlattr_ifla_xdp$(EXEEXT) nlattr_inet_diag_msg$(EXEEXT) \
nlattr_inet_diag_req_compat$(EXEEXT) \
- nlattr_inet_diag_req_v2$(EXEEXT) nlattr_ndmsg$(EXEEXT) \
+ nlattr_inet_diag_req_v2$(EXEEXT) \
+ nlattr_mdba_mdb_entry$(EXEEXT) \
+ nlattr_mdba_router_port$(EXEEXT) nlattr_ndmsg$(EXEEXT) \
nlattr_ndtmsg$(EXEEXT) nlattr_netconfmsg$(EXEEXT) \
nlattr_netlink_diag_msg$(EXEEXT) nlattr_nlmsgerr$(EXEEXT) \
nlattr_packet_diag_msg$(EXEEXT) nlattr_rtgenmsg$(EXEEXT) \
nlattr_rtmsg$(EXEEXT) nlattr_smc_diag_msg$(EXEEXT) \
+ nlattr_tc_stats$(EXEEXT) nlattr_tca_stab$(EXEEXT) \
nlattr_tcamsg$(EXEEXT) nlattr_tcmsg$(EXEEXT) \
nlattr_unix_diag_msg$(EXEEXT) old_mmap$(EXEEXT) \
oldfstat$(EXEEXT) oldlstat$(EXEEXT) oldselect$(EXEEXT) \
@@ -321,7 +332,8 @@ am__EXEEXT_1 = _newselect$(EXEEXT) accept$(EXEEXT) accept4$(EXEEXT) \
sched_get_priority_mxx$(EXEEXT) sched_rr_get_interval$(EXEEXT) \
sched_xetaffinity$(EXEEXT) sched_xetattr$(EXEEXT) \
sched_xetparam$(EXEEXT) sched_xetscheduler$(EXEEXT) \
- sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) select$(EXEEXT) \
+ sched_yield$(EXEEXT) seccomp-filter$(EXEEXT) \
+ seccomp_get_action_avail$(EXEEXT) select$(EXEEXT) \
semop$(EXEEXT) sendfile$(EXEEXT) sendfile64$(EXEEXT) \
set_mempolicy$(EXEEXT) setdomainname$(EXEEXT) \
setfsgid$(EXEEXT) setfsgid32$(EXEEXT) setfsuid$(EXEEXT) \
@@ -439,6 +451,14 @@ caps_abbrev_SOURCES = caps-abbrev.c
caps_abbrev_OBJECTS = caps-abbrev.$(OBJEXT)
caps_abbrev_LDADD = $(LDADD)
caps_abbrev_DEPENDENCIES = libtests.a
+check_sigblock_SOURCES = check_sigblock.c
+check_sigblock_OBJECTS = check_sigblock.$(OBJEXT)
+check_sigblock_LDADD = $(LDADD)
+check_sigblock_DEPENDENCIES = libtests.a
+check_sigign_SOURCES = check_sigign.c
+check_sigign_OBJECTS = check_sigign.$(OBJEXT)
+check_sigign_LDADD = $(LDADD)
+check_sigign_DEPENDENCIES = libtests.a
chmod_SOURCES = chmod.c
chmod_OBJECTS = chmod.$(OBJEXT)
chmod_LDADD = $(LDADD)
@@ -936,6 +956,10 @@ kcmp_SOURCES = kcmp.c
kcmp_OBJECTS = kcmp.$(OBJEXT)
kcmp_LDADD = $(LDADD)
kcmp_DEPENDENCIES = libtests.a
+kcmp_y_SOURCES = kcmp-y.c
+kcmp_y_OBJECTS = kcmp-y.$(OBJEXT)
+kcmp_y_LDADD = $(LDADD)
+kcmp_y_DEPENDENCIES = libtests.a
kexec_file_load_SOURCES = kexec_file_load.c
kexec_file_load_OBJECTS = kexec_file_load.$(OBJEXT)
kexec_file_load_LDADD = $(LDADD)
@@ -972,6 +996,10 @@ linkat_SOURCES = linkat.c
linkat_OBJECTS = linkat.$(OBJEXT)
linkat_LDADD = $(LDADD)
linkat_DEPENDENCIES = libtests.a
+list_sigaction_signum_SOURCES = list_sigaction_signum.c
+list_sigaction_signum_OBJECTS = list_sigaction_signum.$(OBJEXT)
+list_sigaction_signum_LDADD = $(LDADD)
+list_sigaction_signum_DEPENDENCIES = libtests.a
llseek_SOURCES = llseek.c
llseek_OBJECTS = llseek.$(OBJEXT)
llseek_LDADD = $(LDADD)
@@ -1192,6 +1220,50 @@ newfstatat_SOURCES = newfstatat.c
newfstatat_OBJECTS = newfstatat-newfstatat.$(OBJEXT)
newfstatat_LDADD = $(LDADD)
newfstatat_DEPENDENCIES = libtests.a
+nfnetlink_acct_SOURCES = nfnetlink_acct.c
+nfnetlink_acct_OBJECTS = nfnetlink_acct.$(OBJEXT)
+nfnetlink_acct_LDADD = $(LDADD)
+nfnetlink_acct_DEPENDENCIES = libtests.a
+nfnetlink_cthelper_SOURCES = nfnetlink_cthelper.c
+nfnetlink_cthelper_OBJECTS = nfnetlink_cthelper.$(OBJEXT)
+nfnetlink_cthelper_LDADD = $(LDADD)
+nfnetlink_cthelper_DEPENDENCIES = libtests.a
+nfnetlink_ctnetlink_SOURCES = nfnetlink_ctnetlink.c
+nfnetlink_ctnetlink_OBJECTS = nfnetlink_ctnetlink.$(OBJEXT)
+nfnetlink_ctnetlink_LDADD = $(LDADD)
+nfnetlink_ctnetlink_DEPENDENCIES = libtests.a
+nfnetlink_ctnetlink_exp_SOURCES = nfnetlink_ctnetlink_exp.c
+nfnetlink_ctnetlink_exp_OBJECTS = nfnetlink_ctnetlink_exp.$(OBJEXT)
+nfnetlink_ctnetlink_exp_LDADD = $(LDADD)
+nfnetlink_ctnetlink_exp_DEPENDENCIES = libtests.a
+nfnetlink_cttimeout_SOURCES = nfnetlink_cttimeout.c
+nfnetlink_cttimeout_OBJECTS = nfnetlink_cttimeout.$(OBJEXT)
+nfnetlink_cttimeout_LDADD = $(LDADD)
+nfnetlink_cttimeout_DEPENDENCIES = libtests.a
+nfnetlink_ipset_SOURCES = nfnetlink_ipset.c
+nfnetlink_ipset_OBJECTS = nfnetlink_ipset.$(OBJEXT)
+nfnetlink_ipset_LDADD = $(LDADD)
+nfnetlink_ipset_DEPENDENCIES = libtests.a
+nfnetlink_nft_compat_SOURCES = nfnetlink_nft_compat.c
+nfnetlink_nft_compat_OBJECTS = nfnetlink_nft_compat.$(OBJEXT)
+nfnetlink_nft_compat_LDADD = $(LDADD)
+nfnetlink_nft_compat_DEPENDENCIES = libtests.a
+nfnetlink_nftables_SOURCES = nfnetlink_nftables.c
+nfnetlink_nftables_OBJECTS = nfnetlink_nftables.$(OBJEXT)
+nfnetlink_nftables_LDADD = $(LDADD)
+nfnetlink_nftables_DEPENDENCIES = libtests.a
+nfnetlink_osf_SOURCES = nfnetlink_osf.c
+nfnetlink_osf_OBJECTS = nfnetlink_osf.$(OBJEXT)
+nfnetlink_osf_LDADD = $(LDADD)
+nfnetlink_osf_DEPENDENCIES = libtests.a
+nfnetlink_queue_SOURCES = nfnetlink_queue.c
+nfnetlink_queue_OBJECTS = nfnetlink_queue.$(OBJEXT)
+nfnetlink_queue_LDADD = $(LDADD)
+nfnetlink_queue_DEPENDENCIES = libtests.a
+nfnetlink_ulog_SOURCES = nfnetlink_ulog.c
+nfnetlink_ulog_OBJECTS = nfnetlink_ulog.$(OBJEXT)
+nfnetlink_ulog_LDADD = $(LDADD)
+nfnetlink_ulog_DEPENDENCIES = libtests.a
nlattr_SOURCES = nlattr.c
nlattr_OBJECTS = nlattr.$(OBJEXT)
nlattr_LDADD = $(LDADD)
@@ -1249,6 +1321,14 @@ nlattr_inet_diag_req_v2_SOURCES = nlattr_inet_diag_req_v2.c
nlattr_inet_diag_req_v2_OBJECTS = nlattr_inet_diag_req_v2.$(OBJEXT)
nlattr_inet_diag_req_v2_LDADD = $(LDADD)
nlattr_inet_diag_req_v2_DEPENDENCIES = libtests.a
+nlattr_mdba_mdb_entry_SOURCES = nlattr_mdba_mdb_entry.c
+nlattr_mdba_mdb_entry_OBJECTS = nlattr_mdba_mdb_entry.$(OBJEXT)
+nlattr_mdba_mdb_entry_LDADD = $(LDADD)
+nlattr_mdba_mdb_entry_DEPENDENCIES = libtests.a
+nlattr_mdba_router_port_SOURCES = nlattr_mdba_router_port.c
+nlattr_mdba_router_port_OBJECTS = nlattr_mdba_router_port.$(OBJEXT)
+nlattr_mdba_router_port_LDADD = $(LDADD)
+nlattr_mdba_router_port_DEPENDENCIES = libtests.a
nlattr_ndmsg_SOURCES = nlattr_ndmsg.c
nlattr_ndmsg_OBJECTS = nlattr_ndmsg.$(OBJEXT)
nlattr_ndmsg_LDADD = $(LDADD)
@@ -1285,6 +1365,14 @@ nlattr_smc_diag_msg_SOURCES = nlattr_smc_diag_msg.c
nlattr_smc_diag_msg_OBJECTS = nlattr_smc_diag_msg.$(OBJEXT)
nlattr_smc_diag_msg_LDADD = $(LDADD)
nlattr_smc_diag_msg_DEPENDENCIES = libtests.a
+nlattr_tc_stats_SOURCES = nlattr_tc_stats.c
+nlattr_tc_stats_OBJECTS = nlattr_tc_stats.$(OBJEXT)
+nlattr_tc_stats_LDADD = $(LDADD)
+nlattr_tc_stats_DEPENDENCIES = libtests.a
+nlattr_tca_stab_SOURCES = nlattr_tca_stab.c
+nlattr_tca_stab_OBJECTS = nlattr_tca_stab.$(OBJEXT)
+nlattr_tca_stab_LDADD = $(LDADD)
+nlattr_tca_stab_DEPENDENCIES = libtests.a
nlattr_tcamsg_SOURCES = nlattr_tcamsg.c
nlattr_tcamsg_OBJECTS = nlattr_tcamsg.$(OBJEXT)
nlattr_tcamsg_LDADD = $(LDADD)
@@ -1696,6 +1784,10 @@ seccomp_strict_SOURCES = seccomp-strict.c
seccomp_strict_OBJECTS = seccomp-strict.$(OBJEXT)
seccomp_strict_LDADD = $(LDADD)
seccomp_strict_DEPENDENCIES = libtests.a
+seccomp_get_action_avail_SOURCES = seccomp_get_action_avail.c
+seccomp_get_action_avail_OBJECTS = seccomp_get_action_avail.$(OBJEXT)
+seccomp_get_action_avail_LDADD = $(LDADD)
+seccomp_get_action_avail_DEPENDENCIES = libtests.a
select_SOURCES = select.c
select_OBJECTS = select.$(OBJEXT)
select_LDADD = $(LDADD)
@@ -1720,6 +1812,14 @@ set_ptracer_any_SOURCES = set_ptracer_any.c
set_ptracer_any_OBJECTS = set_ptracer_any.$(OBJEXT)
set_ptracer_any_LDADD = $(LDADD)
set_ptracer_any_DEPENDENCIES = libtests.a
+set_sigblock_SOURCES = set_sigblock.c
+set_sigblock_OBJECTS = set_sigblock.$(OBJEXT)
+set_sigblock_LDADD = $(LDADD)
+set_sigblock_DEPENDENCIES = libtests.a
+set_sigign_SOURCES = set_sigign.c
+set_sigign_OBJECTS = set_sigign.$(OBJEXT)
+set_sigign_LDADD = $(LDADD)
+set_sigign_DEPENDENCIES = libtests.a
setdomainname_SOURCES = setdomainname.c
setdomainname_OBJECTS = setdomainname.$(OBJEXT)
setdomainname_LDADD = $(LDADD)
@@ -2169,10 +2269,11 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
- btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \
- chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
- clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
- creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c clone_parent.c \
+ clone_ptrace.c copy_file_range.c count-f.c creat.c \
+ delete_module.c dup.c dup2.c dup3.c epoll_create.c \
epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2195,39 +2296,45 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
- ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \
+ ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
- lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
- lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
- memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
- mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
- mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
- move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
- mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
- munlockall.c nanosleep.c net-accept-connect.c \
- net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
- net-yy-netlink.c net-yy-unix.c netlink_audit.c \
- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \
- netlink_kobject_uevent.c netlink_netfilter.c \
- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \
- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \
- netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \
- nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \
- nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \
- nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \
- nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \
- nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \
- nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \
- nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \
- nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \
- nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \
- oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \
- osf_utimes.c pause.c pc.c perf_event_open.c \
- perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
- personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \
- prctl-dumpable.c prctl-name.c prctl-no-args.c \
- prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
+ llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \
+ mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
+ mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
+ mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
+ mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
+ mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
+ msg_control-v.c msg_name.c munlockall.c nanosleep.c \
+ net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
+ net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
+ netlink_audit.c netlink_crypto.c netlink_generic.c \
+ netlink_inet_diag.c netlink_kobject_uevent.c \
+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \
+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \
+ nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \
+ nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \
+ nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \
+ nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \
+ nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
+ nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \
+ nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \
+ nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \
+ nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \
+ nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \
+ nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \
+ nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
+ nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
+ nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
+ perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2248,8 +2355,9 @@ SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
sched_xetparam.c sched_xetscheduler.c sched_yield.c \
scm_rights.c seccomp-filter.c seccomp-filter-v.c \
- seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \
- set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \
+ seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
+ sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
+ set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
setregid32.c setresgid.c setresgid32.c setresuid.c \
@@ -2275,10 +2383,11 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
access.c acct.c add_key.c adjtimex.c aio.c alarm.c answer.c \
attach-f-p.c attach-f-p-cmd.c attach-p-cmd-cmd.c \
attach-p-cmd-p.c block_reset_raise_run.c bpf.c bpf-v.c brk.c \
- btrfs.c caps.c caps-abbrev.c chmod.c chown.c chown32.c \
- chroot.c clock_adjtime.c clock_nanosleep.c clock_xettime.c \
- clone_parent.c clone_ptrace.c copy_file_range.c count-f.c \
- creat.c delete_module.c dup.c dup2.c dup3.c epoll_create.c \
+ btrfs.c caps.c caps-abbrev.c check_sigblock.c check_sigign.c \
+ chmod.c chown.c chown32.c chroot.c clock_adjtime.c \
+ clock_nanosleep.c clock_xettime.c clone_parent.c \
+ clone_ptrace.c copy_file_range.c count-f.c creat.c \
+ delete_module.c dup.c dup2.c dup3.c epoll_create.c \
epoll_create1.c epoll_ctl.c epoll_pwait.c epoll_wait.c \
erestartsys.c eventfd.c execve.c execve-v.c execveat.c \
execveat-v.c faccessat.c fadvise64.c fadvise64_64.c \
@@ -2301,39 +2410,45 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
ioctl_scsi.c ioctl_sg_io_v3.c ioctl_sg_io_v4.c \
ioctl_sock_gifconf.c ioctl_uffdio.c ioctl_v4l2.c ioperm.c \
iopl.c ioprio.c ip_mreq.c ipc.c ipc_msg.c ipc_msgbuf.c \
- ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c \
+ ipc_sem.c ipc_shm.c is_linux_mips_n64.c kcmp.c kcmp-y.c \
kexec_file_load.c kexec_load.c keyctl.c kill.c ksysent.c \
- lchown.c lchown32.c link.c linkat.c llseek.c lookup_dcookie.c \
- lseek.c lstat.c lstat64.c madvise.c mbind.c membarrier.c \
- memfd_create.c migrate_pages.c mincore.c mkdir.c mkdirat.c \
- mknod.c mknodat.c mlock.c mlock2.c mlockall.c mmap.c mmap64.c \
- mmsg.c mmsg-silent.c mmsg_name.c mmsg_name-v.c mount.c \
- move_pages.c mq.c mq_sendrecv.c mq_sendrecv-read.c \
- mq_sendrecv-write.c msg_control.c msg_control-v.c msg_name.c \
- munlockall.c nanosleep.c net-accept-connect.c \
- net-icmp_filter.c net-sockaddr.c net-y-unix.c net-yy-inet.c \
- net-yy-netlink.c net-yy-unix.c netlink_audit.c \
- netlink_crypto.c netlink_generic.c netlink_inet_diag.c \
- netlink_kobject_uevent.c netlink_netfilter.c \
- netlink_netlink_diag.c netlink_protocol.c netlink_route.c \
- netlink_selinux.c netlink_sock_diag.c netlink_unix_diag.c \
- netlink_xfrm.c newfstatat.c nlattr.c nlattr_br_port_msg.c \
- nlattr_crypto_user_alg.c nlattr_dcbmsg.c nlattr_fib_rule_hdr.c \
- nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c nlattr_ifinfomsg.c \
- nlattr_ifla_brport.c nlattr_ifla_port.c nlattr_ifla_xdp.c \
- nlattr_inet_diag_msg.c nlattr_inet_diag_req_compat.c \
- nlattr_inet_diag_req_v2.c nlattr_ndmsg.c nlattr_ndtmsg.c \
- nlattr_netconfmsg.c nlattr_netlink_diag_msg.c \
- nlattr_nlmsgerr.c nlattr_packet_diag_msg.c nlattr_rtgenmsg.c \
- nlattr_rtmsg.c nlattr_smc_diag_msg.c nlattr_tcamsg.c \
- nlattr_tcmsg.c nlattr_unix_diag_msg.c nsyscalls.c old_mmap.c \
- oldfstat.c oldlstat.c oldselect.c oldstat.c open.c openat.c \
- osf_utimes.c pause.c pc.c perf_event_open.c \
- perf_event_open_nonverbose.c perf_event_open_unabbrev.c \
- personality.c pipe.c pipe2.c pkey_alloc.c pkey_free.c \
- pkey_mprotect.c poll.c ppoll.c ppoll-v.c prctl-arg2-intptr.c \
- prctl-dumpable.c prctl-name.c prctl-no-args.c \
- prctl-pdeathsig.c prctl-seccomp-filter-v.c \
+ lchown.c lchown32.c link.c linkat.c list_sigaction_signum.c \
+ llseek.c lookup_dcookie.c lseek.c lstat.c lstat64.c madvise.c \
+ mbind.c membarrier.c memfd_create.c migrate_pages.c mincore.c \
+ mkdir.c mkdirat.c mknod.c mknodat.c mlock.c mlock2.c \
+ mlockall.c mmap.c mmap64.c mmsg.c mmsg-silent.c mmsg_name.c \
+ mmsg_name-v.c mount.c move_pages.c mq.c mq_sendrecv.c \
+ mq_sendrecv-read.c mq_sendrecv-write.c msg_control.c \
+ msg_control-v.c msg_name.c munlockall.c nanosleep.c \
+ net-accept-connect.c net-icmp_filter.c net-sockaddr.c \
+ net-y-unix.c net-yy-inet.c net-yy-netlink.c net-yy-unix.c \
+ netlink_audit.c netlink_crypto.c netlink_generic.c \
+ netlink_inet_diag.c netlink_kobject_uevent.c \
+ netlink_netfilter.c netlink_netlink_diag.c netlink_protocol.c \
+ netlink_route.c netlink_selinux.c netlink_sock_diag.c \
+ netlink_unix_diag.c netlink_xfrm.c newfstatat.c \
+ nfnetlink_acct.c nfnetlink_cthelper.c nfnetlink_ctnetlink.c \
+ nfnetlink_ctnetlink_exp.c nfnetlink_cttimeout.c \
+ nfnetlink_ipset.c nfnetlink_nft_compat.c nfnetlink_nftables.c \
+ nfnetlink_osf.c nfnetlink_queue.c nfnetlink_ulog.c nlattr.c \
+ nlattr_br_port_msg.c nlattr_crypto_user_alg.c nlattr_dcbmsg.c \
+ nlattr_fib_rule_hdr.c nlattr_ifaddrlblmsg.c nlattr_ifaddrmsg.c \
+ nlattr_ifinfomsg.c nlattr_ifla_brport.c nlattr_ifla_port.c \
+ nlattr_ifla_xdp.c nlattr_inet_diag_msg.c \
+ nlattr_inet_diag_req_compat.c nlattr_inet_diag_req_v2.c \
+ nlattr_mdba_mdb_entry.c nlattr_mdba_router_port.c \
+ nlattr_ndmsg.c nlattr_ndtmsg.c nlattr_netconfmsg.c \
+ nlattr_netlink_diag_msg.c nlattr_nlmsgerr.c \
+ nlattr_packet_diag_msg.c nlattr_rtgenmsg.c nlattr_rtmsg.c \
+ nlattr_smc_diag_msg.c nlattr_tc_stats.c nlattr_tca_stab.c \
+ nlattr_tcamsg.c nlattr_tcmsg.c nlattr_unix_diag_msg.c \
+ nsyscalls.c old_mmap.c oldfstat.c oldlstat.c oldselect.c \
+ oldstat.c open.c openat.c osf_utimes.c pause.c pc.c \
+ perf_event_open.c perf_event_open_nonverbose.c \
+ perf_event_open_unabbrev.c personality.c pipe.c pipe2.c \
+ pkey_alloc.c pkey_free.c pkey_mprotect.c poll.c ppoll.c \
+ ppoll-v.c prctl-arg2-intptr.c prctl-dumpable.c prctl-name.c \
+ prctl-no-args.c prctl-pdeathsig.c prctl-seccomp-filter-v.c \
prctl-seccomp-strict.c prctl-securebits.c prctl-tid_address.c \
prctl-tsc.c pread64-pwrite64.c preadv.c preadv-pwritev.c \
preadv2-pwritev2.c print_maxfd.c printpath-umovestr.c \
@@ -2354,8 +2469,9 @@ DIST_SOURCES = $(libtests_a_SOURCES) _newselect.c accept.c accept4.c \
sched_rr_get_interval.c sched_xetaffinity.c sched_xetattr.c \
sched_xetparam.c sched_xetscheduler.c sched_yield.c \
scm_rights.c seccomp-filter.c seccomp-filter-v.c \
- seccomp-strict.c select.c semop.c sendfile.c sendfile64.c \
- set_mempolicy.c set_ptracer_any.c setdomainname.c setfsgid.c \
+ seccomp-strict.c seccomp_get_action_avail.c select.c semop.c \
+ sendfile.c sendfile64.c set_mempolicy.c set_ptracer_any.c \
+ set_sigblock.c set_sigign.c setdomainname.c setfsgid.c \
setfsgid32.c setfsuid.c setfsuid32.c setgid.c setgid32.c \
setgroups.c setgroups32.c sethostname.c setns.c setregid.c \
setregid32.c setresgid.c setresgid32.c setresuid.c \
@@ -2924,6 +3040,7 @@ PURE_EXECUTABLES = \
ipc_sem \
ipc_shm \
kcmp \
+ kcmp-y \
kexec_file_load \
kexec_load \
keyctl \
@@ -2981,6 +3098,17 @@ PURE_EXECUTABLES = \
netlink_sock_diag \
netlink_xfrm \
newfstatat \
+ nfnetlink_acct \
+ nfnetlink_cthelper \
+ nfnetlink_ctnetlink \
+ nfnetlink_ctnetlink_exp \
+ nfnetlink_cttimeout \
+ nfnetlink_nft_compat \
+ nfnetlink_nftables \
+ nfnetlink_ipset \
+ nfnetlink_osf \
+ nfnetlink_queue \
+ nfnetlink_ulog \
nlattr \
nlattr_crypto_user_alg \
nlattr_br_port_msg \
@@ -2995,6 +3123,8 @@ PURE_EXECUTABLES = \
nlattr_inet_diag_msg \
nlattr_inet_diag_req_compat \
nlattr_inet_diag_req_v2 \
+ nlattr_mdba_mdb_entry \
+ nlattr_mdba_router_port \
nlattr_ndmsg \
nlattr_ndtmsg \
nlattr_netconfmsg \
@@ -3004,6 +3134,8 @@ PURE_EXECUTABLES = \
nlattr_rtgenmsg \
nlattr_rtmsg \
nlattr_smc_diag_msg \
+ nlattr_tc_stats \
+ nlattr_tca_stab \
nlattr_tcamsg \
nlattr_tcmsg \
nlattr_unix_diag_msg \
@@ -3084,6 +3216,7 @@ PURE_EXECUTABLES = \
sched_xetscheduler \
sched_yield \
seccomp-filter \
+ seccomp_get_action_avail \
select \
semop \
sendfile \
@@ -3253,39 +3386,47 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test \
iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test \
ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test \
- kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test \
- keyctl.gen.test kill.gen.test lchown.gen.test \
- lchown32.gen.test link.gen.test linkat.gen.test \
- lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test \
- madvise.gen.test mbind.gen.test membarrier.gen.test \
- memfd_create.gen.test migrate_pages.gen.test mincore.gen.test \
- mkdir.gen.test mkdirat.gen.test mknod.gen.test \
- mknodat.gen.test mlock.gen.test mlock2.gen.test \
- mlockall.gen.test mmap64.gen.test mmsg.gen.test \
- mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test \
- mount.gen.test move_pages.gen.test mq.gen.test \
- mq_sendrecv.gen.test mq_sendrecv-read.gen.test \
- mq_sendrecv-write.gen.test msg_control.gen.test \
- msg_control-v.gen.test msg_name.gen.test munlockall.gen.test \
- nanosleep.gen.test net-icmp_filter.gen.test \
- net-sockaddr.gen.test netlink_audit.gen.test \
- netlink_crypto.gen.test netlink_generic.gen.test \
- netlink_kobject_uevent.gen.test netlink_netfilter.gen.test \
- netlink_protocol.gen.test netlink_route.gen.test \
- netlink_selinux.gen.test netlink_xfrm.gen.test \
- newfstatat.gen.test nlattr.gen.test \
- nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test \
- nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test \
- nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test \
- nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test \
- nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test \
- nlattr_inet_diag_msg.gen.test \
+ kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test \
+ kexec_load.gen.test keyctl.gen.test kill.gen.test \
+ lchown.gen.test lchown32.gen.test link.gen.test \
+ linkat.gen.test lookup_dcookie.gen.test lstat.gen.test \
+ lstat64.gen.test madvise.gen.test mbind.gen.test \
+ membarrier.gen.test memfd_create.gen.test \
+ migrate_pages.gen.test mincore.gen.test mkdir.gen.test \
+ mkdirat.gen.test mknod.gen.test mknodat.gen.test \
+ mlock.gen.test mlock2.gen.test mlockall.gen.test \
+ mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test \
+ mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test \
+ move_pages.gen.test mq.gen.test mq_sendrecv.gen.test \
+ mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test \
+ msg_control.gen.test msg_control-v.gen.test msg_name.gen.test \
+ munlockall.gen.test nanosleep.gen.test \
+ net-icmp_filter.gen.test net-sockaddr.gen.test \
+ netlink_audit.gen.test netlink_crypto.gen.test \
+ netlink_generic.gen.test netlink_kobject_uevent.gen.test \
+ netlink_netfilter.gen.test netlink_protocol.gen.test \
+ netlink_route.gen.test netlink_selinux.gen.test \
+ netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test \
+ nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test \
+ nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test \
+ nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test \
+ nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test \
+ nfnetlink_osf.gen.test nfnetlink_queue.gen.test \
+ nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test \
+ nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test \
+ nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test \
+ nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test \
+ nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test \
+ nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test \
nlattr_inet_diag_req_compat.gen.test \
- nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test \
+ nlattr_inet_diag_req_v2.gen.test \
+ nlattr_mdba_mdb_entry.gen.test \
+ nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test \
nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test \
nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test \
nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test \
nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test \
+ nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test \
nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test \
nlattr_unix_diag_msg.gen.test old_mmap.gen.test \
oldfstat.gen.test oldlstat.gen.test oldstat.gen.test \
@@ -3319,20 +3460,21 @@ GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test \
sched_xetattr.gen.test sched_xetparam.gen.test \
sched_xetscheduler.gen.test sched_yield.gen.test \
seccomp-filter.gen.test seccomp-filter-v.gen.test \
- select.gen.test semop.gen.test sendfile.gen.test \
- sendfile64.gen.test set_mempolicy.gen.test \
- setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test \
- setfsuid.gen.test setfsuid32.gen.test setgid.gen.test \
- setgid32.gen.test setgroups.gen.test setgroups32.gen.test \
- sethostname.gen.test setns.gen.test setregid.gen.test \
- setregid32.gen.test setresgid.gen.test setresgid32.gen.test \
- setresuid.gen.test setresuid32.gen.test setreuid.gen.test \
- setreuid32.gen.test setrlimit.gen.test setuid.gen.test \
- setuid32.gen.test shmxt.gen.test shutdown.gen.test \
- sigaction.gen.test siginfo.gen.test signal.gen.test \
- signal_receive.gen.test signalfd4.gen.test sigpending.gen.test \
- sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test \
- so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test \
+ seccomp_get_action_avail.gen.test select.gen.test \
+ semop.gen.test sendfile.gen.test sendfile64.gen.test \
+ set_mempolicy.gen.test setdomainname.gen.test \
+ setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test \
+ setfsuid32.gen.test setgid.gen.test setgid32.gen.test \
+ setgroups.gen.test setgroups32.gen.test sethostname.gen.test \
+ setns.gen.test setregid.gen.test setregid32.gen.test \
+ setresgid.gen.test setresgid32.gen.test setresuid.gen.test \
+ setresuid32.gen.test setreuid.gen.test setreuid32.gen.test \
+ setrlimit.gen.test setuid.gen.test setuid32.gen.test \
+ shmxt.gen.test shutdown.gen.test sigaction.gen.test \
+ siginfo.gen.test signal.gen.test signal_receive.gen.test \
+ signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test \
+ sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test \
+ so_peercred.gen.test sock_filter-v.gen.test \
socketcall.gen.test splice.gen.test stat.gen.test \
stat64.gen.test statfs.gen.test statfs64.gen.test \
statx.gen.test swap.gen.test sxetmask.gen.test \
@@ -3451,6 +3593,8 @@ MISC_TESTS = \
redirect-fds.test \
redirect.test \
restart_syscall.test \
+ sigblock.test \
+ sigign.test \
strace-C.test \
strace-E.test \
strace-S.test \
@@ -3692,6 +3836,14 @@ caps-abbrev$(EXEEXT): $(caps_abbrev_OBJECTS) $(caps_abbrev_DEPENDENCIES) $(EXTRA
@rm -f caps-abbrev$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(caps_abbrev_OBJECTS) $(caps_abbrev_LDADD) $(LIBS)
+check_sigblock$(EXEEXT): $(check_sigblock_OBJECTS) $(check_sigblock_DEPENDENCIES) $(EXTRA_check_sigblock_DEPENDENCIES)
+ @rm -f check_sigblock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(check_sigblock_OBJECTS) $(check_sigblock_LDADD) $(LIBS)
+
+check_sigign$(EXEEXT): $(check_sigign_OBJECTS) $(check_sigign_DEPENDENCIES) $(EXTRA_check_sigign_DEPENDENCIES)
+ @rm -f check_sigign$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(check_sigign_OBJECTS) $(check_sigign_LDADD) $(LIBS)
+
chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) $(EXTRA_chmod_DEPENDENCIES)
@rm -f chmod$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS)
@@ -4192,6 +4344,10 @@ kcmp$(EXEEXT): $(kcmp_OBJECTS) $(kcmp_DEPENDENCIES) $(EXTRA_kcmp_DEPENDENCIES)
@rm -f kcmp$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(kcmp_OBJECTS) $(kcmp_LDADD) $(LIBS)
+kcmp-y$(EXEEXT): $(kcmp_y_OBJECTS) $(kcmp_y_DEPENDENCIES) $(EXTRA_kcmp_y_DEPENDENCIES)
+ @rm -f kcmp-y$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(kcmp_y_OBJECTS) $(kcmp_y_LDADD) $(LIBS)
+
kexec_file_load$(EXEEXT): $(kexec_file_load_OBJECTS) $(kexec_file_load_DEPENDENCIES) $(EXTRA_kexec_file_load_DEPENDENCIES)
@rm -f kexec_file_load$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(kexec_file_load_OBJECTS) $(kexec_file_load_LDADD) $(LIBS)
@@ -4228,6 +4384,10 @@ linkat$(EXEEXT): $(linkat_OBJECTS) $(linkat_DEPENDENCIES) $(EXTRA_linkat_DEPENDE
@rm -f linkat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(linkat_OBJECTS) $(linkat_LDADD) $(LIBS)
+list_sigaction_signum$(EXEEXT): $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_DEPENDENCIES) $(EXTRA_list_sigaction_signum_DEPENDENCIES)
+ @rm -f list_sigaction_signum$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(list_sigaction_signum_OBJECTS) $(list_sigaction_signum_LDADD) $(LIBS)
+
llseek$(EXEEXT): $(llseek_OBJECTS) $(llseek_DEPENDENCIES) $(EXTRA_llseek_DEPENDENCIES)
@rm -f llseek$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(llseek_OBJECTS) $(llseek_LDADD) $(LIBS)
@@ -4452,6 +4612,50 @@ newfstatat$(EXEEXT): $(newfstatat_OBJECTS) $(newfstatat_DEPENDENCIES) $(EXTRA_ne
@rm -f newfstatat$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(newfstatat_OBJECTS) $(newfstatat_LDADD) $(LIBS)
+nfnetlink_acct$(EXEEXT): $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_DEPENDENCIES) $(EXTRA_nfnetlink_acct_DEPENDENCIES)
+ @rm -f nfnetlink_acct$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_acct_OBJECTS) $(nfnetlink_acct_LDADD) $(LIBS)
+
+nfnetlink_cthelper$(EXEEXT): $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_DEPENDENCIES) $(EXTRA_nfnetlink_cthelper_DEPENDENCIES)
+ @rm -f nfnetlink_cthelper$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_cthelper_OBJECTS) $(nfnetlink_cthelper_LDADD) $(LIBS)
+
+nfnetlink_ctnetlink$(EXEEXT): $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_DEPENDENCIES)
+ @rm -f nfnetlink_ctnetlink$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_OBJECTS) $(nfnetlink_ctnetlink_LDADD) $(LIBS)
+
+nfnetlink_ctnetlink_exp$(EXEEXT): $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_DEPENDENCIES) $(EXTRA_nfnetlink_ctnetlink_exp_DEPENDENCIES)
+ @rm -f nfnetlink_ctnetlink_exp$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ctnetlink_exp_OBJECTS) $(nfnetlink_ctnetlink_exp_LDADD) $(LIBS)
+
+nfnetlink_cttimeout$(EXEEXT): $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_DEPENDENCIES) $(EXTRA_nfnetlink_cttimeout_DEPENDENCIES)
+ @rm -f nfnetlink_cttimeout$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_cttimeout_OBJECTS) $(nfnetlink_cttimeout_LDADD) $(LIBS)
+
+nfnetlink_ipset$(EXEEXT): $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_DEPENDENCIES) $(EXTRA_nfnetlink_ipset_DEPENDENCIES)
+ @rm -f nfnetlink_ipset$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ipset_OBJECTS) $(nfnetlink_ipset_LDADD) $(LIBS)
+
+nfnetlink_nft_compat$(EXEEXT): $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_DEPENDENCIES) $(EXTRA_nfnetlink_nft_compat_DEPENDENCIES)
+ @rm -f nfnetlink_nft_compat$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_nft_compat_OBJECTS) $(nfnetlink_nft_compat_LDADD) $(LIBS)
+
+nfnetlink_nftables$(EXEEXT): $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_DEPENDENCIES) $(EXTRA_nfnetlink_nftables_DEPENDENCIES)
+ @rm -f nfnetlink_nftables$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_nftables_OBJECTS) $(nfnetlink_nftables_LDADD) $(LIBS)
+
+nfnetlink_osf$(EXEEXT): $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_DEPENDENCIES) $(EXTRA_nfnetlink_osf_DEPENDENCIES)
+ @rm -f nfnetlink_osf$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_osf_OBJECTS) $(nfnetlink_osf_LDADD) $(LIBS)
+
+nfnetlink_queue$(EXEEXT): $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_DEPENDENCIES) $(EXTRA_nfnetlink_queue_DEPENDENCIES)
+ @rm -f nfnetlink_queue$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_queue_OBJECTS) $(nfnetlink_queue_LDADD) $(LIBS)
+
+nfnetlink_ulog$(EXEEXT): $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_DEPENDENCIES) $(EXTRA_nfnetlink_ulog_DEPENDENCIES)
+ @rm -f nfnetlink_ulog$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nfnetlink_ulog_OBJECTS) $(nfnetlink_ulog_LDADD) $(LIBS)
+
nlattr$(EXEEXT): $(nlattr_OBJECTS) $(nlattr_DEPENDENCIES) $(EXTRA_nlattr_DEPENDENCIES)
@rm -f nlattr$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_OBJECTS) $(nlattr_LDADD) $(LIBS)
@@ -4508,6 +4712,14 @@ nlattr_inet_diag_req_v2$(EXEEXT): $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_in
@rm -f nlattr_inet_diag_req_v2$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_inet_diag_req_v2_OBJECTS) $(nlattr_inet_diag_req_v2_LDADD) $(LIBS)
+nlattr_mdba_mdb_entry$(EXEEXT): $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_DEPENDENCIES) $(EXTRA_nlattr_mdba_mdb_entry_DEPENDENCIES)
+ @rm -f nlattr_mdba_mdb_entry$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_mdba_mdb_entry_OBJECTS) $(nlattr_mdba_mdb_entry_LDADD) $(LIBS)
+
+nlattr_mdba_router_port$(EXEEXT): $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_DEPENDENCIES) $(EXTRA_nlattr_mdba_router_port_DEPENDENCIES)
+ @rm -f nlattr_mdba_router_port$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_mdba_router_port_OBJECTS) $(nlattr_mdba_router_port_LDADD) $(LIBS)
+
nlattr_ndmsg$(EXEEXT): $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_DEPENDENCIES) $(EXTRA_nlattr_ndmsg_DEPENDENCIES)
@rm -f nlattr_ndmsg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_ndmsg_OBJECTS) $(nlattr_ndmsg_LDADD) $(LIBS)
@@ -4544,6 +4756,14 @@ nlattr_smc_diag_msg$(EXEEXT): $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_m
@rm -f nlattr_smc_diag_msg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_smc_diag_msg_OBJECTS) $(nlattr_smc_diag_msg_LDADD) $(LIBS)
+nlattr_tc_stats$(EXEEXT): $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_DEPENDENCIES) $(EXTRA_nlattr_tc_stats_DEPENDENCIES)
+ @rm -f nlattr_tc_stats$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_tc_stats_OBJECTS) $(nlattr_tc_stats_LDADD) $(LIBS)
+
+nlattr_tca_stab$(EXEEXT): $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_DEPENDENCIES) $(EXTRA_nlattr_tca_stab_DEPENDENCIES)
+ @rm -f nlattr_tca_stab$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(nlattr_tca_stab_OBJECTS) $(nlattr_tca_stab_LDADD) $(LIBS)
+
nlattr_tcamsg$(EXEEXT): $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_DEPENDENCIES) $(EXTRA_nlattr_tcamsg_DEPENDENCIES)
@rm -f nlattr_tcamsg$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(nlattr_tcamsg_OBJECTS) $(nlattr_tcamsg_LDADD) $(LIBS)
@@ -4948,6 +5168,10 @@ seccomp-strict$(EXEEXT): $(seccomp_strict_OBJECTS) $(seccomp_strict_DEPENDENCIES
@rm -f seccomp-strict$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(seccomp_strict_OBJECTS) $(seccomp_strict_LDADD) $(LIBS)
+seccomp_get_action_avail$(EXEEXT): $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_DEPENDENCIES) $(EXTRA_seccomp_get_action_avail_DEPENDENCIES)
+ @rm -f seccomp_get_action_avail$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(seccomp_get_action_avail_OBJECTS) $(seccomp_get_action_avail_LDADD) $(LIBS)
+
select$(EXEEXT): $(select_OBJECTS) $(select_DEPENDENCIES) $(EXTRA_select_DEPENDENCIES)
@rm -f select$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(select_OBJECTS) $(select_LDADD) $(LIBS)
@@ -4972,6 +5196,14 @@ set_ptracer_any$(EXEEXT): $(set_ptracer_any_OBJECTS) $(set_ptracer_any_DEPENDENC
@rm -f set_ptracer_any$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(set_ptracer_any_OBJECTS) $(set_ptracer_any_LDADD) $(LIBS)
+set_sigblock$(EXEEXT): $(set_sigblock_OBJECTS) $(set_sigblock_DEPENDENCIES) $(EXTRA_set_sigblock_DEPENDENCIES)
+ @rm -f set_sigblock$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_sigblock_OBJECTS) $(set_sigblock_LDADD) $(LIBS)
+
+set_sigign$(EXEEXT): $(set_sigign_OBJECTS) $(set_sigign_DEPENDENCIES) $(EXTRA_set_sigign_DEPENDENCIES)
+ @rm -f set_sigign$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(set_sigign_OBJECTS) $(set_sigign_LDADD) $(LIBS)
+
setdomainname$(EXEEXT): $(setdomainname_OBJECTS) $(setdomainname_DEPENDENCIES) $(EXTRA_setdomainname_DEPENDENCIES)
@rm -f setdomainname$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(setdomainname_OBJECTS) $(setdomainname_LDADD) $(LIBS)
@@ -5411,6 +5643,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps-abbrev.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/caps.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sigign.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown32.Po@am__quote@
@@ -5535,6 +5769,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_sem.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipc_shm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/is_linux_mips_n64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp-y.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kcmp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_file_load.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kexec_load.Po@am__quote@
@@ -5571,6 +5806,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libtests_a-tprintf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linkat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list_sigaction_signum.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llseek.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lookup_dcookie.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lseek.Po@am__quote@
@@ -5627,6 +5863,17 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_unix_diag.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlink_xfrm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfstatat-newfstatat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_acct.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cthelper.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ctnetlink_exp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_cttimeout.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ipset.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nft_compat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_nftables.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_osf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_queue.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfnetlink_ulog.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_br_port_msg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_crypto_user_alg.Po@am__quote@
@@ -5641,6 +5888,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_msg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_compat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_inet_diag_req_v2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_mdb_entry.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_mdba_router_port.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_ndtmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_netconfmsg.Po@am__quote@
@@ -5650,6 +5899,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtgenmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_rtmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_smc_diag_msg.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tc_stats.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tca_stab.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcamsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_tcmsg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nlattr_unix_diag_msg.Po@am__quote@
@@ -5751,12 +6002,15 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter-v.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-filter.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp-strict.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seccomp_get_action_avail.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/select.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/semop.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_mempolicy.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_ptracer_any.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigblock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_sigign.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setdomainname.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfsgid32.Po@am__quote@
@@ -7194,6 +7448,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7353,6 +7610,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7392,6 +7682,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src
$(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7419,6 +7715,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
$(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -7641,6 +7943,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
diff --git a/tests/check_sigblock.c b/tests/check_sigblock.c
new file mode 100644
index 00000000..5637804d
--- /dev/null
+++ b/tests/check_sigblock.c
@@ -0,0 +1,49 @@
+/*
+ * Check that the specified signal number is blocked/unblocked.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac != 3)
+ error_msg_and_fail("usage: check_sigblock 0|1 signum");
+
+ const int block = !!atoi(av[1]);
+ const int signum = atoi(av[2]);
+ sigset_t mask;
+
+ sigemptyset(&mask);
+ if (sigprocmask(SIG_SETMASK, NULL, &mask))
+ perror_msg_and_fail("sigprocmask");
+
+ return block ^ sigismember(&mask, signum);
+}
diff --git a/tests/check_sigign.c b/tests/check_sigign.c
new file mode 100644
index 00000000..bace3170
--- /dev/null
+++ b/tests/check_sigign.c
@@ -0,0 +1,49 @@
+/*
+ * Check that the signal handler for the specified signal number is set
+ * to SIG_IGN/SIG_DFL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac != 3)
+ error_msg_and_fail("usage: check_sigign 0|1 signum");
+
+ const int ign = !!atoi(av[1]);
+ const int signum = atoi(av[2]);
+ struct sigaction act;
+
+ if (sigaction(signum, NULL, &act))
+ perror_msg_and_fail("sigaction: %s", av[2]);
+
+ return ign ^ (act.sa_handler == SIG_IGN);
+}
diff --git a/tests/futex.c b/tests/futex.c
index b75ab339..e1dbcb74 100644
--- a/tests/futex.c
+++ b/tests/futex.c
@@ -66,6 +66,7 @@ void futex_error(int *uaddr, int op, unsigned long val, unsigned long timeout,
# define CHECK_FUTEX_GENERIC(uaddr, op, val, timeout, uaddr2, val3, check, \
enosys) \
do { \
+ errno = 0; \
rc = syscall(__NR_futex, (uaddr), (op), (val), (timeout), \
(uaddr2), (val3)); \
/* It is here due to EPERM on WAKE_OP on AArch64 */ \
@@ -496,8 +497,16 @@ main(int argc, char *argv[])
static const struct {
uint32_t val;
const char *str;
+
+ /*
+ * Peculiar semantics:
+ * * err == 0 and err2 != 0 => expect both either the absence
+ * of error or presence of err2
+ * * err != 0 and err2 == 0 => expect err only, no success
+ * expected.
+ */
int err;
- const char *errstr;
+ int err2;
} wake_ops[] = {
{ 0x00000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x00fff000, "FUTEX_OP_SET<<28|0xfff<<12|FUTEX_OP_CMP_EQ<<24|"
@@ -511,13 +520,13 @@ main(int argc, char *argv[])
{ 0x30000000, "FUTEX_OP_ANDN<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x40000000, "FUTEX_OP_XOR<<28|0<<12|FUTEX_OP_CMP_EQ<<24|0" },
{ 0x50000000, "0x5<<28 /* FUTEX_OP_??? */|0<<12|"
- "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS },
{ 0x70000000, "0x7<<28 /* FUTEX_OP_??? */|0<<12|"
- "FUTEX_OP_CMP_EQ<<24|0", ENOSYS, "ENOSYS" },
+ "FUTEX_OP_CMP_EQ<<24|0", ENOSYS },
{ 0x80000000, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_SET<<28|0<<12|"
"FUTEX_OP_CMP_EQ<<24|0" },
{ 0xa0caffee, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_OR<<28|"
- "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee" },
+ "0xcaf<<12|FUTEX_OP_CMP_EQ<<24|0xfee", 0, EINVAL },
{ 0x01000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_NE<<24|0" },
{ 0x01234567, "FUTEX_OP_SET<<28|0x234<<12|FUTEX_OP_CMP_NE<<24|"
"0x567" },
@@ -526,27 +535,38 @@ main(int argc, char *argv[])
{ 0x04000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GT<<24|0" },
{ 0x05000000, "FUTEX_OP_SET<<28|0<<12|FUTEX_OP_CMP_GE<<24|0" },
{ 0x06000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x6<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x07000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x7<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x08000000, "FUTEX_OP_SET<<28|0<<12|"
- "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0x8<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0x0f000000, "FUTEX_OP_SET<<28|0<<12|"
- "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS, "ENOSYS" },
+ "0xf<<24 /* FUTEX_OP_CMP_??? */|0", ENOSYS },
{ 0xbadfaced, "FUTEX_OP_OPARG_SHIFT<<28|FUTEX_OP_ANDN<<28|"
"0xdfa<<12|0xa<<24 /* FUTEX_OP_CMP_??? */|0xced",
- ENOSYS, "ENOSYS" },
+ ENOSYS, EINVAL },
{ 0xffffffff, "FUTEX_OP_OPARG_SHIFT<<28|"
"0x7<<28 /* FUTEX_OP_??? */|0xfff<<12|"
"0xf<<24 /* FUTEX_OP_CMP_??? */|0xfff",
- ENOSYS, "ENOSYS" },
+ ENOSYS, EINVAL },
};
for (i = 0; i < ARRAY_SIZE(wake_ops); i++) {
for (j = 0; j < 2; j++) {
CHECK_FUTEX_ENOSYS(uaddr,
j ? FUTEX_WAKE_OP_PRIVATE : FUTEX_WAKE_OP,
- VAL, i, uaddr2, wake_ops[i].val, (rc == 0));
+ VAL, i, uaddr2, wake_ops[i].val,
+ /*
+ * Either one of errs is 0 or rc == 0 is not
+ * allowed.
+ */
+ ((!wake_ops[i].err || !wake_ops[i].err2 ||
+ (rc != 0)) &&
+ ((!wake_ops[i].err && (rc == 0)) ||
+ (wake_ops[i].err && (rc == -1) &&
+ (errno == wake_ops[i].err)) ||
+ (wake_ops[i].err2 && (rc == -1) &&
+ (errno == wake_ops[i].err2)))));
printf("futex(%p, FUTEX_WAKE_OP%s, %u, %u, %p, %s)"
" = %s\n", uaddr, j ? "_PRIVATE" : "", VAL_PR,
i, uaddr2, wake_ops[i].str, sprintrc(rc));
diff --git a/tests/gen_tests.am b/tests/gen_tests.am
index 583a0aeb..71e00135 100644
--- a/tests/gen_tests.am
+++ b/tests/gen_tests.am
@@ -1,5 +1,5 @@
# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in; do not edit.
-GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
+GEN_TESTS = _newselect.gen.test accept.gen.test accept4.gen.test access.gen.test acct.gen.test add_key.gen.test adjtimex.gen.test aio.gen.test alarm.gen.test bpf.gen.test bpf-v.gen.test btrfs.gen.test chmod.gen.test chown.gen.test chown32.gen.test chroot.gen.test clock.gen.test clock_adjtime.gen.test clock_nanosleep.gen.test clock_xettime.gen.test copy_file_range.gen.test creat.gen.test delete_module.gen.test dup.gen.test dup2.gen.test dup3.gen.test epoll_create.gen.test epoll_create1.gen.test epoll_ctl.gen.test epoll_pwait.gen.test epoll_wait.gen.test erestartsys.gen.test execveat.gen.test execveat-v.gen.test faccessat.gen.test fadvise64_64.gen.test fallocate.gen.test fanotify_init.gen.test fanotify_mark.gen.test fchdir.gen.test fchmod.gen.test fchmodat.gen.test fchown.gen.test fchown32.gen.test fchownat.gen.test fcntl.gen.test fcntl64.gen.test fdatasync.gen.test file_handle.gen.test file_ioctl.gen.test finit_module.gen.test flock.gen.test fork-f.gen.test fstat.gen.test fstat64.gen.test fstatat64.gen.test fstatfs.gen.test fstatfs64.gen.test fsync.gen.test ftruncate.gen.test ftruncate64.gen.test futimesat.gen.test get_mempolicy.gen.test getcpu.gen.test getcwd.gen.test getdents.gen.test getdents64.gen.test getegid.gen.test getegid32.gen.test geteuid.gen.test geteuid32.gen.test getgid.gen.test getgid32.gen.test getgroups.gen.test getgroups32.gen.test getpeername.gen.test getpgrp.gen.test getpid.gen.test getppid.gen.test getrandom.gen.test getresgid.gen.test getresgid32.gen.test getresuid.gen.test getresuid32.gen.test getrlimit.gen.test getrusage.gen.test getsid.gen.test getsockname.gen.test gettid.gen.test getuid32.gen.test getxxid.gen.test group_req.gen.test inet-cmsg.gen.test init_module.gen.test inotify.gen.test inotify_init1.gen.test int_0x80.gen.test ioctl_block.gen.test ioctl_evdev.gen.test ioctl_evdev-v.gen.test ioctl_loop.gen.test ioctl_loop-v.gen.test ioctl_mtd.gen.test ioctl_rtc.gen.test ioctl_rtc-v.gen.test ioctl_scsi.gen.test ioctl_sg_io_v3.gen.test ioctl_sg_io_v4.gen.test ioctl_uffdio.gen.test ioctl_v4l2.gen.test ioperm.gen.test iopl.gen.test ioprio.gen.test ip_mreq.gen.test ipc.gen.test ipc_msg.gen.test ipc_sem.gen.test ipc_shm.gen.test kcmp.gen.test kcmp-y.gen.test kexec_file_load.gen.test kexec_load.gen.test keyctl.gen.test kill.gen.test lchown.gen.test lchown32.gen.test link.gen.test linkat.gen.test lookup_dcookie.gen.test lstat.gen.test lstat64.gen.test madvise.gen.test mbind.gen.test membarrier.gen.test memfd_create.gen.test migrate_pages.gen.test mincore.gen.test mkdir.gen.test mkdirat.gen.test mknod.gen.test mknodat.gen.test mlock.gen.test mlock2.gen.test mlockall.gen.test mmap64.gen.test mmsg.gen.test mmsg-silent.gen.test mmsg_name.gen.test mmsg_name-v.gen.test mount.gen.test move_pages.gen.test mq.gen.test mq_sendrecv.gen.test mq_sendrecv-read.gen.test mq_sendrecv-write.gen.test msg_control.gen.test msg_control-v.gen.test msg_name.gen.test munlockall.gen.test nanosleep.gen.test net-icmp_filter.gen.test net-sockaddr.gen.test netlink_audit.gen.test netlink_crypto.gen.test netlink_generic.gen.test netlink_kobject_uevent.gen.test netlink_netfilter.gen.test netlink_protocol.gen.test netlink_route.gen.test netlink_selinux.gen.test netlink_xfrm.gen.test newfstatat.gen.test nlattr.gen.test nfnetlink_acct.gen.test nfnetlink_cthelper.gen.test nfnetlink_ctnetlink.gen.test nfnetlink_ctnetlink_exp.gen.test nfnetlink_cttimeout.gen.test nfnetlink_ipset.gen.test nfnetlink_nft_compat.gen.test nfnetlink_nftables.gen.test nfnetlink_osf.gen.test nfnetlink_queue.gen.test nfnetlink_ulog.gen.test nlattr_crypto_user_alg.gen.test nlattr_br_port_msg.gen.test nlattr_dcbmsg.gen.test nlattr_fib_rule_hdr.gen.test nlattr_ifaddrlblmsg.gen.test nlattr_ifaddrmsg.gen.test nlattr_ifinfomsg.gen.test nlattr_ifla_brport.gen.test nlattr_ifla_port.gen.test nlattr_ifla_xdp.gen.test nlattr_inet_diag_msg.gen.test nlattr_inet_diag_req_compat.gen.test nlattr_inet_diag_req_v2.gen.test nlattr_mdba_mdb_entry.gen.test nlattr_mdba_router_port.gen.test nlattr_ndmsg.gen.test nlattr_ndtmsg.gen.test nlattr_netconfmsg.gen.test nlattr_netlink_diag_msg.gen.test nlattr_nlmsgerr.gen.test nlattr_packet_diag_msg.gen.test nlattr_rtgenmsg.gen.test nlattr_rtmsg.gen.test nlattr_smc_diag_msg.gen.test nlattr_tc_stats.gen.test nlattr_tca_stab.gen.test nlattr_tcamsg.gen.test nlattr_tcmsg.gen.test nlattr_unix_diag_msg.gen.test old_mmap.gen.test oldfstat.gen.test oldlstat.gen.test oldstat.gen.test open.gen.test openat.gen.test osf_utimes.gen.test pause.gen.test perf_event_open.gen.test perf_event_open_nonverbose.gen.test perf_event_open_unabbrev.gen.test pipe2.gen.test pkey_alloc.gen.test pkey_free.gen.test pkey_mprotect.gen.test ppoll.gen.test ppoll-v.gen.test pread64-pwrite64.gen.test preadv.gen.test preadv-pwritev.gen.test preadv2-pwritev2.gen.test printstr.gen.test printpath-umovestr.gen.test printpath-umovestr-peekdata.gen.test printpath-umovestr-undumpable.gen.test printstrn-umoven.gen.test printstrn-umoven-peekdata.gen.test printstrn-umoven-undumpable.gen.test prlimit64.gen.test process_vm_readv.gen.test process_vm_writev.gen.test pselect6.gen.test ptrace.gen.test pwritev.gen.test quotactl.gen.test quotactl-v.gen.test quotactl-xfs.gen.test quotactl-xfs-v.gen.test read-write.gen.test readahead.gen.test readdir.gen.test readlink.gen.test readlinkat.gen.test reboot.gen.test recvfrom.gen.test recvmmsg-timeout.gen.test recvmsg.gen.test regex.gen.test remap_file_pages.gen.test rename.gen.test renameat.gen.test renameat2.gen.test request_key.gen.test rmdir.gen.test rt_sigpending.gen.test rt_sigprocmask.gen.test rt_sigqueueinfo.gen.test rt_sigreturn.gen.test rt_sigsuspend.gen.test rt_sigtimedwait.gen.test rt_tgsigqueueinfo.gen.test sched.gen.test sched_get_priority_mxx.gen.test sched_rr_get_interval.gen.test sched_xetaffinity.gen.test sched_xetattr.gen.test sched_xetparam.gen.test sched_xetscheduler.gen.test sched_yield.gen.test seccomp-filter.gen.test seccomp-filter-v.gen.test seccomp_get_action_avail.gen.test select.gen.test semop.gen.test sendfile.gen.test sendfile64.gen.test set_mempolicy.gen.test setdomainname.gen.test setfsgid.gen.test setfsgid32.gen.test setfsuid.gen.test setfsuid32.gen.test setgid.gen.test setgid32.gen.test setgroups.gen.test setgroups32.gen.test sethostname.gen.test setns.gen.test setregid.gen.test setregid32.gen.test setresgid.gen.test setresgid32.gen.test setresuid.gen.test setresuid32.gen.test setreuid.gen.test setreuid32.gen.test setrlimit.gen.test setuid.gen.test setuid32.gen.test shmxt.gen.test shutdown.gen.test sigaction.gen.test siginfo.gen.test signal.gen.test signal_receive.gen.test signalfd4.gen.test sigpending.gen.test sigprocmask.gen.test sigreturn.gen.test sigsuspend.gen.test so_linger.gen.test so_peercred.gen.test sock_filter-v.gen.test socketcall.gen.test splice.gen.test stat.gen.test stat64.gen.test statfs.gen.test statfs64.gen.test statx.gen.test swap.gen.test sxetmask.gen.test symlink.gen.test symlinkat.gen.test sync.gen.test sync_file_range.gen.test sync_file_range2.gen.test sysinfo.gen.test syslog.gen.test tee.gen.test time.gen.test timer_create.gen.test timer_xettime.gen.test timerfd_xettime.gen.test times.gen.test times-fail.gen.test trace_fstat.gen.test trace_fstatfs.gen.test trace_lstat.gen.test trace_question.gen.test trace_stat.gen.test trace_stat_like.gen.test trace_statfs.gen.test trace_statfs_like.gen.test truncate.gen.test truncate64.gen.test ugetrlimit.gen.test umask.gen.test umoven-illptr.gen.test umovestr-illptr.gen.test umovestr3.gen.test unlink.gen.test unlinkat.gen.test unshare.gen.test userfaultfd.gen.test ustat.gen.test utime.gen.test utimensat.gen.test utimes.gen.test vfork-f.gen.test vhangup.gen.test vmsplice.gen.test wait4.gen.test wait4-v.gen.test waitid.gen.test waitid-v.gen.test waitpid.gen.test xattr.gen.test xattr-strings.gen.test xet_robust_list.gen.test xetitimer.gen.test xetpgid.gen.test xetpriority.gen.test xettimeofday.gen.test
$(srcdir)/_newselect.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -358,6 +358,9 @@ $(srcdir)/ipc_shm.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/kcmp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/kcmp-y.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/kexec_file_load.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -517,6 +520,39 @@ $(srcdir)/newfstatat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(srcdir)/nlattr.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nfnetlink_acct.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cthelper.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ctnetlink_exp.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_cttimeout.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ipset.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nft_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_nftables.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_osf.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_queue.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nfnetlink_ulog.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_crypto_user_alg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -556,6 +592,12 @@ $(srcdir)/nlattr_inet_diag_req_compat.gen.test: $(abs_srcdir)/gen_tests.sh $(src
$(srcdir)/nlattr_inet_diag_req_v2.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_mdba_mdb_entry.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_mdba_router_port.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_ndmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -583,6 +625,12 @@ $(srcdir)/nlattr_rtmsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.
$(srcdir)/nlattr_smc_diag_msg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/nlattr_tc_stats.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
+$(srcdir)/nlattr_tca_stab.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/nlattr_tcamsg.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
@@ -805,6 +853,9 @@ $(srcdir)/seccomp-filter.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_test
$(srcdir)/seccomp-filter-v.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
+$(srcdir)/seccomp_get_action_avail.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
+ $(AM_V_GEN) $^ $@
+
$(srcdir)/select.gen.test: $(abs_srcdir)/gen_tests.sh $(srcdir)/gen_tests.in
$(AM_V_GEN) $^ $@
diff --git a/tests/gen_tests.in b/tests/gen_tests.in
index 8592e28b..091bbe59 100644
--- a/tests/gen_tests.in
+++ b/tests/gen_tests.in
@@ -143,7 +143,8 @@ ipc -a19
ipc_msg +ipc.sh
ipc_sem +ipc.sh
ipc_shm +ipc.sh
-kcmp -a27
+kcmp -a22
+kcmp-y -a22 -y -e trace=kcmp
kexec_file_load -s9
kexec_load -s9
keyctl -a31 -s10
@@ -197,6 +198,17 @@ netlink_selinux +netlink_sock_diag.test
netlink_xfrm +netlink_sock_diag.test
newfstatat -a32 -v -P stat.sample -P /dev/full
nlattr +netlink_sock_diag.test
+nfnetlink_acct +netlink_sock_diag.test
+nfnetlink_cthelper +netlink_sock_diag.test
+nfnetlink_ctnetlink +netlink_sock_diag.test
+nfnetlink_ctnetlink_exp +netlink_sock_diag.test
+nfnetlink_cttimeout +netlink_sock_diag.test
+nfnetlink_ipset +netlink_sock_diag.test
+nfnetlink_nft_compat +netlink_sock_diag.test
+nfnetlink_nftables +netlink_sock_diag.test
+nfnetlink_osf +netlink_sock_diag.test
+nfnetlink_queue +netlink_sock_diag.test
+nfnetlink_ulog +netlink_sock_diag.test
nlattr_crypto_user_alg +netlink_sock_diag.test
nlattr_br_port_msg +netlink_sock_diag.test
nlattr_dcbmsg +netlink_sock_diag.test
@@ -210,6 +222,8 @@ nlattr_ifla_xdp +netlink_sock_diag.test
nlattr_inet_diag_msg +netlink_sock_diag.test
nlattr_inet_diag_req_compat +netlink_sock_diag.test
nlattr_inet_diag_req_v2 +netlink_sock_diag.test
+nlattr_mdba_mdb_entry +netlink_sock_diag.test
+nlattr_mdba_router_port +netlink_sock_diag.test
nlattr_ndmsg +netlink_sock_diag.test
nlattr_ndtmsg +netlink_sock_diag.test
nlattr_netconfmsg +netlink_sock_diag.test
@@ -219,6 +233,8 @@ nlattr_packet_diag_msg +netlink_sock_diag-v.sh
nlattr_rtgenmsg +netlink_sock_diag.test
nlattr_rtmsg +netlink_sock_diag.test
nlattr_smc_diag_msg +netlink_sock_diag.test
+nlattr_tc_stats +netlink_sock_diag.test
+nlattr_tca_stab +netlink_sock_diag.test
nlattr_tcamsg +netlink_sock_diag.test
nlattr_tcmsg +netlink_sock_diag.test
nlattr_unix_diag_msg +netlink_sock_diag.test
@@ -293,6 +309,7 @@ sched_xetscheduler -a22 -e trace=sched_getscheduler,sched_setscheduler
sched_yield -a14
seccomp-filter -e trace=seccomp
seccomp-filter-v -v -e trace=seccomp
+seccomp_get_action_avail -e trace=seccomp
select -a36
semop -a32 -e trace=semop,semtimedop
sendfile -a27
diff --git a/tests/ioctl_dm.c b/tests/ioctl_dm.c
index 2f77e041..1e831dfe 100644
--- a/tests/ioctl_dm.c
+++ b/tests/ioctl_dm.c
@@ -54,6 +54,10 @@
# define ALIGNED_OFFSET(t_, m_) \
ALIGNED_SIZE(offsetof(t_, m_), t_)
+# ifndef DM_DEV_ARM_POLL
+# define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, 0x10, struct dm_ioctl)
+# endif
+
static const char str129[] = STR32 STR32 STR32 STR32 "6";
static const __u64 dts_sector_base = (__u64) 0xdeadca75facef157ULL;
@@ -182,6 +186,7 @@ main(void)
{ ARG_STR(DM_TABLE_CLEAR), false },
{ ARG_STR(DM_TABLE_DEPS), true },
{ ARG_STR(DM_TABLE_STATUS), true },
+ { ARG_STR(DM_DEV_ARM_POLL), false },
};
struct dm_ioctl *unaligned_dm_arg =
diff --git a/tests/ioctl_loop.c b/tests/ioctl_loop.c
index 3411a4d8..56ebd9e4 100644
--- a/tests/ioctl_loop.c
+++ b/tests/ioctl_loop.c
@@ -188,11 +188,11 @@ main(void)
_IOC_SIZE((unsigned int) unknown_loop_cmd),
(unsigned long) magic);
- ioctl(-1, LOOP_SET_DIRECT_IO + 1, magic);
+ ioctl(-1, LOOP_SET_BLOCK_SIZE + 1, magic);
printf("ioctl(-1, _IOC(0, 0x4c, %#x, %#x), %#lx) = "
"-1 EBADF (%m)\n",
- _IOC_NR(LOOP_SET_DIRECT_IO + 1),
- _IOC_SIZE(LOOP_SET_DIRECT_IO + 1),
+ _IOC_NR(LOOP_SET_BLOCK_SIZE + 1),
+ _IOC_SIZE(LOOP_SET_BLOCK_SIZE + 1),
(unsigned long) magic);
ioctl(-1, LOOP_CTL_GET_FREE + 1, magic);
@@ -303,6 +303,11 @@ main(void)
printf("ioctl(-1, LOOP_SET_DIRECT_IO, %lu) = -1 EBADF (%m)\n",
(unsigned long) magic);
+ /* LOOP_SET_BLOCK_SIZE */
+ ioctl(-1, LOOP_SET_BLOCK_SIZE, magic);
+ printf("ioctl(-1, LOOP_SET_BLOCK_SIZE, %lu) = -1 EBADF (%m)\n",
+ (unsigned long) magic);
+
/* LOOP_CTL_ADD */
ioctl(-1, LOOP_CTL_ADD, magic);
printf("ioctl(-1, LOOP_CTL_ADD, %d) = -1 EBADF (%m)\n",
diff --git a/tests/kcmp-y.c b/tests/kcmp-y.c
new file mode 100644
index 00000000..02ad90e5
--- /dev/null
+++ b/tests/kcmp-y.c
@@ -0,0 +1,3 @@
+#define VERBOSE_FD 1
+
+#include "kcmp.c"
diff --git a/tests/kcmp-y.gen.test b/tests/kcmp-y.gen.test
new file mode 100755
index 00000000..065db9d0
--- /dev/null
+++ b/tests/kcmp-y.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp-y -a22 -y -e trace=kcmp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -a22 -y -e trace=kcmp
diff --git a/tests/kcmp.c b/tests/kcmp.c
index cb497c9f..60cd3003 100644
--- a/tests/kcmp.c
+++ b/tests/kcmp.c
@@ -1,7 +1,7 @@
/*
* Check decoding of kcmp syscall.
*
- * Copyright (c) 2016 Eugene Syromyatnikov <evgsyr@gmail.com>
+ * Copyright (c) 2016-2017 Eugene Syromyatnikov <evgsyr@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -34,15 +34,67 @@
#ifdef __NR_kcmp
+# include <fcntl.h>
+# include <stdarg.h>
+# include <stdint.h>
# include <stdio.h>
+# include <string.h>
# include <unistd.h>
-# define KCMP_FILE 0
-# define KCMP_SYSVSEM 6
+# ifndef VERBOSE_FD
+# define VERBOSE_FD 0
+# endif
+/*
+ * We prefer to use system headers in order to catch some possible deviations in
+ * system's headers from our perception of reality, but happy to include our own
+ * definitions as well.
+ */
+# ifdef HAVE_LINUX_KCMP_H
+# include <linux/kcmp.h>
+# else
+# define KCMP_FILE 0
+# define KCMP_VM 1
+# define KCMP_FILES 2
+# define KCMP_FS 3
+# define KCMP_SIGHAND 4
+# define KCMP_IO 5
+# define KCMP_SYSVSEM 6
+# endif
+
+/* All other kcmp types have been added atomically */
+# define KCMP_EPOLL_TFD 7
+
+# ifndef HAVE_STRUCT_KCMP_EPOLL_SLOT
+struct kcmp_epoll_slot {
+ uint32_t efd;
+ uint32_t tfd;
+ uint32_t toff;
+};
+# endif
+
+static const kernel_ulong_t kcmp_max_type = KCMP_EPOLL_TFD;
+
+static const char null_path[] = "/dev/null";
+static const char zero_path[] = "/dev/zero";
+
+# define NULL_FD 23
+# define ZERO_FD 42
+
+static void
+printpidfd(const char *prefix, pid_t pid, unsigned fd)
+{
+ printf("%s%d", prefix, fd);
+}
+
+/*
+ * Last argument is optional and is used as follows:
+ * * When type is KCMP_EPOLL_TFD, it signalises whether idx2 is a valid
+ * pointer.
+ */
static void
do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
- const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2)
+ const char *type_str, kernel_ulong_t idx1, kernel_ulong_t idx2, ...)
{
long rc;
const char *errstr;
@@ -57,11 +109,37 @@ do_kcmp(kernel_ulong_t pid1, kernel_ulong_t pid2, kernel_ulong_t type,
else
printf("%#x /* KCMP_??? */", (int) type);
- if (type == KCMP_FILE)
- printf(", %u, %u", (unsigned) idx1, (unsigned) idx2);
- else if (type > KCMP_SYSVSEM)
+ if (type == KCMP_FILE) {
+ printpidfd(", ", pid1, idx1);
+ printpidfd(", ", pid2, idx2);
+ } else if (type == KCMP_EPOLL_TFD) {
+ va_list ap;
+ int valid_ptr;
+
+ va_start(ap, idx2);
+ valid_ptr = va_arg(ap, int);
+ va_end(ap);
+
+ printpidfd(", ", pid1, idx1);
+ printf(", ");
+
+ if (valid_ptr) {
+ struct kcmp_epoll_slot *slot =
+ (struct kcmp_epoll_slot *) (uintptr_t) idx2;
+
+ printpidfd("{efd=", pid2, slot->efd);
+ printpidfd(", tfd=", pid2, slot->tfd);
+ printf(", toff=%llu}", (unsigned long long) slot->toff);
+ } else {
+ if (idx2)
+ printf("%#llx", (unsigned long long) idx2);
+ else
+ printf("NULL");
+ }
+ } else if (type > kcmp_max_type) {
printf(", %#llx, %#llx",
(unsigned long long) idx1, (unsigned long long) idx2);
+ }
printf(") = %s\n", errstr);
}
@@ -79,18 +157,71 @@ main(void)
(kernel_ulong_t) 0xdec0ded3dec0ded4ULL;
static const kernel_ulong_t bogus_idx2 =
(kernel_ulong_t) 0xba5e1e55deadc0deULL;
+ static const struct kcmp_epoll_slot slot_data[] = {
+ { 0xdeadc0de, 0xfacef157, 0xbadc0ded },
+ { NULL_FD, ZERO_FD, 0 },
+ { 0, 0, 0 },
+ };
+ static kernel_ulong_t ptr_check =
+ F8ILL_KULONG_SUPPORTED ? F8ILL_KULONG_MASK : 0;
+
+ int fd;
+ unsigned i;
+ struct kcmp_epoll_slot *slot = tail_alloc(sizeof(*slot));
+
+ /* Open some files to test printpidfd */
+ fd = open(null_path, O_RDONLY);
+ if (fd < 0)
+ perror_msg_and_fail("open(\"%s\")", null_path);
+ if (fd != NULL_FD) {
+ if (dup2(fd, NULL_FD) < 0)
+ perror_msg_and_fail("dup2(fd, NULL_FD)");
+ close(fd);
+ }
+
+ fd = open(zero_path, O_RDONLY);
+ if (fd < 0)
+ perror_msg_and_fail("open(\"%s\")", zero_path);
+ if (fd != ZERO_FD) {
+ if (dup2(fd, ZERO_FD) < 0)
+ perror_msg_and_fail("dup2(fd, ZERO_FD)");
+ close(fd);
+ }
+
+ close(0);
/* Invalid values */
do_kcmp(bogus_pid1, bogus_pid2, bogus_type, NULL, bogus_idx1,
bogus_idx2);
- do_kcmp(0, 0, KCMP_SYSVSEM + 1, NULL, 0, 0);
+ do_kcmp(F8ILL_KULONG_MASK, F8ILL_KULONG_MASK, kcmp_max_type + 1, NULL,
+ 0, 0);
/* KCMP_FILE is the only type which has additional args */
do_kcmp(3141592653U, 2718281828U, ARG_STR(KCMP_FILE), bogus_idx1,
bogus_idx2);
- /* Some type without additional args */
+ do_kcmp(-1, -1, ARG_STR(KCMP_FILE), NULL_FD, ZERO_FD);
+
+ /* Types without additional args */
+ do_kcmp(-1, -1, ARG_STR(KCMP_VM), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_FILES), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_FS), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_SIGHAND), bogus_idx1, bogus_idx2);
+ do_kcmp(-1, -1, ARG_STR(KCMP_IO), bogus_idx1, bogus_idx2);
do_kcmp(-1, -1, ARG_STR(KCMP_SYSVSEM), bogus_idx1, bogus_idx2);
+ /* KCMP_EPOLL_TFD checks */
+ do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD),
+ F8ILL_KULONG_MASK | 2718281828U, ptr_check, 0);
+ do_kcmp(-1, -1, ARG_STR(KCMP_EPOLL_TFD),
+ 3141592653U, (uintptr_t) slot + 1, 0);
+
+ for (i = 0; i < ARRAY_SIZE(slot_data); i++) {
+ memcpy(slot, slot_data + i, sizeof(*slot));
+
+ do_kcmp(getpid(), getppid(), ARG_STR(KCMP_EPOLL_TFD), NULL_FD,
+ (uintptr_t) slot, 1);
+ }
+
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/kcmp.gen.test b/tests/kcmp.gen.test
index da79d7c1..c073a39e 100755
--- a/tests/kcmp.gen.test
+++ b/tests/kcmp.gen.test
@@ -1,4 +1,4 @@
#!/bin/sh -efu
-# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a27); do not edit.
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (kcmp -a22); do not edit.
. "${srcdir=.}/init.sh"
-run_strace_match_diff -a27
+run_strace_match_diff -a22
diff --git a/tests/list_sigaction_signum.c b/tests/list_sigaction_signum.c
new file mode 100644
index 00000000..13a78c68
--- /dev/null
+++ b/tests/list_sigaction_signum.c
@@ -0,0 +1,57 @@
+/*
+ * List signal numbers that are valid arguments for sigaction syscall.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <signal.h>
+#include <stdio.h>
+
+int
+main(void)
+{
+ unsigned int i;
+
+ for (i = 1; i < 32; ++i) {
+ static const struct sigaction ign = { .sa_handler = SIG_IGN };
+ static const struct sigaction dfl = { .sa_handler = SIG_DFL };
+ struct sigaction act;
+
+ if (sigaction(i, &ign, NULL) ||
+ sigaction(i, NULL, &act) ||
+ ign.sa_handler != act.sa_handler ||
+ sigaction(i, &dfl, NULL) ||
+ sigaction(i, NULL, &act) ||
+ dfl.sa_handler != act.sa_handler)
+ continue;
+
+ printf("%u\n", i);
+ }
+
+ return 0;
+}
diff --git a/tests/membarrier.c b/tests/membarrier.c
index 330893b6..73dd3b02 100644
--- a/tests/membarrier.c
+++ b/tests/membarrier.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
+ * Copyright (c) 2015-2017 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -44,10 +44,28 @@ main(void)
printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
sprintrc(-1));
if (saved_errno != ENOSYS) {
- /* the test needs to be updated? */
- assert(syscall(__NR_membarrier, 0, 0) == 1);
- puts("membarrier(MEMBARRIER_CMD_QUERY, 0)"
- " = 0x1 (MEMBARRIER_CMD_SHARED)");
+ const char *text;
+ int rc = syscall(__NR_membarrier, 0, 0);
+
+ switch (rc) {
+ case 1:
+ text = "MEMBARRIER_CMD_SHARED";
+ break;
+ case 1|8:
+ text = "MEMBARRIER_CMD_SHARED|"
+ "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
+ break;
+ case 1|8|16:
+ text = "MEMBARRIER_CMD_SHARED|"
+ "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+ "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
+ break;
+ default:
+ error_msg_and_fail("membarrier returned %#x, does"
+ " the test have to be updated?", rc);
+ }
+ printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
+ rc, text);
}
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/memfd_create.c b/tests/memfd_create.c
index 480fd177..4559b426 100644
--- a/tests/memfd_create.c
+++ b/tests/memfd_create.c
@@ -11,10 +11,11 @@ int
main(void)
{
static const char text[] = "strace";
- int rc = syscall(__NR_memfd_create, text, 7);
+ int rc = syscall(__NR_memfd_create, text, 0xf);
- printf("memfd_create(\"%s\", %s) = %d %s (%m)\n",
- text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|0x4", rc, errno2name());
+ printf("memfd_create(\"%s\", %s) = %s\n",
+ text, "MFD_CLOEXEC|MFD_ALLOW_SEALING|MFD_HUGETLB|0x8",
+ sprintrc(rc));
puts("+++ exited with 0 +++");
return 0;
diff --git a/tests/netlink_crypto.c b/tests/netlink_crypto.c
index deb1644e..d15c17cf 100644
--- a/tests/netlink_crypto.c
+++ b/tests/netlink_crypto.c
@@ -78,9 +78,17 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = CRYPTO_MSG_DELALG;
- nlh.nlmsg_flags = NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=CRYPTO_MSG_DELALG"
+ ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+ nlh.nlmsg_type = CRYPTO_MSG_UPDATEALG;
+ nlh.nlmsg_flags = NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u, type=CRYPTO_MSG_UPDATEALG"
", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, NLM_F_REPLACE,
diff --git a/tests/netlink_netfilter.c b/tests/netlink_netfilter.c
index 2907c261..db2622eb 100644
--- a/tests/netlink_netfilter.c
+++ b/tests/netlink_netfilter.c
@@ -52,19 +52,19 @@ test_nlmsg_type(const int fd)
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+# endif
- nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8) | NFNL_MSG_BATCH_BEGIN;
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
- printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|%#x"
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */"
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
- fd, nlh.nlmsg_len, NFNL_MSG_BATCH_BEGIN,
- (unsigned) sizeof(nlh), sprintrc(rc));
-# endif
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
- nlh.nlmsg_type = (NFNL_SUBSYS_CTNETLINK << 8);
+ nlh.nlmsg_type = 0xffff;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
- printf("sendto(%d, {len=%u, type=NFNL_SUBSYS_CTNETLINK<<8|0"
+ printf("sendto(%d, {len=%u, type=0xff /* NFNL_SUBSYS_??? */<<8|0xff"
", flags=NLM_F_REQUEST, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
diff --git a/tests/netlink_route.c b/tests/netlink_route.c
index 6af3b13a..a1c7d1f8 100644
--- a/tests/netlink_route.c
+++ b/tests/netlink_route.c
@@ -132,13 +132,12 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = RTM_DELLINK;
- nlh.nlmsg_flags = NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=RTM_DELLINK"
- ", flags=%#x /* NLM_F_??? */, seq=0, pid=0}"
+ ", flags=NLM_F_NONREC, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
- fd, nlh.nlmsg_len, NLM_F_REPLACE,
- (unsigned) sizeof(nlh), sprintrc(rc));
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
}
static void
diff --git a/tests/netlink_xfrm.c b/tests/netlink_xfrm.c
index 27f62d1e..862a9f6e 100644
--- a/tests/netlink_xfrm.c
+++ b/tests/netlink_xfrm.c
@@ -76,9 +76,17 @@ test_nlmsg_flags(const int fd)
fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
nlh.nlmsg_type = XFRM_MSG_DELSA;
- nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_NONREC;
rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
printf("sendto(%d, {len=%u, type=XFRM_MSG_DELSA"
+ ", flags=NLM_F_ECHO|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, (unsigned) sizeof(nlh), sprintrc(rc));
+
+ nlh.nlmsg_type = XFRM_MSG_ALLOCSPI;
+ nlh.nlmsg_flags = NLM_F_ECHO | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, sizeof(nlh), MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u, type=XFRM_MSG_ALLOCSPI"
", flags=NLM_F_ECHO|%#x, seq=0, pid=0}"
", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
fd, nlh.nlmsg_len, NLM_F_REPLACE,
diff --git a/tests/nfnetlink_acct.c b/tests/nfnetlink_acct.c
new file mode 100644
index 00000000..52cff99a
--- /dev/null
+++ b/tests/nfnetlink_acct.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_acct.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|0xff /* NFNL_MSG_ACCT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_CREATE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_MATCH;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_MATCH, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ACCT << 8 | NFNL_MSG_ACCT_DEL;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ACCT<<8|NFNL_MSG_ACCT_DEL"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_ACCT_H")
+
+#endif
diff --git a/tests/nfnetlink_acct.gen.test b/tests/nfnetlink_acct.gen.test
new file mode 100755
index 00000000..7db22769
--- /dev/null
+++ b/tests/nfnetlink_acct.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_acct +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_cthelper.c b/tests/nfnetlink_cthelper.c
new file mode 100644
index 00000000..47fab768
--- /dev/null
+++ b/tests/nfnetlink_cthelper.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_cthelper.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|0xff /* NFNL_MSG_CTHELPER_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTHELPER << 8 | NFNL_MSG_CTHELPER_DEL;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTHELPER<<8|NFNL_MSG_CTHELPER_DEL"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTHELPER_H")
+
+#endif
diff --git a/tests/nfnetlink_cthelper.gen.test b/tests/nfnetlink_cthelper.gen.test
new file mode 100755
index 00000000..661c949c
--- /dev/null
+++ b/tests/nfnetlink_cthelper.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cthelper +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ctnetlink.c b/tests/nfnetlink_ctnetlink.c
new file mode 100644
index 00000000..a227f38e
--- /dev/null
+++ b/tests/nfnetlink_ctnetlink.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_conntrack.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|0xff /* IPCTNL_MSG_CT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK << 8 | IPCTNL_MSG_CT_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK<<8|IPCTNL_MSG_CT_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H")
+
+#endif
diff --git a/tests/nfnetlink_ctnetlink.gen.test b/tests/nfnetlink_ctnetlink.gen.test
new file mode 100755
index 00000000..d4c4daaf
--- /dev/null
+++ b/tests/nfnetlink_ctnetlink.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ctnetlink_exp.c b/tests/nfnetlink_ctnetlink_exp.c
new file mode 100644
index 00000000..aa17cd52
--- /dev/null
+++ b/tests/nfnetlink_ctnetlink_exp.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_conntrack.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|0xff /* IPCTNL_MSG_EXP_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_EXCL;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_EXCL, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ROOT;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_ROOT, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_EXP << 8 | IPCTNL_MSG_EXP_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_EXP<<8|IPCTNL_MSG_EXP_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CONNTRACK_H")
+
+#endif
diff --git a/tests/nfnetlink_ctnetlink_exp.gen.test b/tests/nfnetlink_ctnetlink_exp.gen.test
new file mode 100755
index 00000000..a5d83f9b
--- /dev/null
+++ b/tests/nfnetlink_ctnetlink_exp.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ctnetlink_exp +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_cttimeout.c b/tests/nfnetlink_cttimeout.c
new file mode 100644
index 00000000..e66dc24c
--- /dev/null
+++ b/tests/nfnetlink_cttimeout.c
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_cttimeout.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|0xff /* IPCTNL_MSG_TIMEOUT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_NEW;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_APPEND;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_NEW"
+ ", flags=NLM_F_REQUEST|NLM_F_APPEND, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_ATOMIC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_ATOMIC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type =
+ NFNL_SUBSYS_CTNETLINK_TIMEOUT << 8 | IPCTNL_MSG_TIMEOUT_DELETE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_CTNETLINK_TIMEOUT<<8|IPCTNL_MSG_TIMEOUT_DELETE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_CTTIMEOUT_H")
+
+#endif
diff --git a/tests/nfnetlink_cttimeout.gen.test b/tests/nfnetlink_cttimeout.gen.test
new file mode 100755
index 00000000..e197f000
--- /dev/null
+++ b/tests/nfnetlink_cttimeout.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_cttimeout +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ipset.c b/tests/nfnetlink_ipset.c
new file mode 100644
index 00000000..b0d4a7d1
--- /dev/null
+++ b/tests/nfnetlink_ipset.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_IPSET_IP_SET_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/ipset/ip_set.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | IPSET_CMD_NONE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_IPSET<<8|IPSET_CMD_NONE"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_IPSET << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_IPSET<<8|0xff /* IPSET_CMD_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_IPSET_IP_SET_H")
+
+#endif
diff --git a/tests/nfnetlink_ipset.gen.test b/tests/nfnetlink_ipset.gen.test
new file mode 100755
index 00000000..418437a7
--- /dev/null
+++ b/tests/nfnetlink_ipset.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ipset +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_nft_compat.c b/tests/nfnetlink_nft_compat.c
new file mode 100644
index 00000000..072ee571
--- /dev/null
+++ b/tests/nfnetlink_nft_compat.c
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nf_tables_compat.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|0xff /* NFNL_MSG_COMPAT_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFT_COMPAT << 8 | NFNL_MSG_COMPAT_GET;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFT_COMPAT<<8|NFNL_MSG_COMPAT_GET"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_COMPAT_H")
+
+#endif
diff --git a/tests/nfnetlink_nft_compat.gen.test b/tests/nfnetlink_nft_compat.gen.test
new file mode 100755
index 00000000..c3dc8907
--- /dev/null
+++ b/tests/nfnetlink_nft_compat.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nft_compat +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_nftables.c b/tests/nfnetlink_nftables.c
new file mode 100644
index 00000000..66e5fe94
--- /dev/null
+++ b/tests/nfnetlink_nftables.c
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NF_TABLES_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nf_tables.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|0xff /* NFT_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+static void
+test_nlmsg_flags(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_NEWTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_NEWTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_REPLACE, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_GETTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_DUMP;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_GETTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_DUMP, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_NFTABLES << 8 | NFT_MSG_DELTABLE;
+ nlh.nlmsg_flags = NLM_F_REQUEST | NLM_F_NONREC;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_NFTABLES<<8|NFT_MSG_DELTABLE"
+ ", flags=NLM_F_REQUEST|NLM_F_NONREC, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+ test_nlmsg_flags(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NF_TABLES_H")
+
+#endif
diff --git a/tests/nfnetlink_nftables.gen.test b/tests/nfnetlink_nftables.gen.test
new file mode 100755
index 00000000..25e90e85
--- /dev/null
+++ b/tests/nfnetlink_nftables.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_nftables +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_osf.c b/tests/nfnetlink_osf.c
new file mode 100644
index 00000000..a6dbb7e6
--- /dev/null
+++ b/tests/nfnetlink_osf.c
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_XT_OSF_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/ip.h>
+# include <linux/tcp.h>
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/xt_osf.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | OSF_MSG_ADD;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_OSF<<8|OSF_MSG_ADD"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_OSF << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_OSF<<8|0xff /* OSF_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_XT_OSF_H")
+
+#endif
diff --git a/tests/nfnetlink_osf.gen.test b/tests/nfnetlink_osf.gen.test
new file mode 100755
index 00000000..2689574a
--- /dev/null
+++ b/tests/nfnetlink_osf.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_osf +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_queue.c b/tests/nfnetlink_queue.c
new file mode 100644
index 00000000..73ebd9aa
--- /dev/null
+++ b/tests/nfnetlink_queue.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_queue.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_QUEUE<<8|NFQNL_MSG_PACKET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_QUEUE << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_QUEUE<<8|0xff /* NFQNL_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_QUEUE_H")
+
+#endif
diff --git a/tests/nfnetlink_queue.gen.test b/tests/nfnetlink_queue.gen.test
new file mode 100755
index 00000000..739fb17d
--- /dev/null
+++ b/tests/nfnetlink_queue.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_queue +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nfnetlink_ulog.c b/tests/nfnetlink_ulog.c
new file mode 100644
index 00000000..31eb30f1
--- /dev/null
+++ b/tests/nfnetlink_ulog.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H
+
+# include <stdio.h>
+# include <sys/socket.h>
+# include "netlink.h"
+# include <linux/netfilter/nfnetlink.h>
+# include <linux/netfilter/nfnetlink_log.h>
+
+static void
+test_nlmsg_type(const int fd)
+{
+ long rc;
+ struct nlmsghdr nlh = {
+ .nlmsg_len = sizeof(nlh),
+ .nlmsg_flags = NLM_F_REQUEST,
+ };
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | NFULNL_MSG_PACKET;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ULOG<<8|NFULNL_MSG_PACKET"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+
+ nlh.nlmsg_type = NFNL_SUBSYS_ULOG << 8 | 0xff;
+ rc = sendto(fd, &nlh, nlh.nlmsg_len, MSG_DONTWAIT, NULL, 0);
+ printf("sendto(%d, {len=%u"
+ ", type=NFNL_SUBSYS_ULOG<<8|0xff /* NFULNL_MSG_??? */"
+ ", flags=NLM_F_REQUEST, seq=0, pid=0}"
+ ", %u, MSG_DONTWAIT, NULL, 0) = %s\n",
+ fd, nlh.nlmsg_len, nlh.nlmsg_len, sprintrc(rc));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ int fd = create_nl_socket(NETLINK_NETFILTER);
+
+ test_nlmsg_type(fd);
+
+ puts("+++ exited with 0 +++");
+
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_LINUX_NETFILTER_NFNETLINK_LOG_H")
+
+#endif
diff --git a/tests/nfnetlink_ulog.gen.test b/tests/nfnetlink_ulog.gen.test
new file mode 100755
index 00000000..850ebafc
--- /dev/null
+++ b/tests/nfnetlink_ulog.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nfnetlink_ulog +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_inet_diag_msg.c b/tests/nlattr_inet_diag_msg.c
index 5666d74b..ccc62aed 100644
--- a/tests/nlattr_inet_diag_msg.c
+++ b/tests/nlattr_inet_diag_msg.c
@@ -182,6 +182,11 @@ main(void)
INET_DIAG_MARK, pattern, mark,
printf("%u", mark));
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_inet_diag_msg, print_inet_diag_msg,
+ INET_DIAG_CLASS_ID, pattern, mark,
+ printf("%u", mark));
+
static const uint8_t shutdown = 0xcd;
TEST_NLATTR(fd, nlh0, hdrlen,
init_inet_diag_msg, print_inet_diag_msg, INET_DIAG_SHUTDOWN,
diff --git a/tests/nlattr_mdba_mdb_entry.c b/tests/nlattr_mdba_mdb_entry.c
new file mode 100644
index 00000000..124fe1d4
--- /dev/null
+++ b/tests/nlattr_mdba_mdb_entry.c
@@ -0,0 +1,182 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_BR_PORT_MSG
+
+# include <stdio.h>
+# include "test_nlattr.h"
+# include <arpa/inet.h>
+# include <linux/if_bridge.h>
+# include <linux/rtnetlink.h>
+
+# ifndef MDB_TEMPORARY
+# define MDB_TEMPORARY 0
+# endif
+# ifndef MDBA_MDB_ENTRY_INFO
+# define MDBA_MDB_ENTRY_INFO 1
+# endif
+# ifndef MDBA_MDB_EATTR_TIMER
+# define MDBA_MDB_EATTR_TIMER 1
+# endif
+
+const unsigned int hdrlen = sizeof(struct br_port_msg);
+
+static void
+init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ unsigned int len = msg_len;
+
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = len,
+ .nlmsg_type = RTM_GETMDB,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct br_port_msg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct br_port_msg, msg,
+ .family = AF_UNIX,
+ .ifindex = ifindex_lo()
+ );
+
+ struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ len -= NLMSG_SPACE(hdrlen);
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = len,
+ .nla_type = MDBA_MDB
+ );
+
+ nla = nla + 1;
+ len -= NLA_HDRLEN;
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = len,
+ .nla_type = MDBA_MDB_ENTRY
+ );
+}
+
+static void
+print_br_port_msg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {family=AF_UNIX"
+ ", ifindex=" IFINDEX_LO_STR "}"
+ ", {{nla_len=%u, nla_type=MDBA_MDB}"
+ ", {{nla_len=%u, nla_type=MDBA_MDB_ENTRY}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen),
+ msg_len - NLMSG_SPACE(hdrlen) - NLA_HDRLEN);
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ const unsigned int nla_type = 0xffff & NLA_TYPE_MASK;
+ char nla_type_str[256];
+ sprintf(nla_type_str, "%#x /* MDBA_MDB_ENTRY_??? */", nla_type);
+ TEST_NLATTR_(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2,
+ init_br_port_msg, print_br_port_msg,
+ nla_type, nla_type_str,
+ 4, pattern, 4,
+ print_quoted_hex(pattern, 4);
+ printf("}}"));
+
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY
+ struct br_mdb_entry entry = {
+ .ifindex = ifindex_lo(),
+ .state = MDB_TEMPORARY,
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ .flags = MDB_FLAGS_OFFLOAD,
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ .vid = 0xcdef,
+# endif
+ .addr = {
+ .proto = htons(AF_UNSPEC)
+ }
+ };
+
+ memcpy(&entry.addr.u, pattern, sizeof(entry.addr.u));
+ TEST_NESTED_NLATTR_OBJECT_EX(fd, nlh0, hdrlen,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_MDB_ENTRY_INFO, pattern, entry, 2,
+ printf("{ifindex=" IFINDEX_LO_STR);
+ printf(", state=MDB_TEMPORARY");
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ printf(", flags=MDB_FLAGS_OFFLOAD");
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ PRINT_FIELD_U(", ", entry, vid);
+# endif
+ printf(", addr={u=");
+ print_quoted_hex(&entry.addr.u,
+ sizeof(entry.addr.u));
+ printf(", proto=htons(AF_UNSPEC)}}"));
+
+ static const struct nlattr nla = {
+ .nla_len = sizeof(nla),
+ .nla_type = MDBA_MDB_EATTR_TIMER
+ };
+ char buf[NLMSG_ALIGN(sizeof(entry)) + sizeof(nla)];
+ memcpy(buf, &entry, sizeof(entry));
+ memcpy(buf + NLMSG_ALIGN(sizeof(entry)), &nla, sizeof(nla));
+ TEST_NLATTR(fd, nlh0 - NLA_HDRLEN * 2, hdrlen + NLA_HDRLEN * 2,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_MDB_ENTRY_INFO, sizeof(buf), buf, sizeof(buf),
+ printf("{ifindex=" IFINDEX_LO_STR);
+ printf(", state=MDB_TEMPORARY");
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_FLAGS
+ printf(", flags=MDB_FLAGS_OFFLOAD");
+# endif
+# ifdef HAVE_STRUCT_BR_MDB_ENTRY_VID
+ PRINT_FIELD_U(", ", entry, vid);
+# endif
+ printf(", addr={u=");
+ print_quoted_hex(&entry.addr.u, sizeof(entry.addr.u));
+ printf(", proto=htons(AF_UNSPEC)}}"
+ ", {nla_len=%u, nla_type=MDBA_MDB_EATTR_TIMER}}}",
+ nla.nla_len));
+# endif /* HAVE_STRUCT_BR_MDB_ENTRY */
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG")
+
+#endif
diff --git a/tests/nlattr_mdba_mdb_entry.gen.test b/tests/nlattr_mdba_mdb_entry.gen.test
new file mode 100755
index 00000000..67253e8e
--- /dev/null
+++ b/tests/nlattr_mdba_mdb_entry.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_mdb_entry +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_mdba_router_port.c b/tests/nlattr_mdba_router_port.c
new file mode 100644
index 00000000..af908cd8
--- /dev/null
+++ b/tests/nlattr_mdba_router_port.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_BR_PORT_MSG
+
+# include <stdio.h>
+# include "test_nlattr.h"
+# include <linux/if_bridge.h>
+# include <linux/rtnetlink.h>
+
+# ifndef MDBA_ROUTER
+# define MDBA_ROUTER 2
+# endif
+# ifndef MDBA_ROUTER_PORT
+# define MDBA_ROUTER_PORT 1
+# endif
+# ifndef MDBA_ROUTER_PATTR_TYPE
+# define MDBA_ROUTER_PATTR_TYPE 2
+# endif
+# ifndef MDB_RTR_TYPE_DISABLED
+# define MDB_RTR_TYPE_DISABLED 0
+# endif
+
+const unsigned int hdrlen = sizeof(struct br_port_msg);
+
+static void
+init_br_port_msg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETMDB,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct br_port_msg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct br_port_msg, msg,
+ .family = AF_UNIX,
+ .ifindex = ifindex_lo()
+ );
+
+ struct nlattr *nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = MDBA_ROUTER
+ );
+}
+
+static void
+print_br_port_msg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETMDB, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {family=AF_UNIX"
+ ", ifindex=" IFINDEX_LO_STR "}"
+ ", {{nla_len=%u, nla_type=MDBA_ROUTER}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ const uint32_t ifindex = ifindex_lo();
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_ROUTER_PORT, pattern, ifindex,
+ printf(IFINDEX_LO_STR));
+
+ const uint8_t type = MDB_RTR_TYPE_DISABLED;
+ static const struct nlattr nla = {
+ .nla_len = NLA_HDRLEN + sizeof(type),
+ .nla_type = MDBA_ROUTER_PATTR_TYPE
+ };
+ char buf[NLMSG_ALIGN(ifindex) + NLA_HDRLEN + sizeof(type)];
+ memcpy(buf, &ifindex, sizeof(ifindex));
+ memcpy(buf + NLMSG_ALIGN(ifindex), &nla, sizeof(nla));
+ memcpy(buf + NLMSG_ALIGN(ifindex) + NLA_HDRLEN, &type, sizeof(type));
+ TEST_NLATTR(fd, nlh0 - NLA_HDRLEN, hdrlen + NLA_HDRLEN,
+ init_br_port_msg, print_br_port_msg,
+ MDBA_ROUTER_PORT, sizeof(buf), buf, sizeof(buf),
+ printf(IFINDEX_LO_STR
+ ", {{nla_len=%u, nla_type=MDBA_ROUTER_PATTR_TYPE}"
+ ", MDB_RTR_TYPE_DISABLED}}",
+ nla.nla_len));
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_BR_PORT_MSG")
+
+#endif
diff --git a/tests/nlattr_mdba_router_port.gen.test b/tests/nlattr_mdba_router_port.gen.test
new file mode 100755
index 00000000..ce9ea148
--- /dev/null
+++ b/tests/nlattr_mdba_router_port.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_mdba_router_port +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_tc_stats.c b/tests/nlattr_tc_stats.c
new file mode 100644
index 00000000..dd76cc7d
--- /dev/null
+++ b/tests/nlattr_tc_stats.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#ifdef HAVE_STRUCT_GNET_STATS_BASIC
+
+# include <stdio.h>
+# include <stddef.h>
+# include "test_nlattr.h"
+# include <linux/gen_stats.h>
+# include <linux/rtnetlink.h>
+
+const unsigned int hdrlen = sizeof(struct tcmsg);
+
+static void
+init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETQDISC,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct tcmsg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct tcmsg, msg,
+ .tcm_family = AF_UNIX,
+ .tcm_ifindex = ifindex_lo()
+ );
+
+ struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = TCA_STATS2
+ );
+}
+
+static void
+print_tcmsg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {tcm_family=AF_UNIX"
+ ", tcm_ifindex=" IFINDEX_LO_STR
+ ", tcm_handle=0, tcm_parent=0, tcm_info=0}"
+ ", {{nla_len=%u, nla_type=TCA_STATS2}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+ static const struct gnet_stats_basic sb = {
+ .bytes = 0xabcdebdafefeadeb,
+ .packets = 0xbdcdeabf
+ };
+ char buf[offsetofend(struct gnet_stats_basic, packets)];
+ memcpy(buf, &sb, sizeof(buf));
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_BASIC, pattern, buf,
+ PRINT_FIELD_U("{", sb, bytes);
+ PRINT_FIELD_U(", ", sb, packets);
+ printf("}"));
+
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST
+ static const struct gnet_stats_rate_est est = {
+ .bps = 0xebcdaebd,
+ .pps = 0xabdceade,
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_RATE_EST, pattern, est,
+ PRINT_FIELD_U("{", est, bps);
+ PRINT_FIELD_U(", ", est, pps);
+ printf("}"));
+#endif
+
+#ifdef HAVE_STRUCT_GNET_STATS_QUEUE
+ static const struct gnet_stats_queue qstats = {
+ .qlen = 0xabcdeabd,
+ .backlog = 0xbcdaebad,
+ .drops = 0xcdbeaedb,
+ .requeues = 0xdebaefab,
+ .overlimits = 0xefaebade
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_QUEUE, pattern, qstats,
+ PRINT_FIELD_U("{", qstats, qlen);
+ PRINT_FIELD_U(", ", qstats, backlog);
+ PRINT_FIELD_U(", ", qstats, drops);
+ PRINT_FIELD_U(", ", qstats, requeues);
+ PRINT_FIELD_U(", ", qstats, overlimits);
+ printf("}"));
+#endif
+
+#ifdef HAVE_STRUCT_GNET_STATS_RATE_EST64
+ static const struct gnet_stats_rate_est64 est64 = {
+ .bps = 0xacbdcdefafecaebf,
+ .pps = 0xcdabeabdfeabceaf
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS_RATE_EST64, pattern, est64,
+ PRINT_FIELD_U("{", est64, bps);
+ PRINT_FIELD_U(", ", est64, pps);
+ printf("}"));
+#endif
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("HAVE_STRUCT_GNET_STATS_BASIC")
+
+#endif
diff --git a/tests/nlattr_tc_stats.gen.test b/tests/nlattr_tc_stats.gen.test
new file mode 100755
index 00000000..72780d4a
--- /dev/null
+++ b/tests/nlattr_tc_stats.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tc_stats +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_tca_stab.c b/tests/nlattr_tca_stab.c
new file mode 100644
index 00000000..de6d3569
--- /dev/null
+++ b/tests/nlattr_tca_stab.c
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2017 JingPiao Chen <chenjingpiao@gmail.com>
+ * Copyright (c) 2017 The strace developers.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+
+#include <stdio.h>
+#include "test_nlattr.h"
+#include <linux/pkt_sched.h>
+#include <linux/rtnetlink.h>
+
+#ifndef TCA_STAB
+# define TCA_STAB 8
+#endif
+#ifndef TCA_STAB_DATA
+# define TCA_STAB_DATA 2
+#endif
+
+const unsigned int hdrlen = sizeof(struct tcmsg);
+
+static void
+init_tcmsg(struct nlmsghdr *const nlh, const unsigned int msg_len)
+{
+ SET_STRUCT(struct nlmsghdr, nlh,
+ .nlmsg_len = msg_len,
+ .nlmsg_type = RTM_GETQDISC,
+ .nlmsg_flags = NLM_F_DUMP
+ );
+
+ struct tcmsg *const msg = NLMSG_DATA(nlh);
+ SET_STRUCT(struct tcmsg, msg,
+ .tcm_family = AF_UNIX,
+ .tcm_ifindex = ifindex_lo()
+ );
+
+ struct nlattr *const nla = NLMSG_ATTR(nlh, sizeof(*msg));
+ SET_STRUCT(struct nlattr, nla,
+ .nla_len = msg_len - NLMSG_SPACE(hdrlen),
+ .nla_type = TCA_STAB
+ );
+}
+
+static void
+print_tcmsg(const unsigned int msg_len)
+{
+ printf("{len=%u, type=RTM_GETQDISC, flags=NLM_F_DUMP"
+ ", seq=0, pid=0}, {tcm_family=AF_UNIX"
+ ", tcm_ifindex=" IFINDEX_LO_STR
+ ", tcm_handle=0, tcm_parent=0, tcm_info=0}"
+ ", {{nla_len=%u, nla_type=TCA_STAB}",
+ msg_len, msg_len - NLMSG_SPACE(hdrlen));
+}
+
+static void
+print_uint16(const uint16_t *p)
+{
+ printf("%u", *p);
+}
+
+int
+main(void)
+{
+ skip_if_unavailable("/proc/self/fd/");
+
+ const int fd = create_nl_socket(NETLINK_ROUTE);
+ void *nlh0 = tail_alloc(NLMSG_SPACE(hdrlen));
+
+ static char pattern[4096];
+ fill_memory_ex(pattern, sizeof(pattern), 'a', 'z' - 'a' + 1);
+
+#ifdef HAVE_STRUCT_TC_SIZESPEC
+ static const struct tc_sizespec s = {
+ .cell_log = 0xab,
+ .size_log = 0xcd,
+ .cell_align = 0xefab,
+ .overhead = 0xcdadeefa,
+ .linklayer = 0xefbaafeb,
+ .mpu = 0xfebfaefb,
+ .mtu = 0xacdbefab,
+ .tsize = 0xbdeaabed
+ };
+ TEST_NESTED_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STAB_BASE, pattern, s,
+ PRINT_FIELD_U("{", s, cell_log);
+ PRINT_FIELD_U(", ", s, size_log);
+ PRINT_FIELD_D(", ", s, cell_align);
+ PRINT_FIELD_D(", ", s, overhead);
+ PRINT_FIELD_U(", ", s, linklayer);
+ PRINT_FIELD_U(", ", s, mpu);
+ PRINT_FIELD_U(", ", s, mtu);
+ PRINT_FIELD_U(", ", s, tsize);
+ printf("}"));
+#endif
+
+ uint16_t data[2] = { 0xacbd, 0xefba };
+ TEST_NESTED_NLATTR_ARRAY(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STAB_DATA, pattern, data, print_uint16);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
diff --git a/tests/nlattr_tca_stab.gen.test b/tests/nlattr_tca_stab.gen.test
new file mode 100755
index 00000000..14cd1a54
--- /dev/null
+++ b/tests/nlattr_tca_stab.gen.test
@@ -0,0 +1,3 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (nlattr_tca_stab +netlink_sock_diag.test); do not edit.
+. "${srcdir=.}/netlink_sock_diag.test"
diff --git a/tests/nlattr_tcmsg.c b/tests/nlattr_tcmsg.c
index 00b7ae46..32ce4790 100644
--- a/tests/nlattr_tcmsg.c
+++ b/tests/nlattr_tcmsg.c
@@ -29,7 +29,9 @@
#include "tests.h"
#include <stdio.h>
+#include <stddef.h>
#include "test_nlattr.h"
+#include <linux/pkt_sched.h>
#include <linux/rtnetlink.h>
static void
@@ -80,6 +82,42 @@ main(void)
4, pattern, 4,
print_quoted_hex(pattern, 4));
+ static const struct tc_stats st = {
+ .bytes = 0xabcdcdbefeadefac,
+ .packets = 0xbcdeaefd,
+ .drops = 0xcdedafed,
+ .overlimits = 0xdcdbefad,
+ .bps = 0xefaebfad,
+ .pps = 0xfefbaedb,
+ .qlen = 0xabcdefab,
+ .backlog = 0xbdeabeab
+ };
+ char buf[offsetofend(struct tc_stats, backlog)];
+ memcpy(buf, &st, sizeof(buf));
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_STATS, pattern, buf,
+ PRINT_FIELD_U("{", st, bytes);
+ PRINT_FIELD_U(", ", st, packets);
+ PRINT_FIELD_U(", ", st, drops);
+ PRINT_FIELD_U(", ", st, overlimits);
+ PRINT_FIELD_U(", ", st, bps);
+ PRINT_FIELD_U(", ", st, pps);
+ PRINT_FIELD_U(", ", st, qlen);
+ PRINT_FIELD_U(", ", st, backlog);
+ printf("}"));
+
+ static const struct tc_estimator est = {
+ .interval = 0xcd,
+ .ewma_log = 0xab
+ };
+ TEST_NLATTR_OBJECT(fd, nlh0, hdrlen,
+ init_tcmsg, print_tcmsg,
+ TCA_RATE, pattern, est,
+ PRINT_FIELD_D("{", est, interval);
+ PRINT_FIELD_U(", ", est, ewma_log);
+ printf("}"));
+
puts("+++ exited with 0 +++");
return 0;
}
diff --git a/tests/options-syntax.test b/tests/options-syntax.test
index b4d9be70..2e459c96 100755
--- a/tests/options-syntax.test
+++ b/tests/options-syntax.test
@@ -80,16 +80,21 @@ check_h "invalid -s argument: '-42'" -s -42
check_h "invalid -s argument: '1073741824'" -s 1073741824
check_h "invalid -I argument: '5'" -I 5
-cat > "$EXP" << '__EOF__'
-strace: must have PROG [ARGS] or -p PID
-Try 'strace -h' for more information.
-__EOF__
../zeroargc "$strace_exp" /bin/true 2> "$LOG" &&
dump_log_and_fail_with \
'zeroargc strace failed to handle the error properly'
-match_diff "$LOG" "$EXP" ||
- dump_log_and_fail_with \
- 'zeroargc strace failed to print expected diagnostics'
+cat > "$EXP" << __EOF__
+$strace_exp: must have PROG [ARGS] or -p PID
+Try '$strace_exp -h' for more information.
+__EOF__
+diff -u -- "$EXP" "$LOG" > /dev/null || {
+ cat > "$EXP" <<- '__EOF__'
+ strace: must have PROG [ARGS] or -p PID
+ Try 'strace -h' for more information.
+ __EOF__
+ match_diff "$LOG" "$EXP" \
+ "zeroargc $STRACE $args output mismatch"
+}
if [ -n "${UID-}" ]; then
if [ "${UID-}" = 0 ]; then
diff --git a/tests/prctl-seccomp-filter-v.c b/tests/prctl-seccomp-filter-v.c
index cfd5d3dd..7a65d898 100644
--- a/tests/prctl-seccomp-filter-v.c
+++ b/tests/prctl-seccomp-filter-v.c
@@ -114,7 +114,7 @@ main(void)
PRINT_DENY_SYSCALL(sync, EBUSY),
PRINT_DENY_SYSCALL(setsid, EPERM),
- printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)");
+ printf("BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)");
puts("]}) = 0");
puts("+++ exited with 0 +++");
diff --git a/tests/pure_executables.am b/tests/pure_executables.am
index 9dc532a6..2cae9ae5 100644
--- a/tests/pure_executables.am
+++ b/tests/pure_executables.am
@@ -123,6 +123,7 @@ PURE_EXECUTABLES = \
ipc_sem \
ipc_shm \
kcmp \
+ kcmp-y \
kexec_file_load \
kexec_load \
keyctl \
@@ -180,6 +181,17 @@ PURE_EXECUTABLES = \
netlink_sock_diag \
netlink_xfrm \
newfstatat \
+ nfnetlink_acct \
+ nfnetlink_cthelper \
+ nfnetlink_ctnetlink \
+ nfnetlink_ctnetlink_exp \
+ nfnetlink_cttimeout \
+ nfnetlink_nft_compat \
+ nfnetlink_nftables \
+ nfnetlink_ipset \
+ nfnetlink_osf \
+ nfnetlink_queue \
+ nfnetlink_ulog \
nlattr \
nlattr_crypto_user_alg \
nlattr_br_port_msg \
@@ -194,6 +206,8 @@ PURE_EXECUTABLES = \
nlattr_inet_diag_msg \
nlattr_inet_diag_req_compat \
nlattr_inet_diag_req_v2 \
+ nlattr_mdba_mdb_entry \
+ nlattr_mdba_router_port \
nlattr_ndmsg \
nlattr_ndtmsg \
nlattr_netconfmsg \
@@ -203,6 +217,8 @@ PURE_EXECUTABLES = \
nlattr_rtgenmsg \
nlattr_rtmsg \
nlattr_smc_diag_msg \
+ nlattr_tc_stats \
+ nlattr_tca_stab \
nlattr_tcamsg \
nlattr_tcmsg \
nlattr_unix_diag_msg \
@@ -283,6 +299,7 @@ PURE_EXECUTABLES = \
sched_xetscheduler \
sched_yield \
seccomp-filter \
+ seccomp_get_action_avail \
select \
semop \
sendfile \
diff --git a/tests/pure_executables.list b/tests/pure_executables.list
index dade57b0..d98b17db 100755
--- a/tests/pure_executables.list
+++ b/tests/pure_executables.list
@@ -122,6 +122,7 @@ ipc_msgbuf
ipc_sem
ipc_shm
kcmp
+kcmp-y
kexec_file_load
kexec_load
keyctl
@@ -179,6 +180,17 @@ netlink_selinux
netlink_sock_diag
netlink_xfrm
newfstatat
+nfnetlink_acct
+nfnetlink_cthelper
+nfnetlink_ctnetlink
+nfnetlink_ctnetlink_exp
+nfnetlink_cttimeout
+nfnetlink_nft_compat
+nfnetlink_nftables
+nfnetlink_ipset
+nfnetlink_osf
+nfnetlink_queue
+nfnetlink_ulog
nlattr
nlattr_crypto_user_alg
nlattr_br_port_msg
@@ -193,6 +205,8 @@ nlattr_ifla_xdp
nlattr_inet_diag_msg
nlattr_inet_diag_req_compat
nlattr_inet_diag_req_v2
+nlattr_mdba_mdb_entry
+nlattr_mdba_router_port
nlattr_ndmsg
nlattr_ndtmsg
nlattr_netconfmsg
@@ -202,6 +216,8 @@ nlattr_packet_diag_msg
nlattr_rtgenmsg
nlattr_rtmsg
nlattr_smc_diag_msg
+nlattr_tc_stats
+nlattr_tca_stab
nlattr_tcamsg
nlattr_tcmsg
nlattr_unix_diag_msg
@@ -282,6 +298,7 @@ sched_xetparam
sched_xetscheduler
sched_yield
seccomp-filter
+seccomp_get_action_avail
select
semop
sendfile
diff --git a/tests/seccomp-filter-v.c b/tests/seccomp-filter-v.c
index e419c6cb..34ab3b58 100644
--- a/tests/seccomp-filter-v.c
+++ b/tests/seccomp-filter-v.c
@@ -95,7 +95,7 @@ main(void)
tprintf("%s", "");
static const char kill_stmt_txt[] =
- "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL)";
+ "BPF_STMT(BPF_RET|BPF_K, SECCOMP_RET_KILL_THREAD)";
struct sock_filter *const filter =
tail_memdup(filter_c, sizeof(filter_c));
struct sock_filter *const big_filter =
@@ -136,7 +136,8 @@ main(void)
prog->filter = big_filter;
prog->len = BPF_MAXINSNS + 1;
tprintf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=[",
- "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe", prog->len);
+ "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc",
+ prog->len);
for (i = 0; i < BPF_MAXINSNS; ++i) {
if (i)
tprintf(", ");
diff --git a/tests/seccomp-filter.c b/tests/seccomp-filter.c
index 6e009823..7bc76560 100644
--- a/tests/seccomp-filter.c
+++ b/tests/seccomp-filter.c
@@ -55,12 +55,13 @@ main(void)
prog->len = N;
rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -1, prog);
printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, {len=%u, filter=%p})"
- " = %ld %s (%m)\n", "SECCOMP_FILTER_FLAG_TSYNC|0xfffffffe",
+ " = %ld %s (%m)\n",
+ "SECCOMP_FILTER_FLAG_TSYNC|SECCOMP_FILTER_FLAG_LOG|0xfffffffc",
prog->len, prog->filter, rc, errno2name());
- rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -2L, efault);
+ rc = syscall(__NR_seccomp, SECCOMP_SET_MODE_FILTER, -4L, efault);
printf("seccomp(SECCOMP_SET_MODE_FILTER, %s, %p) = %ld %s (%m)\n",
- "0xfffffffe /* SECCOMP_FILTER_FLAG_??? */",
+ "0xfffffffc /* SECCOMP_FILTER_FLAG_??? */",
efault, rc, errno2name());
puts("+++ exited with 0 +++");
diff --git a/tests/seccomp_get_action_avail.c b/tests/seccomp_get_action_avail.c
new file mode 100644
index 00000000..ed231e17
--- /dev/null
+++ b/tests/seccomp_get_action_avail.c
@@ -0,0 +1,125 @@
+/*
+ * Check decoding of seccomp SECCOMP_GET_ACTION_AVAIL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <asm/unistd.h>
+
+#ifdef __NR_seccomp
+
+# include <stdio.h>
+# include <stdint.h>
+# include <unistd.h>
+
+# ifdef HAVE_LINUX_SECCOMP_H
+# include <linux/seccomp.h>
+# endif
+
+# ifndef SECCOMP_GET_ACTION_AVAIL
+# define SECCOMP_GET_ACTION_AVAIL 2
+# endif
+
+static const char *errstr;
+
+static long
+k_seccomp(const kernel_ulong_t op, const kernel_ulong_t flags,
+ const kernel_ulong_t args)
+{
+ const long rc = syscall(__NR_seccomp, op, flags, args);
+ errstr = sprintrc(rc);
+ return rc;
+}
+
+int
+main(void)
+{
+ TAIL_ALLOC_OBJECT_CONST_PTR(uint32_t, act);
+ kernel_ulong_t op = (kernel_ulong_t) 0xfacefeed00000000ULL
+ | SECCOMP_GET_ACTION_AVAIL;
+ kernel_ulong_t flags = (kernel_ulong_t) 0xdeadbeef00000000ULL;
+ unsigned int i;
+
+ struct {
+ uint32_t val;
+ const char *str;
+ } actions [] = {
+ { 0, "SECCOMP_RET_KILL_THREAD" },
+# ifdef SECCOMP_RET_KILL_PROCESS
+ { ARG_STR(SECCOMP_RET_KILL_PROCESS) },
+# endif
+# ifdef SECCOMP_RET_TRAP
+ { ARG_STR(SECCOMP_RET_TRAP) },
+# endif
+# ifdef SECCOMP_RET_ERRNO
+ { ARG_STR(SECCOMP_RET_ERRNO) },
+# endif
+# ifdef SECCOMP_RET_TRACE
+ { ARG_STR(SECCOMP_RET_TRACE) },
+# endif
+# ifdef SECCOMP_RET_LOG
+ { ARG_STR(SECCOMP_RET_LOG) },
+# endif
+# ifdef SECCOMP_RET_ALLOW
+ { ARG_STR(SECCOMP_RET_ALLOW) },
+# endif
+ { 0xffffffff, "0xffffffff /* SECCOMP_RET_??? */" }
+ };
+
+ for (i = 0; i < ARRAY_SIZE(actions); ++i) {
+ *act = actions[i].val;
+ k_seccomp(op, flags, (uintptr_t) act);
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, [%s]) = %s\n",
+ actions[i].str, errstr);
+ }
+
+ *act = actions[0].val;
+
+ k_seccomp(op, flags, (uintptr_t) (act + 1));
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %p) = %s\n",
+ act + 1, errstr);
+
+ if (F8ILL_KULONG_SUPPORTED) {
+ k_seccomp(op, flags, f8ill_ptr_to_kulong(act));
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, 0, %#jx) = %s\n",
+ (uintmax_t) f8ill_ptr_to_kulong(act), errstr);
+ }
+
+ flags |= 0xcafef00d;
+ k_seccomp(op, flags, 0);
+ printf("seccomp(SECCOMP_GET_ACTION_AVAIL, %u, NULL) = %s\n",
+ (unsigned int) flags, errstr);
+
+ puts("+++ exited with 0 +++");
+ return 0;
+}
+
+#else
+
+SKIP_MAIN_UNDEFINED("__NR_seccomp")
+
+#endif
diff --git a/tests/seccomp_get_action_avail.gen.test b/tests/seccomp_get_action_avail.gen.test
new file mode 100755
index 00000000..49974510
--- /dev/null
+++ b/tests/seccomp_get_action_avail.gen.test
@@ -0,0 +1,4 @@
+#!/bin/sh -efu
+# Generated by ./tests/gen_tests.sh from ./tests/gen_tests.in (seccomp_get_action_avail -e trace=seccomp); do not edit.
+. "${srcdir=.}/init.sh"
+run_strace_match_diff -e trace=seccomp
diff --git a/tests/set_sigblock.c b/tests/set_sigblock.c
new file mode 100644
index 00000000..4786322c
--- /dev/null
+++ b/tests/set_sigblock.c
@@ -0,0 +1,53 @@
+/*
+ * Execute a command with the specified signal blocked/unblocked.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac < 4)
+ error_msg_and_fail("usage: set_sigblock 0|1 signum path...");
+
+ const int block = atoi(av[1]);
+ const int signum = atoi(av[2]);
+ sigset_t mask;
+
+ sigemptyset(&mask);
+ if (sigaddset(&mask, signum))
+ perror_msg_and_fail("sigaddset: %s", av[2]);
+ if (sigprocmask(block ? SIG_BLOCK : SIG_UNBLOCK, &mask, NULL))
+ perror_msg_and_fail("sigprocmask");
+
+ execvp(av[3], av + 3);
+ perror_msg_and_fail("execvp: %s", av[3]);
+}
diff --git a/tests/set_sigign.c b/tests/set_sigign.c
new file mode 100644
index 00000000..0319fed3
--- /dev/null
+++ b/tests/set_sigign.c
@@ -0,0 +1,49 @@
+/*
+ * Execute a command with a signal handler set to SIG_IGN/SIG_DFL.
+ *
+ * Copyright (c) 2017 Dmitry V. Levin <ldv@altlinux.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "tests.h"
+#include <signal.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int
+main(int ac, char **av)
+{
+ if (ac < 4)
+ error_msg_and_fail("usage: set_sigign 0|1 signum path...");
+
+ const int ign = atoi(av[1]);
+ const int signum = atoi(av[2]);
+
+ if (signal(signum, ign ? SIG_IGN : SIG_DFL) == SIG_ERR)
+ perror_msg_and_fail("signal: %s", av[2]);
+
+ execvp(av[3], av + 3);
+ perror_msg_and_fail("execvp: %s", av[3]);
+}
diff --git a/tests/sigblock.test b/tests/sigblock.test
new file mode 100755
index 00000000..ddbe2dea
--- /dev/null
+++ b/tests/sigblock.test
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Check signal mask transparency.
+# Starting with commit v4.17-5-gf83b49b strace is expected
+# to forward the signal mask to tracees unchanged.
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../list_sigaction_signum > /dev/null
+saved_STRACE="$STRACE"
+
+for sig in $(../list_sigaction_signum); do
+ for block in 0 1; do
+ set_cmd="../set_sigblock $block $sig"
+ check_cmd="../check_sigblock $block $sig"
+ run_prog $set_cmd $check_cmd
+ STRACE="$set_cmd $saved_STRACE"
+ for i in '' -I1 -I2 -I3 -I4; do
+ run_strace $i -enone $check_cmd
+ done
+ done
+done
diff --git a/tests/sigign.test b/tests/sigign.test
new file mode 100755
index 00000000..3164e72e
--- /dev/null
+++ b/tests/sigign.test
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# Check signal disposition transparency.
+# Starting with commit v4.17-8-ge97a66f strace is expected
+# to forward the signal disposition to tracees unchanged.
+
+. "${srcdir=.}/init.sh"
+
+run_prog ../list_sigaction_signum > /dev/null
+saved_STRACE="$STRACE"
+
+for sig in $(../list_sigaction_signum); do
+ for ign in 0 1; do
+ set_cmd="../set_sigign $ign $sig"
+ check_cmd="../check_sigign $ign $sig"
+ run_prog $set_cmd $check_cmd
+ STRACE="$set_cmd $saved_STRACE"
+ for i in '' -I1 -I2 -I3 -I4; do
+ run_strace $i -enone $check_cmd
+ done
+ done
+done
diff --git a/tests/test_nlattr.h b/tests/test_nlattr.h
index 048d5475..43f467ff 100644
--- a/tests/test_nlattr.h
+++ b/tests/test_nlattr.h
@@ -203,14 +203,75 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
printf("]")); \
} while (0)
-#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \
- init_msg_, print_msg_, \
- nla_type_, pattern_, obj_, ...) \
+#define TEST_NESTED_NLATTR_OBJECT_EX_(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, nla_type_str_, \
+ pattern_, obj_, depth_, ...) \
do { \
const unsigned int plen = \
sizeof(obj_) - 1 > DEFAULT_STRLEN \
? DEFAULT_STRLEN : (int) sizeof(obj_) - 1; \
/* len < sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ plen, (pattern_), plen, \
+ print_quoted_hex((pattern_), plen); \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ /* short read of sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ sizeof(obj_), \
+ (pattern_), sizeof(obj_) - 1, \
+ printf("%p", RTA_DATA(TEST_NLATTR_nla)); \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ /* sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN * depth_, \
+ (hdrlen_) + NLA_HDRLEN * depth_, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), (nla_type_str_), \
+ sizeof(obj_), \
+ &(obj_), sizeof(obj_), \
+ __VA_ARGS__; \
+ size_t i; \
+ for (i = 0; i < depth_; ++i) \
+ printf("}")); \
+ } while (0)
+
+#define TEST_NESTED_NLATTR_OBJECT_EX(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, \
+ depth_, ...) \
+ TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ (pattern_), (obj_), (depth_), \
+ __VA_ARGS__)
+
+#define TEST_NESTED_NLATTR_OBJECT(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, ...) \
+ TEST_NESTED_NLATTR_OBJECT_EX_((fd_), (nlh0_), (hdrlen_), \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ (pattern_), (obj_), 1, \
+ __VA_ARGS__)
+
+#define TEST_NESTED_NLATTR_ARRAY(fd_, nlh0_, hdrlen_, \
+ init_msg_, print_msg_, \
+ nla_type_, pattern_, obj_, print_elem_)\
+ do { \
+ const unsigned int plen = \
+ sizeof((obj_)[0]) - 1 > DEFAULT_STRLEN \
+ ? DEFAULT_STRLEN : (int) sizeof((obj_)[0]) - 1; \
+ /* len < sizeof((obj_)[0]) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
(init_msg_), (print_msg_), \
@@ -218,15 +279,36 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
plen, (pattern_), plen, \
print_quoted_hex((pattern_), plen); \
printf("}")); \
+ /* sizeof((obj_)[0]) < len < sizeof(obj_) */ \
+ TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
+ (hdrlen_) + NLA_HDRLEN, \
+ (init_msg_), (print_msg_), \
+ (nla_type_), #nla_type_, \
+ sizeof(obj_) - 1, \
+ &(obj_), sizeof(obj_) - 1, \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf("]}")); \
/* short read of sizeof(obj_) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
(init_msg_), (print_msg_), \
(nla_type_), #nla_type_, \
sizeof(obj_), \
- (pattern_), sizeof(obj_) - 1, \
- printf("%p}", \
- RTA_DATA(TEST_NLATTR_nla))); \
+ &(obj_), sizeof(obj_) - 1, \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_) - 1; ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf(", %p]}", \
+ RTA_DATA(TEST_NLATTR_nla) \
+ + sizeof((obj_)[0]))); \
/* sizeof(obj_) */ \
TEST_NLATTR_((fd_), (nlh0_) - NLA_HDRLEN, \
(hdrlen_) + NLA_HDRLEN, \
@@ -234,6 +316,11 @@ print_nlattr(const unsigned int nla_len, const char *const nla_type)
(nla_type_), #nla_type_, \
sizeof(obj_), \
&(obj_), sizeof(obj_), \
- __VA_ARGS__, \
- printf("}")); \
+ printf("["); \
+ size_t i; \
+ for (i = 0; i < ARRAY_SIZE(obj_); ++i) { \
+ if (i) printf(", "); \
+ (print_elem_)(&(obj_)[i]); \
+ } \
+ printf("]}")); \
} while (0)
diff --git a/xlat/Makemodule.am b/xlat/Makemodule.am
index 357af0a6..cfcc5714 100644
--- a/xlat/Makemodule.am
+++ b/xlat/Makemodule.am
@@ -1,5 +1,5 @@
-XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/at_statx_sync_types.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_flags.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsockipoptions.in xlat/getsockipv6options.in xlat/hci_channels.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipccalls.in xlat/itimer_which.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/name_to_handle_at_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rwf_flags.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_states.in xlat/sock_type_flags.in xlat/socketcalls.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in
-XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_flags.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsockipoptions.h xlat/getsockipv6options.h xlat/hci_channels.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipccalls.h xlat/itimer_which.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/name_to_handle_at_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_states.h xlat/sock_type_flags.h xlat/socketcalls.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
+XLAT_INPUT_FILES = xlat/access_flags.in xlat/addrfams.in xlat/adjtimex_modes.in xlat/adjtimex_state.in xlat/adjtimex_status.in xlat/advise.in xlat/af_packet_types.in xlat/archvals.in xlat/arp_hardware_types.in xlat/at_flags.in xlat/at_statx_sync_types.in xlat/atomic_ops.in xlat/audit_arch.in xlat/baud_options.in xlat/blkpg_ops.in xlat/bootflags1.in xlat/bootflags2.in xlat/bootflags3.in xlat/bpf_attach_flags.in xlat/bpf_attach_type.in xlat/bpf_class.in xlat/bpf_commands.in xlat/bpf_map_flags.in xlat/bpf_map_types.in xlat/bpf_map_update_elem_flags.in xlat/bpf_miscop.in xlat/bpf_mode.in xlat/bpf_op_alu.in xlat/bpf_op_jmp.in xlat/bpf_prog_flags.in xlat/bpf_prog_types.in xlat/bpf_rval.in xlat/bpf_size.in xlat/bpf_src.in xlat/bsg_flags.in xlat/bsg_protocol.in xlat/bsg_subprotocol.in xlat/bt_protocols.in xlat/btrfs_balance_args.in xlat/btrfs_balance_ctl_cmds.in xlat/btrfs_balance_flags.in xlat/btrfs_balance_state.in xlat/btrfs_compress_types.in xlat/btrfs_defrag_flags.in xlat/btrfs_dev_replace_cmds.in xlat/btrfs_dev_replace_results.in xlat/btrfs_dev_replace_state.in xlat/btrfs_dev_stats_flags.in xlat/btrfs_dev_stats_values.in xlat/btrfs_features_compat.in xlat/btrfs_features_compat_ro.in xlat/btrfs_features_incompat.in xlat/btrfs_key_types.in xlat/btrfs_qgroup_ctl_cmds.in xlat/btrfs_qgroup_inherit_flags.in xlat/btrfs_qgroup_limit_flags.in xlat/btrfs_qgroup_status_flags.in xlat/btrfs_scrub_flags.in xlat/btrfs_send_flags.in xlat/btrfs_snap_flags_v2.in xlat/btrfs_space_info_flags.in xlat/btrfs_tree_objectids.in xlat/cacheflush_scope.in xlat/cap.in xlat/cap_mask0.in xlat/cap_mask1.in xlat/cap_version.in xlat/clockflags.in xlat/clocknames.in xlat/clone_flags.in xlat/cpuclocknames.in xlat/crypto_nl_attrs.in xlat/dcb_commands.in xlat/delete_module_flags.in xlat/dirent_types.in xlat/dm_flags.in xlat/efd_flags.in xlat/epollctls.in xlat/epollevents.in xlat/epollflags.in xlat/ethernet_protocols.in xlat/evdev_abs.in xlat/evdev_autorepeat.in xlat/evdev_ev.in xlat/evdev_ff_status.in xlat/evdev_ff_types.in xlat/evdev_keycode.in xlat/evdev_leds.in xlat/evdev_misc.in xlat/evdev_mtslots.in xlat/evdev_prop.in xlat/evdev_relative_axes.in xlat/evdev_snd.in xlat/evdev_switch.in xlat/evdev_sync.in xlat/f_owner_types.in xlat/f_seals.in xlat/falloc_flags.in xlat/fan_classes.in xlat/fan_event_flags.in xlat/fan_init_flags.in xlat/fan_mark_flags.in xlat/fcntl64cmds.in xlat/fcntlcmds.in xlat/fdflags.in xlat/fib_rule_actions.in xlat/fib_rule_flags.in xlat/fiemap_extent_flags.in xlat/fiemap_flags.in xlat/flockcmds.in xlat/fsmagic.in xlat/futexops.in xlat/futexwakecmps.in xlat/futexwakeops.in xlat/getrandom_flags.in xlat/getsockipoptions.in xlat/getsockipv6options.in xlat/hci_channels.in xlat/hw_breakpoint_len.in xlat/hw_breakpoint_type.in xlat/icmpfilterflags.in xlat/if_dqblk_valid.in xlat/if_dqinfo_flags.in xlat/if_dqinfo_valid.in xlat/ifaddrflags.in xlat/iffflags.in xlat/inet_diag_attrs.in xlat/inet_diag_bytecodes.in xlat/inet_diag_extended_flags.in xlat/inet_diag_req_attrs.in xlat/inet_protocols.in xlat/inotify_flags.in xlat/inotify_init_flags.in xlat/ioctl_dirs.in xlat/ioprio_class.in xlat/ioprio_who.in xlat/ip_cmsg_types.in xlat/ip_type_of_services.in xlat/ipc_msg_flags.in xlat/ipccalls.in xlat/itimer_which.in xlat/kcmp_types.in xlat/kexec_arch_values.in xlat/kexec_file_load_flags.in xlat/kexec_load_flags.in xlat/key_perms.in xlat/key_reqkeys.in xlat/key_spec.in xlat/keyctl_commands.in xlat/lockfcmds.in xlat/loop_cmds.in xlat/loop_crypt_type_options.in xlat/loop_flags_options.in xlat/lwtunnel_encap_types.in xlat/madvise_cmds.in xlat/mbindflags.in xlat/mctl_sync.in xlat/mdb_flags.in xlat/mdb_states.in xlat/membarrier_cmds.in xlat/memfd_create_flags.in xlat/mempolicyflags.in xlat/mlock_flags.in xlat/mlockall_flags.in xlat/mmap_flags.in xlat/mmap_prot.in xlat/modem_flags.in xlat/modetypes.in xlat/module_init_flags.in xlat/mount_flags.in xlat/move_pages_flags.in xlat/mq_attr_flags.in xlat/mremap_flags.in xlat/msg_flags.in xlat/msgctl_flags.in xlat/mtd_file_mode_options.in xlat/mtd_flags_options.in xlat/mtd_mode_options.in xlat/mtd_nandecc_options.in xlat/mtd_otp_options.in xlat/mtd_type_options.in xlat/multicast_router_types.in xlat/name_to_handle_at_flags.in xlat/neighbor_cache_entry_flags.in xlat/neighbor_cache_entry_states.in xlat/netlink_ack_flags.in xlat/netlink_delete_flags.in xlat/netlink_diag_attrs.in xlat/netlink_diag_show.in xlat/netlink_flags.in xlat/netlink_get_flags.in xlat/netlink_new_flags.in xlat/netlink_protocols.in xlat/netlink_socket_flags.in xlat/netlink_states.in xlat/netlink_types.in xlat/nf_acct_msg_types.in xlat/nf_cthelper_msg_types.in xlat/nf_ctnetlink_exp_msg_types.in xlat/nf_ctnetlink_msg_types.in xlat/nf_cttimeout_msg_types.in xlat/nf_ipset_msg_types.in xlat/nf_nft_compat_msg_types.in xlat/nf_nftables_msg_types.in xlat/nf_osf_msg_types.in xlat/nf_queue_msg_types.in xlat/nf_ulog_msg_types.in xlat/nl_audit_types.in xlat/nl_crypto_types.in xlat/nl_netfilter_msg_types.in xlat/nl_netfilter_subsys_ids.in xlat/nl_route_types.in xlat/nl_selinux_types.in xlat/nl_sock_diag_types.in xlat/nl_xfrm_types.in xlat/nlmsgerr_attrs.in xlat/notifyflags.in xlat/nt_descriptor_types.in xlat/open_access_modes.in xlat/open_mode_flags.in xlat/packet_diag_attrs.in xlat/packet_diag_info_flags.in xlat/packet_diag_show.in xlat/packet_mreq_type.in xlat/perf_attr_size.in xlat/perf_branch_sample_type.in xlat/perf_event_open_flags.in xlat/perf_event_read_format.in xlat/perf_event_sample_format.in xlat/perf_hw_cache_id.in xlat/perf_hw_cache_op_id.in xlat/perf_hw_cache_op_result_id.in xlat/perf_hw_id.in xlat/perf_sw_ids.in xlat/perf_type_id.in xlat/personality_flags.in xlat/personality_types.in xlat/pkey_access.in xlat/policies.in xlat/pollflags.in xlat/pr_cap_ambient.in xlat/pr_dumpable.in xlat/pr_fp_mode.in xlat/pr_mce_kill.in xlat/pr_mce_kill_policy.in xlat/pr_set_mm.in xlat/pr_tsc.in xlat/pr_unalign_flags.in xlat/prctl_options.in xlat/priorities.in xlat/ptp_flags_options.in xlat/ptrace_cmds.in xlat/ptrace_events.in xlat/ptrace_peeksiginfo_flags.in xlat/ptrace_setoptions_flags.in xlat/quota_formats.in xlat/quotacmds.in xlat/quotatypes.in xlat/rename_flags.in xlat/resource_flags.in xlat/resources.in xlat/route_nexthop_flags.in xlat/routing_flags.in xlat/routing_protocols.in xlat/routing_scopes.in xlat/routing_table_ids.in xlat/routing_types.in xlat/rtnl_addr_attrs.in xlat/rtnl_addrlabel_attrs.in xlat/rtnl_dcb_attrs.in xlat/rtnl_ifla_brport_attrs.in xlat/rtnl_ifla_info_attrs.in xlat/rtnl_ifla_port_attrs.in xlat/rtnl_ifla_vf_port_attrs.in xlat/rtnl_ifla_xdp_attrs.in xlat/rtnl_link_attrs.in xlat/rtnl_mdb_attrs.in xlat/rtnl_mdba_mdb_attrs.in xlat/rtnl_mdba_mdb_eattr_attrs.in xlat/rtnl_mdba_mdb_entry_attrs.in xlat/rtnl_mdba_router_attrs.in xlat/rtnl_mdba_router_pattr_attrs.in xlat/rtnl_neigh_attrs.in xlat/rtnl_neightbl_attrs.in xlat/rtnl_neightbl_parms_attrs.in xlat/rtnl_netconf_attrs.in xlat/rtnl_nsid_attrs.in xlat/rtnl_route_attrs.in xlat/rtnl_rta_metrics_attrs.in xlat/rtnl_rule_attrs.in xlat/rtnl_tc_action_attrs.in xlat/rtnl_tc_attrs.in xlat/rtnl_tca_stab_attrs.in xlat/rtnl_tca_stats_attrs.in xlat/rwf_flags.in xlat/sa_handler_values.in xlat/sched_flags.in xlat/schedulers.in xlat/scmvals.in xlat/scsi_sg_commands.in xlat/secbits.in xlat/seccomp_filter_flags.in xlat/seccomp_mode.in xlat/seccomp_ops.in xlat/seccomp_ret_action.in xlat/semctl_flags.in xlat/semop_flags.in xlat/setns_types.in xlat/setsockipoptions.in xlat/setsockipv6options.in xlat/sfd_flags.in xlat/sg_io_dxfer_direction.in xlat/sg_io_flags.in xlat/sg_io_info.in xlat/sg_scsi_reset.in xlat/shm_flags.in xlat/shm_resource_flags.in xlat/shmctl_flags.in xlat/shutdown_modes.in xlat/sigact_flags.in xlat/sigaltstack_flags.in xlat/sigbus_codes.in xlat/sigchld_codes.in xlat/sigemt_codes.in xlat/sigev_value.in xlat/sigfpe_codes.in xlat/sigill_codes.in xlat/siginfo_codes.in xlat/sigpoll_codes.in xlat/sigprocmaskcmds.in xlat/sigprof_codes.in xlat/sigsegv_codes.in xlat/sigsys_codes.in xlat/sigtrap_codes.in xlat/skf_ad.in xlat/smc_diag_attrs.in xlat/smc_diag_extended_flags.in xlat/smc_link_group_roles.in xlat/smc_states.in xlat/sock_type_flags.in xlat/socketcalls.in xlat/socketlayers.in xlat/sockipoptions.in xlat/sockipv6options.in xlat/sockipxoptions.in xlat/sockoptions.in xlat/sockpacketoptions.in xlat/sockrawoptions.in xlat/socksctpoptions.in xlat/socktcpoptions.in xlat/socktypes.in xlat/splice_flags.in xlat/sram_alloc_flags.in xlat/statfs_flags.in xlat/statx_attrs.in xlat/statx_masks.in xlat/swap_flags.in xlat/sync_file_range_flags.in xlat/sysctl_kern.in xlat/sysctl_net.in xlat/sysctl_net_core.in xlat/sysctl_net_ipv4.in xlat/sysctl_net_ipv4_conf.in xlat/sysctl_net_ipv4_route.in xlat/sysctl_net_ipv6.in xlat/sysctl_net_ipv6_route.in xlat/sysctl_net_unix.in xlat/sysctl_root.in xlat/sysctl_vm.in xlat/syslog_action_type.in xlat/sysmips_operations.in xlat/tcflsh_options.in xlat/tcp_state_flags.in xlat/tcp_states.in xlat/tcxonc_options.in xlat/timerfdflags.in xlat/ubi_volume_props.in xlat/ubi_volume_types.in xlat/uffd_api_features.in xlat/uffd_api_flags.in xlat/uffd_copy_flags.in xlat/uffd_flags.in xlat/uffd_register_ioctl_flags.in xlat/uffd_register_mode_flags.in xlat/uffd_zeropage_flags.in xlat/umount_flags.in xlat/unix_diag_attrs.in xlat/unix_diag_show.in xlat/unshare_flags.in xlat/usagewho.in xlat/v4l2_buf_flags.in xlat/v4l2_buf_types.in xlat/v4l2_capture_modes.in xlat/v4l2_colorspaces.in xlat/v4l2_control_classes.in xlat/v4l2_control_flags.in xlat/v4l2_control_ids.in xlat/v4l2_control_types.in xlat/v4l2_device_capabilities_flags.in xlat/v4l2_fields.in xlat/v4l2_format_description_flags.in xlat/v4l2_frameinterval_types.in xlat/v4l2_framesize_types.in xlat/v4l2_input_types.in xlat/v4l2_memories.in xlat/v4l2_sliced_flags.in xlat/v4l2_streaming_capabilities.in xlat/v4l2_tuner_audmodes.in xlat/v4l2_tuner_capabilities.in xlat/v4l2_tuner_rxsubchanses.in xlat/v4l2_tuner_types.in xlat/v4l2_vbi_flags.in xlat/wait4_options.in xlat/waitid_types.in xlat/whence_codes.in xlat/xattrflags.in xlat/xdp_flags.in xlat/xfs_dqblk_flags.in xlat/xfs_quota_flags.in
+XLAT_HEADER_FILES = xlat/access_flags.h xlat/addrfams.h xlat/adjtimex_modes.h xlat/adjtimex_state.h xlat/adjtimex_status.h xlat/advise.h xlat/af_packet_types.h xlat/archvals.h xlat/arp_hardware_types.h xlat/at_flags.h xlat/at_statx_sync_types.h xlat/atomic_ops.h xlat/audit_arch.h xlat/baud_options.h xlat/blkpg_ops.h xlat/bootflags1.h xlat/bootflags2.h xlat/bootflags3.h xlat/bpf_attach_flags.h xlat/bpf_attach_type.h xlat/bpf_class.h xlat/bpf_commands.h xlat/bpf_map_flags.h xlat/bpf_map_types.h xlat/bpf_map_update_elem_flags.h xlat/bpf_miscop.h xlat/bpf_mode.h xlat/bpf_op_alu.h xlat/bpf_op_jmp.h xlat/bpf_prog_flags.h xlat/bpf_prog_types.h xlat/bpf_rval.h xlat/bpf_size.h xlat/bpf_src.h xlat/bsg_flags.h xlat/bsg_protocol.h xlat/bsg_subprotocol.h xlat/bt_protocols.h xlat/btrfs_balance_args.h xlat/btrfs_balance_ctl_cmds.h xlat/btrfs_balance_flags.h xlat/btrfs_balance_state.h xlat/btrfs_compress_types.h xlat/btrfs_defrag_flags.h xlat/btrfs_dev_replace_cmds.h xlat/btrfs_dev_replace_results.h xlat/btrfs_dev_replace_state.h xlat/btrfs_dev_stats_flags.h xlat/btrfs_dev_stats_values.h xlat/btrfs_features_compat.h xlat/btrfs_features_compat_ro.h xlat/btrfs_features_incompat.h xlat/btrfs_key_types.h xlat/btrfs_qgroup_ctl_cmds.h xlat/btrfs_qgroup_inherit_flags.h xlat/btrfs_qgroup_limit_flags.h xlat/btrfs_qgroup_status_flags.h xlat/btrfs_scrub_flags.h xlat/btrfs_send_flags.h xlat/btrfs_snap_flags_v2.h xlat/btrfs_space_info_flags.h xlat/btrfs_tree_objectids.h xlat/cacheflush_scope.h xlat/cap.h xlat/cap_mask0.h xlat/cap_mask1.h xlat/cap_version.h xlat/clockflags.h xlat/clocknames.h xlat/clone_flags.h xlat/cpuclocknames.h xlat/crypto_nl_attrs.h xlat/dcb_commands.h xlat/delete_module_flags.h xlat/dirent_types.h xlat/dm_flags.h xlat/efd_flags.h xlat/epollctls.h xlat/epollevents.h xlat/epollflags.h xlat/ethernet_protocols.h xlat/evdev_abs.h xlat/evdev_autorepeat.h xlat/evdev_ev.h xlat/evdev_ff_status.h xlat/evdev_ff_types.h xlat/evdev_keycode.h xlat/evdev_leds.h xlat/evdev_misc.h xlat/evdev_mtslots.h xlat/evdev_prop.h xlat/evdev_relative_axes.h xlat/evdev_snd.h xlat/evdev_switch.h xlat/evdev_sync.h xlat/f_owner_types.h xlat/f_seals.h xlat/falloc_flags.h xlat/fan_classes.h xlat/fan_event_flags.h xlat/fan_init_flags.h xlat/fan_mark_flags.h xlat/fcntl64cmds.h xlat/fcntlcmds.h xlat/fdflags.h xlat/fib_rule_actions.h xlat/fib_rule_flags.h xlat/fiemap_extent_flags.h xlat/fiemap_flags.h xlat/flockcmds.h xlat/fsmagic.h xlat/futexops.h xlat/futexwakecmps.h xlat/futexwakeops.h xlat/getrandom_flags.h xlat/getsockipoptions.h xlat/getsockipv6options.h xlat/hci_channels.h xlat/hw_breakpoint_len.h xlat/hw_breakpoint_type.h xlat/icmpfilterflags.h xlat/if_dqblk_valid.h xlat/if_dqinfo_flags.h xlat/if_dqinfo_valid.h xlat/ifaddrflags.h xlat/iffflags.h xlat/inet_diag_attrs.h xlat/inet_diag_bytecodes.h xlat/inet_diag_extended_flags.h xlat/inet_diag_req_attrs.h xlat/inet_protocols.h xlat/inotify_flags.h xlat/inotify_init_flags.h xlat/ioctl_dirs.h xlat/ioprio_class.h xlat/ioprio_who.h xlat/ip_cmsg_types.h xlat/ip_type_of_services.h xlat/ipc_msg_flags.h xlat/ipccalls.h xlat/itimer_which.h xlat/kcmp_types.h xlat/kexec_arch_values.h xlat/kexec_file_load_flags.h xlat/kexec_load_flags.h xlat/key_perms.h xlat/key_reqkeys.h xlat/key_spec.h xlat/keyctl_commands.h xlat/lockfcmds.h xlat/loop_cmds.h xlat/loop_crypt_type_options.h xlat/loop_flags_options.h xlat/lwtunnel_encap_types.h xlat/madvise_cmds.h xlat/mbindflags.h xlat/mctl_sync.h xlat/mdb_flags.h xlat/mdb_states.h xlat/membarrier_cmds.h xlat/memfd_create_flags.h xlat/mempolicyflags.h xlat/mlock_flags.h xlat/mlockall_flags.h xlat/mmap_flags.h xlat/mmap_prot.h xlat/modem_flags.h xlat/modetypes.h xlat/module_init_flags.h xlat/mount_flags.h xlat/move_pages_flags.h xlat/mq_attr_flags.h xlat/mremap_flags.h xlat/msg_flags.h xlat/msgctl_flags.h xlat/mtd_file_mode_options.h xlat/mtd_flags_options.h xlat/mtd_mode_options.h xlat/mtd_nandecc_options.h xlat/mtd_otp_options.h xlat/mtd_type_options.h xlat/multicast_router_types.h xlat/name_to_handle_at_flags.h xlat/neighbor_cache_entry_flags.h xlat/neighbor_cache_entry_states.h xlat/netlink_ack_flags.h xlat/netlink_delete_flags.h xlat/netlink_diag_attrs.h xlat/netlink_diag_show.h xlat/netlink_flags.h xlat/netlink_get_flags.h xlat/netlink_new_flags.h xlat/netlink_protocols.h xlat/netlink_socket_flags.h xlat/netlink_states.h xlat/netlink_types.h xlat/nf_acct_msg_types.h xlat/nf_cthelper_msg_types.h xlat/nf_ctnetlink_exp_msg_types.h xlat/nf_ctnetlink_msg_types.h xlat/nf_cttimeout_msg_types.h xlat/nf_ipset_msg_types.h xlat/nf_nft_compat_msg_types.h xlat/nf_nftables_msg_types.h xlat/nf_osf_msg_types.h xlat/nf_queue_msg_types.h xlat/nf_ulog_msg_types.h xlat/nl_audit_types.h xlat/nl_crypto_types.h xlat/nl_netfilter_msg_types.h xlat/nl_netfilter_subsys_ids.h xlat/nl_route_types.h xlat/nl_selinux_types.h xlat/nl_sock_diag_types.h xlat/nl_xfrm_types.h xlat/nlmsgerr_attrs.h xlat/notifyflags.h xlat/nt_descriptor_types.h xlat/open_access_modes.h xlat/open_mode_flags.h xlat/packet_diag_attrs.h xlat/packet_diag_info_flags.h xlat/packet_diag_show.h xlat/packet_mreq_type.h xlat/perf_attr_size.h xlat/perf_branch_sample_type.h xlat/perf_event_open_flags.h xlat/perf_event_read_format.h xlat/perf_event_sample_format.h xlat/perf_hw_cache_id.h xlat/perf_hw_cache_op_id.h xlat/perf_hw_cache_op_result_id.h xlat/perf_hw_id.h xlat/perf_sw_ids.h xlat/perf_type_id.h xlat/personality_flags.h xlat/personality_types.h xlat/pkey_access.h xlat/policies.h xlat/pollflags.h xlat/pr_cap_ambient.h xlat/pr_dumpable.h xlat/pr_fp_mode.h xlat/pr_mce_kill.h xlat/pr_mce_kill_policy.h xlat/pr_set_mm.h xlat/pr_tsc.h xlat/pr_unalign_flags.h xlat/prctl_options.h xlat/priorities.h xlat/ptp_flags_options.h xlat/ptrace_cmds.h xlat/ptrace_events.h xlat/ptrace_peeksiginfo_flags.h xlat/ptrace_setoptions_flags.h xlat/quota_formats.h xlat/quotacmds.h xlat/quotatypes.h xlat/rename_flags.h xlat/resource_flags.h xlat/resources.h xlat/route_nexthop_flags.h xlat/routing_flags.h xlat/routing_protocols.h xlat/routing_scopes.h xlat/routing_table_ids.h xlat/routing_types.h xlat/rtnl_addr_attrs.h xlat/rtnl_addrlabel_attrs.h xlat/rtnl_dcb_attrs.h xlat/rtnl_ifla_brport_attrs.h xlat/rtnl_ifla_info_attrs.h xlat/rtnl_ifla_port_attrs.h xlat/rtnl_ifla_vf_port_attrs.h xlat/rtnl_ifla_xdp_attrs.h xlat/rtnl_link_attrs.h xlat/rtnl_mdb_attrs.h xlat/rtnl_mdba_mdb_attrs.h xlat/rtnl_mdba_mdb_eattr_attrs.h xlat/rtnl_mdba_mdb_entry_attrs.h xlat/rtnl_mdba_router_attrs.h xlat/rtnl_mdba_router_pattr_attrs.h xlat/rtnl_neigh_attrs.h xlat/rtnl_neightbl_attrs.h xlat/rtnl_neightbl_parms_attrs.h xlat/rtnl_netconf_attrs.h xlat/rtnl_nsid_attrs.h xlat/rtnl_route_attrs.h xlat/rtnl_rta_metrics_attrs.h xlat/rtnl_rule_attrs.h xlat/rtnl_tc_action_attrs.h xlat/rtnl_tc_attrs.h xlat/rtnl_tca_stab_attrs.h xlat/rtnl_tca_stats_attrs.h xlat/rwf_flags.h xlat/sa_handler_values.h xlat/sched_flags.h xlat/schedulers.h xlat/scmvals.h xlat/scsi_sg_commands.h xlat/secbits.h xlat/seccomp_filter_flags.h xlat/seccomp_mode.h xlat/seccomp_ops.h xlat/seccomp_ret_action.h xlat/semctl_flags.h xlat/semop_flags.h xlat/setns_types.h xlat/setsockipoptions.h xlat/setsockipv6options.h xlat/sfd_flags.h xlat/sg_io_dxfer_direction.h xlat/sg_io_flags.h xlat/sg_io_info.h xlat/sg_scsi_reset.h xlat/shm_flags.h xlat/shm_resource_flags.h xlat/shmctl_flags.h xlat/shutdown_modes.h xlat/sigact_flags.h xlat/sigaltstack_flags.h xlat/sigbus_codes.h xlat/sigchld_codes.h xlat/sigemt_codes.h xlat/sigev_value.h xlat/sigfpe_codes.h xlat/sigill_codes.h xlat/siginfo_codes.h xlat/sigpoll_codes.h xlat/sigprocmaskcmds.h xlat/sigprof_codes.h xlat/sigsegv_codes.h xlat/sigsys_codes.h xlat/sigtrap_codes.h xlat/skf_ad.h xlat/smc_diag_attrs.h xlat/smc_diag_extended_flags.h xlat/smc_link_group_roles.h xlat/smc_states.h xlat/sock_type_flags.h xlat/socketcalls.h xlat/socketlayers.h xlat/sockipoptions.h xlat/sockipv6options.h xlat/sockipxoptions.h xlat/sockoptions.h xlat/sockpacketoptions.h xlat/sockrawoptions.h xlat/socksctpoptions.h xlat/socktcpoptions.h xlat/socktypes.h xlat/splice_flags.h xlat/sram_alloc_flags.h xlat/statfs_flags.h xlat/statx_attrs.h xlat/statx_masks.h xlat/swap_flags.h xlat/sync_file_range_flags.h xlat/sysctl_kern.h xlat/sysctl_net.h xlat/sysctl_net_core.h xlat/sysctl_net_ipv4.h xlat/sysctl_net_ipv4_conf.h xlat/sysctl_net_ipv4_route.h xlat/sysctl_net_ipv6.h xlat/sysctl_net_ipv6_route.h xlat/sysctl_net_unix.h xlat/sysctl_root.h xlat/sysctl_vm.h xlat/syslog_action_type.h xlat/sysmips_operations.h xlat/tcflsh_options.h xlat/tcp_state_flags.h xlat/tcp_states.h xlat/tcxonc_options.h xlat/timerfdflags.h xlat/ubi_volume_props.h xlat/ubi_volume_types.h xlat/uffd_api_features.h xlat/uffd_api_flags.h xlat/uffd_copy_flags.h xlat/uffd_flags.h xlat/uffd_register_ioctl_flags.h xlat/uffd_register_mode_flags.h xlat/uffd_zeropage_flags.h xlat/umount_flags.h xlat/unix_diag_attrs.h xlat/unix_diag_show.h xlat/unshare_flags.h xlat/usagewho.h xlat/v4l2_buf_flags.h xlat/v4l2_buf_types.h xlat/v4l2_capture_modes.h xlat/v4l2_colorspaces.h xlat/v4l2_control_classes.h xlat/v4l2_control_flags.h xlat/v4l2_control_ids.h xlat/v4l2_control_types.h xlat/v4l2_device_capabilities_flags.h xlat/v4l2_fields.h xlat/v4l2_format_description_flags.h xlat/v4l2_frameinterval_types.h xlat/v4l2_framesize_types.h xlat/v4l2_input_types.h xlat/v4l2_memories.h xlat/v4l2_sliced_flags.h xlat/v4l2_streaming_capabilities.h xlat/v4l2_tuner_audmodes.h xlat/v4l2_tuner_capabilities.h xlat/v4l2_tuner_rxsubchanses.h xlat/v4l2_tuner_types.h xlat/v4l2_vbi_flags.h xlat/wait4_options.h xlat/waitid_types.h xlat/whence_codes.h xlat/xattrflags.h xlat/xdp_flags.h xlat/xfs_dqblk_flags.h xlat/xfs_quota_flags.h
$(top_srcdir)/xlat/access_flags.h: $(top_srcdir)/xlat/access_flags.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/addrfams.h: $(top_srcdir)/xlat/addrfams.in $(top_srcdir)/xlat/gen.sh
@@ -314,6 +314,10 @@ $(top_srcdir)/xlat/mbindflags.h: $(top_srcdir)/xlat/mbindflags.in $(top_srcdir)/
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/mctl_sync.h: $(top_srcdir)/xlat/mctl_sync.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mdb_flags.h: $(top_srcdir)/xlat/mdb_flags.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/mdb_states.h: $(top_srcdir)/xlat/mdb_states.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/membarrier_cmds.h: $(top_srcdir)/xlat/membarrier_cmds.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/memfd_create_flags.h: $(top_srcdir)/xlat/memfd_create_flags.in $(top_srcdir)/xlat/gen.sh
@@ -358,6 +362,8 @@ $(top_srcdir)/xlat/mtd_otp_options.h: $(top_srcdir)/xlat/mtd_otp_options.in $(to
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/mtd_type_options.h: $(top_srcdir)/xlat/mtd_type_options.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/multicast_router_types.h: $(top_srcdir)/xlat/multicast_router_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/name_to_handle_at_flags.h: $(top_srcdir)/xlat/name_to_handle_at_flags.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/neighbor_cache_entry_flags.h: $(top_srcdir)/xlat/neighbor_cache_entry_flags.in $(top_srcdir)/xlat/gen.sh
@@ -366,6 +372,8 @@ $(top_srcdir)/xlat/neighbor_cache_entry_states.h: $(top_srcdir)/xlat/neighbor_ca
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_ack_flags.h: $(top_srcdir)/xlat/netlink_ack_flags.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/netlink_delete_flags.h: $(top_srcdir)/xlat/netlink_delete_flags.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_diag_attrs.h: $(top_srcdir)/xlat/netlink_diag_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_diag_show.h: $(top_srcdir)/xlat/netlink_diag_show.in $(top_srcdir)/xlat/gen.sh
@@ -384,6 +392,28 @@ $(top_srcdir)/xlat/netlink_states.h: $(top_srcdir)/xlat/netlink_states.in $(top_
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/netlink_types.h: $(top_srcdir)/xlat/netlink_types.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_acct_msg_types.h: $(top_srcdir)/xlat/nf_acct_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_cthelper_msg_types.h: $(top_srcdir)/xlat/nf_cthelper_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_exp_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_ctnetlink_msg_types.h: $(top_srcdir)/xlat/nf_ctnetlink_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_cttimeout_msg_types.h: $(top_srcdir)/xlat/nf_cttimeout_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_ipset_msg_types.h: $(top_srcdir)/xlat/nf_ipset_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_nft_compat_msg_types.h: $(top_srcdir)/xlat/nf_nft_compat_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_nftables_msg_types.h: $(top_srcdir)/xlat/nf_nftables_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_osf_msg_types.h: $(top_srcdir)/xlat/nf_osf_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/nf_queue_msg_types.h: $(top_srcdir)/xlat/nf_queue_msg_types.in $(top_srcdir)/xlat/gen.sh
+ $(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/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
@@ -524,6 +554,16 @@ $(top_srcdir)/xlat/rtnl_link_attrs.h: $(top_srcdir)/xlat/rtnl_link_attrs.in $(to
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdb_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_eattr_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_mdb_entry_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_router_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.h: $(top_srcdir)/xlat/rtnl_mdba_router_pattr_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_neigh_attrs.h: $(top_srcdir)/xlat/rtnl_neigh_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_neightbl_attrs.h: $(top_srcdir)/xlat/rtnl_neightbl_attrs.in $(top_srcdir)/xlat/gen.sh
@@ -544,6 +584,10 @@ $(top_srcdir)/xlat/rtnl_tc_action_attrs.h: $(top_srcdir)/xlat/rtnl_tc_action_att
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rtnl_tc_attrs.h: $(top_srcdir)/xlat/rtnl_tc_attrs.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_tca_stab_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stab_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
+$(top_srcdir)/xlat/rtnl_tca_stats_attrs.h: $(top_srcdir)/xlat/rtnl_tca_stats_attrs.in $(top_srcdir)/xlat/gen.sh
+ $(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/rwf_flags.h: $(top_srcdir)/xlat/rwf_flags.in $(top_srcdir)/xlat/gen.sh
$(AM_V_GEN)$(top_srcdir)/xlat/gen.sh $< $@
$(top_srcdir)/xlat/sa_handler_values.h: $(top_srcdir)/xlat/sa_handler_values.in $(top_srcdir)/xlat/gen.sh
diff --git a/xlat/arp_hardware_types.h b/xlat/arp_hardware_types.h
index 45dbc5a0..200456ef 100644
--- a/xlat/arp_hardware_types.h
+++ b/xlat/arp_hardware_types.h
@@ -93,6 +93,9 @@ const struct xlat arp_hardware_types[] = {
#if defined(ARPHRD_RAWHDLC) || (defined(HAVE_DECL_ARPHRD_RAWHDLC) && HAVE_DECL_ARPHRD_RAWHDLC)
XLAT(ARPHRD_RAWHDLC),
#endif
+#if defined(ARPHRD_RAWIP) || (defined(HAVE_DECL_ARPHRD_RAWIP) && HAVE_DECL_ARPHRD_RAWIP)
+ XLAT(ARPHRD_RAWIP),
+#endif
#if defined(ARPHRD_TUNNEL) || (defined(HAVE_DECL_ARPHRD_TUNNEL) && HAVE_DECL_ARPHRD_TUNNEL)
XLAT(ARPHRD_TUNNEL),
#endif
diff --git a/xlat/arp_hardware_types.in b/xlat/arp_hardware_types.in
index 744a6728..e307455d 100644
--- a/xlat/arp_hardware_types.in
+++ b/xlat/arp_hardware_types.in
@@ -28,6 +28,7 @@ ARPHRD_CISCO
ARPHRD_LAPB
ARPHRD_DDCMP
ARPHRD_RAWHDLC
+ARPHRD_RAWIP
ARPHRD_TUNNEL
ARPHRD_TUNNEL6
ARPHRD_FRAD
diff --git a/xlat/bpf_attach_type.h b/xlat/bpf_attach_type.h
index 7dbda4b6..a98bf0f1 100644
--- a/xlat/bpf_attach_type.h
+++ b/xlat/bpf_attach_type.h
@@ -11,6 +11,12 @@
#if !(defined(BPF_CGROUP_SOCK_OPS) || (defined(HAVE_DECL_BPF_CGROUP_SOCK_OPS) && HAVE_DECL_BPF_CGROUP_SOCK_OPS))
# define BPF_CGROUP_SOCK_OPS 3
#endif
+#if !(defined(BPF_SK_SKB_STREAM_PARSER) || (defined(HAVE_DECL_BPF_SK_SKB_STREAM_PARSER) && HAVE_DECL_BPF_SK_SKB_STREAM_PARSER))
+# define BPF_SK_SKB_STREAM_PARSER 4
+#endif
+#if !(defined(BPF_SK_SKB_STREAM_VERDICT) || (defined(HAVE_DECL_BPF_SK_SKB_STREAM_VERDICT) && HAVE_DECL_BPF_SK_SKB_STREAM_VERDICT))
+# define BPF_SK_SKB_STREAM_VERDICT 5
+#endif
#ifdef IN_MPERS
@@ -24,6 +30,8 @@ const struct xlat bpf_attach_type[] = {
XLAT(BPF_CGROUP_INET_EGRESS),
XLAT(BPF_CGROUP_INET_SOCK_CREATE),
XLAT(BPF_CGROUP_SOCK_OPS),
+ XLAT(BPF_SK_SKB_STREAM_PARSER),
+ XLAT(BPF_SK_SKB_STREAM_VERDICT),
XLAT_END
};
diff --git a/xlat/bpf_attach_type.in b/xlat/bpf_attach_type.in
index 9f96467c..162e6f56 100644
--- a/xlat/bpf_attach_type.in
+++ b/xlat/bpf_attach_type.in
@@ -2,3 +2,5 @@ BPF_CGROUP_INET_INGRESS 0
BPF_CGROUP_INET_EGRESS 1
BPF_CGROUP_INET_SOCK_CREATE 2
BPF_CGROUP_SOCK_OPS 3
+BPF_SK_SKB_STREAM_PARSER 4
+BPF_SK_SKB_STREAM_VERDICT 5
diff --git a/xlat/bpf_map_flags.h b/xlat/bpf_map_flags.h
index f7c0a492..7ec7f9b6 100644
--- a/xlat/bpf_map_flags.h
+++ b/xlat/bpf_map_flags.h
@@ -2,6 +2,12 @@
#if !(defined(BPF_F_NO_PREALLOC) || (defined(HAVE_DECL_BPF_F_NO_PREALLOC) && HAVE_DECL_BPF_F_NO_PREALLOC))
# define BPF_F_NO_PREALLOC 1
#endif
+#if !(defined(BPF_F_NO_COMMON_LRU) || (defined(HAVE_DECL_BPF_F_NO_COMMON_LRU) && HAVE_DECL_BPF_F_NO_COMMON_LRU))
+# define BPF_F_NO_COMMON_LRU 2
+#endif
+#if !(defined(BPF_F_NUMA_NODE) || (defined(HAVE_DECL_BPF_F_NUMA_NODE) && HAVE_DECL_BPF_F_NUMA_NODE))
+# define BPF_F_NUMA_NODE 4
+#endif
#ifdef IN_MPERS
@@ -12,6 +18,8 @@
static
const struct xlat bpf_map_flags[] = {
XLAT(BPF_F_NO_PREALLOC),
+ XLAT(BPF_F_NO_COMMON_LRU),
+ XLAT(BPF_F_NUMA_NODE),
XLAT_END
};
diff --git a/xlat/bpf_map_flags.in b/xlat/bpf_map_flags.in
index 63338002..3137be4e 100644
--- a/xlat/bpf_map_flags.in
+++ b/xlat/bpf_map_flags.in
@@ -1 +1,3 @@
BPF_F_NO_PREALLOC 1
+BPF_F_NO_COMMON_LRU 2
+BPF_F_NUMA_NODE 4
diff --git a/xlat/bpf_map_types.h b/xlat/bpf_map_types.h
index 292d9a59..55b3f553 100644
--- a/xlat/bpf_map_types.h
+++ b/xlat/bpf_map_types.h
@@ -41,6 +41,12 @@
#if !(defined(BPF_MAP_TYPE_HASH_OF_MAPS) || (defined(HAVE_DECL_BPF_MAP_TYPE_HASH_OF_MAPS) && HAVE_DECL_BPF_MAP_TYPE_HASH_OF_MAPS))
# define BPF_MAP_TYPE_HASH_OF_MAPS 13
#endif
+#if !(defined(BPF_MAP_TYPE_DEVMAP) || (defined(HAVE_DECL_BPF_MAP_TYPE_DEVMAP) && HAVE_DECL_BPF_MAP_TYPE_DEVMAP))
+# define BPF_MAP_TYPE_DEVMAP 14
+#endif
+#if !(defined(BPF_MAP_TYPE_SOCKMAP) || (defined(HAVE_DECL_BPF_MAP_TYPE_SOCKMAP) && HAVE_DECL_BPF_MAP_TYPE_SOCKMAP))
+# define BPF_MAP_TYPE_SOCKMAP 15
+#endif
#ifdef IN_MPERS
@@ -64,6 +70,8 @@ const struct xlat bpf_map_types[] = {
XLAT(BPF_MAP_TYPE_LPM_TRIE),
XLAT(BPF_MAP_TYPE_ARRAY_OF_MAPS),
XLAT(BPF_MAP_TYPE_HASH_OF_MAPS),
+ XLAT(BPF_MAP_TYPE_DEVMAP),
+ XLAT(BPF_MAP_TYPE_SOCKMAP),
XLAT_END
};
diff --git a/xlat/bpf_map_types.in b/xlat/bpf_map_types.in
index 583c0160..233ff5b2 100644
--- a/xlat/bpf_map_types.in
+++ b/xlat/bpf_map_types.in
@@ -12,3 +12,5 @@ BPF_MAP_TYPE_LRU_PERCPU_HASH 10
BPF_MAP_TYPE_LPM_TRIE 11
BPF_MAP_TYPE_ARRAY_OF_MAPS 12
BPF_MAP_TYPE_HASH_OF_MAPS 13
+BPF_MAP_TYPE_DEVMAP 14
+BPF_MAP_TYPE_SOCKMAP 15
diff --git a/xlat/bpf_op_jmp.h b/xlat/bpf_op_jmp.h
index d43b30ec..9bb2acdc 100644
--- a/xlat/bpf_op_jmp.h
+++ b/xlat/bpf_op_jmp.h
@@ -26,12 +26,24 @@ const struct xlat bpf_op_jmp[] = {
#if defined(BPF_JNE) || (defined(HAVE_DECL_BPF_JNE) && HAVE_DECL_BPF_JNE)
XLAT(BPF_JNE),
#endif
+#if defined(BPF_JLT) || (defined(HAVE_DECL_BPF_JLT) && HAVE_DECL_BPF_JLT)
+ XLAT(BPF_JLT),
+#endif
+#if defined(BPF_JLE) || (defined(HAVE_DECL_BPF_JLE) && HAVE_DECL_BPF_JLE)
+ XLAT(BPF_JLE),
+#endif
#if defined(BPF_JSGT) || (defined(HAVE_DECL_BPF_JSGT) && HAVE_DECL_BPF_JSGT)
XLAT(BPF_JSGT),
#endif
#if defined(BPF_JSGE) || (defined(HAVE_DECL_BPF_JSGE) && HAVE_DECL_BPF_JSGE)
XLAT(BPF_JSGE),
#endif
+#if defined(BPF_JSLT) || (defined(HAVE_DECL_BPF_JSLT) && HAVE_DECL_BPF_JSLT)
+ XLAT(BPF_JSLT),
+#endif
+#if defined(BPF_JSLE) || (defined(HAVE_DECL_BPF_JSLE) && HAVE_DECL_BPF_JSLE)
+ XLAT(BPF_JSLE),
+#endif
#if defined(BPF_CALL) || (defined(HAVE_DECL_BPF_CALL) && HAVE_DECL_BPF_CALL)
XLAT(BPF_CALL),
#endif
diff --git a/xlat/bpf_op_jmp.in b/xlat/bpf_op_jmp.in
index 456c0af8..48fcb075 100644
--- a/xlat/bpf_op_jmp.in
+++ b/xlat/bpf_op_jmp.in
@@ -4,7 +4,11 @@ BPF_JGT
BPF_JGE
BPF_JSET
BPF_JNE
+BPF_JLT
+BPF_JLE
BPF_JSGT
BPF_JSGE
+BPF_JSLT
+BPF_JSLE
BPF_CALL
BPF_EXIT
diff --git a/xlat/bpf_prog_types.h b/xlat/bpf_prog_types.h
index 4dd0a959..3e1d0e03 100644
--- a/xlat/bpf_prog_types.h
+++ b/xlat/bpf_prog_types.h
@@ -41,6 +41,9 @@
#if !(defined(BPF_PROG_TYPE_SOCK_OPS) || (defined(HAVE_DECL_BPF_PROG_TYPE_SOCK_OPS) && HAVE_DECL_BPF_PROG_TYPE_SOCK_OPS))
# define BPF_PROG_TYPE_SOCK_OPS 13
#endif
+#if !(defined(BPF_PROG_TYPE_SK_SKB) || (defined(HAVE_DECL_BPF_PROG_TYPE_SK_SKB) && HAVE_DECL_BPF_PROG_TYPE_SK_SKB))
+# define BPF_PROG_TYPE_SK_SKB 14
+#endif
#ifdef IN_MPERS
@@ -64,6 +67,7 @@ const struct xlat bpf_prog_types[] = {
XLAT(BPF_PROG_TYPE_LWT_OUT),
XLAT(BPF_PROG_TYPE_LWT_XMIT),
XLAT(BPF_PROG_TYPE_SOCK_OPS),
+ XLAT(BPF_PROG_TYPE_SK_SKB),
XLAT_END
};
diff --git a/xlat/bpf_prog_types.in b/xlat/bpf_prog_types.in
index 5d7057d5..1ae02ddf 100644
--- a/xlat/bpf_prog_types.in
+++ b/xlat/bpf_prog_types.in
@@ -12,3 +12,4 @@ BPF_PROG_TYPE_LWT_IN 10
BPF_PROG_TYPE_LWT_OUT 11
BPF_PROG_TYPE_LWT_XMIT 12
BPF_PROG_TYPE_SOCK_OPS 13
+BPF_PROG_TYPE_SK_SKB 14
diff --git a/xlat/ethernet_protocols.h b/xlat/ethernet_protocols.h
index 7b5e86c9..0ca3cad8 100644
--- a/xlat/ethernet_protocols.h
+++ b/xlat/ethernet_protocols.h
@@ -75,6 +75,9 @@ const struct xlat ethernet_protocols[] = {
#if defined(ETH_P_8021Q) || (defined(HAVE_DECL_ETH_P_8021Q) && HAVE_DECL_ETH_P_8021Q)
XLAT(ETH_P_8021Q),
#endif
+#if defined(ETH_P_ERSPAN) || (defined(HAVE_DECL_ETH_P_ERSPAN) && HAVE_DECL_ETH_P_ERSPAN)
+ XLAT(ETH_P_ERSPAN),
+#endif
#if defined(ETH_P_IPX) || (defined(HAVE_DECL_ETH_P_IPX) && HAVE_DECL_ETH_P_IPX)
XLAT(ETH_P_IPX),
#endif
@@ -159,6 +162,9 @@ const struct xlat ethernet_protocols[] = {
#if defined(ETH_P_HSR) || (defined(HAVE_DECL_ETH_P_HSR) && HAVE_DECL_ETH_P_HSR)
XLAT(ETH_P_HSR),
#endif
+#if defined(ETH_P_NSH) || (defined(HAVE_DECL_ETH_P_NSH) && HAVE_DECL_ETH_P_NSH)
+ XLAT(ETH_P_NSH),
+#endif
#if defined(ETH_P_LOOPBACK) || (defined(HAVE_DECL_ETH_P_LOOPBACK) && HAVE_DECL_ETH_P_LOOPBACK)
XLAT(ETH_P_LOOPBACK),
#endif
@@ -174,6 +180,9 @@ const struct xlat ethernet_protocols[] = {
#if defined(ETH_P_EDSA) || (defined(HAVE_DECL_ETH_P_EDSA) && HAVE_DECL_ETH_P_EDSA)
XLAT(ETH_P_EDSA),
#endif
+#if defined(ETH_P_IFE) || (defined(HAVE_DECL_ETH_P_IFE) && HAVE_DECL_ETH_P_IFE)
+ XLAT(ETH_P_IFE),
+#endif
#if defined(ETH_P_AF_IUCV) || (defined(HAVE_DECL_ETH_P_AF_IUCV) && HAVE_DECL_ETH_P_AF_IUCV)
XLAT(ETH_P_AF_IUCV),
#endif
@@ -255,6 +264,9 @@ const struct xlat ethernet_protocols[] = {
#if defined(ETH_P_XDSA) || (defined(HAVE_DECL_ETH_P_XDSA) && HAVE_DECL_ETH_P_XDSA)
XLAT(ETH_P_XDSA),
#endif
+#if defined(ETH_P_MAP) || (defined(HAVE_DECL_ETH_P_MAP) && HAVE_DECL_ETH_P_MAP)
+ XLAT(ETH_P_MAP),
+#endif
XLAT_END
};
diff --git a/xlat/ethernet_protocols.in b/xlat/ethernet_protocols.in
index 522d1bee..2e4a1821 100644
--- a/xlat/ethernet_protocols.in
+++ b/xlat/ethernet_protocols.in
@@ -22,6 +22,7 @@ ETH_P_RARP
ETH_P_ATALK
ETH_P_AARP
ETH_P_8021Q
+ETH_P_ERSPAN
ETH_P_IPX
ETH_P_IPV6
ETH_P_PAUSE
@@ -50,11 +51,13 @@ ETH_P_TDLS
ETH_P_FIP
ETH_P_80221
ETH_P_HSR
+ETH_P_NSH
ETH_P_LOOPBACK
ETH_P_QINQ1
ETH_P_QINQ2
ETH_P_QINQ3
ETH_P_EDSA
+ETH_P_IFE
ETH_P_AF_IUCV
ETH_P_802_3_MIN
ETH_P_802_3
@@ -82,3 +85,4 @@ ETH_P_PHONET
ETH_P_IEEE802154
ETH_P_CAIF
ETH_P_XDSA
+ETH_P_MAP
diff --git a/xlat/gen.sh b/xlat/gen.sh
index 06c1b17a..d5286d10 100755
--- a/xlat/gen.sh
+++ b/xlat/gen.sh
@@ -290,6 +290,7 @@ main()
local name
local jobs=0
local ncpus="$(getconf _NPROCESSORS_ONLN)"
+ local pids=
[ "${ncpus}" -ge 1 ] ||
ncpus=1
@@ -300,15 +301,20 @@ main()
name=${f##*/}
name=${name%.in}
gen_header "${f}" "${output}/${name}.h" "${name}" &
+ pids="$pids $!"
names="${names} ${name}"
: $(( jobs += 1 ))
- if [ ${jobs} -ge ${ncpus} ]; then
- jobs=0
- wait
- fi
+ if [ "${jobs}" -gt "$(( ncpus * 2 ))" ]; then
+ read wait_pid rest
+ pids="$rest"
+ wait -n 2>/dev/null || wait "$wait_pid"
+ : $(( jobs -= 1 ))
+ fi <<- EOF
+ $pids
+ EOF
done
- gen_git "${output}/.gitignore" ${names}
- gen_make "${output}/Makemodule.am" ${names}
+ gen_git "${output}/.gitignore" ${names} &
+ gen_make "${output}/Makemodule.am" ${names} &
wait
else
name=${input##*/}
diff --git a/xlat/inet_diag_attrs.h b/xlat/inet_diag_attrs.h
index 7afbc4ef..a4833736 100644
--- a/xlat/inet_diag_attrs.h
+++ b/xlat/inet_diag_attrs.h
@@ -25,6 +25,7 @@ const struct xlat inet_diag_attrs[] = {
XLAT(INET_DIAG_PAD),
XLAT(INET_DIAG_MARK),
XLAT(INET_DIAG_BBRINFO),
+ XLAT(INET_DIAG_CLASS_ID),
XLAT_END
};
diff --git a/xlat/inet_diag_attrs.in b/xlat/inet_diag_attrs.in
index 17519c83..4536ebc3 100644
--- a/xlat/inet_diag_attrs.in
+++ b/xlat/inet_diag_attrs.in
@@ -16,3 +16,4 @@ INET_DIAG_PEERS
INET_DIAG_PAD
INET_DIAG_MARK
INET_DIAG_BBRINFO
+INET_DIAG_CLASS_ID
diff --git a/xlat/inet_diag_extended_flags.h b/xlat/inet_diag_extended_flags.h
index bf1bd3ff..158e4e15 100644
--- a/xlat/inet_diag_extended_flags.h
+++ b/xlat/inet_diag_extended_flags.h
@@ -24,6 +24,7 @@ const struct xlat inet_diag_extended_flags[] = {
XLAT(1<<(INET_DIAG_PAD-1)),
XLAT(1<<(INET_DIAG_MARK-1)),
XLAT(1<<(INET_DIAG_BBRINFO-1)),
+ XLAT(1<<(INET_DIAG_CLASS_ID-1)),
XLAT_END
};
diff --git a/xlat/inet_diag_extended_flags.in b/xlat/inet_diag_extended_flags.in
index 05be3ca4..182cac16 100644
--- a/xlat/inet_diag_extended_flags.in
+++ b/xlat/inet_diag_extended_flags.in
@@ -15,3 +15,4 @@
1<<(INET_DIAG_PAD-1)
1<<(INET_DIAG_MARK-1)
1<<(INET_DIAG_BBRINFO-1)
+1<<(INET_DIAG_CLASS_ID-1)
diff --git a/xlat/kcmp_types.h b/xlat/kcmp_types.h
index ba067f04..1b886079 100644
--- a/xlat/kcmp_types.h
+++ b/xlat/kcmp_types.h
@@ -20,6 +20,9 @@
#if !(defined(KCMP_SYSVSEM) || (defined(HAVE_DECL_KCMP_SYSVSEM) && HAVE_DECL_KCMP_SYSVSEM))
# define KCMP_SYSVSEM 6
#endif
+#if !(defined(KCMP_EPOLL_TFD) || (defined(HAVE_DECL_KCMP_EPOLL_TFD) && HAVE_DECL_KCMP_EPOLL_TFD))
+# define KCMP_EPOLL_TFD 7
+#endif
#ifdef IN_MPERS
@@ -36,6 +39,7 @@ const struct xlat kcmp_types[] = {
XLAT(KCMP_SIGHAND),
XLAT(KCMP_IO),
XLAT(KCMP_SYSVSEM),
+ XLAT(KCMP_EPOLL_TFD),
XLAT_END
};
diff --git a/xlat/kcmp_types.in b/xlat/kcmp_types.in
index 4357776c..c37cf22b 100644
--- a/xlat/kcmp_types.in
+++ b/xlat/kcmp_types.in
@@ -5,3 +5,4 @@ KCMP_FS 3
KCMP_SIGHAND 4
KCMP_IO 5
KCMP_SYSVSEM 6
+KCMP_EPOLL_TFD 7
diff --git a/xlat/loop_cmds.h b/xlat/loop_cmds.h
index 258662d3..cc8a7c93 100644
--- a/xlat/loop_cmds.h
+++ b/xlat/loop_cmds.h
@@ -26,6 +26,9 @@
#if !(defined(LOOP_SET_DIRECT_IO) || (defined(HAVE_DECL_LOOP_SET_DIRECT_IO) && HAVE_DECL_LOOP_SET_DIRECT_IO))
# define LOOP_SET_DIRECT_IO 0x4C08
#endif
+#if !(defined(LOOP_SET_BLOCK_SIZE) || (defined(HAVE_DECL_LOOP_SET_BLOCK_SIZE) && HAVE_DECL_LOOP_SET_BLOCK_SIZE))
+# define LOOP_SET_BLOCK_SIZE 0x4C09
+#endif
#if !(defined(LOOP_CTL_ADD) || (defined(HAVE_DECL_LOOP_CTL_ADD) && HAVE_DECL_LOOP_CTL_ADD))
# define LOOP_CTL_ADD 0x4C80
#endif
diff --git a/xlat/loop_cmds.in b/xlat/loop_cmds.in
index 6faca515..c4728af3 100644
--- a/xlat/loop_cmds.in
+++ b/xlat/loop_cmds.in
@@ -7,6 +7,7 @@ LOOP_GET_STATUS64 0x4C05
LOOP_CHANGE_FD 0x4C06
LOOP_SET_CAPACITY 0x4C07
LOOP_SET_DIRECT_IO 0x4C08
+LOOP_SET_BLOCK_SIZE 0x4C09
LOOP_CTL_ADD 0x4C80
LOOP_CTL_REMOVE 0x4C81
LOOP_CTL_GET_FREE 0x4C82
diff --git a/xlat/madvise_cmds.h b/xlat/madvise_cmds.h
index 41aa3a55..ec5b06bc 100644
--- a/xlat/madvise_cmds.h
+++ b/xlat/madvise_cmds.h
@@ -59,6 +59,12 @@ const struct xlat madvise_cmds[] = {
#if defined(MADV_DODUMP) || (defined(HAVE_DECL_MADV_DODUMP) && HAVE_DECL_MADV_DODUMP)
XLAT(MADV_DODUMP),
#endif
+#if defined(MADV_WIPEONFORK) || (defined(HAVE_DECL_MADV_WIPEONFORK) && HAVE_DECL_MADV_WIPEONFORK)
+ XLAT(MADV_WIPEONFORK),
+#endif
+#if defined(MADV_KEEPONFORK) || (defined(HAVE_DECL_MADV_KEEPONFORK) && HAVE_DECL_MADV_KEEPONFORK)
+ XLAT(MADV_KEEPONFORK),
+#endif
XLAT_END
};
diff --git a/xlat/madvise_cmds.in b/xlat/madvise_cmds.in
index bf6b1da0..415c02f3 100644
--- a/xlat/madvise_cmds.in
+++ b/xlat/madvise_cmds.in
@@ -15,3 +15,5 @@ MADV_HUGEPAGE
MADV_NOHUGEPAGE
MADV_DONTDUMP
MADV_DODUMP
+MADV_WIPEONFORK
+MADV_KEEPONFORK
diff --git a/xlat/mdb_flags.h b/xlat/mdb_flags.h
new file mode 100644
index 00000000..4340f3ea
--- /dev/null
+++ b/xlat/mdb_flags.h
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mdb_flags.in; do not edit. */
+
+#ifdef IN_MPERS
+
+# error static const struct xlat mdb_flags in mpers mode
+
+#else
+
+static
+const struct xlat mdb_flags[] = {
+#if defined(MDB_FLAGS_OFFLOAD) || (defined(HAVE_DECL_MDB_FLAGS_OFFLOAD) && HAVE_DECL_MDB_FLAGS_OFFLOAD)
+ XLAT(MDB_FLAGS_OFFLOAD),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/mdb_flags.in b/xlat/mdb_flags.in
new file mode 100644
index 00000000..4c2f1ed3
--- /dev/null
+++ b/xlat/mdb_flags.in
@@ -0,0 +1 @@
+MDB_FLAGS_OFFLOAD
diff --git a/xlat/mdb_states.h b/xlat/mdb_states.h
new file mode 100644
index 00000000..dd1337d1
--- /dev/null
+++ b/xlat/mdb_states.h
@@ -0,0 +1,20 @@
+/* Generated by ./xlat/gen.sh from ./xlat/mdb_states.in; do not edit. */
+
+#ifdef IN_MPERS
+
+# error static const struct xlat mdb_states in mpers mode
+
+#else
+
+static
+const struct xlat mdb_states[] = {
+#if defined(MDB_TEMPORARY) || (defined(HAVE_DECL_MDB_TEMPORARY) && HAVE_DECL_MDB_TEMPORARY)
+ XLAT(MDB_TEMPORARY),
+#endif
+#if defined(MDB_PERMANENT) || (defined(HAVE_DECL_MDB_PERMANENT) && HAVE_DECL_MDB_PERMANENT)
+ XLAT(MDB_PERMANENT),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/mdb_states.in b/xlat/mdb_states.in
new file mode 100644
index 00000000..7a580b90
--- /dev/null
+++ b/xlat/mdb_states.in
@@ -0,0 +1,2 @@
+MDB_TEMPORARY
+MDB_PERMANENT
diff --git a/xlat/membarrier_cmds.h b/xlat/membarrier_cmds.h
index 9d4d5187..9f1c69e3 100644
--- a/xlat/membarrier_cmds.h
+++ b/xlat/membarrier_cmds.h
@@ -5,6 +5,12 @@
#if !(defined(MEMBARRIER_CMD_SHARED) || (defined(HAVE_DECL_MEMBARRIER_CMD_SHARED) && HAVE_DECL_MEMBARRIER_CMD_SHARED))
# define MEMBARRIER_CMD_SHARED 1
#endif
+#if !(defined(MEMBARRIER_CMD_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_PRIVATE_EXPEDITED))
+# define MEMBARRIER_CMD_PRIVATE_EXPEDITED 8
+#endif
+#if !(defined(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) || (defined(HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED) && HAVE_DECL_MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED))
+# define MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16
+#endif
#ifdef IN_MPERS
@@ -16,6 +22,8 @@ static
const struct xlat membarrier_cmds[] = {
XLAT(MEMBARRIER_CMD_QUERY),
XLAT(MEMBARRIER_CMD_SHARED),
+ XLAT(MEMBARRIER_CMD_PRIVATE_EXPEDITED),
+ XLAT(MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED),
XLAT_END
};
diff --git a/xlat/membarrier_cmds.in b/xlat/membarrier_cmds.in
index e087e8e3..e4fe06ac 100644
--- a/xlat/membarrier_cmds.in
+++ b/xlat/membarrier_cmds.in
@@ -1,2 +1,4 @@
-MEMBARRIER_CMD_QUERY 0
-MEMBARRIER_CMD_SHARED 1
+MEMBARRIER_CMD_QUERY 0
+MEMBARRIER_CMD_SHARED 1
+MEMBARRIER_CMD_PRIVATE_EXPEDITED 8
+MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED 16
diff --git a/xlat/memfd_create_flags.h b/xlat/memfd_create_flags.h
index 9b760996..f656e6b0 100644
--- a/xlat/memfd_create_flags.h
+++ b/xlat/memfd_create_flags.h
@@ -5,6 +5,9 @@
#if !(defined(MFD_ALLOW_SEALING) || (defined(HAVE_DECL_MFD_ALLOW_SEALING) && HAVE_DECL_MFD_ALLOW_SEALING))
# define MFD_ALLOW_SEALING 2
#endif
+#if !(defined(MFD_HUGETLB) || (defined(HAVE_DECL_MFD_HUGETLB) && HAVE_DECL_MFD_HUGETLB))
+# define MFD_HUGETLB 4
+#endif
#ifdef IN_MPERS
@@ -16,6 +19,7 @@ static
const struct xlat memfd_create_flags[] = {
XLAT(MFD_CLOEXEC),
XLAT(MFD_ALLOW_SEALING),
+ XLAT(MFD_HUGETLB),
XLAT_END
};
diff --git a/xlat/memfd_create_flags.in b/xlat/memfd_create_flags.in
index 04a1b47a..9dd625fb 100644
--- a/xlat/memfd_create_flags.in
+++ b/xlat/memfd_create_flags.in
@@ -1,2 +1,3 @@
MFD_CLOEXEC 1
MFD_ALLOW_SEALING 2
+MFD_HUGETLB 4
diff --git a/xlat/multicast_router_types.h b/xlat/multicast_router_types.h
new file mode 100644
index 00000000..8c68b2f0
--- /dev/null
+++ b/xlat/multicast_router_types.h
@@ -0,0 +1,30 @@
+/* Generated by ./xlat/gen.sh from ./xlat/multicast_router_types.in; do not edit. */
+#if !(defined(MDB_RTR_TYPE_DISABLED) || (defined(HAVE_DECL_MDB_RTR_TYPE_DISABLED) && HAVE_DECL_MDB_RTR_TYPE_DISABLED))
+# define MDB_RTR_TYPE_DISABLED 0
+#endif
+#if !(defined(MDB_RTR_TYPE_TEMP_QUERY) || (defined(HAVE_DECL_MDB_RTR_TYPE_TEMP_QUERY) && HAVE_DECL_MDB_RTR_TYPE_TEMP_QUERY))
+# define MDB_RTR_TYPE_TEMP_QUERY 1
+#endif
+#if !(defined(MDB_RTR_TYPE_PERM) || (defined(HAVE_DECL_MDB_RTR_TYPE_PERM) && HAVE_DECL_MDB_RTR_TYPE_PERM))
+# define MDB_RTR_TYPE_PERM 2
+#endif
+#if !(defined(MDB_RTR_TYPE_TEMP) || (defined(HAVE_DECL_MDB_RTR_TYPE_TEMP) && HAVE_DECL_MDB_RTR_TYPE_TEMP))
+# define MDB_RTR_TYPE_TEMP 3
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat multicast_router_types in mpers mode
+
+#else
+
+static
+const struct xlat multicast_router_types[] = {
+ XLAT(MDB_RTR_TYPE_DISABLED),
+ XLAT(MDB_RTR_TYPE_TEMP_QUERY),
+ XLAT(MDB_RTR_TYPE_PERM),
+ XLAT(MDB_RTR_TYPE_TEMP),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/multicast_router_types.in b/xlat/multicast_router_types.in
new file mode 100644
index 00000000..6a5c03c3
--- /dev/null
+++ b/xlat/multicast_router_types.in
@@ -0,0 +1,4 @@
+MDB_RTR_TYPE_DISABLED 0
+MDB_RTR_TYPE_TEMP_QUERY 1
+MDB_RTR_TYPE_PERM 2
+MDB_RTR_TYPE_TEMP 3
diff --git a/xlat/netlink_delete_flags.h b/xlat/netlink_delete_flags.h
new file mode 100644
index 00000000..a40c7df5
--- /dev/null
+++ b/xlat/netlink_delete_flags.h
@@ -0,0 +1,17 @@
+/* Generated by ./xlat/gen.sh from ./xlat/netlink_delete_flags.in; do not edit. */
+
+#ifdef IN_MPERS
+
+# error static const struct xlat netlink_delete_flags in mpers mode
+
+#else
+
+static
+const struct xlat netlink_delete_flags[] = {
+#if defined(NLM_F_NONREC) || (defined(HAVE_DECL_NLM_F_NONREC) && HAVE_DECL_NLM_F_NONREC)
+ XLAT(NLM_F_NONREC),
+#endif
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/netlink_delete_flags.in b/xlat/netlink_delete_flags.in
new file mode 100644
index 00000000..01af41db
--- /dev/null
+++ b/xlat/netlink_delete_flags.in
@@ -0,0 +1 @@
+NLM_F_NONREC
diff --git a/xlat/nf_acct_msg_types.h b/xlat/nf_acct_msg_types.h
new file mode 100644
index 00000000..d20681a6
--- /dev/null
+++ b/xlat/nf_acct_msg_types.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_acct_msg_types.in; do not edit. */
+#if !(defined(NFNL_MSG_ACCT_NEW) || (defined(HAVE_DECL_NFNL_MSG_ACCT_NEW) && HAVE_DECL_NFNL_MSG_ACCT_NEW))
+# define NFNL_MSG_ACCT_NEW 0
+#endif
+#if !(defined(NFNL_MSG_ACCT_GET) || (defined(HAVE_DECL_NFNL_MSG_ACCT_GET) && HAVE_DECL_NFNL_MSG_ACCT_GET))
+# define NFNL_MSG_ACCT_GET 1
+#endif
+#if !(defined(NFNL_MSG_ACCT_GET_CTRZERO) || (defined(HAVE_DECL_NFNL_MSG_ACCT_GET_CTRZERO) && HAVE_DECL_NFNL_MSG_ACCT_GET_CTRZERO))
+# define NFNL_MSG_ACCT_GET_CTRZERO 2
+#endif
+#if !(defined(NFNL_MSG_ACCT_DEL) || (defined(HAVE_DECL_NFNL_MSG_ACCT_DEL) && HAVE_DECL_NFNL_MSG_ACCT_DEL))
+# define NFNL_MSG_ACCT_DEL 3
+#endif
+#if !(defined(NFNL_MSG_ACCT_OVERQUOTA) || (defined(HAVE_DECL_NFNL_MSG_ACCT_OVERQUOTA) && HAVE_DECL_NFNL_MSG_ACCT_OVERQUOTA))
+# define NFNL_MSG_ACCT_OVERQUOTA 4
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_acct_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_acct_msg_types[] = {
+ XLAT(NFNL_MSG_ACCT_NEW),
+ XLAT(NFNL_MSG_ACCT_GET),
+ XLAT(NFNL_MSG_ACCT_GET_CTRZERO),
+ XLAT(NFNL_MSG_ACCT_DEL),
+ XLAT(NFNL_MSG_ACCT_OVERQUOTA),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_acct_msg_types.in b/xlat/nf_acct_msg_types.in
new file mode 100644
index 00000000..3384ee0d
--- /dev/null
+++ b/xlat/nf_acct_msg_types.in
@@ -0,0 +1,5 @@
+NFNL_MSG_ACCT_NEW 0
+NFNL_MSG_ACCT_GET 1
+NFNL_MSG_ACCT_GET_CTRZERO 2
+NFNL_MSG_ACCT_DEL 3
+NFNL_MSG_ACCT_OVERQUOTA 4
diff --git a/xlat/nf_cthelper_msg_types.h b/xlat/nf_cthelper_msg_types.h
new file mode 100644
index 00000000..3b3ee1bf
--- /dev/null
+++ b/xlat/nf_cthelper_msg_types.h
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_cthelper_msg_types.in; do not edit. */
+#if !(defined(NFNL_MSG_CTHELPER_NEW) || (defined(HAVE_DECL_NFNL_MSG_CTHELPER_NEW) && HAVE_DECL_NFNL_MSG_CTHELPER_NEW))
+# define NFNL_MSG_CTHELPER_NEW 0
+#endif
+#if !(defined(NFNL_MSG_CTHELPER_GET) || (defined(HAVE_DECL_NFNL_MSG_CTHELPER_GET) && HAVE_DECL_NFNL_MSG_CTHELPER_GET))
+# define NFNL_MSG_CTHELPER_GET 1
+#endif
+#if !(defined(NFNL_MSG_CTHELPER_DEL) || (defined(HAVE_DECL_NFNL_MSG_CTHELPER_DEL) && HAVE_DECL_NFNL_MSG_CTHELPER_DEL))
+# define NFNL_MSG_CTHELPER_DEL 2
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_cthelper_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_cthelper_msg_types[] = {
+ XLAT(NFNL_MSG_CTHELPER_NEW),
+ XLAT(NFNL_MSG_CTHELPER_GET),
+ XLAT(NFNL_MSG_CTHELPER_DEL),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_cthelper_msg_types.in b/xlat/nf_cthelper_msg_types.in
new file mode 100644
index 00000000..bbee697a
--- /dev/null
+++ b/xlat/nf_cthelper_msg_types.in
@@ -0,0 +1,3 @@
+NFNL_MSG_CTHELPER_NEW 0
+NFNL_MSG_CTHELPER_GET 1
+NFNL_MSG_CTHELPER_DEL 2
diff --git a/xlat/nf_ctnetlink_exp_msg_types.h b/xlat/nf_ctnetlink_exp_msg_types.h
new file mode 100644
index 00000000..4988dd37
--- /dev/null
+++ b/xlat/nf_ctnetlink_exp_msg_types.h
@@ -0,0 +1,30 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_ctnetlink_exp_msg_types.in; do not edit. */
+#if !(defined(IPCTNL_MSG_EXP_NEW) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_NEW) && HAVE_DECL_IPCTNL_MSG_EXP_NEW))
+# define IPCTNL_MSG_EXP_NEW 0
+#endif
+#if !(defined(IPCTNL_MSG_EXP_GET) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_GET) && HAVE_DECL_IPCTNL_MSG_EXP_GET))
+# define IPCTNL_MSG_EXP_GET 1
+#endif
+#if !(defined(IPCTNL_MSG_EXP_DELETE) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_DELETE) && HAVE_DECL_IPCTNL_MSG_EXP_DELETE))
+# define IPCTNL_MSG_EXP_DELETE 2
+#endif
+#if !(defined(IPCTNL_MSG_EXP_GET_STATS_CPU) || (defined(HAVE_DECL_IPCTNL_MSG_EXP_GET_STATS_CPU) && HAVE_DECL_IPCTNL_MSG_EXP_GET_STATS_CPU))
+# define IPCTNL_MSG_EXP_GET_STATS_CPU 3
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_ctnetlink_exp_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_ctnetlink_exp_msg_types[] = {
+ XLAT(IPCTNL_MSG_EXP_NEW),
+ XLAT(IPCTNL_MSG_EXP_GET),
+ XLAT(IPCTNL_MSG_EXP_DELETE),
+ XLAT(IPCTNL_MSG_EXP_GET_STATS_CPU),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_ctnetlink_exp_msg_types.in b/xlat/nf_ctnetlink_exp_msg_types.in
new file mode 100644
index 00000000..8236e066
--- /dev/null
+++ b/xlat/nf_ctnetlink_exp_msg_types.in
@@ -0,0 +1,4 @@
+IPCTNL_MSG_EXP_NEW 0
+IPCTNL_MSG_EXP_GET 1
+IPCTNL_MSG_EXP_DELETE 2
+IPCTNL_MSG_EXP_GET_STATS_CPU 3
diff --git a/xlat/nf_ctnetlink_msg_types.h b/xlat/nf_ctnetlink_msg_types.h
new file mode 100644
index 00000000..8b61e44b
--- /dev/null
+++ b/xlat/nf_ctnetlink_msg_types.h
@@ -0,0 +1,46 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_ctnetlink_msg_types.in; do not edit. */
+#if !(defined(IPCTNL_MSG_CT_NEW) || (defined(HAVE_DECL_IPCTNL_MSG_CT_NEW) && HAVE_DECL_IPCTNL_MSG_CT_NEW))
+# define IPCTNL_MSG_CT_NEW 0
+#endif
+#if !(defined(IPCTNL_MSG_CT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET) && HAVE_DECL_IPCTNL_MSG_CT_GET))
+# define IPCTNL_MSG_CT_GET 1
+#endif
+#if !(defined(IPCTNL_MSG_CT_DELETE) || (defined(HAVE_DECL_IPCTNL_MSG_CT_DELETE) && HAVE_DECL_IPCTNL_MSG_CT_DELETE))
+# define IPCTNL_MSG_CT_DELETE 2
+#endif
+#if !(defined(IPCTNL_MSG_CT_GET_CTRZERO) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_CTRZERO) && HAVE_DECL_IPCTNL_MSG_CT_GET_CTRZERO))
+# define IPCTNL_MSG_CT_GET_CTRZERO 3
+#endif
+#if !(defined(IPCTNL_MSG_CT_GET_STATS_CPU) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_STATS_CPU) && HAVE_DECL_IPCTNL_MSG_CT_GET_STATS_CPU))
+# define IPCTNL_MSG_CT_GET_STATS_CPU 4
+#endif
+#if !(defined(IPCTNL_MSG_CT_GET_STATS) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_STATS) && HAVE_DECL_IPCTNL_MSG_CT_GET_STATS))
+# define IPCTNL_MSG_CT_GET_STATS 5
+#endif
+#if !(defined(IPCTNL_MSG_CT_GET_DYING) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_DYING) && HAVE_DECL_IPCTNL_MSG_CT_GET_DYING))
+# define IPCTNL_MSG_CT_GET_DYING 6
+#endif
+#if !(defined(IPCTNL_MSG_CT_GET_UNCONFIRMED) || (defined(HAVE_DECL_IPCTNL_MSG_CT_GET_UNCONFIRMED) && HAVE_DECL_IPCTNL_MSG_CT_GET_UNCONFIRMED))
+# define IPCTNL_MSG_CT_GET_UNCONFIRMED 7
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_ctnetlink_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_ctnetlink_msg_types[] = {
+ XLAT(IPCTNL_MSG_CT_NEW),
+ XLAT(IPCTNL_MSG_CT_GET),
+ XLAT(IPCTNL_MSG_CT_DELETE),
+ XLAT(IPCTNL_MSG_CT_GET_CTRZERO),
+ XLAT(IPCTNL_MSG_CT_GET_STATS_CPU),
+ XLAT(IPCTNL_MSG_CT_GET_STATS),
+ XLAT(IPCTNL_MSG_CT_GET_DYING),
+ XLAT(IPCTNL_MSG_CT_GET_UNCONFIRMED),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_ctnetlink_msg_types.in b/xlat/nf_ctnetlink_msg_types.in
new file mode 100644
index 00000000..2dab1690
--- /dev/null
+++ b/xlat/nf_ctnetlink_msg_types.in
@@ -0,0 +1,8 @@
+IPCTNL_MSG_CT_NEW 0
+IPCTNL_MSG_CT_GET 1
+IPCTNL_MSG_CT_DELETE 2
+IPCTNL_MSG_CT_GET_CTRZERO 3
+IPCTNL_MSG_CT_GET_STATS_CPU 4
+IPCTNL_MSG_CT_GET_STATS 5
+IPCTNL_MSG_CT_GET_DYING 6
+IPCTNL_MSG_CT_GET_UNCONFIRMED 7
diff --git a/xlat/nf_cttimeout_msg_types.h b/xlat/nf_cttimeout_msg_types.h
new file mode 100644
index 00000000..9c7b5513
--- /dev/null
+++ b/xlat/nf_cttimeout_msg_types.h
@@ -0,0 +1,34 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_cttimeout_msg_types.in; do not edit. */
+#if !(defined(IPCTNL_MSG_TIMEOUT_NEW) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_NEW) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_NEW))
+# define IPCTNL_MSG_TIMEOUT_NEW 0
+#endif
+#if !(defined(IPCTNL_MSG_TIMEOUT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_GET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_GET))
+# define IPCTNL_MSG_TIMEOUT_GET 1
+#endif
+#if !(defined(IPCTNL_MSG_TIMEOUT_DELETE) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DELETE) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DELETE))
+# define IPCTNL_MSG_TIMEOUT_DELETE 2
+#endif
+#if !(defined(IPCTNL_MSG_TIMEOUT_DEFAULT_SET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_SET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_SET))
+# define IPCTNL_MSG_TIMEOUT_DEFAULT_SET 3
+#endif
+#if !(defined(IPCTNL_MSG_TIMEOUT_DEFAULT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_GET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_GET))
+# define IPCTNL_MSG_TIMEOUT_DEFAULT_GET 4
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_cttimeout_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_cttimeout_msg_types[] = {
+ XLAT(IPCTNL_MSG_TIMEOUT_NEW),
+ XLAT(IPCTNL_MSG_TIMEOUT_GET),
+ XLAT(IPCTNL_MSG_TIMEOUT_DELETE),
+ XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_SET),
+ XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_GET),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_cttimeout_msg_types.in b/xlat/nf_cttimeout_msg_types.in
new file mode 100644
index 00000000..bf6c5293
--- /dev/null
+++ b/xlat/nf_cttimeout_msg_types.in
@@ -0,0 +1,5 @@
+IPCTNL_MSG_TIMEOUT_NEW 0
+IPCTNL_MSG_TIMEOUT_GET 1
+IPCTNL_MSG_TIMEOUT_DELETE 2
+IPCTNL_MSG_TIMEOUT_DEFAULT_SET 3
+IPCTNL_MSG_TIMEOUT_DEFAULT_GET 4
diff --git a/xlat/nf_ipset_msg_types.h b/xlat/nf_ipset_msg_types.h
new file mode 100644
index 00000000..b6b32bb8
--- /dev/null
+++ b/xlat/nf_ipset_msg_types.h
@@ -0,0 +1,92 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_ipset_msg_types.in; do not edit. */
+#if !(defined(IPSET_CMD_NONE) || (defined(HAVE_DECL_IPSET_CMD_NONE) && HAVE_DECL_IPSET_CMD_NONE))
+# define IPSET_CMD_NONE 0
+#endif
+#if !(defined(IPSET_CMD_PROTOCOL) || (defined(HAVE_DECL_IPSET_CMD_PROTOCOL) && HAVE_DECL_IPSET_CMD_PROTOCOL))
+# define IPSET_CMD_PROTOCOL 1
+#endif
+#if !(defined(IPSET_CMD_CREATE) || (defined(HAVE_DECL_IPSET_CMD_CREATE) && HAVE_DECL_IPSET_CMD_CREATE))
+# define IPSET_CMD_CREATE 2
+#endif
+#if !(defined(IPSET_CMD_DESTROY) || (defined(HAVE_DECL_IPSET_CMD_DESTROY) && HAVE_DECL_IPSET_CMD_DESTROY))
+# define IPSET_CMD_DESTROY 3
+#endif
+#if !(defined(IPSET_CMD_FLUSH) || (defined(HAVE_DECL_IPSET_CMD_FLUSH) && HAVE_DECL_IPSET_CMD_FLUSH))
+# define IPSET_CMD_FLUSH 4
+#endif
+#if !(defined(IPSET_CMD_RENAME) || (defined(HAVE_DECL_IPSET_CMD_RENAME) && HAVE_DECL_IPSET_CMD_RENAME))
+# define IPSET_CMD_RENAME 5
+#endif
+#if !(defined(IPSET_CMD_SWAP) || (defined(HAVE_DECL_IPSET_CMD_SWAP) && HAVE_DECL_IPSET_CMD_SWAP))
+# define IPSET_CMD_SWAP 6
+#endif
+#if !(defined(IPSET_CMD_LIST) || (defined(HAVE_DECL_IPSET_CMD_LIST) && HAVE_DECL_IPSET_CMD_LIST))
+# define IPSET_CMD_LIST 7
+#endif
+#if !(defined(IPSET_CMD_SAVE) || (defined(HAVE_DECL_IPSET_CMD_SAVE) && HAVE_DECL_IPSET_CMD_SAVE))
+# define IPSET_CMD_SAVE 8
+#endif
+#if !(defined(IPSET_CMD_ADD) || (defined(HAVE_DECL_IPSET_CMD_ADD) && HAVE_DECL_IPSET_CMD_ADD))
+# define IPSET_CMD_ADD 9
+#endif
+#if !(defined(IPSET_CMD_DEL) || (defined(HAVE_DECL_IPSET_CMD_DEL) && HAVE_DECL_IPSET_CMD_DEL))
+# define IPSET_CMD_DEL 10
+#endif
+#if !(defined(IPSET_CMD_TEST) || (defined(HAVE_DECL_IPSET_CMD_TEST) && HAVE_DECL_IPSET_CMD_TEST))
+# define IPSET_CMD_TEST 11
+#endif
+#if !(defined(IPSET_CMD_HEADER) || (defined(HAVE_DECL_IPSET_CMD_HEADER) && HAVE_DECL_IPSET_CMD_HEADER))
+# define IPSET_CMD_HEADER 12
+#endif
+#if !(defined(IPSET_CMD_TYPE) || (defined(HAVE_DECL_IPSET_CMD_TYPE) && HAVE_DECL_IPSET_CMD_TYPE))
+# define IPSET_CMD_TYPE 13
+#endif
+#if !(defined(IPSET_CMD_RESTORE) || (defined(HAVE_DECL_IPSET_CMD_RESTORE) && HAVE_DECL_IPSET_CMD_RESTORE))
+# define IPSET_CMD_RESTORE 14
+#endif
+#if !(defined(IPSET_CMD_HELP) || (defined(HAVE_DECL_IPSET_CMD_HELP) && HAVE_DECL_IPSET_CMD_HELP))
+# define IPSET_CMD_HELP 15
+#endif
+#if !(defined(IPSET_CMD_VERSION) || (defined(HAVE_DECL_IPSET_CMD_VERSION) && HAVE_DECL_IPSET_CMD_VERSION))
+# define IPSET_CMD_VERSION 16
+#endif
+#if !(defined(IPSET_CMD_QUIT) || (defined(HAVE_DECL_IPSET_CMD_QUIT) && HAVE_DECL_IPSET_CMD_QUIT))
+# define IPSET_CMD_QUIT 17
+#endif
+#if !(defined(IPSET_CMD_COMMIT) || (defined(HAVE_DECL_IPSET_CMD_COMMIT) && HAVE_DECL_IPSET_CMD_COMMIT))
+# define IPSET_CMD_COMMIT 18
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_ipset_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_ipset_msg_types[] = {
+ XLAT(IPSET_CMD_NONE),
+ XLAT(IPSET_CMD_PROTOCOL),
+ XLAT(IPSET_CMD_CREATE),
+ XLAT(IPSET_CMD_DESTROY),
+ XLAT(IPSET_CMD_FLUSH),
+ XLAT(IPSET_CMD_RENAME),
+ XLAT(IPSET_CMD_SWAP),
+ XLAT(IPSET_CMD_LIST),
+ XLAT(IPSET_CMD_SAVE),
+ XLAT(IPSET_CMD_ADD),
+ XLAT(IPSET_CMD_DEL),
+ XLAT(IPSET_CMD_TEST),
+ XLAT(IPSET_CMD_HEADER),
+ XLAT(IPSET_CMD_TYPE),
+
+ XLAT(IPSET_CMD_RESTORE),
+ XLAT(IPSET_CMD_HELP),
+ XLAT(IPSET_CMD_VERSION),
+ XLAT(IPSET_CMD_QUIT),
+
+ XLAT(IPSET_CMD_COMMIT),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_ipset_msg_types.in b/xlat/nf_ipset_msg_types.in
new file mode 100644
index 00000000..a61d9064
--- /dev/null
+++ b/xlat/nf_ipset_msg_types.in
@@ -0,0 +1,21 @@
+IPSET_CMD_NONE 0
+IPSET_CMD_PROTOCOL 1
+IPSET_CMD_CREATE 2
+IPSET_CMD_DESTROY 3
+IPSET_CMD_FLUSH 4
+IPSET_CMD_RENAME 5
+IPSET_CMD_SWAP 6
+IPSET_CMD_LIST 7
+IPSET_CMD_SAVE 8
+IPSET_CMD_ADD 9
+IPSET_CMD_DEL 10
+IPSET_CMD_TEST 11
+IPSET_CMD_HEADER 12
+IPSET_CMD_TYPE 13
+
+IPSET_CMD_RESTORE 14
+IPSET_CMD_HELP 15
+IPSET_CMD_VERSION 16
+IPSET_CMD_QUIT 17
+
+IPSET_CMD_COMMIT 18
diff --git a/xlat/nf_nft_compat_msg_types.h b/xlat/nf_nft_compat_msg_types.h
new file mode 100644
index 00000000..11346783
--- /dev/null
+++ b/xlat/nf_nft_compat_msg_types.h
@@ -0,0 +1,18 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_nft_compat_msg_types.in; do not edit. */
+#if !(defined(NFNL_MSG_COMPAT_GET) || (defined(HAVE_DECL_NFNL_MSG_COMPAT_GET) && HAVE_DECL_NFNL_MSG_COMPAT_GET))
+# define NFNL_MSG_COMPAT_GET 0
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_nft_compat_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_nft_compat_msg_types[] = {
+ XLAT(NFNL_MSG_COMPAT_GET),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_nft_compat_msg_types.in b/xlat/nf_nft_compat_msg_types.in
new file mode 100644
index 00000000..e2f7da1c
--- /dev/null
+++ b/xlat/nf_nft_compat_msg_types.in
@@ -0,0 +1 @@
+NFNL_MSG_COMPAT_GET 0
diff --git a/xlat/nf_nftables_msg_types.h b/xlat/nf_nftables_msg_types.h
new file mode 100644
index 00000000..8a1a6def
--- /dev/null
+++ b/xlat/nf_nftables_msg_types.h
@@ -0,0 +1,102 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_nftables_msg_types.in; do not edit. */
+#if !(defined(NFT_MSG_NEWTABLE) || (defined(HAVE_DECL_NFT_MSG_NEWTABLE) && HAVE_DECL_NFT_MSG_NEWTABLE))
+# define NFT_MSG_NEWTABLE 0
+#endif
+#if !(defined(NFT_MSG_GETTABLE) || (defined(HAVE_DECL_NFT_MSG_GETTABLE) && HAVE_DECL_NFT_MSG_GETTABLE))
+# define NFT_MSG_GETTABLE 1
+#endif
+#if !(defined(NFT_MSG_DELTABLE) || (defined(HAVE_DECL_NFT_MSG_DELTABLE) && HAVE_DECL_NFT_MSG_DELTABLE))
+# define NFT_MSG_DELTABLE 2
+#endif
+#if !(defined(NFT_MSG_NEWCHAIN) || (defined(HAVE_DECL_NFT_MSG_NEWCHAIN) && HAVE_DECL_NFT_MSG_NEWCHAIN))
+# define NFT_MSG_NEWCHAIN 3
+#endif
+#if !(defined(NFT_MSG_GETCHAIN) || (defined(HAVE_DECL_NFT_MSG_GETCHAIN) && HAVE_DECL_NFT_MSG_GETCHAIN))
+# define NFT_MSG_GETCHAIN 4
+#endif
+#if !(defined(NFT_MSG_DELCHAIN) || (defined(HAVE_DECL_NFT_MSG_DELCHAIN) && HAVE_DECL_NFT_MSG_DELCHAIN))
+# define NFT_MSG_DELCHAIN 5
+#endif
+#if !(defined(NFT_MSG_NEWRULE) || (defined(HAVE_DECL_NFT_MSG_NEWRULE) && HAVE_DECL_NFT_MSG_NEWRULE))
+# define NFT_MSG_NEWRULE 6
+#endif
+#if !(defined(NFT_MSG_GETRULE) || (defined(HAVE_DECL_NFT_MSG_GETRULE) && HAVE_DECL_NFT_MSG_GETRULE))
+# define NFT_MSG_GETRULE 7
+#endif
+#if !(defined(NFT_MSG_DELRULE) || (defined(HAVE_DECL_NFT_MSG_DELRULE) && HAVE_DECL_NFT_MSG_DELRULE))
+# define NFT_MSG_DELRULE 8
+#endif
+#if !(defined(NFT_MSG_NEWSET) || (defined(HAVE_DECL_NFT_MSG_NEWSET) && HAVE_DECL_NFT_MSG_NEWSET))
+# define NFT_MSG_NEWSET 9
+#endif
+#if !(defined(NFT_MSG_GETSET) || (defined(HAVE_DECL_NFT_MSG_GETSET) && HAVE_DECL_NFT_MSG_GETSET))
+# define NFT_MSG_GETSET 10
+#endif
+#if !(defined(NFT_MSG_DELSET) || (defined(HAVE_DECL_NFT_MSG_DELSET) && HAVE_DECL_NFT_MSG_DELSET))
+# define NFT_MSG_DELSET 11
+#endif
+#if !(defined(NFT_MSG_NEWSETELEM) || (defined(HAVE_DECL_NFT_MSG_NEWSETELEM) && HAVE_DECL_NFT_MSG_NEWSETELEM))
+# define NFT_MSG_NEWSETELEM 12
+#endif
+#if !(defined(NFT_MSG_GETSETELEM) || (defined(HAVE_DECL_NFT_MSG_GETSETELEM) && HAVE_DECL_NFT_MSG_GETSETELEM))
+# define NFT_MSG_GETSETELEM 13
+#endif
+#if !(defined(NFT_MSG_DELSETELEM) || (defined(HAVE_DECL_NFT_MSG_DELSETELEM) && HAVE_DECL_NFT_MSG_DELSETELEM))
+# define NFT_MSG_DELSETELEM 14
+#endif
+#if !(defined(NFT_MSG_NEWGEN) || (defined(HAVE_DECL_NFT_MSG_NEWGEN) && HAVE_DECL_NFT_MSG_NEWGEN))
+# define NFT_MSG_NEWGEN 15
+#endif
+#if !(defined(NFT_MSG_GETGEN) || (defined(HAVE_DECL_NFT_MSG_GETGEN) && HAVE_DECL_NFT_MSG_GETGEN))
+# define NFT_MSG_GETGEN 16
+#endif
+#if !(defined(NFT_MSG_TRACE) || (defined(HAVE_DECL_NFT_MSG_TRACE) && HAVE_DECL_NFT_MSG_TRACE))
+# define NFT_MSG_TRACE 17
+#endif
+#if !(defined(NFT_MSG_NEWOBJ) || (defined(HAVE_DECL_NFT_MSG_NEWOBJ) && HAVE_DECL_NFT_MSG_NEWOBJ))
+# define NFT_MSG_NEWOBJ 18
+#endif
+#if !(defined(NFT_MSG_GETOBJ) || (defined(HAVE_DECL_NFT_MSG_GETOBJ) && HAVE_DECL_NFT_MSG_GETOBJ))
+# define NFT_MSG_GETOBJ 19
+#endif
+#if !(defined(NFT_MSG_DELOBJ) || (defined(HAVE_DECL_NFT_MSG_DELOBJ) && HAVE_DECL_NFT_MSG_DELOBJ))
+# define NFT_MSG_DELOBJ 20
+#endif
+#if !(defined(NFT_MSG_GETOBJ_RESET) || (defined(HAVE_DECL_NFT_MSG_GETOBJ_RESET) && HAVE_DECL_NFT_MSG_GETOBJ_RESET))
+# define NFT_MSG_GETOBJ_RESET 21
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_nftables_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_nftables_msg_types[] = {
+ XLAT(NFT_MSG_NEWTABLE),
+ XLAT(NFT_MSG_GETTABLE),
+ XLAT(NFT_MSG_DELTABLE),
+ XLAT(NFT_MSG_NEWCHAIN),
+ XLAT(NFT_MSG_GETCHAIN),
+ XLAT(NFT_MSG_DELCHAIN),
+ XLAT(NFT_MSG_NEWRULE),
+ XLAT(NFT_MSG_GETRULE),
+ XLAT(NFT_MSG_DELRULE),
+ XLAT(NFT_MSG_NEWSET),
+ XLAT(NFT_MSG_GETSET),
+ XLAT(NFT_MSG_DELSET),
+ XLAT(NFT_MSG_NEWSETELEM),
+ XLAT(NFT_MSG_GETSETELEM),
+ XLAT(NFT_MSG_DELSETELEM),
+ XLAT(NFT_MSG_NEWGEN),
+ XLAT(NFT_MSG_GETGEN),
+ XLAT(NFT_MSG_TRACE),
+ XLAT(NFT_MSG_NEWOBJ),
+ XLAT(NFT_MSG_GETOBJ),
+ XLAT(NFT_MSG_DELOBJ),
+ XLAT(NFT_MSG_GETOBJ_RESET),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_nftables_msg_types.in b/xlat/nf_nftables_msg_types.in
new file mode 100644
index 00000000..eb1e773d
--- /dev/null
+++ b/xlat/nf_nftables_msg_types.in
@@ -0,0 +1,22 @@
+NFT_MSG_NEWTABLE 0
+NFT_MSG_GETTABLE 1
+NFT_MSG_DELTABLE 2
+NFT_MSG_NEWCHAIN 3
+NFT_MSG_GETCHAIN 4
+NFT_MSG_DELCHAIN 5
+NFT_MSG_NEWRULE 6
+NFT_MSG_GETRULE 7
+NFT_MSG_DELRULE 8
+NFT_MSG_NEWSET 9
+NFT_MSG_GETSET 10
+NFT_MSG_DELSET 11
+NFT_MSG_NEWSETELEM 12
+NFT_MSG_GETSETELEM 13
+NFT_MSG_DELSETELEM 14
+NFT_MSG_NEWGEN 15
+NFT_MSG_GETGEN 16
+NFT_MSG_TRACE 17
+NFT_MSG_NEWOBJ 18
+NFT_MSG_GETOBJ 19
+NFT_MSG_DELOBJ 20
+NFT_MSG_GETOBJ_RESET 21
diff --git a/xlat/nf_osf_msg_types.h b/xlat/nf_osf_msg_types.h
new file mode 100644
index 00000000..f5661efa
--- /dev/null
+++ b/xlat/nf_osf_msg_types.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_osf_msg_types.in; do not edit. */
+#if !(defined(OSF_MSG_ADD) || (defined(HAVE_DECL_OSF_MSG_ADD) && HAVE_DECL_OSF_MSG_ADD))
+# define OSF_MSG_ADD 0
+#endif
+#if !(defined(OSF_MSG_REMOVE) || (defined(HAVE_DECL_OSF_MSG_REMOVE) && HAVE_DECL_OSF_MSG_REMOVE))
+# define OSF_MSG_REMOVE 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_osf_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_osf_msg_types[] = {
+ XLAT(OSF_MSG_ADD),
+ XLAT(OSF_MSG_REMOVE),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_osf_msg_types.in b/xlat/nf_osf_msg_types.in
new file mode 100644
index 00000000..636c9323
--- /dev/null
+++ b/xlat/nf_osf_msg_types.in
@@ -0,0 +1,2 @@
+OSF_MSG_ADD 0
+OSF_MSG_REMOVE 1
diff --git a/xlat/nf_queue_msg_types.h b/xlat/nf_queue_msg_types.h
new file mode 100644
index 00000000..7b4f4a43
--- /dev/null
+++ b/xlat/nf_queue_msg_types.h
@@ -0,0 +1,30 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_queue_msg_types.in; do not edit. */
+#if !(defined(NFQNL_MSG_PACKET) || (defined(HAVE_DECL_NFQNL_MSG_PACKET) && HAVE_DECL_NFQNL_MSG_PACKET))
+# define NFQNL_MSG_PACKET 0
+#endif
+#if !(defined(NFQNL_MSG_VERDICT) || (defined(HAVE_DECL_NFQNL_MSG_VERDICT) && HAVE_DECL_NFQNL_MSG_VERDICT))
+# define NFQNL_MSG_VERDICT 1
+#endif
+#if !(defined(NFQNL_MSG_CONFIG) || (defined(HAVE_DECL_NFQNL_MSG_CONFIG) && HAVE_DECL_NFQNL_MSG_CONFIG))
+# define NFQNL_MSG_CONFIG 2
+#endif
+#if !(defined(NFQNL_MSG_VERDICT_BATCH) || (defined(HAVE_DECL_NFQNL_MSG_VERDICT_BATCH) && HAVE_DECL_NFQNL_MSG_VERDICT_BATCH))
+# define NFQNL_MSG_VERDICT_BATCH 3
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_queue_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_queue_msg_types[] = {
+ XLAT(NFQNL_MSG_PACKET),
+ XLAT(NFQNL_MSG_VERDICT),
+ XLAT(NFQNL_MSG_CONFIG),
+ XLAT(NFQNL_MSG_VERDICT_BATCH),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_queue_msg_types.in b/xlat/nf_queue_msg_types.in
new file mode 100644
index 00000000..65c7bdd9
--- /dev/null
+++ b/xlat/nf_queue_msg_types.in
@@ -0,0 +1,4 @@
+NFQNL_MSG_PACKET 0
+NFQNL_MSG_VERDICT 1
+NFQNL_MSG_CONFIG 2
+NFQNL_MSG_VERDICT_BATCH 3
diff --git a/xlat/nf_ulog_msg_types.h b/xlat/nf_ulog_msg_types.h
new file mode 100644
index 00000000..b0ab0513
--- /dev/null
+++ b/xlat/nf_ulog_msg_types.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/nf_ulog_msg_types.in; do not edit. */
+#if !(defined(NFULNL_MSG_PACKET) || (defined(HAVE_DECL_NFULNL_MSG_PACKET) && HAVE_DECL_NFULNL_MSG_PACKET))
+# define NFULNL_MSG_PACKET 0
+#endif
+#if !(defined(NFULNL_MSG_CONFIG) || (defined(HAVE_DECL_NFULNL_MSG_CONFIG) && HAVE_DECL_NFULNL_MSG_CONFIG))
+# define NFULNL_MSG_CONFIG 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat nf_ulog_msg_types in mpers mode
+
+#else
+
+static
+const struct xlat nf_ulog_msg_types[] = {
+ XLAT(NFULNL_MSG_PACKET),
+ XLAT(NFULNL_MSG_CONFIG),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/nf_ulog_msg_types.in b/xlat/nf_ulog_msg_types.in
new file mode 100644
index 00000000..13ff42f2
--- /dev/null
+++ b/xlat/nf_ulog_msg_types.in
@@ -0,0 +1,2 @@
+NFULNL_MSG_PACKET 0
+NFULNL_MSG_CONFIG 1
diff --git a/xlat/rtnl_mdba_mdb_attrs.h b/xlat/rtnl_mdba_mdb_attrs.h
new file mode 100644
index 00000000..f714dbdf
--- /dev/null
+++ b/xlat/rtnl_mdba_mdb_attrs.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_mdb_attrs.in; do not edit. */
+#if !(defined(MDBA_MDB_UNSPEC) || (defined(HAVE_DECL_MDBA_MDB_UNSPEC) && HAVE_DECL_MDBA_MDB_UNSPEC))
+# define MDBA_MDB_UNSPEC 0
+#endif
+#if !(defined(MDBA_MDB_ENTRY) || (defined(HAVE_DECL_MDBA_MDB_ENTRY) && HAVE_DECL_MDBA_MDB_ENTRY))
+# define MDBA_MDB_ENTRY 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat rtnl_mdba_mdb_attrs in mpers mode
+
+#else
+
+static
+const struct xlat rtnl_mdba_mdb_attrs[] = {
+ XLAT(MDBA_MDB_UNSPEC),
+ XLAT(MDBA_MDB_ENTRY),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/rtnl_mdba_mdb_attrs.in b/xlat/rtnl_mdba_mdb_attrs.in
new file mode 100644
index 00000000..7ff5cce3
--- /dev/null
+++ b/xlat/rtnl_mdba_mdb_attrs.in
@@ -0,0 +1,2 @@
+MDBA_MDB_UNSPEC 0
+MDBA_MDB_ENTRY 1
diff --git a/xlat/rtnl_mdba_mdb_eattr_attrs.h b/xlat/rtnl_mdba_mdb_eattr_attrs.h
new file mode 100644
index 00000000..ce3b3bcd
--- /dev/null
+++ b/xlat/rtnl_mdba_mdb_eattr_attrs.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_mdb_eattr_attrs.in; do not edit. */
+#if !(defined(MDBA_MDB_EATTR_UNSPEC) || (defined(HAVE_DECL_MDBA_MDB_EATTR_UNSPEC) && HAVE_DECL_MDBA_MDB_EATTR_UNSPEC))
+# define MDBA_MDB_EATTR_UNSPEC 0
+#endif
+#if !(defined(MDBA_MDB_EATTR_TIMER) || (defined(HAVE_DECL_MDBA_MDB_EATTR_TIMER) && HAVE_DECL_MDBA_MDB_EATTR_TIMER))
+# define MDBA_MDB_EATTR_TIMER 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat rtnl_mdba_mdb_eattr_attrs in mpers mode
+
+#else
+
+static
+const struct xlat rtnl_mdba_mdb_eattr_attrs[] = {
+ XLAT(MDBA_MDB_EATTR_UNSPEC),
+ XLAT(MDBA_MDB_EATTR_TIMER),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/rtnl_mdba_mdb_eattr_attrs.in b/xlat/rtnl_mdba_mdb_eattr_attrs.in
new file mode 100644
index 00000000..c7c1b7b3
--- /dev/null
+++ b/xlat/rtnl_mdba_mdb_eattr_attrs.in
@@ -0,0 +1,2 @@
+MDBA_MDB_EATTR_UNSPEC 0
+MDBA_MDB_EATTR_TIMER 1
diff --git a/xlat/rtnl_mdba_mdb_entry_attrs.h b/xlat/rtnl_mdba_mdb_entry_attrs.h
new file mode 100644
index 00000000..198374a7
--- /dev/null
+++ b/xlat/rtnl_mdba_mdb_entry_attrs.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_mdb_entry_attrs.in; do not edit. */
+#if !(defined(MDBA_MDB_ENTRY_UNSPEC) || (defined(HAVE_DECL_MDBA_MDB_ENTRY_UNSPEC) && HAVE_DECL_MDBA_MDB_ENTRY_UNSPEC))
+# define MDBA_MDB_ENTRY_UNSPEC 0
+#endif
+#if !(defined(MDBA_MDB_ENTRY_INFO) || (defined(HAVE_DECL_MDBA_MDB_ENTRY_INFO) && HAVE_DECL_MDBA_MDB_ENTRY_INFO))
+# define MDBA_MDB_ENTRY_INFO 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat rtnl_mdba_mdb_entry_attrs in mpers mode
+
+#else
+
+static
+const struct xlat rtnl_mdba_mdb_entry_attrs[] = {
+ XLAT(MDBA_MDB_ENTRY_UNSPEC),
+ XLAT(MDBA_MDB_ENTRY_INFO),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/rtnl_mdba_mdb_entry_attrs.in b/xlat/rtnl_mdba_mdb_entry_attrs.in
new file mode 100644
index 00000000..52b18d69
--- /dev/null
+++ b/xlat/rtnl_mdba_mdb_entry_attrs.in
@@ -0,0 +1,2 @@
+MDBA_MDB_ENTRY_UNSPEC 0
+MDBA_MDB_ENTRY_INFO 1
diff --git a/xlat/rtnl_mdba_router_attrs.h b/xlat/rtnl_mdba_router_attrs.h
new file mode 100644
index 00000000..2efe5e39
--- /dev/null
+++ b/xlat/rtnl_mdba_router_attrs.h
@@ -0,0 +1,22 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_router_attrs.in; do not edit. */
+#if !(defined(MDBA_ROUTER_UNSPEC) || (defined(HAVE_DECL_MDBA_ROUTER_UNSPEC) && HAVE_DECL_MDBA_ROUTER_UNSPEC))
+# define MDBA_ROUTER_UNSPEC 0
+#endif
+#if !(defined(MDBA_ROUTER_PORT) || (defined(HAVE_DECL_MDBA_ROUTER_PORT) && HAVE_DECL_MDBA_ROUTER_PORT))
+# define MDBA_ROUTER_PORT 1
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat rtnl_mdba_router_attrs in mpers mode
+
+#else
+
+static
+const struct xlat rtnl_mdba_router_attrs[] = {
+ XLAT(MDBA_ROUTER_UNSPEC),
+ XLAT(MDBA_ROUTER_PORT),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/rtnl_mdba_router_attrs.in b/xlat/rtnl_mdba_router_attrs.in
new file mode 100644
index 00000000..21dfeaa3
--- /dev/null
+++ b/xlat/rtnl_mdba_router_attrs.in
@@ -0,0 +1,2 @@
+MDBA_ROUTER_UNSPEC 0
+MDBA_ROUTER_PORT 1
diff --git a/xlat/rtnl_mdba_router_pattr_attrs.h b/xlat/rtnl_mdba_router_pattr_attrs.h
new file mode 100644
index 00000000..b364d31d
--- /dev/null
+++ b/xlat/rtnl_mdba_router_pattr_attrs.h
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_mdba_router_pattr_attrs.in; do not edit. */
+#if !(defined(MDBA_ROUTER_PATTR_UNSPEC) || (defined(HAVE_DECL_MDBA_ROUTER_PATTR_UNSPEC) && HAVE_DECL_MDBA_ROUTER_PATTR_UNSPEC))
+# define MDBA_ROUTER_PATTR_UNSPEC 0
+#endif
+#if !(defined(MDBA_ROUTER_PATTR_TIMER) || (defined(HAVE_DECL_MDBA_ROUTER_PATTR_TIMER) && HAVE_DECL_MDBA_ROUTER_PATTR_TIMER))
+# define MDBA_ROUTER_PATTR_TIMER 1
+#endif
+#if !(defined(MDBA_ROUTER_PATTR_TYPE) || (defined(HAVE_DECL_MDBA_ROUTER_PATTR_TYPE) && HAVE_DECL_MDBA_ROUTER_PATTR_TYPE))
+# define MDBA_ROUTER_PATTR_TYPE 2
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat rtnl_mdba_router_pattr_attrs in mpers mode
+
+#else
+
+static
+const struct xlat rtnl_mdba_router_pattr_attrs[] = {
+ XLAT(MDBA_ROUTER_PATTR_UNSPEC),
+ XLAT(MDBA_ROUTER_PATTR_TIMER),
+ XLAT(MDBA_ROUTER_PATTR_TYPE),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/rtnl_mdba_router_pattr_attrs.in b/xlat/rtnl_mdba_router_pattr_attrs.in
new file mode 100644
index 00000000..901e4f2f
--- /dev/null
+++ b/xlat/rtnl_mdba_router_pattr_attrs.in
@@ -0,0 +1,3 @@
+MDBA_ROUTER_PATTR_UNSPEC 0
+MDBA_ROUTER_PATTR_TIMER 1
+MDBA_ROUTER_PATTR_TYPE 2
diff --git a/xlat/rtnl_tca_stab_attrs.h b/xlat/rtnl_tca_stab_attrs.h
new file mode 100644
index 00000000..8e01f14a
--- /dev/null
+++ b/xlat/rtnl_tca_stab_attrs.h
@@ -0,0 +1,26 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_stab_attrs.in; do not edit. */
+#if !(defined(TCA_STAB_UNSPEC) || (defined(HAVE_DECL_TCA_STAB_UNSPEC) && HAVE_DECL_TCA_STAB_UNSPEC))
+# define TCA_STAB_UNSPEC 0
+#endif
+#if !(defined(TCA_STAB_BASE) || (defined(HAVE_DECL_TCA_STAB_BASE) && HAVE_DECL_TCA_STAB_BASE))
+# define TCA_STAB_BASE 1
+#endif
+#if !(defined(TCA_STAB_DATA) || (defined(HAVE_DECL_TCA_STAB_DATA) && HAVE_DECL_TCA_STAB_DATA))
+# define TCA_STAB_DATA 2
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat rtnl_tca_stab_attrs in mpers mode
+
+#else
+
+static
+const struct xlat rtnl_tca_stab_attrs[] = {
+ XLAT(TCA_STAB_UNSPEC),
+ XLAT(TCA_STAB_BASE),
+ XLAT(TCA_STAB_DATA),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/rtnl_tca_stab_attrs.in b/xlat/rtnl_tca_stab_attrs.in
new file mode 100644
index 00000000..dd3d6efc
--- /dev/null
+++ b/xlat/rtnl_tca_stab_attrs.in
@@ -0,0 +1,3 @@
+TCA_STAB_UNSPEC 0
+TCA_STAB_BASE 1
+TCA_STAB_DATA 2
diff --git a/xlat/rtnl_tca_stats_attrs.h b/xlat/rtnl_tca_stats_attrs.h
new file mode 100644
index 00000000..87a7ee4d
--- /dev/null
+++ b/xlat/rtnl_tca_stats_attrs.h
@@ -0,0 +1,42 @@
+/* Generated by ./xlat/gen.sh from ./xlat/rtnl_tca_stats_attrs.in; do not edit. */
+#if !(defined(TCA_STATS_UNSPEC) || (defined(HAVE_DECL_TCA_STATS_UNSPEC) && HAVE_DECL_TCA_STATS_UNSPEC))
+# define TCA_STATS_UNSPEC 0
+#endif
+#if !(defined(TCA_STATS_BASIC) || (defined(HAVE_DECL_TCA_STATS_BASIC) && HAVE_DECL_TCA_STATS_BASIC))
+# define TCA_STATS_BASIC 1
+#endif
+#if !(defined(TCA_STATS_RATE_EST) || (defined(HAVE_DECL_TCA_STATS_RATE_EST) && HAVE_DECL_TCA_STATS_RATE_EST))
+# define TCA_STATS_RATE_EST 2
+#endif
+#if !(defined(TCA_STATS_QUEUE) || (defined(HAVE_DECL_TCA_STATS_QUEUE) && HAVE_DECL_TCA_STATS_QUEUE))
+# define TCA_STATS_QUEUE 3
+#endif
+#if !(defined(TCA_STATS_APP) || (defined(HAVE_DECL_TCA_STATS_APP) && HAVE_DECL_TCA_STATS_APP))
+# define TCA_STATS_APP 4
+#endif
+#if !(defined(TCA_STATS_RATE_EST64) || (defined(HAVE_DECL_TCA_STATS_RATE_EST64) && HAVE_DECL_TCA_STATS_RATE_EST64))
+# define TCA_STATS_RATE_EST64 5
+#endif
+#if !(defined(TCA_STATS_PAD) || (defined(HAVE_DECL_TCA_STATS_PAD) && HAVE_DECL_TCA_STATS_PAD))
+# define TCA_STATS_PAD 6
+#endif
+
+#ifdef IN_MPERS
+
+# error static const struct xlat rtnl_tca_stats_attrs in mpers mode
+
+#else
+
+static
+const struct xlat rtnl_tca_stats_attrs[] = {
+ XLAT(TCA_STATS_UNSPEC),
+ XLAT(TCA_STATS_BASIC),
+ XLAT(TCA_STATS_RATE_EST),
+ XLAT(TCA_STATS_QUEUE),
+ XLAT(TCA_STATS_APP),
+ XLAT(TCA_STATS_RATE_EST64),
+ XLAT(TCA_STATS_PAD),
+ XLAT_END
+};
+
+#endif /* !IN_MPERS */
diff --git a/xlat/rtnl_tca_stats_attrs.in b/xlat/rtnl_tca_stats_attrs.in
new file mode 100644
index 00000000..807e7fe6
--- /dev/null
+++ b/xlat/rtnl_tca_stats_attrs.in
@@ -0,0 +1,7 @@
+TCA_STATS_UNSPEC 0
+TCA_STATS_BASIC 1
+TCA_STATS_RATE_EST 2
+TCA_STATS_QUEUE 3
+TCA_STATS_APP 4
+TCA_STATS_RATE_EST64 5
+TCA_STATS_PAD 6
diff --git a/xlat/seccomp_filter_flags.h b/xlat/seccomp_filter_flags.h
index 5c0decd5..ad1bede2 100644
--- a/xlat/seccomp_filter_flags.h
+++ b/xlat/seccomp_filter_flags.h
@@ -2,6 +2,9 @@
#if !(defined(SECCOMP_FILTER_FLAG_TSYNC) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC) && HAVE_DECL_SECCOMP_FILTER_FLAG_TSYNC))
# define SECCOMP_FILTER_FLAG_TSYNC 1
#endif
+#if !(defined(SECCOMP_FILTER_FLAG_LOG) || (defined(HAVE_DECL_SECCOMP_FILTER_FLAG_LOG) && HAVE_DECL_SECCOMP_FILTER_FLAG_LOG))
+# define SECCOMP_FILTER_FLAG_LOG 2
+#endif
#ifdef IN_MPERS
@@ -12,6 +15,7 @@
static
const struct xlat seccomp_filter_flags[] = {
XLAT(SECCOMP_FILTER_FLAG_TSYNC),
+ XLAT(SECCOMP_FILTER_FLAG_LOG),
XLAT_END
};
diff --git a/xlat/seccomp_filter_flags.in b/xlat/seccomp_filter_flags.in
index 83482d00..439f3813 100644
--- a/xlat/seccomp_filter_flags.in
+++ b/xlat/seccomp_filter_flags.in
@@ -1 +1,2 @@
SECCOMP_FILTER_FLAG_TSYNC 1
+SECCOMP_FILTER_FLAG_LOG 2
diff --git a/xlat/seccomp_ops.h b/xlat/seccomp_ops.h
index 3fd0dc66..b6f0e2a3 100644
--- a/xlat/seccomp_ops.h
+++ b/xlat/seccomp_ops.h
@@ -5,6 +5,9 @@
#if !(defined(SECCOMP_SET_MODE_FILTER) || (defined(HAVE_DECL_SECCOMP_SET_MODE_FILTER) && HAVE_DECL_SECCOMP_SET_MODE_FILTER))
# define SECCOMP_SET_MODE_FILTER 1
#endif
+#if !(defined(SECCOMP_GET_ACTION_AVAIL) || (defined(HAVE_DECL_SECCOMP_GET_ACTION_AVAIL) && HAVE_DECL_SECCOMP_GET_ACTION_AVAIL))
+# define SECCOMP_GET_ACTION_AVAIL 2
+#endif
#ifdef IN_MPERS
@@ -16,6 +19,7 @@ static
const struct xlat seccomp_ops[] = {
XLAT(SECCOMP_SET_MODE_STRICT),
XLAT(SECCOMP_SET_MODE_FILTER),
+ XLAT(SECCOMP_GET_ACTION_AVAIL),
XLAT_END
};
diff --git a/xlat/seccomp_ops.in b/xlat/seccomp_ops.in
index c3320af7..e2d3fef2 100644
--- a/xlat/seccomp_ops.in
+++ b/xlat/seccomp_ops.in
@@ -1,2 +1,3 @@
SECCOMP_SET_MODE_STRICT 0
SECCOMP_SET_MODE_FILTER 1
+SECCOMP_GET_ACTION_AVAIL 2
diff --git a/xlat/seccomp_ret_action.h b/xlat/seccomp_ret_action.h
index 2d416099..79376411 100644
--- a/xlat/seccomp_ret_action.h
+++ b/xlat/seccomp_ret_action.h
@@ -1,28 +1,36 @@
/* Generated by ./xlat/gen.sh from ./xlat/seccomp_ret_action.in; do not edit. */
-
-#ifdef IN_MPERS
-
-# error static const struct xlat seccomp_ret_action in mpers mode
-
-#else
-
-static
-const struct xlat seccomp_ret_action[] = {
-#if defined(SECCOMP_RET_KILL) || (defined(HAVE_DECL_SECCOMP_RET_KILL) && HAVE_DECL_SECCOMP_RET_KILL)
- XLAT(SECCOMP_RET_KILL),
+#if !(defined(SECCOMP_RET_KILL_PROCESS) || (defined(HAVE_DECL_SECCOMP_RET_KILL_PROCESS) && HAVE_DECL_SECCOMP_RET_KILL_PROCESS))
+# define SECCOMP_RET_KILL_PROCESS 0x80000000U
#endif
-#if defined(SECCOMP_RET_TRAP) || (defined(HAVE_DECL_SECCOMP_RET_TRAP) && HAVE_DECL_SECCOMP_RET_TRAP)
- XLAT(SECCOMP_RET_TRAP),
+#if !(defined(SECCOMP_RET_KILL_THREAD) || (defined(HAVE_DECL_SECCOMP_RET_KILL_THREAD) && HAVE_DECL_SECCOMP_RET_KILL_THREAD))
+# define SECCOMP_RET_KILL_THREAD 0
#endif
-#if defined(SECCOMP_RET_ERRNO) || (defined(HAVE_DECL_SECCOMP_RET_ERRNO) && HAVE_DECL_SECCOMP_RET_ERRNO)
- XLAT(SECCOMP_RET_ERRNO),
+#if !(defined(SECCOMP_RET_TRAP) || (defined(HAVE_DECL_SECCOMP_RET_TRAP) && HAVE_DECL_SECCOMP_RET_TRAP))
+# define SECCOMP_RET_TRAP 0x00030000U
#endif
-#if defined(SECCOMP_RET_TRACE) || (defined(HAVE_DECL_SECCOMP_RET_TRACE) && HAVE_DECL_SECCOMP_RET_TRACE)
- XLAT(SECCOMP_RET_TRACE),
+#if !(defined(SECCOMP_RET_ERRNO) || (defined(HAVE_DECL_SECCOMP_RET_ERRNO) && HAVE_DECL_SECCOMP_RET_ERRNO))
+# define SECCOMP_RET_ERRNO 0x00050000U
#endif
-#if defined(SECCOMP_RET_ALLOW) || (defined(HAVE_DECL_SECCOMP_RET_ALLOW) && HAVE_DECL_SECCOMP_RET_ALLOW)
- XLAT(SECCOMP_RET_ALLOW),
+#if !(defined(SECCOMP_RET_TRACE) || (defined(HAVE_DECL_SECCOMP_RET_TRACE) && HAVE_DECL_SECCOMP_RET_TRACE))
+# define SECCOMP_RET_TRACE 0x7ff00000U
#endif
+#if !(defined(SECCOMP_RET_LOG) || (defined(HAVE_DECL_SECCOMP_RET_LOG) && HAVE_DECL_SECCOMP_RET_LOG))
+# define SECCOMP_RET_LOG 0x7ffc0000U
+#endif
+#if !(defined(SECCOMP_RET_ALLOW) || (defined(HAVE_DECL_SECCOMP_RET_ALLOW) && HAVE_DECL_SECCOMP_RET_ALLOW))
+# define SECCOMP_RET_ALLOW 0x7fff0000U
+#endif
+
+#ifndef IN_MPERS
+
+const struct xlat seccomp_ret_action[] = {
+ XLAT(SECCOMP_RET_KILL_PROCESS),
+ XLAT(SECCOMP_RET_KILL_THREAD),
+ XLAT(SECCOMP_RET_TRAP),
+ XLAT(SECCOMP_RET_ERRNO),
+ XLAT(SECCOMP_RET_TRACE),
+ XLAT(SECCOMP_RET_LOG),
+ XLAT(SECCOMP_RET_ALLOW),
XLAT_END
};
diff --git a/xlat/seccomp_ret_action.in b/xlat/seccomp_ret_action.in
index 6212dcb6..6253448a 100644
--- a/xlat/seccomp_ret_action.in
+++ b/xlat/seccomp_ret_action.in
@@ -1,5 +1,7 @@
-SECCOMP_RET_KILL
-SECCOMP_RET_TRAP
-SECCOMP_RET_ERRNO
-SECCOMP_RET_TRACE
-SECCOMP_RET_ALLOW
+SECCOMP_RET_KILL_PROCESS 0x80000000U
+SECCOMP_RET_KILL_THREAD 0
+SECCOMP_RET_TRAP 0x00030000U
+SECCOMP_RET_ERRNO 0x00050000U
+SECCOMP_RET_TRACE 0x7ff00000U
+SECCOMP_RET_LOG 0x7ffc0000U
+SECCOMP_RET_ALLOW 0x7fff0000U
diff --git a/xlat/socketlayers.h b/xlat/socketlayers.h
index 5e486c38..dc96902b 100644
--- a/xlat/socketlayers.h
+++ b/xlat/socketlayers.h
@@ -104,6 +104,9 @@
#if !(defined(SOL_KCM) || (defined(HAVE_DECL_SOL_KCM) && HAVE_DECL_SOL_KCM))
# define SOL_KCM 281
#endif
+#if !(defined(SOL_TLS) || (defined(HAVE_DECL_SOL_TLS) && HAVE_DECL_SOL_TLS))
+# define SOL_TLS 282
+#endif
#ifndef IN_MPERS
@@ -143,6 +146,7 @@ const struct xlat socketlayers[] = {
XLAT(SOL_ALG),
XLAT(SOL_NFC),
XLAT(SOL_KCM),
+ XLAT(SOL_TLS),
XLAT_END
};
diff --git a/xlat/socketlayers.in b/xlat/socketlayers.in
index 7b0b86e3..dc80c588 100644
--- a/xlat/socketlayers.in
+++ b/xlat/socketlayers.in
@@ -33,3 +33,4 @@ SOL_CAIF 278
SOL_ALG 279
SOL_NFC 280
SOL_KCM 281
+SOL_TLS 282
diff --git a/xlat/sockoptions.h b/xlat/sockoptions.h
index 20a7e6d8..6e991555 100644
--- a/xlat/sockoptions.h
+++ b/xlat/sockoptions.h
@@ -185,6 +185,9 @@ const struct xlat sockoptions[] = {
#if defined(SO_PEERGROUPS) || (defined(HAVE_DECL_SO_PEERGROUPS) && HAVE_DECL_SO_PEERGROUPS)
XLAT(SO_PEERGROUPS),
#endif
+#if defined(SO_ZEROCOPY) || (defined(HAVE_DECL_SO_ZEROCOPY) && HAVE_DECL_SO_ZEROCOPY)
+ XLAT(SO_ZEROCOPY),
+#endif
#if defined(SO_ALLRAW) || (defined(HAVE_DECL_SO_ALLRAW) && HAVE_DECL_SO_ALLRAW)
XLAT(SO_ALLRAW),
diff --git a/xlat/sockoptions.in b/xlat/sockoptions.in
index 24717950..2c1195fd 100644
--- a/xlat/sockoptions.in
+++ b/xlat/sockoptions.in
@@ -57,6 +57,7 @@ SO_MEMINFO
SO_INCOMING_NAPI_ID
SO_COOKIE
SO_PEERGROUPS
+SO_ZEROCOPY
SO_ALLRAW
SO_ICS
diff --git a/xlat/socktcpoptions.h b/xlat/socktcpoptions.h
index 3bc6f53a..836f3e24 100644
--- a/xlat/socktcpoptions.h
+++ b/xlat/socktcpoptions.h
@@ -98,6 +98,12 @@ const struct xlat socktcpoptions[] = {
#if defined(TCP_FASTOPEN_CONNECT) || (defined(HAVE_DECL_TCP_FASTOPEN_CONNECT) && HAVE_DECL_TCP_FASTOPEN_CONNECT)
XLAT(TCP_FASTOPEN_CONNECT),
#endif
+#if defined(TCP_ULP) || (defined(HAVE_DECL_TCP_ULP) && HAVE_DECL_TCP_ULP)
+ XLAT(TCP_ULP),
+#endif
+#if defined(TCP_MD5SIG_EXT) || (defined(HAVE_DECL_TCP_MD5SIG_EXT) && HAVE_DECL_TCP_MD5SIG_EXT)
+ XLAT(TCP_MD5SIG_EXT),
+#endif
XLAT_END
};
diff --git a/xlat/socktcpoptions.in b/xlat/socktcpoptions.in
index 6de28f36..747b184c 100644
--- a/xlat/socktcpoptions.in
+++ b/xlat/socktcpoptions.in
@@ -28,3 +28,5 @@ TCP_SAVE_SYN
TCP_SAVED_SYN
TCP_REPAIR_WINDOW
TCP_FASTOPEN_CONNECT
+TCP_ULP
+TCP_MD5SIG_EXT
diff --git a/xlat/uffd_api_features.h b/xlat/uffd_api_features.h
index 5c856f48..2ea3a9e8 100644
--- a/xlat/uffd_api_features.h
+++ b/xlat/uffd_api_features.h
@@ -29,8 +29,11 @@ const struct xlat uffd_api_features[] = {
#if defined(UFFD_FEATURE_EVENT_UNMAP) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_UNMAP) && HAVE_DECL_UFFD_FEATURE_EVENT_UNMAP)
XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_UNMAP),
#endif
-#if defined(UFFD_FEATURE_EVENT_EXIT) || (defined(HAVE_DECL_UFFD_FEATURE_EVENT_EXIT) && HAVE_DECL_UFFD_FEATURE_EVENT_EXIT)
- XLAT_TYPE(uint64_t, UFFD_FEATURE_EVENT_EXIT),
+#if defined(UFFD_FEATURE_SIGBUS) || (defined(HAVE_DECL_UFFD_FEATURE_SIGBUS) && HAVE_DECL_UFFD_FEATURE_SIGBUS)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_SIGBUS),
+#endif
+#if defined(UFFD_FEATURE_THREAD_ID) || (defined(HAVE_DECL_UFFD_FEATURE_THREAD_ID) && HAVE_DECL_UFFD_FEATURE_THREAD_ID)
+ XLAT_TYPE(uint64_t, UFFD_FEATURE_THREAD_ID),
#endif
XLAT_END
};
diff --git a/xlat/uffd_api_features.in b/xlat/uffd_api_features.in
index 8b1ea974..b9a9a29d 100644
--- a/xlat/uffd_api_features.in
+++ b/xlat/uffd_api_features.in
@@ -6,4 +6,5 @@ UFFD_FEATURE_EVENT_REMOVE
UFFD_FEATURE_MISSING_HUGETLBFS
UFFD_FEATURE_MISSING_SHMEM
UFFD_FEATURE_EVENT_UNMAP
-UFFD_FEATURE_EVENT_EXIT
+UFFD_FEATURE_SIGBUS
+UFFD_FEATURE_THREAD_ID